The dbms_cloud package comes built in in autonomous databases. Starting with 19.9 the dbms_cloud package could be installed in other databases as well. This has been documented in 2748362.1. There were no issues encountered while setting up the package in DBCS VM DB following the 2748362.1. The downloaded ssl files were stored in commonstore.
Files could be uploaded to storage bucket from the DBCS VM DB.
However, unlike in ATP importing and exporting from and to storage bucket fails.
Importing
Another difference is the creation of external tables. It is possible to create external tables using csv files.
define sslwalletdir=/opt/oracle/dcs/commonstore/wallets/sslWhat was noticable is that unlike in autonomous database certain functionality has been restricted.
Files could be uploaded to storage bucket from the DBCS VM DB.
SQL> exec dbms_cloud.put_object('BACKUP_CRED','https://swiftobjectstorage.uk-london-1.oraclecloud.com/v1/#namespace#/tabledata/exptest.dmp','DATA_PUMP_DIR','exp.dmp');The files in a bucket could be listed as well.
PL/SQL procedure successfully completed.
SQL> select object_name, bytes from dbms_cloud.list_objects('BACKUP_CRED','https://swiftobjectstorage.uk-london-1.oraclecloud.com/v1/#namespace#/tabledata');The package allows getting files from storage bucket.
OBJECT_NAME BYTES
----------- ---------
exptest.dmp 2932736
SQL> exec dbms_cloud.get_object('BACKUP_CRED','https://swiftobjectstorage.uk-london-1.oraclecloud.com/v1/#namespace#/tabledata/exptest.dmp','DATA_PUMP_DIR','gotfrombucketexp.dmp');
PL/SQL procedure successfully completed.
ls /u01/app/oracle/admin/ORCL/dpdump/BBAE40CB362D1F2CE0535406F40A0C73/
gotfrombucketexp.dmp
However, unlike in ATP importing and exporting from and to storage bucket fails.
Importing
impdp asanga@uatpdb credential=BACKUP_CRED dumpfile='https://swiftobjectstorage.uk-london-1.oraclecloud.com/v1/#namespace#/tabledata/exptest.dmp' directory=data_pump_dir logfile=impnew.log logtime=all metrics=yesExporting
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-31640: unable to open dump file "https://swiftobjectstorage.uk-london-1.oraclecloud.com/v1/#namespace#/tabledata/exptest.dmp" for read
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 7
expdp asanga@uatpdb dumpfile='DEFAULT_CREDENTIAL:https://swiftobjectstorage.uk-london-1.oraclecloud.com/v1/#namespace#/tabledata/expnew.dmp' directory=data_pump_dir logfile=newexp.log exclude=STATISTICS logtime=all metrics=yesAfter an SR oracle support stated that this feature is only available for autonomous and not available for other databases. Even if, now dbms_cloud package allows creation of credentials and 19c version of expdp/impdp allow credentails.
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-39088: file name cannot contain a path specification
Another difference is the creation of external tables. It is possible to create external tables using csv files.
SQL> DBMS_CLOUD.CREATE_EXTERNAL_TABLE(However, querying an external table created using datapump file fails.
table_name =>'test_ex_table',
credential_name =>'BACKUP_CRED',
file_uri_list =>'https://swiftobjectstorage.uk-london-1.oraclecloud.com/v1/#namespace#/tabledata/test2.csv',
format => json_object('type' value 'csv', 'skipheaders' value '1'),
field_list =>'A,B,C',
column_list =>'A number,
B varchar2(20),
C number');
END;
/
PL/SQL procedure successfully completed.
SQL> select * from test_ex_table;
A B C
---------- -------------------- ----------
998 abc 998 20958
999 abc 999 20979
1000 abc 1000 21000
1 abc 1 21
2 abc 2 42
3 abc 3 63
SQL> BEGINSame dumpfile and bucket works for ATP (see earlier post).
DBMS_CLOUD.CREATE_EXTERNAL_TABLE(
table_name =>'test_dmp_table',
credential_name =>'BACKUP_CRED',
file_uri_list =>'https://swiftobjectstorage.uk-london-1.oraclecloud.com/v1/#namespace#/tabledata/datetest.dmp',
format => json_object('type' value 'datapump', 'rejectlimit' value '1'),
column_list =>'VERSION VARCHAR2(20), INDATE date' );
END;
/
PL/SQL procedure successfully completed.
SQL> select * from test_dmp_table;
select * from test_dmp_table
*
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-11010: unable to open at least one dump file for fetch