我有一个带有以下设置的 AWS RDS Oracle 数据库版本,我正在尝试使用 DBMS_DATAPUMP 工具在 APPIAN 模式上进行数据导出,同时以 ORACLE 用户(即主用户)身份登录。
Oracle 数据库模式:
- 阿比安
- APPIANBIZ
- ORACLE(主用户)
版本:12.2.0.1.ru-2021-07.rur-2021-07.r1
用于数据库导出的代码(以 ORACLE 用户身份登录):
DECLARE
hdnl NUMBER;
BEGIN
hdnl := DBMS_DATAPUMP.OPEN( operation => 'EXPORT', job_mode => 'SCHEMA', job_name=>null);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'DEV_APPIAN_20211213.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'DEV_APPIAN_20211213_EXP.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file);
DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_EXPR','IN (''APPIAN'')');
DBMS_DATAPUMP.START_JOB(hdnl);
END;
在导出过程中,出现了一些错误:
Starting "ORACLE"."SYS_EXPORT_SCHEMA_04":
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
. . exported "APPIAN"."TEST_DATA" 248.1 MB 79245 rows
. . exported "APPIAN"."TEST_RESULT" 919.5 MB 37879 rows
. . exported "APPIAN"."TP_FEED_ENTRY" 27.14 MB 40498 rows
. . exported "APPIAN"."DT_MODEL" 389.6 MB 25744 rows
. . exported "APPIAN"."TP_FEED_ENTRY_LINKED_OBJ" 7.665 MB 53499 rows
. . exported "APPIAN"."RM_ENTRY_GROUPS" 1.898 MB 157058 rows
. . exported "APPIAN"."TP_COMMENT" 1.141 MB 12987 rows
. . exported "APPIAN"."WEB_API_HISTORY" 4.023 MB 960 rows
. . exported "APPIAN"."TP_FEED_ENTRY_RM" 543.0 KB 40471 rows
. . exported "APPIAN"."RM_ENTRY" 476.6 KB 40752 rows
. . exported "APPIAN"."RECORD_DETAIL_VIEW_CFG" 111.1 KB 207 rows
. . exported "APPIAN"."DATABASECHANGELOG" 172.0 KB 895 rows
. . exported "APPIAN"."RM_ENTRY_USERS" 180.0 KB 14122 rows
. . exported "APPIAN"."RECORD_RELATED_ACTION_CFG" 89.66 KB 121 rows
ORA-31693: Table data object "APPIAN"."RECORD_TYPE" failed to load/unload and is being skipped due to error:
ORA-04088: error during execution of trigger 'ORACLE.PREVENT_DROP'
ORA-00604: error occurred at recursive SQL level 4
ORA-20999: Attempt To Drop A Production Table Has Been Logged
Master table "ORACLE"."SYS_EXPORT_SCHEMA_04" successfully loaded/unloaded
******************************************************************************
Dump file set for ORACLE.SYS_EXPORT_SCHEMA_04 is:
/rdsdbdata/datapump/BGPDEV_APPIAN_20211213.dmp
Job "ORACLE"."SYS_EXPORT_SCHEMA_04" completed with 1 error(s) at Mon Dec 13 13:44:07 2021 elapsed 0 00:02:28
我意识到我们现有的触发器之一是为了防止我们的模式被删除,正在为其中一个表触发:
--code of trigger preventing drop
TRIGGER PREVENT_DROP
BEFORE DROP
ON SCHEMA
BEGIN
RAISE_APPLICATION_ERROR(-20999, 'Attempt To Drop A Production Table Has Been Logged');
END save_our_db;
我很困惑为什么在我们为 APPIAN 模式导出数据库期间触发了此触发器。出口DBMS_DATAPUMP
不应该放弃任何东西吗?
将感谢对这个谜团的解释!