Which has the higher priority in your organization: Deploying a new database or securing the ones you already have?
Looking for a website, and resources, dedicated solely to securing Oracle databases? Check out DBSecWorx.
Owned by GSMADMIN_INTERNAL with EXECUTE granted to DATAPUMP_IMP_FULL_DATABASE, GGSYS, GSMADMIN_ROLE, GSMROOTUSER_ROLE. GSMUSER_ROLE, GSM_POOLADMIN_ROLE
Determines if provided versions are compatible with each other
dbms_gsm_utility.compatibleVersion(
gdsctl_version IN NUMBER DEFAULT NULL,
catalog_version IN NUMBER DEFAULT NULL,
gsm_version IN NUMBER DEFAULT NULL,
db_version IN NUMBER DEFAULT NULL)
RETURN BOOLEAN;
BEGIN
IF gsmadmin_internal.dbms_gsm_utility.compatibleVersion THEN
dbms_output.put_line('Compatible');
ELSE
dbms_output.put_line('Not Compatible');
END IF;
END;
/ Compatible
Checks if the specified database pool exists in the cloud catalog
dbms_gsm_utility.databasePoolExists(database_pool_name IN VARCHAR2)
RETURN BOOLEAN;
SQL> BEGIN
2 IF gsmadmin_internal.dbms_gsm_utility.databasePoolExists('UWDBPOOL') THEN
3 dbms_output.put_line('F');
4 ELSE
5 dbms_output.put_line('F');
6 END IF;
7 END;
8 / F
dbms_gsm_utility.fedInsertCatalogDDL(
ddl_text IN CLOB,
schema_name IN VARCHAR2 DEFAULT NULL,
object_name IN VARCHAR2 DEFAULT NULL,
operation_type IN CHAR,
object_type IN VARCHAR2,
ddl_num OUT NUMBER);
Generates a description of a change and puts it into the change log queue
Overload 1
dbms_gsm_utility.generateChangeLogEntry(
adminId IN NUMBER,
changeId IN NUMBER,
target IN VARCHAR2,
poolName IN VARCHAR2 DEFAULT NULL,
params IN VARCHAR2 DEFAULT NULL,
updateRequestTable IN NUMBER DEFAULT updateTrue,
old_instances IN instance_list DEFAULT NULL,
ddl_num IN NUMBER DEFAULT NULL,
databases IN number_list DEFAULT NULL)
ACCESSIBLE BY (PACKAGE dbms_gsm_dbadmin,
PACKAGE dbms_gsm_pooladmin,
PACKAGE dbms_gsm_common,
PACKAGE dbms_gsm_cloudadmin,
PACKAGE ggsys.ggsharding);
TBD
Overload 2
dbms_gsm_utility.generateChangeLogEntry(
adminId IN NUMBER,
changeId IN NUMBER,
target IN VARCHAR2,
poolName IN VARCHAR2 DEFAULT NULL,
params IN VARCHAR2 DEFAULT NULL,
updateRequestTable IN NUMBER DEFAULT updateTrue,
old_instances IN instance_list DEFAULT NULL,
ddl_num IN NUMBER DEFAULT NULL,
databases IN number_list DEFAULT NULL,
parent_id IN NUMBER DEFAULT NULL,
seq_id OUT NUMBER)
ACCESSIBLE BY (PACKAGE dbms_gsm_dbadmin,
PACKAGE dbms_gsm_pooladmin,
PACKAGE dbms_gsm_common,
PACKAGE dbms_gsm_cloudadmin,
PACKAGE ggsys.ggsharding);
Gets the catalog lock prior to making a change to the cloud catalog
dbms_gsm_utility.getCatalogLock(currentChangeSeq OUT NUMBER);
DECLARE
outVal NUMBER;
BEGIN
gsmadmin_internal.dbms_gsm_utility.getCatalogLock(outVal);
dbms_output.put_line(TO_CHAR(outVal));
END;
/
DECLARE
*
ERROR at line 1:
ORA-03739: The specified database is not configured to be a catalog.
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 266
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 170
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 261
ORA-06512: at line 4
Gets the catalog lock prior to making a change to the cloud catalog
dbms_gsm_utility.getCatalogLockPrvt(
currentChangeSeq OUT NUMBER,
privs IN NUMBER,
gdsctl_version IN VARCHAR2 DEFAULT NULL,
gsm_version IN VARCHAR2 DEFAULT NULL,
gsm_name IN VARCHAR2 DEFAULT NULL,
catalog_vers OUT NUMBER,
update_mode IN NUMBER);
Obtains the GDS ONS config string based on region. This is used by the mid-tier routing Java library to get ONS subscription information when connected to the catalog local service
dbms_gsm_utility.getGDSONSConfig(region_name IN VARCHAR2 default NULL)
RETURN VARCHAR2;
SELECT gsmadmin_internal.dbms_gsm_utility.getGDSONSConfig
FROM dual;
Returns a binary (KDK) representation of the current session key
dbms_gsm_utility.getSessionKeyRaw(
colidx IN NUMBER,
klevel IN NUMBER DEFAULT 0)
RETURN RAW;
SELECT gsmadmin_internal.dbms_gsm_utility.getSessionKeyRaw(42,
0)
FROM dual;
SELECT
gsmadmin_internal.dbms_gsm_utility.getSessionKeyRaw(42, 0)
*
ERROR at line 1:
ORA-02667: Root table required to perform this operation was not found.
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2619
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2637
ORA-06512: at line 1
Returns a human readable representation (not reversible) of the current session key
dbms_gsm_utility.getSessionKeyTexT(klevel IN NUMBER DEFAULT 0)
RETURN VARCHAR2;
SELECT gsmadmin_internal.dbms_gsm_utility.getSessionKeyText
FROM dual;
SELECT gsmadmin_internal.dbms_gsm_utility.getSessionKeyText
*
ERROR at line 1:
ORA-02667: Root table required to perform this operation was not found.
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2969
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2982
ORA-06512: at line 1
Return shardspace id for the supershard key provided if the shardspace exists
dbms_gsm_utility.getShardSpaceIDbyText(
supersharding_key IN VARCHAR2,
b64flag IN NUMBER DEFAULT 0)
RETURN NUMBER;
SELECT gsmadmin_internal.dbms_gsm_utility.getShardSpaceIDbyText('SecretKey',
0)
FROM dual;
SELECT
gsmadmin_internal.dbms_gsm_utility.getShardSpaceIDbyText('SecretKey', 0)
*
ERROR at line 1:
ORA-02667: Root table required to perform this operation was not found.
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2573
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2582
ORA-06512: at line 1
BEGIN
IF gsmadmin_internal.dbms_gsm_utility.isGSMUp THEN
dbms_output.put_line('GSM Is Up');
ELSE
dbms_output.put_line('GSM Is Down');
END IF;
END;
/ GSM Is Down
dbms_gsm_utility.isShardedCatalog(stype OUT NUMBER)
RETURN BOOLEAN;
DECLARE
outVal NUMBER;
BEGIN
IF gsmadmin_internal.dbms_gsm_utility.isShardedCatalog(outVal) THEN
dbms_output.put_line('T');
dbms_output.put_line(TO_CHAR(outVal));
ELSE
dbms_output.put_line('F');
dbms_output.put_line(TO_CHAR(outVal));
END IF;
END;
/
DECLARE
*
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 309
ORA-06512: at line 4
dbms_gsm_utility.new_ddl_request(
ddl_text IN CLOB,
orig_ddl_text IN CLOB,
schema_name IN VARCHAR2 DEFAULT NULL,
object_name IN VARCHAR2 DEFAULT NULL,
operation_type IN VARCHAR2,
pwd_count IN NUMBER,
ddl_num OUT NUMBER);
dbms_gsm_utility.new_partition_set(
set_name IN VARCHAR2,
tsset_name IN VARCHAR2,
family_name IN VARCHAR2,
high_value_len IN NUMBER,
high_value IN LONG,
bin_high_value IN BLOB,
low_value_len IN NUMBER,
low_value IN LONG,
bin_low_value IN BLOB,
psorder IN NUMBER DEFAULT NULL);
dbms_gsm_utility.new_table(
table_name IN VARCHAR2,
schema_name IN VARCHAR2,
table_id IN NUMBER,
parent_name IN VARCHAR2 DEFAULT NULL,
ref_table_flag IN CHAR DEFAULT NULL);
Returns the database pool name to use on a dbms_gsm_* call when the database pool name in the routine call can be NULL
dbms_gsm_utility.prepareDBPoolName(
input_name IN VARCHAR2,
database_pool_name OUT VARCHAR2,
shardgroup_name IN VARCHAR2 DEFAULT NULL,
shardspace_name IN VARCHAR2 DEFAULT NULL)
RETURN BOOLEAN;
DECLARE
outVal VARCHAR2(128);
BEGIN
IF gsmadmin_internal.dbms_gsm_utility.prepareDBPoolName('UWPool', outVal) THEN
dbms_output.put_line('T: ' || outVal);
ELSE
dbms_output.put_line('F: ' || outVal);
END IF;
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 line 4
Returns the region name to use on a dbms_gsm_* call when the region name in the routine call can be NULL
dbms_gsm_utility.prepareRegionName(
input_name IN VARCHAR2,
region_name OUT VARCHAR2)
RETURN BOOLEAN;
DECLARE
outVal VARCHAR2(128);
BEGIN
IF gsmadmin_internal.dbms_gsm_utility.prepareRegionName('SerVerS', outVal) THEN
dbms_output.put_line('T: ' || outVal);
ELSE
dbms_output.put_line('F: ' || outVal);
END IF;
END;
/ T: servers -- region names are always lower case
Causes a warning message to display on GDSCTL session. Use when error doesn't come directly from GDSCTL session but from another session generated by AQ
dbms_gsm_utility.raise_gsm_error(
errmesg IN VARCHAR2,
parent_req IN NUMBER DEFAULT NULL);
exec gsmadmin_internal.dbms_gsm_utility.raise_gsm_error('ORA-01400', 999);
BEGIN
gsmadmin_internal.dbms_gsm_utility.raise_gsm_error('TestMsg', 999); END;
*
ERROR at line 1:
ORA-01400: cannot insert NULL into ("GSMADMIN_INTERNAL"."GSM_REQUESTS"."CHANGE_SEQ#")
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2263
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 2244
ORA-06512: at line 1
Checks if the specified region exists in the cloud catalog
dbms_gsm_utility.regionExists(
region_name IN VARCHAR2,
region_num OUT NUMBER)
RETURN BOOLEAN;
DECLARE
outVal NUMBER;
BEGIN
IF gsmadmin_internal.dbms_gsm_utility.regionExists('ZZYZX', outVal) THEN
dbms_output.put_line('The region number is: ' || TO_CHAR(outVal));
ELSE
dbms_output.put_line('Region Not Found');
END IF;
END;
/ Region Not Found
Releases the catalog lock and commits or rolls back the changes made under the lock
dbms_gsm_utility.releaseCatalogLock(
action IN NUMBER DEFAULT releaseLockCommit,
changeSeq OUT NUMBER);
DECLARE
outVal VARCHAR2(30);
BEGIN
gsmadmin_internal.dbms_gsm_utility.releaseCatalogLock(changeSeq => outVal);
dbms_output.put_line(TO_CHAR(outVal));
END;
/
DECLARE
*
ERROR at line 1:
ORA-03739: The specified database is not configured to be a catalog.
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 297
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 170
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 286
ORA-06512: at line 4
Releases the catalog lock and commits or rolls back the changes made under the lock
dbms_gsm_utility.releaseCatalogLockPrvt(
action IN NUMBER DEFAULT releaseLockCommit,
changeSeq OUT NUMBER);
DECLARE
outVal VARCHAR2(30);
BEGIN
gsmadmin_internal.dbms_gsm_utility.releaseCatalogLockPrvt(changeSeq => outVal);
dbms_output.put_line(TO_CHAR(outVal));
END;
/
DECLARE
*
ERROR at line 1:
ORA-03739: The specified database is not configured to be a catalog.
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 3608
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 170
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 3595
ORA-06512: at line 4
Reserve reserve_count database numbers from cloud: Only useful for PL/SQL calls, current value should be known already otherwise this function has no good use.
dbms_gsm_utility.reserveInstNums(reserve_count IN NUMBER);
Reserves the next available DB number for use, updates the cloud table, but does not commit
dbms_gsm_utility.reserveNextDBNum(reserve_count IN NUMBER DEFAULT NULL)
RETURN NUMBER;
SQL> DECLARE
2 retVal NUMBER;
3 BEGIN
4 retVal := gsmadmin_internal.dbms_gsm_utility.reserveNextDBNum(3);
5 dbms_output.put_line(retVal);
6 END;
7 /
DECLARE
*
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_UTILITY", line 1817
ORA-06512: at line 4
Set the current session key as text value, columns separated by comma. Base64 TEXT escaping for each column value is supported, ^ as the first character, e.g. : 1,abc,3 can be represented as ^MQ==,^YWJj,^Mw==
dbms_gsm_utility.setSessionKey(
sharding_k IN VARCHAR2,
supersharding_k IN VARCHAR2);