您好,登錄后才能下訂單哦!
本次測(cè)試環(huán)境使用的虛擬環(huán)境如下圖所示,使用VMware Workstation 11搭建的兩臺(tái)Oracle Linux 6.4 64位操作系統(tǒng),通過(guò)兩臺(tái)機(jī)器橋接到一塊虛擬網(wǎng)卡。
服務(wù)器一(主) | 服務(wù)器二(備) |
主機(jī)名:zhanky IP: 192.168.214.10 數(shù)據(jù)庫(kù)版本: oracle 11.2.0.4 庫(kù)名:zky TNSNAME:DGZ | 主機(jī)名:zhanky IP: 192.168.214.11 數(shù)據(jù)庫(kù)版本: oracle 11.2.0.4 庫(kù)名:zky TNSNAME:DGB |
主備庫(kù)正常情況客戶端訪問(wèn)流量訪問(wèn)主庫(kù),數(shù)據(jù)自動(dòng)同步到備庫(kù)。當(dāng)主庫(kù)出現(xiàn)故障時(shí),管理員手動(dòng)將備庫(kù)切換為主庫(kù)。此時(shí)客戶端訪問(wèn)備庫(kù)實(shí)現(xiàn)業(yè)務(wù)不中斷正常訪問(wèn)。
我們模仿正式環(huán)境,先將primary服務(wù)器準(zhǔn)備好,然后在standby服務(wù)器上只安裝數(shù)據(jù)庫(kù)軟件。在本次測(cè)試中我們使用rman的方式來(lái)備份數(shù)據(jù)庫(kù),然后在standby上面還原。關(guān)鍵實(shí)施步驟如下
Primary 1、 打開(kāi)歸檔模式,開(kāi)啟強(qiáng)制記錄日志 2、 創(chuàng)建日志組 3、 添加靜態(tài)監(jiān)聽(tīng),添加tns 4、 生成密碼文件 5、 生成pfile添加DG內(nèi)容 6、 重啟通過(guò)pfile啟動(dòng),更新spfile 7、 通過(guò)rman duplicate備份 8、 生成控制文件 | Standby 1、 將備份文件拷貝到standby對(duì)應(yīng)的位置 。 2、 將密碼文件考到對(duì)應(yīng)的位子 3、 將監(jiān)聽(tīng)文件修改后考到對(duì)應(yīng)的位置,然后開(kāi)啟監(jiān)聽(tīng) 4、 將pfile文件更改后拷貝到standby 5、 通過(guò)oradim創(chuàng)建實(shí)例,加載更改的pfile到nomount模式 6、 將pfile更新到spfile,然后重啟數(shù)據(jù)庫(kù) 7、 通過(guò)rman 回復(fù)數(shù)據(jù)庫(kù),完成后open 8、 將控制文件替換 9、 然后啟用DG到備庫(kù)模式 |
查看歸檔日志是否開(kāi)啟
SQL> archive log list |
上圖看出庫(kù)開(kāi)啟了歸檔模式。如果沒(méi)有開(kāi)啟則按照以下步驟開(kāi)啟歸檔模式
SQL> shutdown immediate SQL> startup mount SQL> alter database archivelog; SQL> alter database force logging; SQL> alter database open; |
創(chuàng)建日志組
[oracle@zhanky /]$ mkdir /u01/archive SQL> alter database add standby logfile group 4 '/u01/archive/STAN04.LOG' size 50m; SQL> alter database add standby logfile group 5 '/u01/archive/STAN05.LOG' size 50m; SQL> alter database add standby logfile group 6 '/u01/archive/STAN06.LOG' size 50m; SQL> alter database add standby logfile group 7 '/u01/archive/STAN07.LOG' size 50m; |
密碼文件要拷貝到DG備庫(kù),保持兩邊密碼文件一致。
[oracle@zhanky ~]$ ls /u01/app/oracle/product/11.2.0/db_1/dbs/ |
如果沒(méi)有密碼文件可以手動(dòng)創(chuàng)建
SQL> orapwd file=/u01/app/oracle/product/11.2.0/db_1/dbs/orapwzky password=manager entries=10 |
建議設(shè)置密碼永不過(guò)期
SQL> alter profile default limit password_life_time unlimited; |
配置靜態(tài)監(jiān)聽(tīng),在listener.ora文件中添加靜態(tài)監(jiān)聽(tīng)
[oracle@zhanky ~]$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora SID_LIST_LISTENER= (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = zky) (ORACLE_HOME =/u01/app/oracle/product/11.2.0/db_1) (SID_NAME = zky) ) ) |
注意linux環(huán)境中更改偵聽(tīng)需要先stop在修改,不然會(huì)導(dǎo)致偵聽(tīng)服務(wù)無(wú)法正常啟動(dòng)關(guān)閉
配置tnsname.ora,設(shè)置DG主和DG備服務(wù)器監(jiān)聽(tīng)
[oracle@zhanky ~]$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora DGZ = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.214.10)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = zky) ) ) DGB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.214.11)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = zky) ) ) |
下面開(kāi)始配置dg文件了,配置完成后記得重啟數(shù)據(jù)庫(kù)。
SQL> alter system set db_unique_name=dgz scope=spfile; SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(DGZ,DGB)' scope=both; SQL> alter system set LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/oradata/zky/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DGZ' scope=spfile; SQL> alter system set LOG_ARCHIVE_DEST_2= 'service=DGB lgwr async VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLES) DB_UNIQUE_NAME=DGB' scope=both; SQL> alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=both; SQL> alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both; SQL> alter system set FAL_SERVER='DGZ' scope=both; SQL> alter system set STANDBY_FILE_MANAGEMENT=AUTO scope=both; SQL> alter system set DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/zky/','/u01/app/oracle/oradata/zky/' scope=spfile; SQL> alter system set LOG_FILE_NAME_CONVERT='/u01/archive/','/u01/archive/' scope=spfile; |
創(chuàng)建參數(shù)文件供備庫(kù)用
SQL> create pfile='/u01/zk.int' from spfile; |
將密碼文件和參數(shù)文件拷貝到DG備庫(kù)對(duì)應(yīng)的位置并賦予讀寫(xiě)權(quán)限
[oracle@zhanky ~]$ scp oracle@192.168.214.10:/u01/zk.int /u01/bk.int [oracle@zhanky ~]$ scp oracle@192.168.214.10:/u01/app/oracle/product/11.2.0/db_1/dbs/orapwzky /u01/app/oracle/product/11.2.0/db_1/dbs/orapwzky [oracle@zhanky ~]$ chmod 777 /u01/bk.int [oracle@zhanky ~]$ chmod 777 /u01/app/oracle/product/11.2.0/db_1/dbs/orapwzky |
[oracle@zhanky /]$ mkdir -p /u01/archive/ [oracle@zhanky /]$ mkdir -p /u01/app/oracle/admin/zky/adump/ [oracle@zhanky /]$ mkdir -p /u01/app/oracle/oradata/zky/ [oracle@zhanky /]$ mkdir -p /u01/app/oracle/fast_recovery_area/zky/ |
配置靜態(tài)監(jiān)聽(tīng),在listener.ora文件中添加靜態(tài)監(jiān)聽(tīng)
[oracle@zhanky ~]$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora SID_LIST_LISTENER= (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = zky) (ORACLE_HOME =/u01/app/oracle/product/11.2.0/db_1) (SID_NAME = zky) ) ) |
注意linux環(huán)境中更改偵聽(tīng)需要先stop在修改,不然會(huì)導(dǎo)致偵聽(tīng)服務(wù)無(wú)法正常啟動(dòng)關(guān)閉
配置tnsname.ora,設(shè)置DG主和DG備服務(wù)器監(jiān)聽(tīng)
[oracle@zhanky ~]$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora DGZ = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.214.10 )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = zky) ) ) DGB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.214.11)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = zky) ) ) |
將復(fù)制過(guò)來(lái)的參數(shù)文件更改下列紅色標(biāo)識(shí)的地方
[oracle@zhanky ~]$ vi /u01/bk.int db_unique_name=dgb scope=spfile; LOG_ARCHIVE_CONFIG='DG_CONFIG=(DGZ,DGB)' scope=both; LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/oradata/zky/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DGZ' scope=spfile; LOG_ARCHIVE_DEST_2= 'service=DGB lgwr async VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLES) DB_UNIQUE_NAME=DGB' scope=both; FAL_SERVER='DGZ' scope=both; |
完成更改后,進(jìn)入數(shù)據(jù)庫(kù)創(chuàng)建spfile,重啟到nomount狀態(tài)準(zhǔn)備還原數(shù)據(jù)庫(kù)
[oracle@zhanky /]$ sqlplus / as sysdba SQL> create spfile from pfile='/u01/bk.int'; SQL> startup nomount; |
[oracle@zhanky ~]$ rman target sys/manager@DGZ auxiliary sys/manager@DGB RMAN> duplicate target database for standby from active database nofilenamecheck; |
提示:還原數(shù)據(jù)庫(kù)要在nomount模式
將庫(kù)配置為standby庫(kù),開(kāi)啟到只讀模式,開(kāi)啟實(shí)時(shí)應(yīng)用日志。
SQL> shutdown immediate SQL> startup nomount; SQL> alter database mount standby database; SQL> alter database open read only; SQL> alter database recover managed standby database using current logfile disconnect from session; |
主庫(kù)插入
SQL> create table zkydg as(select username from dba_users where username='SYSTEM'); |
備庫(kù)查詢
SQL> select * from zkydg; |
SQL> alter database commit to switchover to physical standby with session shutdown; SQL> startup nomount; SQL> alter database mount standby database; SQL> alter database open read only; SQL> alter database recover managed standby database using current logfile disconnect from session; |
SQL> select switchover_status from v$database; |
SQL> alter database recover managed standby database cancel; SQL> alter database commit to switchover to primary; SQL> shutdown immediate SQL> startup |
新主庫(kù)插入
SQL> create table zkydgqh as(select username from dba_users where username='SYS'); |
老主庫(kù)查詢
SQL> select * from zkydgqh; |
SQL> select switchover_status from v$database; |
SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#; |
當(dāng)主庫(kù)掛了無(wú)法控制時(shí),可直接在備庫(kù)上強(qiáng)制接管數(shù)據(jù)庫(kù)
SQL> RECOVER MANAGED STANDBY DATABASE FINISH force; |
SQL> shutdown immediate SQL> startup nomount; SQL> alter database mount standby database; SQL> alter database open read only; SQL> alter database recover managed standby database using current logfile disconnect from session;
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。