As of now, you need to manually refresh a refreshable clone of an autonomous database every seven days to keep it up to date by logging into Oracle Cloud Infrastructure (OCI) Console. In this post, I call a REST API to refresh an autonomous database clone. By scheduling the bash script in crontab, you can eliminate the need to log into the Console and perform the refresh task every seven days.
Before submitting the REST call
Before you can make a REST calls to Autonomous Database service in OCI, you need to obtain the following information:
- OCID of a user in OCI tenancy allowed to make API calls
- An RSA key pair in PEM format. The public key must be uploaded to the OCI user.
- The fingerprint from the uploaded public key
- OCID of your tenancy
For details of these items,
The bash script
The script needs a few modifications.
<code< > local authUserId="ocid1.user.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxx";
local keyFingerprint="xx:xx:xx:xx:xx:xx:xx:9a:9a:d7:aa:b5:8b:df:7b:c3";
local privateKeyPath="/home/opc/.oci/oci_api_key.pem";
</code< >
Change the four variables to reflect your environment. You can find details on how to set up and acquire these variables in Required Keys and OCIDs.
The whole bash script consists of two functions, which it can’t run unless you call it. So, let’s add the following line at the end of the script:
oci-curl database.us-ashburn-1.oraclecloud.com post /home/opc/request.json "/20160918/autonomousDatabases/ocid1.autonomousdatabase.oc1.iad. abuwcljtcv2od2huzpnwjiopamevognifl4wrjh6jdooohkzthoz2fx2foqq/actions/refresh"
This line is made up of the following components:
- oci-curl: The function name
- database.us-ashburn-1.oraclecloud.com: The host name. Choose your region.
- post: Method of the API, which you can determine from API Reference and Endpoints.
- /home/opc/request.json: The request body. Because the API we’re using is a POST API, you need a request body.
- “/20160918/autonomousDatabases/ocid1.autonomousdatabase.oc1.iad. abuwcljtcv2od2huzpnwjiopamevognifl4wrjh6jdooohkzthoz2fx2foqq/actions/refresh”: The API path. Enter the refreshable Autonomous Database OCID, not the source OCID.
For the request.json, we use the following parameter,
{
“timeRefreshCutoff”: “2021-01-27T13:00:00.000Z”
}
If you use a different date format and it works, let me know in the comments.
Submitting the REST call to refresh a clone
When you’ve added the line in the bash script, run it. If it’s correct, you get an output similar to the following screenshot. I manually mask out my various OCIDs. Note the yellow highlighted text.

With this alteration, you can schedule the script in crontab to refresh the clone automatically.


Leave a Reply