This appendix describes the Oracle Clusterware C application program interfaces (APIs). This appendix contains the following topics:
See Also:
Chapter 9, "Making Applications Highly Available Using Oracle Clusterware" for detailed information about using Oracle Clusterware to make applications highly availableThis section contains information about using the programming interface (C API) to Oracle Clusterware (CLSCRS).
CLSCRS is a set of C-based APIs for Oracle Clusterware. The CLSCRS APIs enable you to manage the operation of entities that are managed by Oracle Clusterware. These entities include resources, resource types, servers, and server pools. You use the APIs to register user applications with Oracle Clusterware so that the clusterware can manage them and maintain high availability. Once an application is registered, you can manage it and query the application's status. If you no longer need the application, then you can stop it and unregister it from Oracle Clusterware.
Oracle Clusterware services are provided by Cluster Ready Services that runs as part of Oracle Clusterware. The CLSCRS API uses a context that is explicitly named in all function calls. The API does not store anything at the process or thread level. You can use the callbacks for diagnostic logging.
Note:
You can install the Oracle Clusterware high availability API from the Oracle Database client installation media.This section includes the following topics:
Context Initialization and Persistence
To use the CLSCRS APIs, you must first initialize the clscrs
context. The calls to create and terminate this context are:
clscrs_init_crs
: Initializes the clscrs
context
clscrs_term_crs
: Terminates the clscrs
context
The caller is responsible for terminating the context when it is no longer needed.
If initialized with the CLSCRS_FLAG_USETHREADS
flag, then the CLSCRS API may spawn threads internally. Every API function executes in the context of the calling thread. The API context object may not be used concurrently by multiple threads. However, no thread-affinity on the part of the client is required. A process may create multiple API contexts and use those on different threads, subject to the one-thread-per-one-context-at-a-time rule.
The following entities are passed into the API calls and contain return values from the API call:
clscrs_sp
: A stringpair (sp
) contains a name and a value string. The value can be NULL. It is created and destroyed, and its contents can be examined and the value replaced. A stringpair can be a member of exactly one stringpair list (splist
).
clscrs_splist
: A stringpair list (splist
) is a list of zero or more stringpairs used in various contexts. An API can add stringpairs to or remove them from a stringpair list, or the API can iterate stringpairs.
clscrs_entity_type
: The enumeration type you can use to identify the type of Oracle Clusterware entity.
The enumeration types are defined, as follows:
/* enum to specify the entity type */ typedef enum { clscrs_entity_res = 1, /* resource */ clscrs_entity_restype = 2, /* resource type */ clscrs_entity_serverpool = 3, /* server pool */ clscrs_entity_server = 4, /* server */ clscrs_entity_resinst = 5, /* resource instances */ clscrs_entity_config_policy = 6, /* configuration policy */ clscrs_entity_config_policyset = 7, /* configuration policy set */ clscrs_entity_server_category = 8 /* server category */ } clscrs_entity_type;
clscrs_crsentity
: This data structure (crsentity
) represents an Oracle Clusterware entity, which contains the name and additional data appropriate to the context in which the Oracle Clusterware entity is used. Sometimes an API contains Oracle Clusterware entity attribute data and other times it carries status and return messages about an operation. A single entity can be a member of exactly one clscrs_crsentitylist
.
clscrs_crsentitylist
: An entity list (crsentitylist
) is a data structure that contains zero or more instances of a clscrs_crsentity
. An API can add entities to or remove them from an entity list, or the API can iterate entities.
The CLSCRS APIs work on elements and lists. The elements are added to lists. The memory for both elements and lists is allocated and released through explicit API calls. It is the caller's responsibility to release the memory that they allocate. However, when elements are added to lists, only the list must be destroyed: the destruction of the list destroys its elements implicitly. The elements must be destroyed when they are not added to any list. For recursive lists, destroying the parent list also destroys any lists contained within it. The clscrs_sp
and clscrs_crsentity
elements must be destroyed by the caller. If they are part of a clscrs_splist
or clscrs_crsentitylist
, destroying the list destroys the respective clscrs_sp
and clscrs_crsentity
entities.
For example, when a resource is created and added to a resource list, only the resource list must be destroyed, but not the individual resource. Destroying the resource list releases the memory for the individual resource, too.
Memory is allocated by the API through the following calls:
clscrs_sp_create() clscrs_crsentity_create() clscrs_serverpool_create() clscrs_type_create() clscrs_splist_create() clscrs_crsentitylist_create() clscrs_entity_id_create()
Each of the calls in the preceding list has a corresponding clscrs_*_destroy()
call.
Interactive and non-interactive CLSCRS APIs each use a different error-handling mechanism.
For non-interactive CLSCRS APIs, the error code is returned as the return value of the function call. For example:
clscrsret clscrs_sp_get_value(clscrs_sp *sp, oratext **value);
The error code is returned as a clscrsret
value.
For interactive CLSCRS APIs, the output result is represented, as follows:
The return value of the function call provides a high-level output of the request. Did the request reach the server? Was it completely successful, or completely or only partially unsuccessful? A successful return value means the request was received, processed, and the outcome was successful for all entities requested.
For each entity on which the request operated, there is a programmatic completion code stored in the op_status
list. If the value is not success
, it indicates the high-level type of the problem specific to processing the request for the particular object.
Optionally, the API might indicate that it wants to receive localized, human-readable error, warning, or status messages by using the callback mechanism. Each invocation of the callback provides the message, message type (severity), and the ID of the object to which the callback invocation pertains.
For example:
CLSCRS_STAT clscrs_register_resource2(clscrs_crsentitylist *in_crsentitylist, uword flags, clscrs_msgf2 msgf, void *msgarg, clscrs_crsentitylist *op_status);
The function returns an error code of value CLSCRS_STAT
.
The CRSD sends error messages, warning messages, and progress messages back to the client through the clscrs_msgf2
callback. The client must implement the callback to process these messages returned by the CRSD.
In previous Oracle Clusterware releases, the API also contained results of each operation on the Oracle Clusterware entities as part of the op_status
list. You can access that information using the following API:
clscrsret clscrs_entity_get_op_status(clscrs_entity *res, CLSCRS_STAT *status, oratext **msg);
The status
argument contains a status code about the CRSD operation on the Oracle Clusterware entity. Additionally, the msg
argument contains a message from the CRSD about the result of the operation. Though the op_status
list continues to contain the results of the CRSD operation for each Oracle Clusterware entity in the msg
argument, usage of the msg
argument to get the error codes and messages has now been deprecated and is not supported for any use of the API on a new entity. Only pre-existing use cases (for acting on resources, specifically) are supported. Use the callback function to process any messages returned by the CRSD.
Interactive CLSCRS APIs provide a callback mechanism that the clients can use to process error messages, warning messages, and progress messages sent by the CRSD.
The signature of the callback mechanism is:
typedef void (*clscrs_msgf2)(void *usrp, const oratext *id, const oratext *msg, clscrs_msgtype msgtype);
In the preceding syntax:
usrp
: Is a user-supplied pointer that probably contains the context of the call
id
: Is the identifier of the entity to which the message corresponds
msg
: Is the output text
msgtype
: Is the type of the message; either error, warning, or progress
Example H-1 describes an example of the callback mechanism.
Example H-1 Callback Mechanism
void myCallback(void *arg, const oratext *pId, const oratext *pMsg, clscrs_msgtype msgType) { if (pMsg != NULL) { cout << pMsg << endl; } }
Example H-2 describes how to use the callback mechanism in an interactive API.
Example H-2 Using the Callback Mechanism In an Interactive API
clscrs_start_resource2(pResIdList, NULL, env, myCallback, NULL, 0, pOpStatus);
You can also print debug trace messages for the API, itself by passing the CLSCRS_FLAG_TRACE
flag when creating the context. The signature for context creation is:
CLSCRS_STAT clscrs_init_crs(clscrs_ctx **ctx, clscrs_msgf2 errf, void *errCtx, ub4 flags);
For the trace messages to work, you must specify both the CLSCRS_FLAG_TRACE
flag and a clscrs_msgf2
callback mechanism in the clscrs_init_crs
API.
The clscrs_msgf2
callback mechanism has the following signature:
typedef void (*clscrs_msgf)(void *usrp, const oratext *msg, sword msglen);
You can use filters to narrow down Oracle Clusterware entities upon which a CLSCRS API operates. Simple filters are attribute-value pairs with an operator. Operators must be surrounded by spaces, as shown in the examples. You can combine simple filters into expressions called expression filters using Boolean operators.
Supported filter operators are:
=
>
<
!=
co
: Containsst
: Starts withen
: Ends withSupported Boolean operators are AND
and OR
.
Examples of filters are:
TYPE = type1
((TYPE = type1) AND (CHECK_INTERVAL > 50))
(TYPE = type1) AND ((CHECK_INTERVAL > 30) OR (AUTO_START co never))
NAME en network.res
TYPE st ora.db
See Also:
Use theclscrs_comparator enum
and the clscrs_operator enum
located in the $ORA_CRS_HOME/crs/demo/clscrsx.h
file to get the correct type for the above comparators and operators, respectively, in the API callsThere are two types of filters and CLSCRS has a set of APIs to create these filters:
Comparison filter: A simple filter that compares two values. For example:
TYPE = ora.db.type
Use the clscrs_compfilter_create
API to create a comparison filter. For example, to create the (TYPE = ora.db.type)
comparison filter:
clscrs_compfilter_create(ctx, clscrs_TYPE, clscrs_comparator_eq, (const oratext *)"ora.db.type", &myCompFilter);
Expression filter: A filter that is created from either a set of comparison filters or expression filters, or both. For example:
((TYPE = ora.db.type) AND (CHECK_INTERVAL > 50))
Use the clscrs_expfilter_create
API to create a comparison filter. For example, to create an expression filter:
clscrs_exprfilter_create(myCompFilter1, clscrs_operator_or, myCompFilter2, &myExprFilter);
See Also:
The$ORA_CRS_HOME/crs/demo/clscrsx.h
file for usage information for the clscrs_compfilter_create
and clscrs_expfilter_create
APIsNote:
Both theclscrs_compfilter_create
and clscrs_expfilter_create
APIs allocate memory that must be freed by calling clscrs_filter_destroy()
.You can use filters in the following interactive CLSCRS APIs in place of an entity list:
clscrs_start_resource2
clscrs_stat2
clscrs_stop_resource2
clscrs_check_resource2
clscrs_relocate_resource2
Example H-3 describes using filters in an interactive CLSCRS API.
Example H-3 Filters In an Interactive CLSCRS API
clscrs_start_resource2(myCompFilter, NULL, env, msgf2, NULL, 0, pOpStatus);
When you use CLSCRS APIs inside script agent entry points, keep the following in mind:
Some actions, such as start, stop, and clean, are executed under a lock on the resource instance. Thus, issuing a request to the server to act on the resource directly or by extension of a relation results in a dead-lock.
Issuing read-only (clscrs_stat2
) is generally safe unless it is an initial check, where the script agent must not call back on the server, because that results in a dead-lock, as well. Use the clsagfw
APIs to query the check entry point.
See Also:
Appendix B, "Oracle Clusterware Resource Reference" for examples of script agentsYou can find the entire list of CLSCRS APIs, including usage information for each, in the $ORA_CRS_HOME/crs/demo/clscrsx.h
file, along with a demo called crsapp.c
.
Table H-1 lists the deprecated CLSCRS APIs and the corresponding replacement APIs for Oracle Clusterware.
Table H-1 Deprecated CLSCRS APIs
Deprecated API | Replacement |
---|---|
clscrs_check_resource |
clscrs_check_resource2 |
clscrs_entity |
clscrs_entity_type |
clscrs_fail_resource |
No replacement |
clscrs_msgf |
clscrs_msgf2 |
clscrs_register_resource |
clscrs_register_resource2 |
clscrs_relocate_resource |
clscrs_relocate_resource2 |
clscrs_res_attr_count |
clscrs_crsentity_attr_count |
clscrs_res_create |
clscrs_crsentity_create |
clscrs_res_create |
clscrs_crsentitylist_create |
clscrs_res_destroy |
clscrs_crsentity_destroy |
clscrs_res_get_attr |
clscrs_crsentity_get_attr |
clscrs_res_get_attr_list |
clscrs_crsentity_get_attr_list |
clscrs_res_get_name |
clscrs_crsentity_get_name |
clscrs_res_get_node_list |
clscrs_crsentity_get_node_list |
clscrs_res_get_op_status |
clscrs_crsentity_get_op_status |
clscrs_res_get_reslist |
clscrs_crsentity_get_crsentitylist |
clscrs_res_set_attr |
clscrs_crsentity_set_attr |
clscrs_res_set_attr_list |
clscrs_crsentity_set_attr_list |
clscrs_res_set_reslist |
clscrs_crsentity_set_crsentitylist |
clscrs_reslist_append |
clscrs_crsentitylist_append |
clscrs_reslist_count |
clscrs_crsentitylist_count |
clscrs_reslist_delete_res |
clscrs_crsentitylist_delete_crsentity |
clscrs_reslist_destroy |
clscrs_crsentitylist_destroy |
clscrs_reslist_find |
clscrs_crsentitylist_find |
clscrs_reslist_first |
clscrs_crsentitylist_first |
clscrs_reslist_next |
clscrs_crsentitylist_next |
clscrs_start_resource |
clscrs_start_resource2 |
clscrs_stat |
clscrs_stat2 |
clscrs_stop_resource |
clscrs_stop_resource2 |
clscrs_unregister_resource |
clscrs_unregister_resource2 |
Oracle has added the following flags to the clscrs_stat2
API:
CLSCRS_STATFLAG_SERVERBYCATEGORY
: Use this flag to query the servers that match a particular server category.
CLSCRS_STATFLAG_CATEGORYBYSERVER
: Use this flag to query the server categories that match a particular server.
Oracle has added the following flags to the clscrs_start_resource2
and clscrs_stop_resource2
APIs:
CLSCRS_FLAG_T_HA_PREPARE
: Use this flag with Transparent HA (start2
/stop2
APIs) to instruct the Oracle Clusterware daemon (CRSD) to prepare for an external management interface to act on a resource. When the call comes back, if successful, then the interface then is expected to start or stop the resource and call back with the other flag (CLSCRS_FLAG_T_HA_FINISH
).
CLSCRS_FLAG_T_HA_FINISH
: Use this flag with Transparent HA with CLSCRS_FLAG_T_HA_PREPARE
. You must use this flag in the second call to the CRSD (start2/stop2 APIs) when the start or stop action has finished. Note that clients must indicate resource instances and never resources with this flag, because the CRSD must know to which instances the invocation of the API applies.
CLSCRS_NO_STATE_RESTORATION
: This flag is available for use to start and stop resource APIs and to instruct the CRSD to skip resource state restoration of the resources whose state was affected. That procedure is usually attempted unless you use this flag.
The APIs listed in Table H-2 make calls to the Cluster Ready Services daemon (CRSD) to run commands. The CRSD must be up and running for these APIs to function.
Table H-2 Summary of Interactive CLSCRS APIs for Oracle Clusterware
C API | Description |
---|---|
clscrs_check_resource2 |
Notifies Oracle Clusterware to run the check entry points for the identified resources. |
clscrs_get_server_by_category |
Obtains a list of servers that match a particular server category. |
clscrs_is_crs_admin |
Checks whether the user is an Oracle Clusterware administrator. |
clscrs_register_resource2 |
Registers the resources in the input resource list. |
clscrs_register_servercategory |
Registers server categories in the input server category list. |
clscrs_register_serverpool |
Registers a server pool for the input list of servers. |
clscrs_register_type |
Registers the resource types in the input resource list. |
clscrs_relocate_resource2 |
Relocates the list of resource identifiers. |
clscrs_relocate_server |
Relocates a list of servers. |
clscrs_request_action |
Notifies Oracle Clusterware to run a specific set of actions. |
clscrs_restart_resource |
Instructs Oracle Clusterware to restart a named set of resources. |
clscrs_start_resource2 |
Notifies Oracle Clusterware to start a named set of resources. |
clscrs_stat2 |
Obtains information about specific resources. |
clscrs_stat3 |
Obtains information about specific entities. |
clscrs_stop_resource2 |
Notifies Oracle Clusterware to stop a named set of resources. |
clscrs_stop_resource_in_pools |
Instructs Oracle Clusterware to stop specific resources in server pools. |
clscrs_start_resource_in_pools |
Instructs Oracle Clusterware to start specific resources in server pools. |
clscrs_unregister_resource2 |
Unregisters the resources in the input list of resource names. |
clscrs_unregister_servercategory |
Unregisters server categories in the input server category list. |
clscrs_unregister_serverpool |
Unregisters the given server pool. |
clscrs_unregister_type |
Unregisters the resource types in the input list. |
clscrs_whatif_add_server |
Simulates what happens if you add a server. |
clscrs_whatif_delete_server |
Simulates what happens if you delete a server. |
clscrs_whatif_fail_resource |
Simulates what happens if a resource fails. |
clscrs_whatif_register_resource |
Simulates what happens if you register a resource. |
clscrs_whatif_register_serverpool |
Simulates what happens if you register a server pool. |
clscrs_whatif_relocate_resource |
Simulates what happens if you relocate a resource. |
clscrs_whatif_relocate_server |
Simulates what happens if you relocate a server. |
clscrs_whatif_set_activepolicy |
Simulates what happens if you activate a policy. |
clscrs_whatif_start_resource |
Simulates what happens if you start a resource. |
clscrs_whatif_stop_resource |
Simulates what happens if you stop a resource. |
clscrs_whatif_unregister_serverpool |
Simulates what happens if you unregister a server pool. |
You can use non-interactive CLSCRS APIs for functions such as context initialization, preparing request payloads for interactive APIs, and post-processing output of the interactive APIs. The non-interactive CLSCRS APIs do not call the CRSD.
A callback error reporting mechanism is not available for the non-interactive CLSCRS APIs. All interactive CLSCRS APIs, except clscrs_stat2
, clscrs_stat3
, and all clscrs_whatif_*
APIs, use this callback mechanism. Clients of these APIs also use the callback mechanism to receive error, warning, and progress messages from the CRSD.
You can also use filters to reduce the list of Oracle Clusterware entities. You can also use filters in the interactive APIs to reduce the list of Oracle Clusterware entities.
The routines provided to manage API data structures cannot be used with the same API context in multiple threads concurrently; however, no thread-affinity on the part of the client is required. If a separate API context is used in each instance, then a process may invoke these routines on multiple threads.
Table H-3 describes the non-interactive CLSCRS APIs.
Table H-3 Non-Interactive CLSCRS APIs
C API | Description |
---|---|
clscrs_action_getentity |
Returns the entity for the action. |
clscrs_action_getparams |
Returns the list of parameters for the action. |
clscrs_action_gettype |
Returns the type for the action. |
clscrs_actionlist_count |
Counts the number of actions in the action list. |
clscrs_actionlist_create |
Creates an action list. |
clscrs_actionlist_destroy |
Destroys the action list. |
clscrs_actionlist_first |
Returns the first action in an action list. |
clscrs_actionlist_next |
Returns the next action in an action list. |
clscrs_actionlist_print |
Prints the action list. |
clscrs_actionlist_seqid |
Returns the sequence ID for the action lists |
clscrs_compfilter_create |
Constructs a simple filter that compares two values. |
clscrs_crsentity_attr_count |
Counts the number of attributes for an entity. |
clscrs_crsentity_create |
Creates a new entity (allocates memory). |
clscrs_crsentity_destroy |
Destroys an entity and frees up memory. |
clscrs_crsentity_get_attr |
Obtains the value of an entity, server pool, or server attribute. |
clscrs_crsentity_get_attr_list |
Obtains the attribute list for an entity, resource type, server pool, or server. |
clscrs_crsentity_get_crsentitylist |
Obtains the entity list for an entity. |
clscrs_crsentity_get_name |
Obtains the name of an entity. |
clscrs_crsentity_get_node_list |
Obtains a list of nodes currently hosting the entity. |
clscrs_crsentity_get_op_status |
Obtains the status of an operation for an entity. |
clscrs_crsentity_get_registered |
Obtains the registration status of an entity. |
clscrs_crsentity_set_attr |
Sets an attribute for an entity and a server pool. |
clscrs_crsentity_set_attr_list |
Sets the attribute list for an entity, resource type, server pool, or server. |
clscrs_crsentity_set_crsentitylist |
Sets the resource list for an entity. |
clscrs_crsentitylist_append |
Adds an entity to an entity list. |
clscrs_crsentitylist_count |
Counts the number of entities in an entity list. |
clscrs_crsentitylist_create |
Creates a list of entities. |
clscrs_crsentitylist_delete_crsentity |
Deletes an entity matching a given name from an entity list. |
clscrs_crsentitylist_destroy |
Destroys an entity list and frees up memory. |
clscrs_crsentitylist_find |
Finds an entity in an entity list matching a given name. |
clscrs_crsentitylist_first |
Obtains the first entity on an entity list. |
clscrs_crslist_next |
Obtains the current next entity from an entity list. |
clscrs_entity_id_create |
Creates an entity identifier that identifies an Oracle Clusterware entity such as a resource, resource type, server group, and so on. |
clscrs_entity_id_destroy |
Frees the memory associated with an entity identifier created from |
clscrs_exprfilter_create |
Constructs an expression filter from comparison or expression filters, or both. |
clscrs_filter_destroy |
Frees the memory for a filter. |
clscrs_get_entity_type |
Obtains the entity type corresponding to the entity identifier provided. |
clscrs_get_fixed_attrlist |
Obtains the list of attributes that correspond to an attribute group identifier. |
clscrs_get_resource_instance_details |
Obtains the resource instance details, such as resource name, cardinality, and degree, from the resource instance identifier that is used. |
clscrs_getnodename |
Obtains the node name. |
clscrs_init_crs |
Initializes a context for communications with Oracle Clusterware. |
clscrs_sp_get |
Obtains the name and value components of a stringpair. |
clscrs_sp_get_value |
Obtains the value component of a stringpair. |
clscrs_sp_set |
Changes the value part of a stringpair. |
clscrs_splist_append |
Adds a new stringpair ( |
clscrs_splist_count |
Counts the number of stringpairs ( |
clscrs_splist_create |
Creates a new stringpair list. |
clscrs_splist_create_and_set |
Creates a new stringpair list ( |
clscrs_splist_delete_sp |
Deletes a stringpair ( |
clscrs_splist_destroy |
Frees the memory for a stringpair list ( |
clscrs_splist_find |
Finds the value for a stringpair ( |
clscrs_splist_first |
Obtains the first stringpair ( |
clscrs_splist_next |
Obtains the current next stringpair ( |
clscrs_splist_replace |
Replaces the value for a stringpair ( |
clscrs_term_crs |
Releases a context for communications with Oracle Clusterware. |
clscrs_type_create |
Creates a new resource type. |
clscrs_type_get_attr |
Obtains the value/properties of a resource type attribute. |
clscrs_type_set_attr |
Adds an attribute to a resource type. |
You can use the What-If APIs to predict Oracle Clusterware's response to a hypothetical planned or unplanned event. Oracle Clusterware can react to events in the system and produce a response action plan. This action plan consists of a series of resource state transitions or server pool reconfigurations, or both. The What-If APIs provide a mechanism to expose this action plan externally and to enable clients to predict the consequences of an event before it actually happens.
What-If response plans are available for the following event categories:
Oracle Clusterware provides What-If output as a list of actions, where each action represents a specific step performed by Oracle Clusterware. Each action is encapsulated by a clscrs_action
structure, and the clscrs_actionlist
structure represents the entire sequence of actions. Oracle Clusterware also provides a set of functions (clscrs_action_*
for action structures and clscrs_actionlist_*
for action lists) to create, examine, iterate over, and destroy these structures. Their usage is identical to that of the corresponding entity list and entity functions.
The What-If APIs also provide clients with the ability to make a query on the projected state of the system. The clscrs_querylist
structure using the stat3
format specifies the query, and the clscrs_crsentitylist
structure provides the result. Refer to the stat3
section for details on their usage.
Each What-If response that Oracle Clusterware provides includes a sequence ID, which indicates the current state of Oracle Clusterware. The sequence ID is incremented for every new event that Oracle Clusterware manages. Oracle Clusterware guarantees that, as long the sequence ID has not changed, the action plan provided will be executed, as is, for the event in question. For example, the action plan that Oracle Clusterware provides for a whatif start resource FOO
request will be identical to the actions Oracle Clusterware takes take when an actual start resource FOO
request is submitted, provided the sequence ID has not changed.
Example H-4 describes how you can use What-If APIs.
Example H-4 Sample Usage of What-If API
boolean tracectx = TRUE; oratext *resid; clscrs_ctx *ctx; clscrs_env env; clscrs_splist *resid_list; clscrs_action *cur_actn; clscrs_actionlist *alist; clscrs_splist *params; // Init crs clscrs_init_crs(&ctx, (clscrs_msgf)clsuslztrace, &tracectx, (ub4)0); // Init parameters to the call clscrs_entity_id_create(ctx, "MYRES", clscrs_entity_res, &resid); clscrs_splist_create(ctx, &resid_list); clscrs_splist_append(resid_list, resid, NULL); clscrs_actionlist_create(ctx, &alist); // Make call into the what-if API clscrs_whatif_start_resource(resid_list, nodename, flags, NULL, NULL, alist); // Process the resulting list of actions for(clscrs_actionlist_first(alist,&cur_actn);cur_actn;clscrs_actionlist_next(alist,&cur_actn)) { params = clscrs_action_getparams(cur_actn); switch(clscrs_action_gettype(cur_actn)) { case clscrs_actiontype_resstate: // Read params and do something break; case clscrs_actiontype_srvmove: // Read params and do something break; case clscrs_actiontype_newgroup: // Read params and do something break; case clscrs_actiontype_errorcase: // Read params and do something break; } } clscrs_actionlist_destroy(alist); clscrs_splist_destroy(resid_list); clscrs_term_crs(&ctx);
Parameters for the APIs listed in this section are separated into those for which you provide input and those that display information when the function completes successfully.
The clscrs_whatif_register_resource
API determines the actions that Oracle Clusterware would take if you add or modify a specific resource.
Input:
name
: Name of the resource.attrs
: The attributes of the specified resource.flags
: CLSCRS_FLAG_NONE
CLSCRS_FLAG_WHATIF_VERBOSE
CLSCRS_FLAG_FORCE
CLSCRS_FLAG_REG_UPDATE
(to modify the resource)
See Also:
CLRSCRS_FLAG
enum for more detailsqlist
: Specifies the client query on Oracle Clusterware entity status. NULL indicates no query specified.
Output:
status
: List containing the returned entity information.alist
: Action list containing the actions that Oracle Clusterware will perform.CLSCRS_STAT_SUCCESS
: Indicates that Oracle Clusterware completed the request successfully or that no entities matched a filter.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.CLSCRS_STAT_INTERNAL_ERROR
: Displays if an unexpected, non-user error occurs.CLSCRS_STAT_INVALID_ARGS
: Displays if you provide incorrect arguments.The clscrs_whatif_fail_resource
API determines the actions that Oracle Clusterware would take if specific resources failed.
Input:
name
: Resource or instance ID, or a filter.server
: Name of the server on which the resource failure occurs. NULL is allowed.flags
: CLSCRS_FLAG_NONE
CLSCRS_FLAG_WHATIF_VERBOSE
See Also:
CLRSCRS_FLAG
enum for more detailsqlist
: Specifies the client query on Oracle Clusterware entity status. NULL indicates no query specified.
Output:
status
: List containing the returned entity information.alist
: Action list containing the actions that Oracle Clusterware will perform.CLSCRS_STAT_SUCCESS
: Indicates that Oracle Clusterware completed the request successfully or that no entities matched a filter.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.CLSCRS_STAT_INTERNAL_ERROR
: Displays if an unexpected, non-user error occurs.CLSCRS_STAT_INVALID_ARGS
: Displays if you provide incorrect arguments.The clscrs_whatif_start_resource
API determines the actions that Oracle Clusterware would take if you started specific resources.
Input:
name
: Resource or instance ID, or a filter.node
: Name of the node on which you want to start the resource. NULL is allowed.flags
: CLSCRS_FLAG_NONE
CLSCRS_FLAG_WHATIF_VERBOSE
CLSCRS_FLAG_FORCE
See Also:
CLRSCRS_FLAG
enum for more detailsqlist
: Specifies the client query on Oracle Clusterware entity status. NULL indicates no query specified.
Output:
status
: List containing the returned entity information.alist
: Action list containing the actions that Oracle Clusterware will perform.CLSCRS_STAT_SUCCESS
: Indicates that Oracle Clusterware completed the request successfully or that no entities matched a filter.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.CLSCRS_STAT_INTERNAL_ERROR
: Displays if an unexpected, non-user error occurs.CLSCRS_STAT_INVALID_ARGS
: Displays if you provide incorrect arguments.The clscrs_whatif_stop_resource
API determines the actions that Oracle Clusterware would take if you stopped specific resources.
Input:
name
: Resource or instance ID, or a filter.flags
: CLSCRS_FLAG_NONE
CLSCRS_FLAG_WHATIF_VERBOSE
CLSCRS_FLAG_FORCE
See Also:
CLRSCRS_FLAG
enum for more detailsqlist
: Specifies the client query on Oracle Clusterware entity status. NULL indicates no query specified.
Output:
status
: List containing the returned entity information.alist
: Action list containing the actions that Oracle Clusterware will perform.CLSCRS_STAT_SUCCESS
: Indicates that Oracle Clusterware completed the request successfully or that no entities matched a filter.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.CLSCRS_STAT_INTERNAL_ERROR
: Displays if an unexpected, non-user error occurs.CLSCRS_STAT_INVALID_ARGS
: Displays if you provide incorrect arguments.The clscrs_whatif_relocate_resource
API determines the actions that Oracle Clusterware would take if you relocated specific resources.
Input:
name
: Resource or instance ID, or a filter.flags
: CLSCRS_FLAG_NONE
CLSCRS_FLAG_WHATIF_VERBOSE
CLSCRS_FLAG_FORCE
See Also:
CLRSCRS_FLAG
enum for more detailsqlist
: Specifies the client query on Oracle Clusterware entity status. NULL indicates no query specified.
Output:
status
: List containing the returned entity information.alist
: Action list containing the actions that Oracle Clusterware will perform.CLSCRS_STAT_SUCCESS
: Indicates that Oracle Clusterware completed the request successfully or that no entities matched a filter.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.CLSCRS_STAT_INTERNAL_ERROR
: Displays if an unexpected, non-user error occurs.CLSCRS_STAT_INVALID_ARGS
: Displays if you provide incorrect arguments.The clscrs_whatif_register_serverpool
API determines the actions that Oracle Clusterware would take if you registered a specific server pool.
Input:
name
: Name of the server pool.attrs
: The attributes of the specified server pool.flags
: CLSCRS_FLAG_NONE
CLSCRS_FLAG_WHATIF_VERBOSE
CLSCRS_FLAG_FORCE
CLSCRS_FLAG_REG_UPDATE
(to modify the server pool)
See Also:
CLRSCRS_FLAG
enum for more detailsqlist
: Specifies the client query on Oracle Clusterware entity status. NULL indicates no query specified.
Output:
status
: List containing the returned entity information.alist
: Action list containing the actions that Oracle Clusterware will perform.CLSCRS_STAT_SUCCESS
: Indicates that Oracle Clusterware completed the request successfully or that no entities matched a filter.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.CLSCRS_STAT_INTERNAL_ERROR
: Displays if an unexpected, non-user error occurs.CLSCRS_STAT_INVALID_ARGS
: Displays if you provide incorrect arguments.The clscrs_whatif_unregister_serverpool
API determines the actions that Oracle Clusterware would take if you unregistered a specific server pool.
Input:
name
: Name of the server pool.flags
: CLSCRS_FLAG_NONE
CLSCRS_FLAG_WHATIF_VERBOSE
CLSCRS_FLAG_FORCE
See Also:
CLRSCRS_FLAG
enum for more detailsqlist
: Specifies the client query on Oracle Clusterware entity status. NULL indicates no query specified.
Output:
status
: List containing the returned entity information.alist
: Action list containing the actions that Oracle Clusterware will perform.CLSCRS_STAT_SUCCESS
: Indicates that Oracle Clusterware completed the request successfully or that no entities matched a filter.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.CLSCRS_STAT_INTERNAL_ERROR
: Displays if an unexpected, non-user error occurs.CLSCRS_STAT_INVALID_ARGS
: Displays if you provide incorrect arguments.The clscrs_whatif_add_server
API determines the actions that Oracle Clusterware would take if you added a server.
Input:
name
: Name of the server.attrs
: The attributes of the specified server.flags
: CLSCRS_FLAG_NONE
CLSCRS_FLAG_WHATIF_VERBOSE
CLSCRS_FLAG_FORCE
See Also:
CLRSCRS_FLAG
enum for more detailsqlist
: Specifies the client query on Oracle Clusterware entity status. NULL indicates no query specified.
Output:
status
: List containing the returned entity information.alist
: Action list containing the actions that Oracle Clusterware will perform.CLSCRS_STAT_SUCCESS
: Indicates that Oracle Clusterware completed the request successfully or that no entities matched a filter.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.CLSCRS_STAT_INTERNAL_ERROR
: Displays if an unexpected, non-user error occurs.CLSCRS_STAT_INVALID_ARGS
: Displays if you provide incorrect arguments.The clscrs_whatif_relocate_server
API determines the actions that Oracle Clusterware would take if you relocated a server to a different server pool.
Input:
name
: Name of the server.topool
: The name of the server pool to which you want to relocate the server.flags
: CLSCRS_FLAG_NONE
CLSCRS_FLAG_WHATIF_VERBOSE
CLSCRS_FLAG_FORCE
See Also:
CLRSCRS_FLAG
enum for more detailsqlist
: Specifies the client query on Oracle Clusterware entity status. NULL indicates no query specified.
Output:
status
: List containing the returned entity information.alist
: Action list containing the actions that Oracle Clusterware will perform.CLSCRS_STAT_SUCCESS
: Indicates that Oracle Clusterware completed the request successfully or that no entities matched a filter.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.CLSCRS_STAT_INTERNAL_ERROR
: Displays if an unexpected, non-user error occurs.CLSCRS_STAT_INVALID_ARGS
: Displays if you provide incorrect arguments.The clscrs_whatif_delete_server
API determines the actions that Oracle Clusterware would take if you deleted a server.
Input:
name
: Name of the server.flags
: CLSCRS_FLAG_NONE
CLSCRS_FLAG_WHATIF_VERBOSE
CLSCRS_FLAG_FORCE
See Also:
CLRSCRS_FLAG
enum for more detailsqlist
: Specifies the client query on Oracle Clusterware entity status. NULL indicates no query specified.
Output:
status
: List containing the returned entity information.alist
: Action list containing the actions that Oracle Clusterware will perform.CLSCRS_STAT_SUCCESS
: Indicates that Oracle Clusterware completed the request successfully or that no entities matched a filter.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.CLSCRS_STAT_INTERNAL_ERROR
: Displays if an unexpected, non-user error occurs.CLSCRS_STAT_INVALID_ARGS
: Displays if you provide incorrect arguments.The clscrs_whatif_set_activepolicy
API determines the actions that Oracle Clusterware would take if you activated a specific policy.
Input:
name
: Name of the policy.flags
: CLSCRS_FLAG_NONE
CLSCRS_FLAG_WHATIF_VERBOSE
CLSCRS_FLAG_FORCE
See Also:
CLRSCRS_FLAG
enum for more detailsqlist
: Specifies the client query on Oracle Clusterware entity status. NULL indicates no query specified.
Output:
status
: List containing the returned entity information.alist
: Action list containing the actions that Oracle Clusterware will perform.CLSCRS_STAT_SUCCESS
: Indicates that Oracle Clusterware completed the request successfully or that no entities matched a filter.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.CLSCRS_STAT_INTERNAL_ERROR
: Displays if an unexpected, non-user error occurs.CLSCRS_STAT_INVALID_ARGS
: Displays if you provide incorrect arguments.Oracle Clusterware includes an entity called clsrcs_entity_server_category
.
Parameters for the APIs listed in this section are separated into those for which you provide input and those that display information when the function completes successfully.
The clscrs_servercategory_create
API creates a server category.
Input:
ctx
: CLSCRS context.sc_name
: Name of the server category.Output:
sc
: The newly created server category.
The clscrs_servercategory_destroy
API frees memory for a server category.
The clscrs_register_servercategory
API registers the server categories that you specify in the input server category list. The attributes for the server category are contained in the input server category list. The op_status
list contains the results of the register operation for each server category and contains no valid attributes. The caller must create and populate the in_entitylist
and must create the op_status
list. Both of these lists must be destroyed by the caller. The op_status
list cannot be reused with another API call. It must be created and destroyed for each API call.
One or more attributes of an already registered server category can be modified by passing the CLSCRS_FLAG_REG_UPDATE
flag. The flags apply to all server categories in the input entity list.
Input:
in_entitylist
: The list of server categories you want to register.flags
: CLSCRS_FLAG_REG_UPDATE
CLSCRS_FLAG_QUEUE
CLSCRS_FLAG_FORCE
CLSCRS_FLAG_NONE
See Also:
CLRSCRS_FLAG
enum for more detailsmsgf
: User message callback, which can be NULL.msgarg
: User callback argument, which can be NULL.Output:
op_status
: The entity list that holds the status of the register operation for each server category.
CLSCRS_STAT_SUCCESS
: Indicates that all input server categories are successfully registered.CLSCRS_STAT_FAILURE
: Displays if at least one server category cannot be registered.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.CLSCRS_STAT_INVALID_ARGS
: Displays if any of the server categories in the input entity list do not have attributes.The clscrs_unregister_servercategory
API unregisters the server categories that you specify in the input list. The op_status
list contains the results of the unregister operation for each server category.
The caller must create and populate the sclist
and must create the op_status
list. Both of these lists must be destroyed by the caller. The op_status
list cannot be reused with another API call and must be created and destroyed for each API call.
Input:
sclist
: The list of server categories you want to unregister.flags
: Specify option flags.msgf
: User message callback, which can be NULL.msgarg
: User callback argument, which can be NULL.Output:
op_status
: The entity list that holds the status of the unregister operation for each server category.
CLSCRS_STAT_SUCCESS
: Indicates that all input server categories are successfully registered.CLSCRS_STAT_FAILURE
: Displays if at least one server category cannot be unregistered.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.The clscrs_get_server_by_category
API gets a list of servers that match a particular server category.
Input:
in_list
: The list of server categories or a filter.Output:
out_entitylist
: Lists the servers matching the server category.
The clscrs_register_server
API modifies the server attributes. The attributes for the server are contained in the input server list. The op_status
list contains the results of the modify operation for each server but contains no valid attributes.
The caller must create and populate the in_entitylist
and must create the op_status
list. Both of these lists must be destroyed by the caller. The op_status
list cannot be reused with another API call and it must be created and destroyed for each API call.
Note:
Since Oracle currently supports, only, theCLSCRS_FLAG_REG_UPDATE
flag will always need to be passed. The flags apply to all servers in the input entity list.Input:
in_entitylist
: The list of server categories you want to register.flags
: CLSCRS_FLAG_QUEUE
CLSCRS_FLAG_FORCE
CLSCRS_FLAG_REG_UPDATE
CLSCRS_FLAG_NONE
See Also:
CLRSCRS_FLAG
enum for more detailsmsgf
: User message callback, which can be NULL.msgarg
: User callback argument, which can be NULL.Output:
op_status
: The entity list that holds the status of the register operation for each server.
CLSCRS_STAT_SUCCESS
: Indicates that all input server categories are successfully registered.CLSCRS_STAT_FAILURE
: Displays if at least one server category cannot be registered.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.CLSCRS_STAT_INVALID_ARGS
: Displays if any of the server categories in the input entity list do not have attributes.Oracle Clusterware 11g release 2 (11.2) manages several entities, such as resources, server pools, and so on. However, the interfaces in that release only allowed retrieving (reading) entities by type, which meant that a single retrieval could only return entities of a single type. Therefore, clients that needed to get different types of entities and needed to have a consistent view of the data structures to make further decisions needed to rely on a work around using a special event sequence ID and, if necessary, reissue query requests several times (in theory, in a system with ever changing state/configuration such a solution is time-unbounded).
Oracle Clusterware 12c provides a mechanism to perform a consistent read of entities of several kinds. The mechanism works on entities transparently, such that addition of new managed entities do not require any changes to the mechanism.
This is achieved by the clscrs_stat3
API.
The clscrs_stat3
API obtains information about the Oracle Clusterware entities identified in qlist
. Information is returned in out_entitylist
. Queries are executed such that the subsequent output set is consistent.
You create clscrs_query
objects and append them to the clscrs_querylist
object before passing the object to this function. Any attributes required for each entity type must be present in the clscrs_query
object. If the attribute list is empty, then Oracle Clusterware returns all attributes.
The out_entitylist
must be created and passed as an empty list. Any errors for an entity are returned in the out_entitylist
.
The output is returned as a nested entity list. Results for individual queries are returned as respective entities in the out_entitylist
. The output for individual queries is returned as an entity list for that specific entity. The type of results in the entity can be verified by calling clscrs_crsentity_get_type
, to get the Oracle Clusterware entity type of the entity that is part of the out_entitylist
.
For example, If you have two queries, one for resources and the other for resource types, then out_entitylist
will contain two entity objects, one for each of the aforementioned Oracle Clusterware entity types. The entity list for each of these entity objects will contain the results of the queries. To determine what type of entity object a particular object is, you must call the clscrs_crsentity_get_type
function on that entity object. If the query returns zero matches, then the size of the entity list for that entity object will be zero.
Note:
Oracle supports only oneclscrs_query
object per entity type. If more than one clscrs_query
object is created for the same entity type, then Oracle does not guarantee the stat3
API behavior.Input:
qlist
: The list of Oracle Clusterware entities you want to query.
Output:
out_entitylist
: The entity list that holds the returned entity information.
Parameters for the APIs listed in this section are separated into those for which you provide input and those that display information when the function completes successfully.
The clscrs_get_error_details
API retrieves and returns the clsk
exception stack if there are any failures while invoking other CLSCRS APIs.
Note:
The caller is responsible for allocating memory forerror_buf
.Input:
error_buf
: The buffer that will be populated with the error stack.buf_size
: The size of the buffer for error_buf
. If the size of the buffer given is smaller than what is required, then the API returns a value for the necessary buffer size.The clscrs_request_action
API instructs Oracle Clusterware to run an action on a named set of resources. In the first argument, you can specify either a list of resource IDs or a filter. Specifying a filter enables the query and action to take place in a single call. The filter searches all registered resources.
Input:
action_name
: The name of the action to be performed.ridlist
: The list of resources or resource instance IDs to stop, or a filter.env
: Specify environment arguments to the stop operation.msgf
: User message callback, which can be NULL.msgarg
: User callback argument, which can be NULL.flag
: Either async
or queue
options.Output:
op_status
: The resource list that holds the status of the action operation for each resource.
CLSCRS_STAT_INVALID_RESNAME
: Displays if ridlist
is empty.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_SUCCESS
: Displays if the request completes successfully for all requested entities or if no entities match a filter.CLSCRS_STAT_FAILURE
: Displays if at least one resource or resource ID does not stop successfully.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.The clscrs_stop_resource_in_pools
API instructs Oracle Clusterware to stop a named set of resources in server pools. Functionality is similar to clscrs_stop_resource2
, except that this function takes an extra argument—spoollist
—which is a list of server pool names or a filter based on which a list of server pools is generated. This function does not take node
as an argument.
Input:
ridlist
: The list of resources or resource instance IDs to stop, or a filter.spoollist
: The list of server pool names where a resource that you want to stop is running, or a filter.env
: Specify environment arguments to the stop operation.msgf
: User message callback, which can be NULL.msgarg
: User callback argument, which can be NULL.flag
: Either async
, force
, or event
options.Output:
op_status
: The resource list that holds the status of the stop operation for each resource.
CLSCRS_STAT_INVALID_RESNAME
: Displays if ridlist
is empty.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_SUCCESS
: Displays if the request completes successfully for all requested entities or if no entities match a filter.CLSCRS_STAT_FAILURE
: Displays if at least one resource or resource ID does not stop successfully.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.The clscrs_start_resource_in_pools
API instructs Oracle Clusterware to start a named set of resources in server pools. Functionality is similar to clscrs_start_resource2
, except that this function takes an extra argument—spoollist
—which is a list of server pool names or a filter based on which a list of server pools is generated. This function does not take node
as an argument.
Input:
ridlist
: The list of resources or resource instance IDs to start, or a filter.spoollist
: The list of server pool names where a resource that you want to start is running, or a filter.env
: Specify environment arguments to the start operation.msgf
: User message callback, which can be NULL.msgarg
: User callback argument, which can be NULL.flag
: Either async
, force
, or event
options.Output:
op_status
: The resource list that holds the status of the start operation for each resource.
CLSCRS_STAT_INVALID_RESNAME
: Displays if ridlist
is empty.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_SUCCESS
: Displays if the request completes successfully for all requested entities or if no entities match a filter.CLSCRS_STAT_FAILURE
: Displays if at least one resource or resource ID does not start successfully.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.The clscrs_restart_resource
API instructs Oracle Clusterware to restart a named set of resources. If the flag is async
, then the msgf callback function you specify is never called. The API returns an OK
status after initiating the call to Oracle Clusterware, and asynchronously executes the restarts.
If the flag is not async
, and msgf
is not NULL, then the API drives msgf
one line at a time with collected output from the restart programs. An optional event
flag maybe passed to indicate that this is not a request to perform an action, but rather a notification that the action has already started. The flag should only be used for a narrow set of co-managed resources.
In the first argument, you can specify either a list of resource IDs or a filter. Specifying a filter enables the query and action to take place in a single call. The filter searches all registered resources.
Input:
ridlist
: The list of resources or resource instance IDs to restart, or a filter.env
: Specify environment arguments to the restart operation.msgf
: User message callback, which can be NULL.msgarg
: User callback argument, which can be NULL.flag
: Either async
, force
, or event
options.Output:
op_status
: The resource list that holds the status of the restart operation for each resource.
CLSCRS_STAT_INVALID_RESNAME
: Displays if ridlist
is empty.CLSCRS_STAT_AUTHORIZATION_FAILURE
: Displays when authorization fails.CLSCRS_STAT_SUCCESS
: Displays if the request completes successfully for all requested entities or if no entities match a filter.CLSCRS_STAT_FAILURE
: Displays if at least one resource or resource ID does not start successfully.CLSCRS_STAT_CONNECTION
: Displays if there is a communication error.CLSCRS_STAT_WRONG_ACTIVE_VERSION
: Displays if you use the API before you have upgraded the cluster to Oracle Clusterware 12c.