Oracle Database 26ai will be available on generic Linux platforms in January and soon on AIX and Windows
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);