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

爲了最大的降低硬件需求,此處創建的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=jsspdg

FAL_CLIENT=jssweb

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呢?接着往下看~~~~~~~~~

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章