web-dev-qa-db-ja.com

expdpコマンドの実行中に「Snapshot too old」エラーが発生する

本番データベースでexpdpコマンドを実行しているときに問題が発生した場合(Windows環境でのOracle 11g)

cmd> expdp 'sys/123 @ PROD as sysdba' DUMPFILE = BACKUP_02082017_BACKUP.dmp LOGFILE = BakupLog_02082017_BACKUP.log SCHEMAS = A1、B2、C3、D4 .. exclude = statistics constant = y

7GBサイズのデータ​​ベースをエクスポートするのに1日以上かかりました。しかし、私の問題は、エクスポートにエラーがあり、エラーメッセージが表示されることです

ORA-31693:テーブルデータオブジェクト「所有者」。名前「_SYSSMU19_255734752 $」が小さすぎます

保存ポリシーをデフォルトの900から16500に設定したので、同じエラーが発生していました。

保持ポリシーを最大10時間、つまり36000に増やす予定なので、実行可能ですか?私のUNDO表スペースがこれに対応しているかどうか混乱していますか?

さらに詳細を提供する:

>  show parameter undo_%;

 NAME                                             TYPE        VALUE                                                                                                
-------------------------------------------------- ----------- -------- 
undo_management                                   string     AUTO                                                                                                 
undo_retention                                    integer    16500                                                                                                
undo_tablespace                                   string     UNDOTBS1  




>  select file_name,tablespace_name,trunc(bytes/1024/1024) mb, trunc(maxbytes/1024/1024) mm
        FROM dba_data_files
        where tablespace_name = 'UNDOTBS1';

FILE_NAME                                  TABLESPACE_NAME    MB MM
--------------------------------------------------------------------
C:\APP\ADMIN\ORADATA\PROD\UNDOTBS01.DBF   UNDOTBS1          5630 32767




>Size of undo with current undo_retention :
     Actual Undo size[MBytes]:5630
     UNDO retention[Sec]:16500 
     Needed Undo Size[MBytes]:909.433359

この問題に悩まされています。誰でも私がこのエラーにどう対処するかアドバイスしてください?

前もって感謝します。

1
SHS

_ORA-01555_エラーの原因は、_undo_retention_パラメータが、パラメータ_consistent=y_(これは11gで非推奨になり、_flashback_time_または_flashback_scn_)。

元に戻す保持では、エクスポートジョブの期間中、元に戻す情報を保持できる必要があります。

たとえば、エクスポートが_00:00 AM_で始まり、完了するまでに2時間かかる場合、一貫したデータを取得するには、_undo_retention_を少なくとも2時間に設定する必要があります。

テストサーバーで問題をシミュレートしました。

_[Oracle@orcl expdp_dump]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Feb 8 09:41:40 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     2400
undo_tablespace                      string      UNDOTBS1
_

元に戻す保持は40分に設定されています。

_SQL> select bytes/1024/1024 from v$datafile where ts#=2;

BYTES/1024/1024
---------------
          32764
_

そして、私のUNDOテーブルスペースは32GBです。

スキーマの1つをエクスポートしようとしました。

_expdp system/password directory=DP_DIR schemas=MYSCHEMA dumpfile=expdp_orcl_MYSCHEMA.dmp logfile=expdp_orcl_MYSCHEMA.log FLASHBACK_TIME=SYSTIMESTAMP
_

ジョブ "SYSTEM"。 "SYS_EXPORT_SCHEMA_07"が2月7日火曜日の1エラーで完了しました2017年2月14日22:14:46経過0 01:14:39

1時間14分かかりました。また、データベースには中程度のDML操作がありました。

_ORA-31693: Table data object "MYSCHEMA"."MS_TABLE":"MS_TABLE."MS_TABLE_B_2005" failed to load/unload and is being skipped due to error:
ORA-02354: error in exporting/importing data
ORA-01555: snapshot too old: rollback segment number 84 with name "_SYSSMU84_1745672109$" too small
. . exported "MYSCHEMA"."PRORATE_EVENT"              8.789 KB       4 rows
. . exported "MYSCHEMA"."PRORATE_RULE_GROUP"         5.945 KB       1 rows
. . exported "MYSCHEMA"."Oracle_JOB_METADATA"            0 KB       0 rows
_

そして、_ORA-0155_エラーが発生しました。

次に、取り消しの保持を1時間20分に増やしました。

_SQL> alter system set undo_retention=4800;

System altered.
_

もう一度スキーマをエクスポートしようとしました。

_expdp system/password directory=DP_DIR schemas=MYSCHEMA dumpfile=expdp_orcl_MYSCHEMA.dmp logfile=expdp_orcl_MYSCHEMA.log FLASHBACK_TIME=SYSTIMESTAMP
_

ジョブ "SYSTEM"。 "SYS_EXPORT_SCHEMA_07"が2017年2月8日水曜日22:15:52に正常に完了しました。経過時間は0 01:15:45です。

そして、もう_ORA-01555_はありませんでした。

BLOCKSメソッドを使用した推定合計:182.9 GB

実際のファイルサイズは141 GBです。

ダンプファイルの見積もりと実際のサイズの違いはなぜですか?答えは this postを見てください。

輸出完了までの時間について。次のパラメータを使用してみてください。

  • 平行
    • DIRECT = y

      また、エクスポートジョブを開始する前に、データディクショナリ統計を収集してください。

      _SQL> connect / as sysdba
      SQL> exec dbms_stats.gather_dictionary_stats;
      SQL> exec dbms_stats.lock_table_stats (null,'X$KCCLH'); 
      SQL> exec dbms_stats.gather_fixed_objects_stats;
      _

      参考文献:

    • 大規模データベースでのDataPumpエクスポートのパフォーマンスの低下(Doc ID 473423.1)
    • データポンプエクスポート
  • 2
    JSapkota