OracleのアーカイブREDOログ関連の取り回しを再確認。
やったこと
/* バージョン */ SQL> select version_full from v$instance; VERSION_FULL ----------------- 18.3.0.0.0 /* REDOロググループの確認 */ /* REDOログは複数多重化して、ローテーションで管理する */ /* 3×2ファイルある */ SQL> select group#, status, sequence#, members,archived from v$log; GROUP# STATUS SEQUENCE# MEMBERS ARC ---------- ---------------- ---------- ---------- --- 1 INACTIVE 28 2 NO 2 INACTIVE 29 2 NO 3 CURRENT 30 2 NO /* REDOログファイルの確認 */ SQL> select lg.group#, lgf.member from v$log lg inner join v$logfile lgf on lg.group# = lgf.group# order by group#; GROUP# MEMBER ---------- ------------------------------------------------------------------------------------------------------------------------ 1 /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_1_g2pb8wxr_.log 1 /u01/app/oracle/fast_recovery_area/ORCL/onlinelog/o1_mf_1_g2pbgh7o_.log 2 /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_2_g2pb8x2s_.log 2 /u01/app/oracle/fast_recovery_area/ORCL/onlinelog/o1_mf_2_g2pbgh7x_.log 3 /u01/app/oracle/oradata/ORCL/onlinelog/o1_mf_3_g2pb8x6o_.log 3 /u01/app/oracle/fast_recovery_area/ORCL/onlinelog/o1_mf_3_g2pbgh8d_.log /* *余談:フラッシュリカバリ領域→リカバリに必要なファイルを一元管理、領域の自動管理を行える領域 */ /* フラッシュリカバリ領域の場所・サイズの確認 */ SQL> show parameter recovery NAME TYPE VALUE -------------------------- ----------- ---------------------------------- db_recovery_file_dest string /u01/app/oracle/fast_recovery_area db_recovery_file_dest_size big integer 12918M /* フラッシュリカバリ領域の現在の使用量確認 */ SQL> select (space_limit/(1024*1024)) space_limit_mb,(space_used/(1024*1024)) space_used_mb from V$RECOVERY_FILE_DEST; SPACE_LIMIT_MB SPACE_USED_MB -------------- ------------- 12918 619.625 /* ログスイッチの実行 */ SQL> alter system switch logfile; System SWITCHが変更されました。 /* REDOログファイルのステータス確認(3→1へ、28→31へ) */ SQL> select group#, status, sequence#, members,archived from v$log; GROUP# STATUS SEQUENCE# MEMBERS ARC ---------- ---------------- ---------- ---------- --- 1 CURRENT 31 2 NO 2 INACTIVE 29 2 NO 3 ACTIVE 30 2 NO /* アーカイブログモードかどうか確認 */ /* パターン1 */ SQL> archive log list; データベース・ログ・モード 非アーカイブ・モード 自動アーカイブ 無効 アーカイブ先 USE_DB_RECOVERY_FILE_DEST 最も古いオンライン・ログ順序 29 現行のログ順序 31 /* パターン2 */ SQL> select name,log_mode from v$database; NAME LOG_MODE --------- ------------ ORCL NOARCHIVELOG /* 非アーカイブログモードから、アーカイブログモードへの切り替え */ /* シャットダウン→マウント状態で起動→モード変更→DBオープン */ SQL> shutdown IMMEDIATE データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。 SQL> SQL> startup mount ORACLEインスタンスが起動しました。 Total System Global Area 2466249080 bytes Fixed Size 8898936 bytes Variable Size 671088640 bytes Database Buffers 1778384896 bytes Redo Buffers 7876608 bytes データベースがマウントされました。 SQL> ALTER DATABASE ARCHIVELOG; ALTER DATABASE ARCHIVELOG SQL> archive log list データベース・ログ・モード アーカイブ・ログ・モード 自動アーカイブ 有効 アーカイブ先 USE_DB_RECOVERY_FILE_DEST 最も古いオンライン・ログ順序 29 アーカイブする次のログ順序 31 現行のログ順序 31 SQL> alter database open 2 ; Databaseが変更されました。 /* アーカイブREDOログファイルの確認(モード変更直後につき、アーカイブログREDOなし) */ SQL> select name,sequence# from v$archived_log; 行が選択されていません /* ログスイッチさせて、アーカイブREDOログを発生させる */ SQL> select name,sequence# from v$archived_log; NAME SEQUENCE# ------------------------------------------------------------------------------------------------------------------------ ---------- /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2019_02_24/o1_mf_1_31_g749s7cs_.arc 31 /* フラッシュリカバリ領域の使用量再確認(使用量が増えているはず) */ /* 10MBほど増えた */ SQL> select (space_limit/(1024*1024)) space_limit_mb,(space_used/(1024*1024)) space_used_mb from V$RECOVERY_FILE_DEST; SPACE_LIMIT_MB SPACE_USED_MB -------------- ------------- 12918 629.808594 /* フラッシュリカバリ領域のサイズ変更 */ SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 4294967296 scope=both; System SETが変更されました。 /* 再度フラッシュリカバリ領域のサイズと使用率確認 */ /* フラッシュリカバリ領域サイズ枯渇によるDB停止からの復旧を後程試す */ SQL> select (space_limit/(1024*1024)) space_limit_mb,(space_used/(1024*1024)) space_used_mb from V$RECOVERY_FILE_DEST; SPACE_LIMIT_MB SPACE_USED_MB -------------- ------------- 4096 629.808594
余談
今回、Oracle18c付属の「SQLcl」(SQL*PlusのJava実装&機能追加)を使ってみました。TABキーで補完が効くなど、細かな使い勝手が向上していましたが、時折謎の引っ掛かりが発生するのが気になりました。