主に、新規顧客追加時に「CREATE TABLESPACE」が行われた変更をスタンバイ側に 適用する方法を記載。

1)新規顧客追加に伴い、プライマリに対して以下のSQL文を発行(通常)   新規顧客用の表領域、テーブルを作成、データを挿入されるた場合を想定

    SQL> CREATE TABLESPACE CUST_2
            DATAFILE ’/udb1/USER/cust_2.dbf’ SIZE 10M
            REUSE AUTOEXTEND ON NEXT 1M MAXSIZE 4096M MINIMUM 
            EXTENT 128K DEFAULT STRAGE ( INITIAL 128K NEXT 128K 
                      MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0 );
    SQL> CREATE TABLESPACE CUST_IDX_2
            DATAFILE ’/udb2/USER/cust_idx_2.dbf’ SIZE 10M
            REUSE AUTOEXTEND ON NEXT 1M MINIMUM EXTENT 128K DEFAULT STORAGE
            ( INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0 );
    SQL> CREATE TABLE mesg_2 (
            sliceid    number(6)     NOT NULL,
            nameid     number(6)     NOT NULL,
            time_start number(10)    NOT NULL,
            time_end   number(10)    NOT NULL,
            str        varchar2(255) NOT NULL,
            val        number(10)    NOT NULL,
            rid        number(10)    NOT NULL,
            timestamp  date,
            CONSTRAINT pk_mesg_2 PRIMARY KEY(rid)
                   USING INDEX TABLESPACE CUST_IDX_2)
            tablespace CUST_2 ;
    SQL> INSERT INTO mesg_2 SELECT * FROM mesg_1;  -- 本来はありえないがテストのため

2)プライマリのアーカイブREDOログをスタンバイに適用   プライマリで物理構成が変更された場合でも通常通り、スタンバイにアーカイブを適用する。

   [プライマリにて]
     % sqlplus /nolog
     SQL> connect sys/change_on_install as sysdba
     SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
     SQL> select max(SEQUENCE#)  from v$log_history;
            MAX(SEQUENCE#) = 44
   [スタンバイにて]
     % sqlplus /nolog
     SQL> connect sys/change_on_install as sysdba
     SQL> select max(SEQUENCE#)  from v$log_history;
            MAX(SEQUENCE#) = 43
     スタンバイに必要なアーカイブは、SEQUENCE#=44(/home/SYSTEM/arch/arch1_43.arc)
     これをプライマリからスタンバイに転送
     SQL> RECOVER AUTOMATIC STANDBY DATABASE;
         ORA-00283: recovery session canceled due to errors
         ORA-01670: new datafile 7 needed for standby database recovery
         ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
         ORA-01110: data file 7: ’/udb1/USER/cust_2.dbf’
     と言うように、エラーになってしまう。以後のアーカイブを受け取っても同様。

   SEQUENCE#=44以上のものがあっても、これ以上適用出来なくなる。

3)エラーの検知

   この状態になってしまうと、以下の現象にいたる。
   ・RECOVERはエラー終了する
   ・alert.logに、その旨のエラーが出力される。(日々の監視、連絡体制が必要)
   ・DBWR trace fileに、その旨のエラーが出力される。(日々の監視、連絡体制が必要)
   ・以後のアーカイブを受け取っても適用されない。

 alert.log /home/SYSTEM/admin/bdump/alert_sptest2.log

   Fri Jun 15 15:50:52 2001
   ALTER DATABASE RECOVER   AUTOMATIC STANDBY DATABASE
   Fri Jun 15 15:50:52 2001
   Media Recovery Start
   Media Recovery Log
   Media Recovery Log /home/SYSTEM/arch/arch1_44.arc
   Fri Jun 15 15:50:52 2001
   Errors in file /home/SYSTEM/admin/bdump/dbw0_769.trc:
   ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
   ORA-01110: data file 7: ’/udb1/USER/cust_2.dbf’
   ORA-27037: unable to obtain file status
   Intel SVR4 UNIX Error: 2: No such file or directory
   Additional information: 3
   Media Recovery failed with error 1670
   ORA-283 signalled during: ALTER DATABASE RECOVER   AUTOMATIC STANDBY DATABAS...
 DBWR trace file /home/SYSTEM/admin/bdump/dbw0_769.trc
   ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
   ORA-01110: data file 7: ’/udb1/USER/cust_2.dbf’
   ORA-27037: unable to obtain file status
   Intel SVR4 UNIX Error: 2: No such file or directory
   Additional information: 3

4)対処方法

  スタンバイ側で、対象のデータファイルを作成して、再度、アーカイブを適用する。
     % sqlplus /nolog
     SQL> connect sys/change_on_install as sysdba
     SQL> ALTER DATABASE CREATE DATAFILE ’/udb1/USER/cust_2.dbf’
                                       AS ’/udb1/USER/cust_2.dbf’;
     SQL> RECOVER AUTOMATIC STANDBY DATABASE;
  これで、最新のアーカイブまで適用出来ればOKだが、INDEX用の表領域もないため、エラーになる。よって
     SQL> ALTER DATABASE CREATE DATAFILE ’/udb2/USER/cust_idx_2.dbf’
                                       AS ’/udb2/USER/cust_idx_2.dbf’;
     SQL> RECOVER AUTOMATIC STANDBY DATABASE;
  これで完了。試しに、新しく作ったmesg_2テーブルの件数をカウントしてみる。
     SQL> ALTER DATABASE OPEN READ ONLY;
     SQL> select count(*) from dbadm.mesg_2;

UNIX Solaris Oracle


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-07-23 (月) 11:14:46 (4136d)