データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

Oracleの代替アーカイブ先

Oracle®データベースをアーカイブすると、データを長期間保持および保存できますが、スペースが不足するとどうなりますか?

はじめに

アーカイブ先がいっぱいになると、Oracleデータベースがハングしたり、スタックしたりする可能性があり、次のいずれかのエラーが発生する可能性があります。

  • 0RA-00257 :アーカイバエラー、解放されるまで内部接続のみ
  • ORA-16014 :ログ2シーケンス#1934はアーカイブされてお​​らず、利用可能な宛先がありません

この場合、元のアーカイブ先に障害が発生したときに使用する代替のアーカイブ先が必要です。プライマリアーカイブの宛先で障害(スペース、ハードウェアなど)が発生した場合に、代替のアーカイブ宛先を利用できます。

それがどのように機能するかを理解するために簡単なデモンストレーションを見てみましょう。

デモパート1

まず、プライマリアーカイブの宛先を / u03 / primary_dest locationに設定しました 、現在99%使用されています。テストと同じことができます。

次に、次のコマンドを実行します。

SQL> select version from v$instance;

VERSION
-----------------
12.1.0.2.0

SQL> select DEST_NAME,TARGET,DESTINATION,VALID_ROLE,STATUS 
from v$archive_dest where status!='INACTIVE';

DEST_NAME             TARGET     DESTINATION          VALID_ROLE   STATUS
--------------------- ---------- -------------------- ------------ ---------
LOG_ARCHIVE_DEST_1    PRIMARY    /u03/primary_dest     ALL_ROLES    VALID
デモパート2

代替アーカイブ先を追加しましょう/u04 / alternate_dest 、プライマリ宛先が利用できない場合にシステムが使用できるもの。

SQL> !df -h /u04/alternate_dest
Filesystem            Size  Used Avail Use% Mounted on
/dev/ddg2            1004M   18M 
936M   2% /u04

SQL> alter system set log_archive_dest_2='LOCATION=/u04/alternate_dest' scope=both;

System altered.

SQL> alter system set log_archive_dest_state_2=ALTERNATE scope=both;

System altered.

SQL> select DEST_NAME,TARGET,DESTINATION,VALID_ROLE,STATUS,ALTERNATE from v$archive_dest where status!='INACTIVE';

DEST_NAME           TARGET      DESTINATION         VALID_ROLE   STATUS      ALTERNATE
------------------- ----------- ------------------- ------------ ----------- ---------
LOG_ARCHIVE_DEST_1   PRIMARY    /u03/primary_dest    ALL_ROLES    VALID      NONE
LOG_ARCHIVE_DEST_2   PRIMARY    /u04/alternate_dest  ALL_ROLES    ALTERNATE  NONE
デモパート3

プライマリと代替のアーカイブ先をリンクでき、プライマリの場所の使用率が100%に達すると、Oracleは代替のアーカイブの場所にフェイルオーバーできます。ただし、プライマリが再び使用可能になった後、Oracleはプライマリの宛先へのフェイルバックを実行できません。これを機能させるには、プライマリアーカイブの宛先 LOG_ARCHIVE_DEST_1を設定する必要があります 、代替として 代替アーカイブ先の場合、 LOG_ARCHIVE_DEST_2 、次の例に示すように:

SQL> alter system set log_archive_dest_2='LOCATION=/u04/alternate_dest 
NOREOPEN ALTERNATE=LOG_ARCHIVE_DEST_1' scope=both;

System altered.

SQL> alter system set log_archive_dest_1='LOCATION=/u03/primary_dest
NOREOPEN ALTERNATE=LOG_ARCHIVE_DEST_2' scope=both;

System altered.

SQL> select DEST_NAME,TARGET,DESTINATION,VALID_ROLE,STATUS,ALTERNATE
from v$archive_dest where status!='INACTIVE';

DEST_NAME            TARGET      DESTINATION          VALID_ROLE   STATUS     ALTERNATE
-------------------- ----------- -------------------- ------------ ---------- ------------------
LOG_ARCHIVE_DEST_1   PRIMARY     /u03/primary_dest     ALL_ROLES    VALID     LOG_ARCHIVE_DEST_2
LOG_ARCHIVE_DEST_2   PRIMARY     /u04/alternate_dest   ALL_ROLES    ALTERNATE LOG_ARCHIVE_DEST_1

アーカイブ先1と2をリンクしたことを確認できます。プライマリに空き領域ができた後、Oracleはプライマリにフェールバックできるようになります。

デモパート4

次に、次の出力に示すように、アーカイブ先が100%の使用率になるように、いくつかのDMLを実行しました。

Thread 1 is advanced to log sequence 20 (LGWR switch)
  Current log# 2 seq# 20 mem# 0: /u01/app/oracle/oradata/MODI/redo02.log
2020-12-05T04:44:29.216275+05:30
ARC0: Encountered disk I/O error 19502
2020-12-05T04:44:29.216575+05:30
ARC0: Closing local archive destination LOG_ARCHIVE_DEST_1 '/u03/primary_dest/1_19_1058325294.dbf' (error 19502) (MODI)
2020-12-05T04:44:29.217417+05:30
Errors in file /u01/app/oracle/diag/rdbms/modi/MODI/trace/MODI_arc0_23015.trc:
ORA-27072: File I/O error
Additional information: 4
Additional information: 350208
Additional information: 446464
ORA-19502: write error on file "/u03/primary_dest/1_19_1058325294.dbf", block number 350208 (block size=512)
2020-12-05T04:44:32.583182+05:30
MODIP(3):Resize operation completed for file# 11, old size 1172480K, new size 1182720K
2020-12-05T04:44:33.183355+05:30
Errors in file /u01/app/oracle/diag/rdbms/modi/MODI/trace/MODI_arc0_23015.trc:
ORA-19502: write error on file "/u03/primary_dest/1_19_1058325294.dbf", block number 350208 (block size=512)
ORA-27072: File I/O error
Additional information: 4
Additional information: 350208
Additional information: 446464
ORA-19502: write error on file "/u03/primary_dest/1_19_1058325294.dbf", block number 350208 (block size=512)
ステップ5

Oracleは常にプライマリ宛先へのアーカイブを試み、プライマリ宛先への自動フェイルバックはバージョン12cで機能します。プライマリ宛先をクリーンアップしてアーカイブに使用できるようにした後、Oracleは、 v $ archived_log <を照会した次の例に示すように、アラートログファイルにエラーやフェイルバックメッセージを報告せずに、REDOログをプライマリ宛先にアーカイブし続けます。 / strong> :

SQL> select thread#、sequence#、name from v $ archive_log;

THREAD#  SEQUENCE#  NAME
-------- ---------- -----------------------------------------------
     1          2 /u03/primary_dest/1_2_1058325294.dbf
     1          3 /u03/primary_dest/1_3_1058325294.dbf
     1          4 /u03/primary_dest/1_4_1058325294.dbf
     1          5 /u03/primary_dest/1_5_1058325294.dbf
     1          6 /u04/alternate_dest/1_6_1058325294.dbf
     1          7 /u04/alternate_dest/1_7_1058325294.dbf
     1          8 /u04/alternate_dest/1_8_1058325294.dbf
     1          9 /u04/alternate_dest/1_9_1058325294.dbf
     1         10 /u04/alternate_dest/1_10_1058325294.dbf
     1         11 /u04/alternate_dest/1_11_1058325294.dbf
     1         12 /u04/alternate_dest/1_12_1058325294.dbf
     1         13 /u04/alternate_dest/1_13_1058325294.dbf
     1         14 /u04/alternate_dest/1_14_1058325294.dbf
     1         15 /u04/alternate_dest/1_15_1058325294.dbf
     1         16 /u04/alternate_dest/1_16_1058325294.dbf
     1         17 /u04/alternate_dest/1_17_1058325294.dbf
     1         18 /u04/alternate_dest/1_18_1058325294.dbf
     1         19 /u04/alternate_dest/1_19_1058325294.dbf
     1         20 /u04/alternate_dest/1_20_1058325294.dbf
     1         21 /u04/alternate_dest/1_21_1058325294.dbf
     1         22 /u04/alternate_dest/1_22_1058325294.dbf
     1         23 /u04/alternate_dest/1_23_1058325294.dbf
     1         24 /u04/alternate_dest/1_24_1058325294.dbf
     1         25 /u04/alternate_dest/1_25_1058325294.dbf
     1         26 /u04/alternate_dest/1_26_1058325294.dbf
     1         27 /u04/alternate_dest/1_27_1058325294.dbf
     1         28 /u04/alternate_dest/1_28_1058325294.dbf
     1         29 /u03/primary_dest/1_29_1058325294.dbf
     1         30 /u03/primary_dest/1_30_1058325294.dbf
     1         31 /u03/primary_dest/1_31_1058325294.dbf
     1         32 /u03/primary_dest/1_32_1058325294.dbf

31行が選択されました。

結論

オラクルは、プライマリ宛先と代替宛先の間のアーカイブ先の切り替えの自動管理を大幅に改善しました。うまくいけば、私のデモンストレーションを使用してこの機能を利用できます。

代替アーカイブがあると便利ですが、プライマリアーカイブの宛先が再び準備できるまで、Oracleはプライマリ宛先の失敗に関するエラーメッセージをアラートログファイルに断続的に記録することに注意してください。

データサービスの詳細をご覧ください。

コメントや質問をするには、[フィードバック]タブを使用します。私たちと会話を始めることもできます。


  1. OracleDeferredCOGSアカウンティング

    この投稿では、Oracle®CostManagementリリース12.0.0以降の繰延売上原価(DCOGS)勘定機能を紹介します。この拡張機能は、売上原価(COGS)を、以前は不可能だった収益に直接一致させます。 はじめに 以前のバージョンでは、出荷によって収益が得られなかった場合でも、システムは在庫から出荷された商品の価値をCOGSに費やしていました。この機能拡張により、システムは在庫から出荷された商品の価値をDCOGSアカウントに入れます。 この機能拡張により、一般に公正妥当と認められた会計原則(GAAP)の推奨事項に従って収益と売上原価を同期させるように変更が加えられます。ソフトウェ

  2. Oracle19cでDBCAコマンドを使用してデータベースのクローンを作成する

    このブログでは、Oracle19cの新機能であるDatabaseConfiguration Assistant(DBCA)を使用して、ソースデータベースのバックアップを作成せずにリモートプラガブルデータベース(PDB)をコンテナデータベース(CDB)に複製する方法を紹介します。 ソースからターゲットへのクローン作成にかかる時間は最小限です。 ソースDBの詳細 CDB:LCONCDBPDB:LCON 以下は総数です。ソース内の各コンテナ(CDBおよびPDB)の下にあるDBFファイルのうち、クローンがターゲット内にある後に検証する必要があります。上記のソースDBから、ターゲットホスト内にCDB