爲了最大的降低硬件需求,此處創建的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呢?接着往下看~~~~~~~~~