0

我有一个带有以下设置的 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不应该放弃任何东西吗?

将感谢对这个谜团的解释!

4

0 回答 0