With Oracle 21c, now you have Clusterware REST API …
Posted by FatDBA on September 1, 2021
Hi Guys,
While reading official database 21c guides, I came across something really cool – Starting from 21c you have Clusterware REST API 🙂 … REST API is available in previous versions too, but not for Clusterware command line utilities, but with release of 21c this is finally here ..
The REST application programming interfaces (APIs) for Oracle Clusterware makes you capable to remotely execute commands on your database cluster, whether in the Oracle Cloud, at remote physical locations, or locally purveyed. With the remote running of REST interface commands, you are able to get back information about that execution, including output, error codes, and execution lengths. The REST interface allows secure support for Oracle Clusterware command line utilities like CRSCTL, CLUVFY and SRVCTL.
REST APIs for Oracle Clusterware expect that the CDP Cross Cluster Domain Protocol (CDP) daemon is running on all of the SCAN VIPs of the cluster. To support the ability to make requests from outside the cluster, you can run the srvctl modify cdp command to provide a list of IPs or networks in CIDR format.
Below are few of the cluster commands you can run using REST APIs …
To enable connections from outside the cluster, run the following commands.
$ srvctl start cdp
$ srvctl modify cdp -allow "ip/networkid1,ip/networkid2,.."
You can view the configuration information with the following command
$ srvctl config cdp
Get the list of all homes
curl -k -X GET https://scan-name:port/grid/cmd/v1/cmd/ --user admin:DixitTestPassword
Create a job (crsctl) and monitor the status
curl -k -X POST \
https://scan-name:port/grid/cmd/v1/cmd/exec \
'-H "accept: text/plain,text/javascript,application/json"' \
'-H "content-type: application/vnd.oracle.resource+json;type=singular"' \
--user admin:DixitTestPassword \
'-d {"command" : ["crsctl", "stat", "res", "-t"], "runAsUser":"osUser", "userPassword":"osPasswd"}'
curl -k -X GET https://scan-name:port/grid/cmd/v1/cmd/jobs/myJobId --user admin:DixitTestPassword
Monitor the status of all jobs
curl -k -X GET \
https://scan-name:port/grid/cmd/v1/cmd/jobs/ --user admin:DixitTestPassword
Delete a job
curl -k -X DELETE \
https://scan-name:port/grid/cmd/v1/cmd/jobs/myJobId --user admin:DixitTestPassword
Hope It Helped!
Prashant Dixit
Leave a Reply