oracle

Oracle ログスイッチが行われたタイミングを確認する

通常オンライン処理よりは大量データの更新が発生するバッチ処理でのログスイッチ頻度は上がります。ログスイッチのコストはSSDになってだいぶ下がってきたように感じましたが、(以前Exadataを触る事あったのですがめちゃくちゃ早かったです。具体的な数字だせなくてすみません)それでも通常コストの高い処理になるのでなるべく頻度が下がるように設計したいものです。

ログスイッチ発生タイミングの確認SQL

select 
 thread#  -- アーカイブログスレッド番号
,sequence# -- アーカイブログ順序番号
,to_char(first_time, 'YYYY/MM/DD HH24:MI:SS') first_time  --最初のSCNから導出した時間
from v$log_history
order by SEQUENCE# desc
fetch first 10 rows only
;
SQL> select
  2   thread#  -- アーカイブログスレッド番号
  3  ,sequence# -- アーカイブログ順序番号
  4  ,to_char(first_time, 'YYYY/MM/DD HH24:MI:SS') first_time  --最初のSCNから導出した時間
  5  from v$log_history
  6  order by SEQUENCE# desc
  7  fetch first 10 rows only
  8  ;

   THREAD#    SEQUENCE#             FIRST_TIME
__________ ____________ ______________________
         1         2390 2022/01/27 23:13:04
         1         2389 2022/01/27 23:07:23
         1         2388 2022/01/27 23:07:16
         1         2387 2022/01/25 23:50:23
         1         2386 2022/01/24 02:00:21
         1         2385 2022/01/24 00:35:58
         1         2384 2022/01/24 00:35:18
         1         2383 2022/01/24 00:29:01
         1         2382 2022/01/24 00:24:49
         1         2381 2022/01/24 00:24:09

10行が選択されました。

アーカイブログファイル作成タイミングの確認SQL

ログスイッチのタイミングとよく似てますが、こちらはアーカイブログが作成されたタイミングを確認する方法です。(当然アーカイブログモードで動作しておかないとこちらは確認できませんね)ログファイルのサイズがほぼOracleの更新量となります。

-- アーカイブREDO作成タイミングの確認
select
SEQUENCE#,to_char(COMPLETION_TIME,'yyyy/mm/dd hh24:mi:ss') COMPLETION_TIME
,round(t.BLOCK_SIZE * BLOCKS /1024/1024) M_byte
,REGEXP_SUBSTR(NAME,'[^/]*[^/]$') FILE_NAME
from v$archived_log t
order by SEQUENCE# desc
fetch first 10 rows only
;

V$ARCHEVED_LOGのNAMEカラムでアーカイブログファイルを確認できます。フルパスで入っていますが以下SQLは REGEXP_SUBSTR ()を使ってファイル名のみを抽出しています。またRMANでこのアーカイブログファイルを削除した場合、このNAMEカラムはNULLになります。

SQL> -- アーカイブREDO生成量の確認
SQL> select
  2  SEQUENCE#,to_char(COMPLETION_TIME,'yyyy/mm/dd hh24:mi:ss') COMPLETION_TIME
  3  ,round(t.BLOCK_SIZE * BLOCKS /1024/1024) M_byte
  4  ,REGEXP_SUBSTR(NAME,'[^/]*[^/]$') FILE_NAME
  5  from v$archived_log t
  6  order by SEQUENCE# desc
  7  fetch first 10 rows only
  8  ;

   SEQUENCE#        COMPLETION_TIME    M_BYTE                     FILE_NAME
____________ ______________________ _________ _____________________________
        2389 2022/01/27 23:13:08          287 o1_mf_1_2389_jz5b3j2x_.arc
        2388 2022/01/27 23:07:29          285 o1_mf_1_2388_jz59rwdw_.arc
        2387 2022/01/27 23:07:24          287 o1_mf_1_2387_jz59rnc1_.arc
        2210 2021/10/24 23:45:51          287 o1_mf_1_2210_jqbwdvts_.arc
        2209 2021/10/24 23:43:52          287 o1_mf_1_2209_jqbw95v6_.arc
        2208 2021/10/24 23:43:47          287 o1_mf_1_2208_jqbw8ylh_.arc
        2207 2021/10/24 23:42:44          287 o1_mf_1_2207_jqbw7136_.arc
        2206 2021/10/24 23:39:34          287 o1_mf_1_2206_jqbw10ro_.arc
        2205 2021/10/24 23:38:37          287 o1_mf_1_2205_jqbvz91n_.arc
        2204 2021/10/24 23:37:52          269 o1_mf_1_2204_jqbvxwdg_.arc

10行が選択されました。

SQL>
スポンサーリンク