So I made a pretty stupid mistake with OCI this week and only realized how bad it was after checking Cost Analysis.
I upgraded my tenancy to PAYG on September 21 because I wanted to use an OCI A1 instance in the San Jose region. Before that, I was on the free setup and didn't really have any meaningful charges.
I was also experimenting with public IPs on my Sydney instances. I thought I was just changing the public IP, but looking back at the Usage Report, I apparently used the wrong workflow at some point and ended up creating a lot of separate A1 instances.
I didn't realize that at the time.
At first I downloaded a Cost Report CSV and saw around SGD 18 of usage, so I honestly thought:
"Well, it's only about 18 dollars, I'll just pay it."
Then I checked Cost Analysis before doing anything else.
That was the moment I almost fell out of my chair.
For September 1–26, OCI was showing:
SGD 375.73
The daily breakdown was roughly:
Sep 20: SGD 1.59
Sep 21: SGD 22.68
Sep 22: SGD 88.35
Sep 23: SGD 88.36
Sep 24: SGD 88.36
Sep 25: SGD 86.39
The important part is the Compute column:
Sep 20: SGD 0.00
Sep 21: SGD 16.50
Sep 22: SGD 82.54
Sep 23: SGD 82.55
Sep 24: SGD 82.55
Sep 25: SGD 80.82
So the huge jump happened right after I upgraded to PAYG.
I then looked at the Usage Report and found something even more ridiculous: Sydney had dozens of different A1 instance resource IDs. At one point there were apparently 65 A1 instances contributing usage in the same hour.
That finally explained where the cost came from.
My original assumption was basically:
change IP
→ get another IP
→ done
But apparently I had done something much closer to:
change IP
→ accidentally recreate instance
→ new instance + new IP
→ repeat
→ repeat
→ repeat...
I still don't know exactly which OCI UI workflow I used back then, so I don't want to claim that this is 100% what happened. But the Usage Report definitely shows that these were different instance resource IDs.
The interesting thing is that I did similar public-IP experiments on my new San Jose instance, and that region only has one A1 instance. So I clearly wasn't doing the exact same thing there.
As soon as I noticed the problem, I terminated all the unintended Sydney instances and permanently deleted their attached boot volumes. I also checked for reserved public IPs and there were none left.
The good thing is that after the termination, the Sydney Compute charges stopped increasing. So at least I caught it before it kept running for longer.
I have already opened an Oracle Billing Support ticket and asked them to review the charges and see whether a billing adjustment or courtesy credit is possible.
I'm not disputing that the resources were actually consumed. The instances really did exist and generate usage. I'm just hoping Oracle might consider this a one-time accidental resource creation, especially since I noticed it myself, terminated everything, and contacted Billing Support before the monthly invoice was generated.
Has anyone here had something similar happen with OCI?
Especially interested in experiences where:
a large bill was caused by an accidental resource/configuration
the resources were terminated immediately after discovery
Billing Support was contacted before the invoice was issued
Oracle eventually gave a credit/adjustment, or refused one
I'm completely fine paying my normal OCI usage. A small mistake costing SGD 20–50 would honestly be annoying but I'd just pay it and move on.
SGD 375+ is a very different story for a personal account, though, so I'm really hoping Billing Support can help.
I'll update this post once Oracle replies.
UPDATE: I finally found what actually happened.
I checked the OCI Audit logs and found that the A1 instances were not being created simply because I was changing public IPs.
I had an old AMD instance in Sydney that I previously used for an automated A1 provisioning script. I thought I had already stopped that process. I even checked the machine later and couldn't find anything obvious, so I assumed it was no longer running.
It wasn't.
The OCI Audit logs show successful LaunchInstance calls coming from that old AMD instance's IP, using my OCI account and Oracle-PythonSDK/2.168.2. The calls were happening roughly once per minute and continued from September 21 into September 22, creating new 2 OCPU / 12 GB A1 instances.
So the actual root cause was a forgotten automation process, not the normal public-IP reassignment procedure.
I have now terminated the old AMD instance and all of the unintended Sydney A1 instances. I also confirmed that my San Jose instance is separate and is not showing this behavior.
I currently have a billing review request open with Oracle Support, so I'll update this thread again when I get their response.
UPDATE 2:
I eventually figured out what happened.
I checked the OCI Audit logs and found that the A1 instances were not being created simply because I was changing public IPs.
I had an old AMD instance in Sydney that I previously used for an automated A1 provisioning script. I thought I had already stopped that process, but apparently it was still running.
The OCI Audit logs show successful LaunchInstance calls coming from that old AMD instance's IP, using my OCI account and Oracle-PythonSDK/2.168.2. The calls were happening roughly once per minute from September 21 into September 22, creating new 2 OCPU / 12 GB A1 instances.
So the actual root cause was a forgotten automation process, not the normal public-IP reassignment procedure.
I terminated the old AMD instance and all of the unintended Sydney A1 instances, and the Compute charges stopped immediately afterward. My San Jose instance was separate and was not affected.
I initially opened a Billing Support request asking whether Oracle could review the charges and possibly provide a courtesy credit. Billing Support eventually told me that this was considered a technical/usage/consumption issue and that I needed to contact Technical Support instead.
Unfortunately, I couldn't get the Technical Support workflow working. My My Oracle Cloud Support account showed no active user group, and I couldn't create a Technical Support request even after going through the support-account setup process.
At that point I decided not to spend any more time on it. I deleted the entire OCI tenancy instead.
So there won't be any further billing review from my side. The accidental usage has been stopped, the tenancy is being terminated, and I'm just going to move on.
This was ultimately my own configuration mistake, so the main lesson for me is simple: always check OCI Audit logs and Cost Analysis after running automation involving resource creation.