ACE Director Alum Daniel Morgan, founder of Morgan's Library, is scheduling
complimentary technical Workshops on Database Security for the first 30
Oracle Database customers located anywhere in North America, EMEA, LATAM, or
APAC that send an email to
asra_us@oracle.com. Request a Workshop for
your organization today.
Purpose
Utilities supporting the Global Services Manager Pool Administration
AUTHID
DEFINER
Constants
Name
Data Type
Value
Public Constants
cs_readwrite
NUMBER
0
cs_readonly
NUMBER
1
cs_stbypref
NUMBER
2
cs_stbyonly
NUMBER
3
prv_key
NUMBER
0
pub_key
NUMBER
1
prk_enc_str
NUMBER
2
Public Broker Configuration Status
undeployed (initial add state)
NUMBER
0
deploy_ready (ready to deploy)
NUMBER
1
broker_configured (ready to go)
NUMBER
2
Public Move Chunk Errors
move_ok
NUMBER
0
move_notarget (no target DB)
NUMBER
1
move_nosrc (no source db)
NUMBER
2
move_fail (general failure to move)
NUMBER
3
Private Action Parameter Constants
logical
NUMBER
1
physical
NUMBER
2
Private Force Parameter Constants
force_off
NUMBER
0
force_on
NUMBER
1
Private gen_aq Notification Constants
gen_aq_off
NUMBER
0
gen_aq_on
NUMBER
1
Private Templates For Create/Modify Database SID, Files, Credentials, and Jobs Constants
sid_tmpl
VARCHAR2(2)
'sh'
file_tmpl
VARCHAR2(11)
'SHARD_FILE_'
cred_tmpl
VARCHAR2(11)
'SHARD_CRED_'
job_tmpl
VARCHAR2(10)
'SHARD_JOB_';
Data Types
-----------------
-- Name list type
-----------------
TYPE name_list_type IS TABLE OF VARCHAR2(dbms_gsm_common.max_ident)
INDEX BY BINARY_INTEGER;
-----------------
--- chunk types
-----------------
TYPE chunk_list IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
TYPE shardid_list IS TABLE OF NUMBER INDEX BY BINARY_INTEGER ;
TYPE shard2chunk_map IS TABLE OF shard_t INDEX BY PLS_INTEGER;
-----------------
--- Federated Database grant types
-----------------
TYPE objgrant IS RECORD(object_type NUMBER,
privname VARCHAR2(128),
owner VARCHAR2(128),
name VARCHAR2(128),
colname VARCHAR2(128),
wgo NUMBER );
TYPE objgrant_table IS TABLE OF objgrant INDEX BY BINARY_INTEGER;
TYPE sysgrant IS RECORD(privname VARCHAR2(128), wgo NUMBER);
TYPE sysgrant_table IS TABLE OF sysgrant INDEX BY BINARY_INTEGER;
Dependencies
ALL_SCHEDULER_EXTERNAL_DESTS
DBMS_JOB
MESSAGE_PARAM_LIST
BROKER_CONFIGS
DBMS_LOB
NLS_DATABASE_PARAMETERS
CATALOG_REQUESTS
DBMS_LOCK
NUMBER_LIST
CAT_ROLLBACK_TRIGGER
DBMS_RANDOM
PLITBLM
CAT_SEQUENCE
DBMS_SCHEDULER
RAC_INSTANCE_T
CHUNKS
DBMS_SESSION
REGION
CHUNK_LOC
DBMS_SYS_ERROR
REQUEST_DELETE_TRIGGER
CLOUD
DBMS_UTILITY
SERVICE
CONTAINER_DATABASE
DBPARAMS_LIST
SERVICE_PREFERRED_AVAILABLE
CREDENTIAL
DBPARAMS_T
SHARDGROUP_SEQUENCE
CREDENTIAL_SEQUENCE
DDLID$
SHARDSPACE_SEQUENCE
CS_CHUNK_ID
DDL_REQUESTS
SHARD_GROUP
DATABASE
DONE_TRIGGER
SHARD_LIST_T
DATABASE_POOL
DRSET_SEQUENCE
SHARD_SPACE
DBA_SCHEDULER_EXTERNAL_DESTS
DUAL
SHARD_T
DBA_SCHEDULER_JOB_RUN_DETAILS
EXECASUSER
SHARD_TS
DBA_TABLESPACES
EXEC_SHARD_PLSQL
SID_SEQUENCE
DBMS_ASSERT
FILES
TABLESPACE_SET
DBMS_CREDENTIAL
FILES_SEQUENCE
TABLE_FAMILY
DBMS_GSM_ALERTS
GLOBAL_TABLE
UTL_HTTP
DBMS_GSM_CLOUDADMIN
GSM_CHANGE_MESSAGE
UTL_LMS
DBMS_GSM_COMMON
GSM_REQUESTS
VNCR
DBMS_GSM_NOPRIV
INSTANCE_LIST
V$LISTENER_NETWORK
DBMS_GSM_UTILITY
INT_DBNUM_SEQUENCE
V$PARAMETER
DBMS_GSM_UTILITY_LIB
MESSAGE_PARAM
V$PARAMETER2
Documented
No
Exceptions
Error Code
Reason
ORA-03739
The specified database is not configured to be a catalog.
Makes a database pool a Data Guard broker configuration
dbms_gsm_pooladmin.addBrokerConfig(
db_unique_name IN VARCHAR2,
database_pool_name IN VARCHAR2 DEFAULT NULL,
database_connect_string IN VARCHAR2,
password IN VARCHAR2 DEFAULT NULL,
region IN VARCHAR2 DEFAULT NULL,
num_standbys IN NUMBER DEFAULT 1,
instances IN NUMBER DEFAULT NULL,
encpassword IN RAW DEFAULT NULL);
dbms_gsm_pooladmin.addCDB(
db_unique_name IN VARCHAR2,
database_connect_string IN VARCHAR2,
instances IN NUMBER DEFAULT NULL,
cpu IN NUMBER DEFAULT NULL,
srlat IN NUMBER DEFAULT NULL,
encpassword IN RAW DEFAULT NULL,
dbhost IN VARCHAR2 DEFAULT NULL,
oracle_home IN VARCHAR2 DEFAULT NULL,
dbid IN NUMBER DEFAULT 0,
database_role IN VARCHAR2 DEFAULT NULL,
rack IN VARCHAR2 DEFAULT NULL);
dbms_gsm_pooladmin.addDatabase(
db_unique_name IN VARCHAR2,
database_pool_name IN VARCHAR2 DEFAULT NULL,
database_connect_string IN VARCHAR2,
password IN VARCHAR2,
region IN VARCHAR2 DEFAULT NULL,
instances IN NUMBER DEFAULT NULL,
cpu IN NUMBER DEFAULT NULL,
srlat IN NUMBER DEFAULT NULL,
encpassword IN RAW DEFAULT NULL,
dbhost IN VARCHAR2 DEFAULT NULL,
agent_port IN NUMBER DEFAULT NULL,
db_sid IN VARCHAR2 DEFAULT NULL,
oracle_home IN VARCHAR2 DEFAULT NULL,
dbid IN NUMBER DEFAULT 0,
conversion_status IN VARCHAR2 DEFAULT NULL);
dbms_gsm_pooladmin.addDatabaseDone(
db_unique_name IN VARCHAR2,
database_pool_name IN VARCHAR2,
scan_address IN VARCHAR2 DEFAULT NULL,
ons_port IN NUMBER DEFAULT NULL,
hostname IN VARCHAR2 DEFAULT NULL,
db_vers IN NUMBER DEFAULT NULL,
db_type IN CHAR DEFAULT 'U');
dbms_gsm_pooladmin.addDatabaseInternal(
db_unique_name IN VARCHAR2,
database_pool_name IN VARCHAR2 DEFAULT NULL,
database_connect_string IN VARCHAR2,
password IN VARCHAR2 DEFAULT NULL,
region IN VARCHAR2 DEFAULT NULL,
status IN CHAR,
db_num IN NUMBER DEFAULT NULL,
scan_address IN VARCHAR2 DEFAULT NULL,
ons_port IN NUMBER DEFAULT NULL,
hostname IN VARCHAR2 DEFAULT NULL,
db_vers IN NUMBER DEFAULT NULL,
prmdb_name IN VARCHAR2 DEFAULT NULL,
db_type IN CHAR DEFAULT 'U');
dbms_gsm_pooladmin.addRemoteCred(
credential_name IN VARCHAR2,
username IN VARCHAR2,
password IN VARCHAR2,
windows_domain IN VARCHAR2 DEFAULT NULL,
poolname IN VARCHAR2 DEFAULT NULL);
dbms_gsm_pooladmin.addservice(
database_pool_name IN VARCHAR2 DEFAULT NULL,
service_name IN VARCHAR2,
preferred_all IN NUMBER DEFAULT dbms_gsm_common.prefer_all_dbs,
preferred_dbs IN name_list_type,
available_dbs IN name_list_type,
svc_locality IN NUMBER DEFAULT dbms_gsm_common.service_anywhere,
region_failover IN NUMBER DEFAULT dbms_gsm_common.region_failover_off,
db_role IN NUMBER DEFAULT dbms_gsm_common.db_role_none,
failover_primary IN NUMBER DEFAULT dbms_gsm_common.failover_primary_off,
rlb_goal IN NUMBER DEFAULT dbms_gsm_common.rlb_goal_none,
clb_goal IN NUMBER DEFAULT dbms_gsm_common.clb_goal_none,
ha_notification IN NUMBER DEFAULT dbms_gsm_common.ha_notification_on,
taf_policy IN NUMBER DEFAULT dbms_gsm_common.taf_none,
restart_policy IN NUMBER DEFAULT dbms_gsm_common.policy_automatic,
distr_trans IN NUMBER DEFAULT dbms_gsm_common.dtp_off,
lag IN NUMBER DEFAULT dbms_gsm_common.any_lag,
max_lag IN NUMBER DEFAULT 0,
failover_method IN VARCHAR2 DEFAULT dbms_gsm_common.failover_none,
failover_type IN VARCHAR2 DEFAULT dbms_gsm_common.failover_type_none,
failover_retries IN NUMBER DEFAULT NULL,
failover_delay IN NUMBER DEFAULT NULL,
edition IN VARCHAR2 DEFAULT NULL,
pdb IN VARCHAR2 DEFAULT NULL,
commit_outcome IN NUMBER DEFAULT NULL,
retention_timeout IN NUMBER DEFAULT NULL,
replay_initiation_timeout IN NUMBER DEFAULT NULL,
session_state_consistency IN VARCHAR2 DEFAULT NULL,
sql_translation_profile IN VARCHAR2 DEFAULT NULL,
table_family IN VARCHAR2 DEFAULT NULL,
drain_timeout IN NUMBER DEFAULT NULL,
stop_option IN VARCHAR2 DEFAULT NULL,
failover_restore IN VARCHAR2 DEFAULT dbms_gsm_common.failover_restore_none);
Add an existing service to additional preferred and/or available databases
dbms_gsm_pooladmin.addServiceToDBS(
database_pool_name IN VARCHAR2 DEFAULT NULL,
service_name IN VARCHAR2,
preferred_dbs IN name_list_type,
available_dbs IN name_list_type);
dbms_gsm_pooladmin.addShard(
db_unique_name IN VARCHAR2,
database_pool_name IN VARCHAR2 DEFAULT NULL,
database_connect_string IN VARCHAR2,
password IN VARCHAR2,
region IN VARCHAR2 DEFAULT NULL,
instances IN NUMBER DEFAULT NULL,
cpu IN NUMBER DEFAULT NULL,
srlat IN NUMBER DEFAULT NULL,
shardgroup_name IN VARCHAR2 DEFAULT NULL,
encpassword IN RAW DEFAULT NULL,
shardspace_name IN VARCHAR2 DEFAULT NULL,
deploy_as IN NUMBER DEFAULT NULL,
dbhost IN VARCHAR2 DEFAULT NULL,
agent_port IN NUMBER DEFAULT NULL,
db_sid IN VARCHAR2 DEFAULT NULL,
oracle_home IN VARCHAR2 DEFAULT NULL,
dbid IN NUMBER DEFAULT 0,
conversion_status IN VARCHAR2 DEFAULT NULL,
rack IN VARCHAR2 DEFAULT NULL,
gg_service IN VARCHAR2 DEFAULT NULL,
gg_password IN VARCHAR2 DEFAULT NULL,
cdb IN VARCHAR2 DEFAULT NULL,
is_cdb IN BOOLEAN DEFAULT FALSE,
replace IN VARCHAR2 DEFAULT NULL,
pdb_name IN VARCHAR2 DEFAULT NULL,
pdb_id IN NUMBER DEFAULT 0);
dbms_gsm_pooladmin.addShardGroup(
shardgroup_name IN VARCHAR2,
region_name IN VARCHAR2 DEFAULT NULL,
shardspace_name IN VARCHAR2 DEFAULT NULL,
repfactor IN NUMBER DEFAULT NULL,
deploy_as IN NUMBER DEFAULT NULL);
Update service state, sends notification with new service state
dbms_gsm_pooladmin.changeServiceState(
service_name IN VARCHAR2,
pool_name IN VARCHAR2,
db_name IN VARCHAR2,
new_state IN VARCHAR2,
gen_notification IN NUMBER DEFAULT 0);
dbms_gsm_pooladmin.createBackupsStoredScripts(
backupLevel1Type IN BINARY_INTEGER,
sdb_cat_dbid IN VARCHAR2,
cookie OUT BINARY_INTEGER);
PRAGMA SUPPLEMENTAL_LOG_DATA(createBackupStoredScripts, NONE);
Creates a new shard and adds it to a region and a database pool
dbms_gsm_pooladmin.createShard(
region IN VARCHAR2 DEFAULT NULL,
shardspace_name IN VARCHAR2 DEFAULT NULL,
shardgroup_name IN VARCHAR2 DEFAULT NULL,
deploy_as IN NUMBER DEFAULT NULL,
dest IN VARCHAR2,
cred IN VARCHAR2 DEFAULT NULL,
dbparam IN VARCHAR2 DEFAULT NULL,
dbtemplate IN VARCHAR2 DEFAULT NULL,
netparam IN VARCHAR2 DEFAULT NULL,
osaccount IN VARCHAR2 DEFAULT NULL,
ospassword IN VARCHAR2 DEFAULT NULL,
windows_domain IN VARCHAR2 DEFAULT NULL,
dbparamcontent IN CLOB DEFAULT NULL,
dbtemplatecontent IN CLOB DEFAULT NULL,
netparamcontent IN CLOB DEFAULT NULL,
rack IN VARCHAR2 DEFAULT NULL,
gg_service IN VARCHAR2 DEFAULT NULL,
gg_password IN VARCHAR2 DEFAULT NULL,
syspassword IN VARCHAR2 DEFAULT NULL,
systempassword IN VARCHAR2 DEFAULT NULL,
serviceuserpassword IN VARCHAR2 DEFAULT NULL,
new_dbname OUT VARCHAR2);
dbms_gsm_pooladmin.deploy(skip_move IN NUMBER DEFAULT dbms_gsm_common.isFalse);
exec gsmadmin_internal.dbms_gsm_pooladmin.deploy(gsmadmin_internal.dbms_gsm_common.isFalse);
BEGIN gsmadmin_internal.dbms_gsm_pooladmin.deploy(gsmadmin_internal.dbms_gsm_common.isFalse); END;
*
ERROR at line 1:
ORA-03739: The specified database is not configured to be a catalog.
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_NOPRIV", line 153
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2708
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 73
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2695
ORA-06512: at line 1
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_NOPRIV", line 149
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 17650
ORA-01403: no data found
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_NOPRIV", line 55
ORA-01403: no data found
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2683
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2583
ORA-06512: at line 1
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_NOPRIV", line 47
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 15227
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 17663
ORA-06512: at line 1
dbms_gsm_pooladmin.deploy_int(
msg_id IN NUMBER,
skip_move IN NUMBER DEFAULT dbms_gsm_common.isFalse);
exec gsmadmin_internal.dbms_gsm_pooladmin.deploy_int(1, gsmadmin_internal.dbms_gsm_common.isFalse);
BEGIN gsmadmin_internal.dbms_gsm_pooladmin.deploy_int(1, gsmadmin_internal.dbms_gsm_common.isFalse); END;
*
ERROR at line 1:
ORA-03739: The specified database is not configured to be a catalog.
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_NOPRIV", line 153
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2708
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 73
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2695
ORA-06512: at line 1
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_NOPRIV", line 149
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 17650
ORA-01403: no data found
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_NOPRIV", line 55
ORA-01403: no data found
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2683
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2583
ORA-06512: at line 1
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_NOPRIV", line 47
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 15227
ORA-06512: at line 1
dbms_gsm_pooladmin.execSQLonShard(
shard_list IN name_list_type DEFAULT CAST(NULL AS name_list_type),
primary_only IN NUMBER DEFAULT 0,
on_catalog IN NUMBER DEFAULT 0,
statement IN VARCHAR2,
write_ddl_req IN NUMBER DEFAULT dbms_gsm_common.isFalse);
Updates metadata as needed and sends the AQ GoldenGate message to multiple shards. When the GSM is done executing the command, updates gsm_requests and calls genericProcedureDone
dbms_gsm_pooladmin.executeOGGProcedure(
pool_name IN VARCHAR2,
targets IN number_list,
payload IN VARCHAR2,
gsm_req# OUT NUMBER);
Get database specific info stored on catalog for cross validation
dbms_gsm_pooladmin.getDbInfo(
db_unique_name IN VARCHAR2,
minobj_number OUT NUMBER,
maxobj_number OUT NUMBER,
db_dbid OUT NUMBER);
DECLARE
x NUMBER;
y NUMBER;
z NUMBER;
BEGIN
gsmadmin_internal.dbms_gsm_pooladmin.getDbInfo('ORABASE', x, y, z);
END;
/
DECLARE
*
ERROR at line 1:
ORA-45558: There are no database pools in this catalog.
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 625
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 24071
ORA-06512: at line 6
dbms_gsm_pooladmin.getInfo(
pool_name IN VARCHAR2 DEFAULT NULL,
shardgroup_name IN VARCHAR2 DEFAULT NULL,
cloud_name OUT VARCHAR2,
use_sysdba OUT NUMBER,
shardspace_name IN VARCHAR2 DEFAULT NULL);
PRAGMA SUPPLEMENTAL_LOG_DATA(getInfo, READ_ONLY);
TBD
Overload 2
dbms_gsm_pooladmin.getInfo(
pool_name IN VARCHAR2 DEFAULT NULL,
shardgroup_name IN VARCHAR2 DEFAULT NULL,
cloud_name OUT VARCHAR2,
use_sysdba OUT NUMBER,
shardspace_name IN VARCHAR2 DEFAULT NULL,
charset OUT VARCHAR2,
ncharset OUT VARCHAR2);
PRAGMA SUPPLEMENTAL_LOG_DATA(getInfo, READ_ONLY);
BEGIN
IF gsmadmin_internal.dbms_gsm_pooladmin.gsmProcessingDeploy THEN
dbms_output.put_line('T');
ELSE
dbms_output.put_line('F');
END IF;
END;
/
BEGIN
*
ERROR at line 1:
ORA-03745: global service manager not running
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 341
ORA-06512: at line 2
Changes the specified databases to preferred databases for the service
dbms_gsm_pooladmin.makeDBsPreferred(
database_pool_name IN VARCHAR2 DEFAULT NULL,
service_name IN VARCHAR2,
dbs IN name_list_type,
force IN NUMBER DEFAULT NULL);
dbms_gsm_pooladmin.modifyCDB(
db_unique_name IN VARCHAR2,
database_pool_name IN VARCHAR2 DEFAULT NULL,
database_connect_string IN VARCHAR2 DEFAULT NULL,
password IN VARCHAR2 DEFAULT NULL,
region IN VARCHAR2 DEFAULT NULL,
scan IN VARCHAR2 DEFAULT NULL,
ons IN NUMBER DEFAULT NULL,
cpu IN NUMBER DEFAULT NULL,
srlat IN NUMBER DEFAULT NULL,
encpassword IN RAW DEFAULT NULL,
dest IN VARCHAR2 DEFAULT NULL,
cred IN VARCHAR2 DEFAULT NULL,
osaccount IN VARCHAR2 DEFAULT NULL,
ospassword IN VARCHAR2 DEFAULT NULL,
windows_domain IN VARCHAR2 DEFAULT NULL);
dbms_gsm_pooladmin.modifyDatabase(
db_unique_name IN VARCHAR2,
database_pool_name IN VARCHAR2 DEFAULT NULL,
database_connect_string IN VARCHAR2 DEFAULT NULL,
password IN VARCHAR2 DEFAULT NULL,
region IN VARCHAR2 DEFAULT NULL,
scan IN VARCHAR2 DEFAULT NULL,
ons IN NUMBER DEFAULT NULL,
cpu IN NUMBER DEFAULT NULL,
srlat IN NUMBER DEFAULT NULL,
encpassword IN RAW DEFAULT NULL);
Updates DDL application results for a given Database
dbms_gsm_pooladmin.modifyDatabaseDDLState(
db_unique_name IN VARCHAR2,
ddlid IN NUMBER DEFAULT NULL,
ddl_error IN VARCHAR2 DEFAULT NULL,
deploy_flag IN NUMBER DEFAULT NULL);
dbms_gsm_pooladmin.modifyRemoteCred(
credential_name IN VARCHAR2,
username IN VARCHAR2 DEFAULT NULL,
password IN VARCHAR2 DEFAULT NULL,
windows_domain IN VARCHAR2 DEFAULT NULL);
As you can see from the demo, at right, database_pool_name may DEFAULT to NULL but you must have one
dbms_gsm_pooladmin.modifyService(
database_pool_name IN VARCHAR2 DEFAULT NULL,
service_name IN VARCHAR2,
svc_locality IN NUMBER DEFAULT NULL,
region_failover IN NUMBER DEFAULT NULL,
db_role IN NUMBER DEFAULT NULL,
failover_primary IN NUMBER DEFAULT NULL,
rlb_goal IN NUMBER DEFAULT NULL,
clb_goal IN NUMBER DEFAULT NULL,
ha_notification IN NUMBER DEFAULT NULL,
taf_policy IN NUMBER DEFAULT NULL,
restart_policy IN NUMBER DEFAULT NULL,
distr_trans IN NUMBER DEFAULT NULL,
lag IN NUMBER DEFAULT NULL,
max_lag IN NUMBER DEFAULT NULL,
failover_method IN VARCHAR2 DEFAULT NULL,
failover_type IN VARCHAR2 DEFAULT NULL,
failover_retries IN NUMBER DEFAULT NULL,
failover_delay IN NUMBER DEFAULT NULL,
edition IN VARCHAR2 DEFAULT NULL,
pdb IN VARCHAR2 DEFAULT NULL,
commit_outcome IN NUMBER DEFAULT NULL,
retention_timeout IN NUMBER DEFAULT NULL,
replay_initiation_timeout IN NUMBER DEFAULT NULL,
session_state_consistency IN VARCHAR2 DEFAULT NULL,
sql_translation_profile IN VARCHAR2 DEFAULT NULL,
force IN NUMBER DEFAULT dbms_gsm_common.isFalse,
drain_timeout IN NUMBER DEFAULT NULL,
stop_option IN VARCHAR2 DEFAULT NULL,
failover_restore IN VARCHAR2 DEFAULT NULL);
SQL> exec gsmadmin_internal.dbms_gsm_pooladmin.modifyService(service_name => 'pdbdev', clb_goal => dbms_service.clb_goal_short);
BEGIN gsmadmin_internal.dbms_gsm_pooladmin.modifyService(service_name=>'pdbdev', clb_goal=>dbms_service.clb_goal_short); END;
*
ERROR at line 1:
ORA-45558: There are no database pools in this catalog.
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 11406
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 491
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 11148
ORA-06512: at line 1
Changes the set of preferred and available databases for a service
dbms_gsm_pooladmin.modifyServiceConfig(
database_pool_name IN VARCHAR2 DEFAULT NULL,
service_name IN VARCHAR2,
preferred_all IN NUMBER,
preferred_dbs IN name_list_type,
available_dbs IN name_list_type,
force IN NUMBER DEFAULT NULL);
Modifies the attributes of a service specific to a (RAC) database
As you can see from the demo, at right, database_pool_name may DEFAULT to NULL but you must have one
dbms_gsm_pooladmin.modifyServiceOnDB(
database_pool_name IN VARCHAR2 DEFAULT NULL,
service_name IN VARCHAR2,
database_name IN VARCHAR2,
params IN VARCHAR2 DEFAULT NULL,
dbparam_names IN name_list_type DEFAULT CAST(NULL AS name_list_type),
dbparam_values IN name_list_type DEFAULT CAST(NULL AS name_list_type),
palist_op IN CHAR DEFAULT NULL,
preferred_list IN name_list_type DEFAULT CAST(NULL AS name_list_type),
available_list IN name_list_type DEFAULT CAST(NULL AS name_list_type),
force IN NUMBER DEFAULT dbms_gsm_common.isFalse);
SQL> exec gsmadmin_internal.dbms_gsm_pooladmin.modifyServiceOnDB(service_name => 'pdbdev', database_name => 'ORABASE2');
BEGIN gsmadmin_internal.dbms_gsm_pooladmin.modifyServiceOnDB(service_name => 'pdbdev', database_name o=> 'ORABASE2'); END;
*
ERROR at line 1:
ORA-45558: There are no database pools in this catalog.
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 12517
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 491
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 12248
ORA-06512: at line 1
dbms_gsm_pooladmin.modifyShard(
shardgroup_name IN VARCHAR2,
region_name IN VARCHAR2 DEFAULT NULL,
shardspace_name IN VARCHAR2 DEFAULT NULL,
repfactor IN NUMBER DEFAULT NULL,
deploy_as IN NUMBER DEFAULT NULL);
dbms_gsm_pooladmin.modifyShardGroup(
shardgroup_name IN VARCHAR2,
region_name IN VARCHAR2 DEFAULT NULL,
shardspace_name IN VARCHAR2 DEFAULT NULL,
repfactor IN NUMBER DEFAULT NULL,
deploy_as IN NUMBER DEFAULT NULL);
dbms_gsm_pooladmin.moveChunk(
chunks IN name_list_type,
source IN VARCHAR2,
target IN VARCHAR2 DEFAULT NULL,
timeout IN NUMBER DEFAULT 0,
verbose IN NUMBER DEFAULT 0,
copy IN NUMBER DEFAULT 0);
dbms_gsm_pooladmin.moveChunkAtomic(
chunks IN name_list_type,
source IN VARCHAR2,
target IN VARCHAR2 DEFAULT NULL,
timeout IN NUMBER DEFAULT 0,
verbose IN NUMBER DEFAULT 0,
copy IN NUMBER DEFAULT 0,
internalcall IN NUMBER DEFAULT dbms_gsm_common.isFalse,
mmode IN NUMBER DEFAULT 1);
Moves an existing service from one database to another
dbms_gsm_pooladmin.moveServiceToDB(
database_pool_name IN VARCHAR2 DEFAULT NULL,
service_name IN VARCHAR2,
old_db IN VARCHAR2,
new_db IN VARCHAR2,
force IN NUMBER DEFAULT NULL);
Used to repair metadata related to PDB shards when upgrading from 18c to a newer release
dbms_gsm_pooladmin.updateMoveState(
chunk IN NUMBER,
gsmreq_id IN NUMBER,
state IN NUMBER DEFAULT 0,
is_term IN NUMBER DEFAULT dbms_gsm_common.isFalse);
dbms_gsm_pooladmin.recoverShardDDL(
shard_name IN VARCHAR2 DEFAULT NULL,
database_name IN VARCHAR2,
ddlaction IN NUMBER DEFAULT dbms_gsm_common.execddl_DEFAULT);
Relocate a service from one database to another. This operation does not change the underlying configuration of the service
dbms_gsm_pooladmin.relocateService(
database_pool_name IN VARCHAR2 DEFAULT NULL,
service_name IN VARCHAR2,
old_database_name IN VARCHAR2,
new_database_name IN VARCHAR2,
force IN NUMBER DEFAULT NULL);
Removes entire broker configuration (all databases and services)
dbms_gsm_pooladmin.removeBrokerConfig(
database_pool_name IN VARCHAR2,
action IN NUMBER DEFAULT logical,
gen_aq_notification IN NUMBER DEFAULT gen_aq_on);
dbms_gsm_pooladmin.removeCDB(
cdb_list IN name_list_type DEFAULT CAST(NULL AS name_list_type),
force IN NUMBER DEFAULT NULL);
DECLARE
inList gsmadmin_internal.dbms_gsm_pooladmin.name_list_type;
BEGIN
inList(1) := 'ORCLCDB';
gsmadmin_internal.dbms_gsm_pooladmin.removeCDB(inList, 0);
END;
/
DECLARE
*
ERROR at line 1:
ORA-03794: CDB does not exist: ORCLCDB
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 4744
ORA-06512: at line 5
dbms_gsm_pooladmin.removeDatabase(
db_unique_name IN VARCHAR2,
database_pool_name IN VARCHAR2 DEFAULT NULL,
action IN NUMBER DEFAULT logical,
force IN NUMBER DEFAULT NULL,
gen_aq_notification IN NUMBER DEFAULT gen_aq_on,
ignore_missing IN NUMBER DEFAULT dbms_gsm_common.isFalse);
dbms_gsm_pooladmin.removeRemoteCred(credential_name IN VARCHAR2);
exec gsmadmin_internal.dbms_gsm_pooladmin.removeRemoteCred('UWRCred');
BEGIN gsmadmin_internal.dbms_gsm_pooladmin.removeRemoteCred('UWRCred'); END;
*
ERROR at line 1:
ORA-02602: credential does not exist: UWRCred
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 24409
ORA-06512: at line 1
Remove a service from a database pool; called by GSM directly
dbms_gsm_pooladmin.removeServiceInternal(
database_pool_name IN VARCHAR2 DEFAULT NULL,
service_name IN VARCHAR2,
calledByGSM IN NUMBER DEFAULT 0,
gen_aq_notification IN NUMBER DEFAULT gen_aq_on,
force IN NUMBER DEFAULT NULL);
dbms_gsm_pooladmin.removeShard(
shard_list IN name_list_type DEFAULT CAST(NULL AS name_list_type),
shardspace_list IN name_list_type DEFAULT CAST(NULL AS name_list_type),
shardgroup_list IN name_list_type DEFAULT CAST(NULL AS name_list_type),
force IN NUMBER DEFAULT NULL);
Sets a DataGuard property value for a shardgroup, shardspace, shard, or broker config.
dbms_gsm_pooladmin.setDGProperty(
shardgroup_name IN VARCHAR2 DEFAULT NULL,
shard_name IN VARCHAR2 DEFAULT NULL,
broker_name IN VARCHAR2 DEFAULT NULL,
shardspace_name IN VARCHAR2 DEFAULT NULL,
prop_name IN VARCHAR2,
prop_value IN VARCHAR2 DEFAULT NULL,
prop_scope IN VARCHAR2 DEFAULT NULL,
prop_reset IN NUMBER DEFAULT 0);
dbms_gsm_pooladmin.stopService(
database_pool_name IN VARCHAR2 DEFAULT NULL,
service_name IN VARCHAR2 DEFAULT NULL,
database_name IN VARCHAR2 DEFAULT NULL,
force IN NUMBER DEFAULT NULL,
options IN VARCHAR2 DEFAULT NULL);
This is an incredibly valuable find and should be part of every DBA and Developer's toolkit
dbms_gsm_pooladmin.strToList(lstring IN VARCHAR2)
RETURN name_list_type;
DECLARE
retVal gsmadmin_internal.dbms_gsm_pooladmin.name_list_type;
BEGIN
retVal := gsmadmin_internal.dbms_gsm_pooladmin.strToList('A,B,C');
dbms_output.put_line(retVal(1));
dbms_output.put_line(retVal(2));
dbms_output.put_line(retVal(3));
END;
/ A
B
C
Docs indicate that this is a renamed command but do not know the original name
dbms_gsm_pooladmin.syncDDL(
retrieve_only IN NUMBER DEFAULT 0,
apply IN NUMBER DEFAULT 0,
schemas IN name_list_type DEFAULT CAST(NULL AS name_list_type),
restart IN NUMBER DEFAULT 0,
skip_first IN NUMBER DEFAULT 0,
deploy_wait IN NUMBER DEFAULT NULL);
Called for federated database after adding existing databases. This procedure extracts DDLs from newly added shards; generates a 'common' schema and applies it on the catalog.
dbms_gsm_pooladmin.syncSchema(
retrieve_only IN NUMBER DEFAULT 0,
apply IN NUMBER DEFAULT 0,
schemas IN name_list_type DEFAULT CAST(NULL AS name_list_type),
restart IN NUMBER DEFAULT 0,
skip_first IN NUMBER DEFAULT 0);
dbms_gsm_pooladmin.updateChunkLocationRemote(chunk_id IN NUMBER);
exec gsmadmin_internal.dbms_gsm_pooladmin.updateChunkLocationRemote(128);
BEGIN gsmadmin_internal.dbms_gsm_pooladmin.updateChunkLocationRemote(128); END;
*
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 12167
ORA-06512: at line 1
dbms_gsm_pooladmin.updateDatabaseStatus(
db_unique_name IN VARCHAR2,
database_pool_name IN VARCHAR2 DEFAULT NULL,
status IN CHAR DEFAULT NULL,
db_vers IN NUMBER DEFAULT NULL);
dbms_gsm_pooladmin.updateMoveChunk(
chunks IN name_list_type DEFAULT CAST(NULL AS name_list_type),
db_list IN name_list_type DEFAULT CAST(NULL AS name_list_type),
verbose IN NUMBER DEFAULT 0,
action IN NUMBER DEFAULT dbms_gsm_utility.restart_move);
dbms_gsm_pooladmin.updateMoveState(
chunk IN NUMBER,
gsmreq_id IN NUMBER,
state IN NUMBER DEFAULT 0,
is_term IN NUMBER DEFAULT dbms_gsm_common.isFalse);