一步一步學DataGuard(5)物理standby之建立示例

junsansi發表於2008-03-14

為了最大的降低硬體需求,此處建立的data guard處於同一臺機器,但其建立過程與多機並無區別。做為演示用的示例足夠了,我們分兩階段配置,分別是配置primary資料庫和配置standby資料庫,如下:

一、 Primary資料庫配置及相關操作

1、 確認主庫處於歸檔模式

SQL> archive log list;

資料庫日誌模式            存檔模式

自動存檔             啟用

存檔終點            E:\ora10g\oradata\jssweb

最早的聯機日誌序列     148

下一個存檔日誌序列   150

當前日誌序列           150

SQL>

2、 將primary資料庫置為FORCE LOGGING模式。通過下列語句:

SQL> alter database force logging;

資料庫已更改。

3、 建立standby資料庫控制檔案

SQL> alter database create standby controlfile as 'd:\backup\jsspdg01.ctl';

資料庫已更改。

4、 建立primary資料庫客戶端初始化引數檔案

注:主要此處修改項較多,為了方便,我們首先建立並修改pfile,然後再通過pfile重建spfile,你當然也可以通過alter system set命令直接修改spfile內容。

SQL> create pfile   from spfile;

檔案已建立。

將該初始化引數檔案複製一份,做為standby資料庫的客戶端初始化引數檔案

SQL> host copy e:\ora10g\product\10.2.0\db_1\database\initjssweb.ora d:\backup\initjsspdg.ora

已複製         1 個檔案。

SQL>

修改客戶端初始化引數檔案,增加下列內容

DB_UNIQUE_NAME=jssweb

LOG_ARCHIVE_CONFIG='DG_CONFIG=(jssweb,jsspdg)'

LOG_ARCHIVE_DEST_1='LOCATION=E:\ora10g\oradata\jssweb\ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jssweb'

LOG_ARCHIVE_DEST_2='SERVICE=jsspdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=jsspdg'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

#--------配置standby角色的引數用於角色轉換

FAL_SERVER=jss pdg

FAL_CLIENT=jss web

DB_FILE_NAME_CONVERT='oradata\jsspdg','oradata\jssweb'

LOG_FILE_NAME_CONVERT='oradata\jsspdg',' oradata \jssweb'

STANDBY_FILE_MANAGEMENT=AUTO

通過pfile重建spfile

SQL> shutdown immediate

...

SQL> create spfile from pfile='initjssweb.ora';

檔案已建立。

5、 複製資料檔案到standby伺服器(方式多樣,不詳述)

注意需要複製所有資料檔案,備份的控制檔案及客戶端初始化引數檔案

6、 配置listener及net service names(方式多樣,不詳述)。

完之後重啟listener:

E:\ora10g>lsnrctl stop

E:\ora10g>lsnrctl start

通過tnsping測試tnsnames是否正確有效:

E:\ora10g>tnsping jssweb

...

Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = jss)(PORT = 1521)) (CONNECT_

DATA = (SERVER = DEDICATED) (SERVICE_NAME = jssweb)))

OK (30 毫秒)

E:\ora10g>tnsping jsspdg

...

Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = jss)(PORT = 1521)) (CONNECT_

DATA = (SERVER = DEDICATED) (SERVICE_NAME = jsspdg)))

OK (10 毫秒)

二、 Standby資料庫配置及相關操作

1、 通過ORADIM建立新的OracleService

2、 建立密碼檔案,注意保持sys密碼與primary資料庫一致。

E:\ora10g>orapwd file=e:\ora10g\product\10.2.0\db_1\database\PWDjsspdg

.ora password=verysafe entries=30

3、 建立目錄

E:\ora10g\product\10.2.0\admin\jsspdg>mkdir adump

4、 複製檔案,不做過多描述

5、 修改初始化引數檔案

增加下列引數

db_unique_name=jsspdg

LOG_ARCHIVE_CONFIG='DG_CONFIG=(jssweb,jsspdg)'

DB_FILE_NAME_CONVERT='oradata\jssweb','oradata\jsspdg'

LOG_FILE_NAME_CONVERT='oradata\jssweb','oradata\jsspdg'

LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc

LOG_ARCHIVE_DEST_1='LOCATION=E:\ora10g\oradata\jsspdg\ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=jsspdg'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

#---下列引數用於角色切換

LOG_ARCHIVE_DEST_2='SERVICE=jssweb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)  DB_UNIQUE_NAME=jssweb'

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

FAL_SERVER=jssweb

FAL_CLIENT=jsspdg

STANDBY_FILE_MANAGEMENT=AUTO

注意同時修改*_dest的路徑。

通過該pfile建立spfile

SQL> create spfile from pfile='D:\backup\initjsspdg.ora';

檔案已建立。

6、 啟動standby到mount

SQL> startup mount;

ORACLE 例程已經啟動。

Total System Global Area  167772160 bytes

Fixed Size                  1289484 bytes

Variable Size              62915316 bytes

Database Buffers           96468992 bytes

Redo Buffers                7098368 bytes

資料庫裝載完畢。

7、 啟動redo應用

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

資料庫已更改。

8、 檢視同步情況

首先連線到primary資料庫

SQL> show parameter instance_name;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_name                        string      jssweb

SQL> alter system switch logfile;

系統已更改。

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

            51

連線到standby資料庫

SQL> show parameter instance_name;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

instance_name                        string      jsspdg

SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)

--------------

            51

9、 暫停應用

通過下列語句暫停redo應用。

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

資料庫已更改。

注意,此時只是暫時redo應用,並不是停止Standby資料庫,standby仍會保持接收只不過不會再應用接收到的歸檔,直到你再次啟動redo應用為止。

哈哈,成功鳥!現在你是不是想知道怎麼把standby變成primary呢?接著往下看~~~~~~~~~

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-207194/,如需轉載,請註明出處,否則將追究法律責任。

相關文章