Oracle11gR2でオンラインREDOログのサイズ変更
目次
概要
OracleのオンラインREDOログサイズを1メンバ当たり50MBから512MBへ変更します。
構成
サーバ構成
OSバージョン
Red Hat Enterprise Linux 5.5 x86_64
パッケージ一覧
Oracle Database 11g Release 2 (11.2.0.3.0)
変更点
■変更前のオンラインREDOログファイルパス
/data/oracle/hoge/red00/redo01.log ・・・50MB
/data/oracle/hoge/red00/redo02.log ・・・50MB
/data/oracle/hoge/red00/redo03.log ・・・50MB
■変更後のオンラインREDOログファイルパス
/data/oracle/hoge/red00/redo01.log ・・・512MB
/data/oracle/hoge/red00/redo02.log ・・・512MB
/data/oracle/hoge/red00/redo03.log ・・・512MB
環境構築
オンラインREDOログのサイズ変更
SQL*PlusでOracleに接続
SQL*Plusを使用してローカル接続でSYSDBA権限でOracleインスタンス hoge に接続します。
# su - oracle
$ export ORACLE_SID=hoge ←インスタンス名
$ sqlplus /nolog
SQL*Plus: Release 11.2.0.2.0 Production on 木 4月 5 16:56:18 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL > connect / as sysdba
接続されました。
変更前のサイズを確認
変更前のオンラインREDOログサイズを確認します。 52428800 BYTES = 50MB のファイル3つからREDOが構成されていることが分かります。 また、REDOロググループ#1 のSTATUSが CURRENT となっていて、現在書き込みが行われています。
SQL hoge > select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM ---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ -------- 1 1 28 52428800 512 1 NO CURRENT 295065 12-04-05 2.8147E+14 2 1 26 52428800 512 1 NO INACTIVE 278975 12-04-05 287768 12-04-05 3 1 27 52428800 512 1 NO INACTIVE 287768 12-04-05 295065 12-04-05
グループ#2のサイズを変更
まずはREDOロググループ#2のファイルを削除します。 ただしこの時点ではOS上のファイルは削除されません。
SQL hoge > alter database drop logfile group 2; データベースが変更されました。 SQL hoge > select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM ---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ -------- 1 1 28 52428800 512 1 NO CURRENT 295065 12-04-05 2.8147E+14 3 1 27 52428800 512 1 NO INACTIVE 287768 12-04-05 295065 12-04-05
続いてOS上のREDOログファイルも削除します。 host コマンドはSQL*Plus上からOSコマンドを実行するためのものです。
SQL hoge > host rm /data/oracle/hoge/red00/redo02.log SQL hoge > host ls -l /data/oracle/hoge/red00/ 合計 68340 -rw-r----- 1 oracle oinstall 17448960 4月 5 18:42 control_00.ctl drwx------ 2 root root 16384 10月 19 19:04 lost+found -rw-r----- 1 oracle oinstall 52429312 4月 5 18:21 redo01.log -rw-r----- 1 oracle oinstall 52429312 4月 5 18:21 redo03.log
新たに512MBでREDOロググループ#2を作成します。 REDOロググループ#2だけサイズが大きくなりました。
SQL hoge > alter database add logfile group 2 '/data/oracle/hoge/red00/redo02.log' size 512m; データベースが変更されました。 SQL hoge > select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM ---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ -------- 1 1 28 52428800 512 1 NO CURRENT 295065 12-04-05 2.8147E+14 2 1 0 536870912 512 1 YES UNUSED 0 0 3 1 27 52428800 512 1 NO INACTIVE 287768 12-04-05 295065 12-04-05
グループ#3のサイズを変更
グループ#2と同様にグループ#3のファイルを削除し、再作成することでサイズを変更します。
SQL hoge > alter database drop logfile group 3; データベースが変更されました。 SQL hoge > select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM ---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ -------- 1 1 28 52428800 512 1 NO CURRENT 295065 12-04-05 2.8147E+14 2 1 0 536870912 512 1 YES UNUSED 0 0 SQL hoge > host rm /data/oracle/hoge/red00/redo03.log SQL hoge > host ls -l /data/oracle/hoge/red00/ 合計 541888 -rw-r----- 1 oracle oinstall 17448960 4月 5 18:45 control_00.ctl drwx------ 2 root root 16384 10月 19 19:04 lost+found -rw-r----- 1 oracle oinstall 536871424 4月 5 18:43 redo01.log -rw-r----- 1 oracle oinstall 536871424 4月 5 18:43 redo02.log SQL hoge > alter database add logfile group 3 '/data/oracle/hoge/red00/redo03.log' size 512m; データベースが変更されました。 SQL hoge > select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM ---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ -------- 1 1 28 52428800 512 1 NO CURRENT 295065 12-04-05 2.8147E+14 2 1 0 536870912 512 1 YES UNUSED 0 0 3 1 0 536870912 512 1 YES UNUSED 0 0
強制ログスイッチ
グループ#2とグループ#3のREDOログのサイズを変更しました。 続いてグループ#1のサイズも変更したいのですが、STATUS が CURRENT となっており、 現在使用中なので変更できません。 そこで、強制的にログスイッチを発生させ、グループ#2を CURRENT にします。
SQL hoge > alter system switch logfile; システムが変更されました。 SQL hoge > select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM ---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ -------- 1 1 28 52428800 512 1 NO ACTIVE 295065 12-04-05 306210 12-04-05 2 1 29 536870912 512 1 NO CURRENT 306210 12-04-05 2.8147E+14 3 1 0 536870912 512 1 YES UNUSED 0 0
グループ#1のサイズを変更
グループ#1の STATUS が CURRENT ではなくなったので、 あとはグループ#2やグループ#3と同じ方法でサイズを変更します。
SQL hoge > alter database drop logfile group 1; データベースが変更されました。 SQL hoge > select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM ---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ -------- 2 1 29 536870912 512 1 NO CURRENT 306210 12-04-05 2.8147E+14 3 1 0 536870912 512 1 YES UNUSED 0 0 SQL hoge > host rm /data/oracle/hoge/red00/redo01.log SQL hoge > host ls -l /data/oracle/hoge/red00/ 合計 1066700 -rw-r----- 1 oracle oinstall 17448960 4月 5 19:07 control_00.ctl drwx------ 2 root root 16384 10月 19 19:04 lost+found -rw-r----- 1 oracle oinstall 536871424 4月 5 19:07 redo02.log -rw-r----- 1 oracle oinstall 536871424 4月 5 19:05 redo03.log SQL hoge > alter database add logfile group 1 '/data/oracle/hoge/red00/redo01.log' size 512m; データベースが変更されました。 SQL hoge > select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARCHIVED STATUS FIRST_CHANGE# FIRST_TI NEXT_CHANGE# NEXT_TIM ---------- ---------- ---------- ---------- ---------- ---------- --------- ------------------------------------------------ ------------- -------- ------------ -------- 1 1 0 536870912 512 1 YES UNUSED 0 0 2 1 29 536870912 512 1 NO CURRENT 306210 12-04-05 2.8147E+14 3 1 0 536870912 512 1 YES UNUSED 0 0
これで全てのREDOログサイズが 536870912 BYTES = 512MB に変更されました。
変更後のファイルサイズを確認
REDOログのサイズ変更に伴い、OS上のREDOログファイルのサイズも 536871424バイト = 512MB になりました。 SQL*Plusを終了させます。
SQL hoge > host ls -l /data/oracle/hoge/red00/ 合計 1591508 -rw-r----- 1 oracle oinstall 17448960 4月 5 19:22 control_00.ctl drwx------ 2 root root 16384 10月 19 19:04 lost+found -rw-r----- 1 oracle oinstall 536871424 4月 5 19:08 redo01.log -rw-r----- 1 oracle oinstall 536871424 4月 5 19:22 redo02.log -rw-r----- 1 oracle oinstall 536871424 4月 5 19:05 redo03.log SQL hoge > exit