Oracle Database 26ai is now availble. If you haven't you downloaded already: Why?
Purpose
Through 19c this package was used to manage collection metadata.
In 21c Oracle added functionality related to the DBMS_REDEFINITION package for performing online zero-downtime redefinition of SODA collections.
AUTHID
CURRENT_USER
Constants
Name
Data Type
Value
General
SQL_RESOURCE_BUS
NUMBER
-54
Data Types
TYPE vctab IS TABLE OF VARCHAR2(32767) INDEX BY BINARY_INTEGER;
TYPE nvctab IS TABLE OF NVARCHAR2(32767) INDEX BY BINARY_INTEGER;
TYPE ltab IS TABLE OF LONG INDEX BY BINARY_INTEGER;
TYPE vcntab IS TABLE OF VARCHAR2(32767);
TYPE nvcntab IS TABLE OF NVARCHAR2(32767);
TYPE nuntab IS TABLE OF NUMBER;
TYPE intntab IS TABLE OF PLS_INTEGER;
Dependencies
ALL_CONSTRAINTS
JSON$USER_COLLECTION_METADATA
ALL_CONS_COLUMNS
JSON_ARRAY_T
ALL_IND_COLUMNS
JSON_ELEMENT_T
DBMS_ASSERT
JSON_KEY_LIST
DBMS_JSON
JSON_OBJECT_T
DBMS_OUTPUT
PLITBLM
DBMS_REDEFINITION
SODA_COLLECTION_T
DBMS_SCHEDULER
USER_JSON_COLLECTIONS
DBMS_SODA
USER_JSON_COLLECTION_TABLES
DBMS_SODA_DML
USER_SCHEDULER_JOBS
DBMS_SODA_UTIL
USER_SYNONYMS
DBMS_SPACE
XMLTYPE
DUAL
Documented
No
Exceptions
Error Code
Reason
ORA-00942
SQL_OBJECT_NOT_EXISTS
ORA-00955
SQL_OBJECT_EXISTS
ORA-06513
SQL_INDEX_OUT_OF_BOUNDS
First Available
Not known
Security Model
Owned by XDB with EXECUTE granted to the SODA_APP role.
Copies the dependant objects of the original collection to the interim collection
dbms_soda_admin.copy_collection_dependents(
p_original_collection_name IN NVARCHAR2,
p_interim_collection_name IN NVARCHAR2,
p_ignore_errors IN BOOLEAN,
p_num_errors OUT PLS_INTEGER);
Create a collection for a specified URI name, with a specified descriptor. The URI name is case-sensitive.
dbms_soda_admin.create_collection(
p_uri_name IN NVARCHAR2,
p_create_mode IN VARCHAR2 DEFAULT 'MAP',
p_descriptor IN OUT VARCHAR2,
P_CREATE_TIME OUT VARCHAR2,
p_verbose IN BOOLEAN DEFAULT FALSE);
dbms_soda_admin.create_collection_inner(
p_uri_name IN NVARCHAR2,
p_create_mode IN VARCHAR2,
p_descriptor IN OUT VARCHAR2,
p_create_time OUT VARCHAR2,
p_verbose IN BOOLEAN,
p_current_user IN VARCHAR2,
p_current_schema IN VARCHAR2,
p_23c_driver IN BOOLEAN,
p_schema IN JSON,
p_schema_name IN VARCHAR2);
dbms_soda_admin.create_interim_collection(
p_original_collection_name IN NVARCHAR2,
p_interim_collection_name IN NVARCHAR2,
p_interim_metadata IN VARCHAR2 default null);
Drops all collections in the current user's schema
dbms_soda_admin.drop_collections(
p_collections OUT NVCNTAB,
p_errors OUT VCNTAB,
p_force IN VARCHAR2,
p_purge IN VARCHAR2 DEFAULT 'FALSE',
p_drop_mapped_table IN VARCHAR2 DEFAULT 'FALSE');
dbms_soda_admin.drop_collection_inner(
p_uri_name IN NVARCHAR2,
p_purge IN VARCHAR2,
p_drop_mapped_table IN VARCHAR2,
p_current_user IN VARCHAR2,
p_schema_name IN VARCHAR2);
Registers a dependent objects in the data dictionary
dbms_soda_admin.finish_redef_collection(
p_original_collection_name IN NVARCHAR2,
p_interim_collection_name IN NVARCHAR2,
p_dml_lock_timeout IN PLS_INTEGER,
p_omit_constraint_check IN BOOLEAN DEFAULT FALSE);
Returns the statistics for a collection as JSON text
dbms_soda_admin.get_collection_statistics(
p_uri_name IN NVARCHAR2,
p_force_analyze IN BOOLEAN DEFAULT FALSE,
p_statistics OUT VARCHAR2);
-- a sample return as documented by Oracle with 21c
{
"name" : "SODA_COLL" --> Name of the collection
"schema" : "SCOTT" --> Owner of the collection
"blockSize" : 8192, --> Block size of the tablespace
"numRows" : 5000, --> Number of documents in the collection
"avgRowLen" : 536, --> Average length of a document in collection
"sampleSize" : 5000 --> Sample size used in analyzing collection
"lastAnalyzed" : --> Date on which this collection was most
"2018-07-18T11:09:00" recently analyzed
"usedSize" : 2298150, --> Total size used by the collection
"tableBlocks" :
{
"allocated" : 412, --> Number of blocks allocated for the table
"empty" : 95, --> Number of empty blocks
"usedSize" : 2281766 --> Average size used by the table
},
"lobBlocks" :
{
"allocated" : 3, --> Number of blocks allocated in LOB segment
"empty" : 1, --> Number of empty blocks
"usedSize" : 16384 --> Average size used by the LOB
}
}
Returns the statistics for a non-domain index on a collection as JSON
dbms_soda_admin.get_index_statistics(
p_uri_name IN NVARCHAR2,
p_index_name IN VARCHAR2,
p_force_analyze IN BOOLEAN DEFAULT FALSE,
p_statistics OUT VARCHAR2);
-- a sample return as documented by Oracle with 21c
{
"name" : "SODA_COLL" --> Name of the index
"schema" : "SCOTT" --> Owner of the index
"blockSize" : 8192, --> Block size of the tablespace
"numRows" : 5000 --> Number of rows in the index
"sampleSize" : 5000 --> Sample size used in analyzing the index
"lastAnalyzed" : --> Date on which this index was most
"2018-07-18T11:09:00" recently analyzed
"indexBlocks" :
{
"allocated" : 20, --> Number of blocks allocated for the index
"empty" : 3, --> Number of empty blocks
"usedSize" : 139264 --> Average size used by the index
}
}
Returns DB parameters as name/value pairs. Currently returns 3 values: PKEY P_VALUE VARCHAR2_MAX 4000 or 32767, RAW_MAX 2000 or 32767, or "NVARCHAR2_MAX" 2000, 4000, 16383, or 32767
dbms_soda_admin.get_parameters(
p_key IN OUT xdb.dbms_soda_admin.vctab,
p_value IN OUT xdb.dbms_soda_admin.vctab);
Returns service name (cloud), and compatible parameter
What is fascinating about the value returned by p_service is that the Oracle 21c database is residing in the Oracle OCI Cloud: You wouldn't know it from the string 'ONPREMISE'.
dbms_soda_admin.get_service_and_compatible(
p_service OUT VARCHAR2,
p_compatible OUT NUMBER);
dbms_soda_admin.list_usage_statistics(
p_access_type IN VARCHAR2,
p_sort IN NUMBER,
p_limit IN NUMBER,
p_statistics OUT VARCHAR2,
p_schema_name IN VARCHAR2);
dbms_soda_admin.rename_column_inner(
p_collection_name IN NVARCHAR2,
p_old_column_name IN VARCHAR2,
p_new_column_name IN VARCHAR2
p_current_user IN VARCHAR2);
Starts the Redefinition process for the collection
dbms_soda_admin.start_redef_collection(
p_original_collection_name IN NVARCHAR2,
p_interim_collection_name IN NVARCHAR2,
p_copy_vpd_opt IN BINARY_INTEGER,
p_refresh_dep_mviews IN VARCHAR2);
Maintains synchronization between the original and interim collections
dbms_soda_admin.sync_interim_collection(
p_original_collection_name IN NVARCHAR2,
p_interim_collection_name IN NVARCHAR2,
p_omit_constraint_check IN BOOLEAN DEFAULT FALSE);