sql >> データベース >  >> RDS >> Oracle

ORA-00257:アーカイバエラー。解放されるまで、内部のみを接続します。

    ORA-00257 これは、OracleDBAで最も一般的なエラーの1つです。彼/彼女はしばしばそれに対処しなければなりません。Oracleデータベースはそれのためにほとんど凍結し、すべてのトランザクションが停止します。ORA-00257エラーに対処する方法を見てみましょう

    エラーメッセージ

    ORA-00257:アーカイバエラー。解放されるまで、内部のみを接続します。

    oerrによるとORA-00257エラーは

    を意味します

    ORA-00257:アーカイバエラー。解放されるまで、内部のみを接続します。原因:REDOログをアーカイブしようとしたときに、アーカイバプロセスがエラーを受け取りました。問題がすぐに解決されない場合、データベースはトランザクションの実行を停止します。このメッセージの原因として最も可能性が高いのは、宛先デバイスにREDOログファイルを保存するスペースがないことです。

    処置:問題の詳細な説明については、アーカイバのトレース・ファイルを確認してください。また、初期化パラメータarchive_log_destで指定されたデバイスがアーカイブ用に適切に設定されていることを確認してください。

    このエラーメッセージはどこに表示されますか

    1)アラートログに関連する以下のタイプのエラーメッセージが表示されます

    以下は、アラートログからの情報の場合です:

    ファイル\u01\ oracle \ product \ 11.2.0 \ diag \ rdbms \ TEST \ test \ trace \ test_arc1_1010.trc:ORA-19815のエラー:警告:21474836480バイトのdb_recovery_file_dest_sizeは100.00%使用されており、残りは0です。利用可能なバイト数.Wedjan21 02:44:02 2016 ************************************** **********************************フラッシュリカバリ領域からスペースを解放するには、次の選択肢があります:1。 RMAN保持ポリシーの変更を検討してください。 Data Guardを使用している場合は、RMAN ARCHIVELOGDELETIONPOLICY.2を変更することを検討してください。 RMANBACKUP RECOVERY AREAコマンドを使用して、テープなどの3次デバイスにファイルをバックアップします。3。ディスクスペースを追加し、db_recovery_file_dest_sizeパラメーターを増やして新しいスペースを反映します。4。 RMANDELETEコマンドを使用して不要なファイルを削除します。オペレーティングシステムコマンドを使用してファイルを削除した場合は、RMANCROSSCHECKおよびDELETEEXPIREDコマンドを使用してください。******************************** **************************************** ARC1:スレッド1シーケンス1459のアーカイブに失敗しました( 1809)ARCH:アーカイブが停止し、エラーが発生しました。再試行を続行しますWedjan2102:44:022016ファイル\u01\ oracle \ product \ 11.2.0 \ diag \ rdbms \ TEST \ test \ trace \ test_arc1_1010.trcORA-16038のエラー:ログ3シーケンス#1459をアーカイブできませんORA-19809 :リカバリファイルの制限を超えましたORA-00312:オンラインログ3スレッド1:'\ u01 \ oracle \ oradata \ TEST \ redo03.LOG' 

    2)sysdba以外のユーザーでログインしようとすると、以下のエラーメッセージが表示されます

     sqlplus / as sysdbaSQL * Plus:Release 11.2.0.4.0-Production onCopyright(c)1982、2008、Oracle。接続先:OracleDatabase 11g Enterprise Editionリリース11.2.0.4.0-64ビットプロダクションパーティショニング、OLAP、データマイニング、および実際のアプリケーションテストオプションSQL> conn apps / appsERROR:ORA-00257:アーカイバーエラー。解放されるまで、内部のみに接続します。警告:ORACLE.SQLに接続されなくなります

    3)sysdbaユーザーでログインして、セッションの待機イベントを確認しようとすると、セッション待機ログアーカイブ切り替えイベントが表示されます
    ORA-00257エラーが発生する理由

    このエラーは、アーカイブログのターゲットの場所がいっぱいであるか利用できない場合に発生します。 Oracle ARCHバックグラウンドプロセスは、オンラインREDOログファイルシステムからREDOログを取得する役割を果たし、フラットファイルに書き込むことはファイルシステムに書き込むことができません

    ORA-00257エラーを解決する方法

    1)まず、データベースのアーカイブログの宛先を見つける必要があります

     sqlplus /assysdbaSQL>アーカイブログリスト;

    USE_DB_RECOVERY_FILE_DEST

    のいずれかでアーカイブ先を見つけることもできます。
     SQL> show parameter db_recovery_file_dest; 

    また、db_recovery_file_destのサイズを取得します

    パラメータdb_recovery_file_dest_sizeを表示;

    2)ORA-00257を解決する次のステップは、db_recovery_file_dest_sizeに使用されている値を確認することです。次を使用してください:

     SQL> SELECT * FROM V $ RECOVERY_FILE_DEST; 

    SPACE_USEDがSPACE_LIMITと同じであることがわかる場合があります。その場合、ORA-00257を解決するには、アーカイブログを他の宛先に移動することで解決する必要があります。

     SQL> SELECT * FROM V $ RECOVERY_FILE_DEST; NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES + FLASH 21474836480 21474836480 212428800 200 

    3)このような状況では多くの解決策があります

    a)使用しているものが何であれ、Oracle ASMまたはファイルシステムで使用可能なスペースがある場合は、db_recovery_file_destのサイズを増やします。

     alter system set db_recovery_file_dest_size =40g; 

    b)すでにバックアップされているアーカイブログを削除できます

     rman target / delete archivelog UNTIL TIME='SYSDATE-1'がsbt_tapeに1回バックアップされました;rmantarget/ RMAN> delete archiveloguntil time'SYSDATE-3';または、RMAN> delete archivelog all; ordelete archivelog UNTIL TIME ='SYSDATE-1.5'はsbt_tapeに1回バックアップされました;

    c)バックアップを作成していない場合は、バックアップを作成してからアーカイブログファイルを削除することをお勧めします

     rman target / run {allocate channel d1 type disk; backup archivelog all delete input format'/ u11 / ora / arch_%d_%u_%s'; release channel d1;} 

    d)古いバックアップピース、フラッシュバックログがdb_recovery_file_destのスペースを占有している場合があります。db_recovery_file_destの内容を確認してください

     SQL> select file_type、percent_space_used as used、percent_space_reclaimable as reclaimable、number_of_files as "number" from v $ flash_recovery_area_usage; FILE_TYPE USED RECLAIMABLE number ------------ -------- --------------- ---------- CONTROLFILE 0 0 0ONLINELOG 0 0 0ARCHIVELOG 4.77 0 2BACKUPPIECE 56.80 0 10IMAGECOPY 0 0 0FLASHBACKLOG 11.68 11.49 63 

    古い保証された復元ポイントが存在する場合があります。ドロップするとスペースが解放されます。

    フラッシュバックデータベースの説明と制限

    データガードがある場合にフラッシュバックする方法

    フラッシュバックデータベースの有用なクエリトップ10

    e)アーカイブログが必要ない場合は、単に削除するだけでも目的が達成されます

     rman target / DELETE NOPROMPT ARCHIVELOG ALL; 

    この場合のその他の便利なコマンド

     LIST COPY OF ARCHIVELOG ALL COMPLETED AFTER'SYSDATE-1'; DELETE NOPROMPT BACKUP COMPLETED BEFORE'SYSDATE-4'; LIST COPY OF ARCHIVELOG UNTIL TIME ='SYSDATE-18'; BACKUP ARCHIVELOG COMPLETION TIME BETWEEN'SYSDATE-28' AND'SYSDATE-7'; 

    重要な注意

    ファイルシステムからアーカイブログファイルを手動で削除しないでください。制御ファイルが更新されず、問題が解決されません。次に、rmanですべてをクロスチェックし、廃止されて期限切れになったものを削除します

    f)アーカイブの代替パスを指定できます

    アーカイブは代替dest2に対して自動的に実行されます

     log_archive_dest_1 ='LOCATION =use_db_recovery_file_dest NOREOPEN ALTERNATE =LOG_ARCHIVE_DEST_2' log_archive_dest_2 ='LOCATION =/ other_dest_for_archiving' log_archive_destfile_pre_cover/>> 

    4)db_recovery_file_destに空きができたら、alter system switch logfile

    を実行してシステムを確認してください。
    システムスイッチログファイルの変更;システムアラート

    また、sysdba以外のユーザーと接続して、問題が解決されていることを確認してください

     sqlplus / as sysdbaSQL * Plus:Release 11.2.0.4.0-Production onCopyright(c)1982、2008、Oracle。接続先:Oracle Database 11g Enterprise Editionリリース11.2.0.4.0-64ビットプロダクション、パーティショニング、OLAP、データマイニング、および実際のアプリケーションテストオプションSQL> conn apps / appsconnectedSQL> 

    アーカイブログを定期的にバックアップして削除することをお勧めします。フラッシュリカバリ領域のスペースをチェックするために、監視スクリプトを配置する必要があります。

    関連記事
    ORA-00936式がありません
    ORA-01017:ユーザー名/パスワードが無効です。ログオンが拒否されました
    外部テーブルを使用したORA-29913
    ora-00904無効な識別子
    ORA-00001の一意の制約に違反しました
    MRPのORA-01111
    アーカイブログ履歴の検索方法
    RMAN-06059:予期されたアーカイブログが見つかりません。アーカイブログが失われると、回復可能性が損なわれます

    1. FILEGROUP_ID()を使用して、SQLServerでファイルグループのIDを返します

    2. Pythonを使用してMySQLに接続する方法

    3. MariaDBでのTIME()のしくみ

    4. psycopg2のパラメーターとしてテーブル名を渡す