OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

Oracle11gR2でオンラインREDOログのサイズ変更

カテゴリ:OSSセットアップ | ソフトウェア:Oracle | タグ:
最終更新日:2020/12/06 | 公開日:2013/09/04

目次

概要

 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