実機検証:DataGuard Physical Standby Database作成(Maximum Performance Mode)

検証環境およびシステム要件

検証環境概要:
個人PCでVMWAREソフトを利用し、下記のように二つのLinux virtual machineを作成した。

Primary DB:rh-ora10g-s01(vmware環境):
OS:RH Linux AS3
DB:Oracle 10gR2(DB_NAME=fengのインスタンス作成済み)

Standby DB:rh-ora10g-s02(vmware環境):
OS:RH Linux AS3
DB:Oracle 10gR2 (ソフトウエアのみ、インスタンスがない)

1.Primary DBでの準備作業

Primary DBをforce loggingモードに変更

SQL> alter database force logging;

データベースが変更されました。

アーカイブログ出力先とログ転送先を指定する

SQL> alter system set log_archive_dest_1='location=/u03/oradata/feng/arch valid_for=(all_logfiles,all_roles)' scope=both;

システムが変更されました。

SQL> alter system set log_archive_dest_2='service=feng-s lgwr async valid_for=(online_logfiles,primary_role)' scope=both;

システムが変更されました。

SQL> alter system set log_archive_max_processes=10 scope=both;

システムが変更されました。

SQL>

'service=feng-s・・・':feng-sはstandbyへのNet Service名。

Primary DBをarchivelog modeに変更する

SQL> startup mount
ORACLEインスタンスが起動しました。

Total System Global Area  209715200 bytes
Fixed Size                  2019640 bytes
Variable Size              92278472 bytes
Database Buffers          113246208 bytes
Redo Buffers                2170880 bytes
データベースがマウントされました。
SQL> alter database archivelog;

データベースが変更されました。

SQL> archive log list
データベース・ログ・モード     アーカイブ・モード
自動アーカイブ                 有効
アーカイブ先                    /u03/oradata/feng/arch
最も古いオンライン・ログ順序   4
アーカイブする次のログ順序    6
現行のログ順序               6
SQL> alter database open;

データベースが変更されました。

SQL>

2.Primary DBがStandby roleで動作するため、Standby Databaseパラメータ設定

FAL_SERVERおよびFAL_CLIENT

SQL> alter system set fal_server='feng-s' scope=both;

システムが変更されました。

SQL> alter system set fal_client='feng-p' scope=both;

システムが変更されました。

SQL> show parameter fal_

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
fal_client                           string                            feng-p
fal_server                           string                            feng-s

SQL> alter system set standby_file_management=auto scope=both;

システムが変更されました。

SQL>

Standby Redo Group作成

SQL> alter database add standby logfile group 4 ('/u02/oradata/feng/redo04_01.log','/u02/oradata/feng/redo04_02.log') size 100m;

データベースが変更されました。

SQL> alter database add standby logfile group 5 ('/u02/oradata/feng/redo05_01.log','/u02/oradata/feng/redo05_02.log') size 100m;

データベースが変更されました。

SQL> alter database add standby logfile group 6 ('/u02/oradata/feng/redo06_01.log','/u02/oradata/feng/redo06_02.log') size 100m;

データベースが変更されました。

SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;

    GROUP#    THREAD#  SEQUENCE# ARCHIVED  STATUS
---------- ---------- ---------- --------- ------------------------------
         4          0          0 YES       UNASSIGNED
         5          0          0 YES       UNASSIGNED
         6          0          0 YES       UNASSIGNED

3.ListenerとNet Service Names設定

Primary DBとStandby DBでリスナーを起動し、両方のTNSNAMES.ORAに下記の設定を追加する。

FENG-S =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = rh-ora10g-s02)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = feng)
    )
  )

FENG-P =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = rh-ora10g-s01)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = feng)
    )
  )

4.Standby DBを作成するため、Primary DBから必要なデータファイルをコピーする。

Primary DBを停止する。

SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされま

5.FTPなどのツールを使ってPrimary DBのデータファイルをStandby DBへ転送する。

※ この検証ではPrimaryとStandbyのファイルディレクトリを同じに設定した。
※ Standby側では、Primaryと同じ場所でbdump、udump等のフォルダを事前に作っておく。
転送ファイル:

  • データファイル
  • パスワードファイル
  • Redo Logファイル
  • アーカイブログ

6.Primary DBをマウントして、Standby DB用制御ファイルと初期パラメータファイルを作成する。

[oracle@rh-ora10g-s01 oracle]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 水 8月 13 02:08:18 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn / as sysdba
アイドル・インスタンスに接続しました。
SQL> startup mount
ORACLEインスタンスが起動しました。

Total System Global Area  209715200 bytes
Fixed Size                  2019640 bytes
Variable Size              92278472 bytes
Database Buffers          113246208 bytes
Redo Buffers                2170880 bytes
データベースがマウントされました。
SQL> alter database create standby controlfile as '/tmp/standby.ctl';

データベースが変更されました。

SQL> create pfile='/tmp/initstandby.ora' from spfile;

ファイルが作成されました。

SQL> exit

上記で作成したファイルをStandby DBへ転送する。

7.Standby DBで初期化パラメータファイルを編集する。

Standby DBを起動するため、初期化パラメータファイル編集

・・・・・・
*.audit_file_dest='/u01/oracle/app/oracle/admin/feng/adump'
*.background_dump_dest='/u01/oracle/app/oracle/admin/feng/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u02/oradata/feng/control01.ctl','/u02/oradata/feng/control02.ctl','/u02/oradata/feng/control03.ctl'
*.core_dump_dest='/u01/oracle/app/oracle/admin/feng/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='feng'
*.db_recovery_file_dest='/u03/oradata/feng/flash_recovery_area'
*.db_recovery_file_dest_size=21474836480
*.fal_client='feng-s'
*.fal_server='feng-p'
*.job_queue_processes=10
*.log_archive_dest_1='location=/u03/oradata/feng/arch valid_for=(all_logfiles,all_roles)'
*.log_archive_dest_2='service=feng-p lgwr async valid_for=(online_logfiles,primary_role)'
*.log_archive_max_processes=10
*.nls_language='JAPANESE'
*.nls_territory='JAPAN'
*.open_cursors=300
*.pga_aggregate_target=20971520
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=209715200
*.standby_file_management='AUTO'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/oracle/app/oracle/admin/feng/udump'

Standby DBのアイドル状態で、上記編集した初期化ファイルをSPFILEに変換する

[oracle@rh-ora10g-s02 dbs]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 水 8月 13 02:36:28 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn / as sysdba
アイドル・インスタンスに接続しました。
SQL> !
[oracle@rh-ora10g-s02 dbs]$ ls -l
合計 52
-rw-r--r--    1 oracle   oinstall     1552  8月 13 02:00 hc_feng.dat
-rw-r-----    1 oracle   oinstall     8385  8月 13 02:00 init.ora
-rw-r-----    1 oracle   oinstall    12920  8月 13 02:00 initdw.ora
-rw-r--r--    1 oracle   oinstall     1101  8月 13 02:00 initfeng.ora
-rw-r--r--    1 oracle   oinstall     1344  8月 13 02:34 initstandby.ora
-rw-r--r--    1 oracle   oinstall       24  8月 13 02:00 lkFENG
-rw-r--r--    1 oracle   oinstall     1536  8月 13 02:00 orapwfeng
-rw-r--r--    1 oracle   oinstall     3584  8月 13 02:00 spfilefeng.ora
[oracle@rh-ora10g-s02 dbs]$ exit
exit

SQL> !pwd
/u01/oracle/app/oracle/product/10.2.0/db_1/dbs

SQL> create spfile from pfile='/u01/oracle/app/oracle/product/10.2.0/db_1/dbs/initstandby.ora';

ファイルが作成されました。

SQL> !ls -l
合計 52
-rw-r--r--    1 oracle   oinstall     1552  8月 13 02:00 hc_feng.dat
-rw-r-----    1 oracle   oinstall     8385  8月 13 02:00 init.ora
-rw-r-----    1 oracle   oinstall    12920  8月 13 02:00 initdw.ora
-rw-r--r--    1 oracle   oinstall     1101  8月 13 02:00 initfeng.ora
-rw-r--r--    1 oracle   oinstall     1344  8月 13 02:34 initstandby.ora
-rw-r--r--    1 oracle   oinstall       24  8月 13 02:00 lkFENG
-rw-r--r--    1 oracle   oinstall     1536  8月 13 02:00 orapwfeng
-rw-r-----    1 oracle   oinstall     3584  8月 13 02:38 spfilefeng.ora

8.Standby DBの起動

SQL> startup nomount;
ORACLEインスタンスが起動しました。

Total System Global Area  209715200 bytes
Fixed Size                  2019640 bytes
Variable Size              92278472 bytes
Database Buffers          113246208 bytes
Redo Buffers                2170880 bytes

SQL> show parameter fal

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
fal_client                           string                            feng-s
fal_server                           string                            feng-p

SQL> alter database mount;

データベースが変更されました。

SQL> alter database recover managed standby database disconnect from session;

データベースが変更されました。

9.Standby DBへログ転送のテスト

Standby DBでArchive log状態を確認する。

SQL> select sequence#, first_time, next_time from v$archived_log order by sequence#;

 SEQUENCE# FIRST_TI NEXT_TIM
---------- -------- --------
         6 08-08-12 08-08-13
         7 08-08-13 08-08-13

Primary DBでログスイッチ

SQL> alter system switch logfile;

システムが変更されました。

Standby DBで新規ログの受信確認

SQL> select sequence#, first_time, next_time from v$archived_log order by sequence#;

 SEQUENCE# FIRST_TI NEXT_TIM
---------- -------- --------
         6 08-08-12 08-08-13
         7 08-08-13 08-08-13
         8 08-08-13 08-08-13

Standby DBで新規ログの適用状態を確認

SQL> select sequence#,applied from v$archived_log order by sequence#;

 SEQUENCE# APPLIED
---------- ---------
         6 YES
         7 YES
         8 YES

10.DataGuard稼働状態検証

Primary DBで新規にユーザーとテーブル作成

SQL> create user feng identified by feng;

ユーザーが作成されました。

SQL> grant dba to feng;

権限付与が成功しました。

SQL> grant select any dictionary to feng;

権限付与が成功しました。

SQL> grant unlimited tablespace to feng;

権限付与が成功しました。

SQL> conn feng/feng
接続されました。

SQL> create table dg_test as select * from dba_objects;

表が作成されました。

SQL> select count(*) from dg_test;

  COUNT(*)
----------
     11253

SQL> insert into dg_test select * from dba_objects;

11253行が作成されました。

SQL> commit;

コミットが完了しました。

SQL> select count(*) from dg_test;

  COUNT(*)
----------
     22506

SQL> alter system switch logfile;

システムが変更されました。

SQL> select sequence#, first_time, next_time from v$archived_log order by sequence#;

 SEQUENCE# FIRST_TI NEXT_TIM
---------- -------- --------
         6 08-08-12 08-08-13
         6 08-08-12 08-08-13
         7 08-08-13 08-08-13
         7 08-08-13 08-08-13
         8 08-08-13 08-08-13
         8 08-08-13 08-08-13
         9 08-08-13 08-08-13
         9 08-08-13 08-08-13
        10 08-08-13 08-08-13
        10 08-08-13 08-08-13
        11 08-08-13 08-08-13

 SEQUENCE# FIRST_TI NEXT_TIM
---------- -------- --------
        11 08-08-13 08-08-13

Standby DBでの確認

SQL> select sequence#, first_time, next_time from v$archived_log order by sequence#;

 SEQUENCE# FIRST_TI NEXT_TIM
---------- -------- --------
         6 08-08-12 08-08-13
         7 08-08-13 08-08-13
         8 08-08-13 08-08-13
         9 08-08-13 08-08-13
        10 08-08-13 08-08-13
        11 08-08-13 08-08-13

6行が選択されました。

SQL> alter database recover managed standby database cancel;

データベースが変更されました。

SQL> alter database open read only;

データベースが変更されました。

SQL>  select sequence#,applied from v$archived_log order by sequence#;

 SEQUENCE# APPLIED
---------- ---------
         6 YES
         7 YES
         8 YES
         9 YES
        10 YES
        11 YES

6行が選択されました。

SQL> conn feng/feng
接続されました。
SQL> select count(*) from dg_test;

  COUNT(*)
----------
     22506

SQL>

2008.8.14 1:15 by moc.todikiw.bup-elcaro|nosaJ#moc.todikiw.bup-elcaro|nosaJ
個人的な検証メモなので無断転載などをしないで下さい。

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License