濮阳杆衣贸易有限公司

主頁 > 知識庫 > Oracle 給rac創(chuàng)建單實例dg并做主從切換功能

Oracle 給rac創(chuàng)建單實例dg并做主從切換功能

熱門標簽:地圖標注效果的制作 汽車4s店百度地圖標注店 地圖標注坐標圖標 網(wǎng)貸外呼系統(tǒng)合法嗎 電銷套路機器人 手機地圖標注門店 鶴壁電話機器人價格 杭州網(wǎng)絡外呼系統(tǒng)運營商 安陽企業(yè)電銷機器人供應商

一、概述

本文將介紹如何給rac搭建單節(jié)點的dg,以及如何對其進行角色轉換。預先具備的知識(rac搭建,單實例-單實例dg搭建)

二、實驗環(huán)境介紹

主庫rac(已安裝rac,并已有數(shù)據(jù)庫orcl)

rac1:192.168.56.11,sid1:orcl1,version:11.2.0.4
rac2:192.168.56.12,sid2:orcl2,version:11.2.0.4

從庫(已安裝單實例數(shù)據(jù)庫軟件,無數(shù)據(jù)庫實例)

oradg:192.168.56.102,sid:orcldg,version:11.2.0.4

三、搭建dg

** 以下所有主庫操作都在節(jié)點1上做,如果需要在節(jié)點2上做的,我會標明

1. 主庫打開歸檔模式,并強制寫日志

先查看數(shù)據(jù)庫的歸檔狀態(tài)以及是否開啟強制寫日志,從下圖可以看到目前數(shù)據(jù)庫并沒有打開歸檔,也沒有開啟強制寫日志

SQL> select log_mode, force_logging from v$database;

數(shù)據(jù)庫在mount狀態(tài)下打開歸檔

SQL> alter system set log_archive_dest_1='location=+data' sid='*' scope=spfile;
SQL> shutdown immediate; # 兩節(jié)點都關閉
SQL> startup mount; # 只開啟節(jié)點1
SQL> alter database archivelog;
SQL> alter database open;

強制日志寫,數(shù)據(jù)庫在open狀態(tài)就能修改

SQL> alter database force logging;
SQL> startup; # 當節(jié)點1open完畢后,在節(jié)點2上打開數(shù)據(jù)庫

再來查看數(shù)據(jù)庫的歸檔狀態(tài)以及是否開啟強制寫日志

SQL> select log_mode, force_logging from v$database;

2. 主庫打開dataguard開關

SQL> alter system set log_archive_config='dg_config=(orcl,orcldg)' sid='*'; # orcl是主庫的db_unique_name,orcldg是從庫的db_unique_name

3. 主庫設置遠程歸檔

SQL> alter system set log_archive_dest_3='service=orcldg valid_for=(online_logfiles,primary_role) db_unique_name=orcldg' sid='*';

4. 將主庫的口令文件傳送給從庫

[oracle@rac1 ~]$ scp $ORACLE_HOME/dbs/orapw$ORACLE_SID 192.168.56.102:$ORACLE_HOME/dbs/orapworcldg

5. 從庫準備參數(shù)文件

這里參數(shù)文件跟給單實例搭建單實例dg沒什么區(qū)別,所以不做具體介紹

[root@oradg ~]# vi $ORACLE_HOME/dbs/initorcldg.ora

*.audit_file_dest='/u01/app/oracle/admin/orcldg/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/orcldg/controlfile/control01.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.diagnostic_dest='/u01/app/oracle'
*.log_archive_config='dg_config=(orcl,orcldg)'
*.log_archive_dest_2='location=/u01/app/oracle/oradata/orcldg/archstdlog/ valid_for=(standby_logfiles,standby_role) db_unique_name=orcldg'
*.memory_target=838860800
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='exclusive'
*.undo_tablespace='UNDOTBS1'
standby_file_management=auto # 該參數(shù)默認值是manual,需要將其改為auto,表示主庫的數(shù)據(jù)文件發(fā)生修改(如新建,重命名等),相應地從庫也做相應修改
db_unique_name='orcldg'
db_file_name_convert='+DATA/orcl/datafile/','/u01/app/oracle/oradata/orcldg/datafile/','+DATA/orcl/tempfile/','/u01/app/oracle/oradata/orcldg/tempfile/'
log_file_name_convert='+DATA/orcl/onlinelog/','/u01/app/oracle/oradata/orcldg/onlinelog/'

6. 從庫中準備相關目錄

[oracle@oradg ~]$ mkdir -p /u01/app/oracle/admin/orcldg/adump
[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/controlfile
[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/archstdlog
[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/datafile
[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/tempfile
[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/onlinelog

7. 啟動從庫實例

[oracle@oradg ~]$ export ORACLE_SID=orcldg
[oracle@oradg ~]$ sqlplus / as sysdba
SQL> create spfile from pfile;
SQL> startup nomount

8. 從庫配置并啟動監(jiān)聽程序

因為采用duplicate方式復制主庫數(shù)據(jù),所以需要將從庫配置為靜態(tài)注冊的形式

[oracle@oradg ~]$ vi $ORACLE_HOME/network/admin/listener.ora

SID_LIST_LISTENER =
 (SID_LIST =
 (SID_DESC =
  (GLOBAL_DBNAME = orcldg)
  (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
  (SID_NAME = orcldg)
 )
 )

LISTENER =
 (DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.102)(PORT = 1521))
 )

[oracle@oradg ~]$ lsnrctl start

9. 主庫配置服務命名

# 兩個節(jié)點都要設置
[oracle@rac1 ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora

orcldg =
 (DESCRIPTION =
 (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.102)(PORT = 1521))
 )
 (CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orcldg)
 )
 )
 
[oracle@rac2 ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora

內(nèi)容跟rac1一致,略

10. 主庫使用網(wǎng)絡連接從庫(測試連通性)

# 這里我的主庫的sys密碼是123456,從庫與主庫一致
[oracle@rac1 ~]$ sqlplus sys/123456@orcldg as sysdba

11. 在主庫啟動rman復制從庫

rman連接主庫和從庫

[oracle@rac1 ~]$ rman target / auxiliary sys/123456@orcldg
RMAN> duplicate target database for standby from active database;

12. 從庫添加standbylog

添加的日志大小跟主庫的onlinelog保持一致,數(shù)量多兩組(主庫的onlinelog信息查看v$log)

group的編號不與當前的onlinelog重復即可

[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/standbylog/
  
SQL> alter database add standby logfile group 21 '/u01/app/oracle/oradata/orcldg/standbylog/std01.log' size 50M;
SQL> alter database add standby logfile group 22 '/u01/app/oracle/oradata/orcldg/standbylog/std02.log' size 50M;
SQL> alter database add standby logfile group 23 '/u01/app/oracle/oradata/orcldg/standbylog/std03.log' size 50M;
SQL> alter database add standby logfile group 24 '/u01/app/oracle/oradata/orcldg/standbylog/std04.log' size 50M;
SQL> alter database add standby logfile group 25 '/u01/app/oracle/oradata/orcldg/standbylog/std05.log' size 50M;
SQL> alter database add standby logfile group 26 '/u01/app/oracle/oradata/orcldg/standbylog/std06.log' size 50M;

13. 從庫打開應用日志

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

14. 主庫切換歸檔

SQL> alter system switch logfile;

15. 打開從庫

當從庫應用歸檔一段時間后,就關閉應用歸檔日志,打開從庫。

SQL> alter database recover managed standby database cancel;
SQL> alter database open;
SQL> alter database recover managed standby database using current logfile disconnect from session;

16. 驗證同步

主庫做修改

SQL> update scott.emp set sal=2000;
SQL> commit;

從庫查詢

SQL> select * from scott.emp;

至此,給rac搭建一個單實例的dg就已經(jīng)做完了,跟單實例搭建單實例的dg沒什么區(qū)別。接下來介紹如何切換。

四、主從切換準備

17. 主庫添加standby logfile歸檔路徑

使用grid賬號,創(chuàng)建歸檔路徑

[grid@rac1 ~]$ asmcmd
ASMCMD> lsdg # 查看磁盤組名字
ASMCMD> cd data
ASMCMD> cd orcl
ASMCMD> mkdir ARCHSTDLOG

使用sys數(shù)據(jù)庫賬號,修改數(shù)據(jù)庫參數(shù)

SQL> alter system set log_archive_dest_2='location=+DATA/ORCL/ARCHSTDLOG/ valid_for=(standby_logfiles,standby_role) db_unique_name=orcl' sid='*';

18. 主庫添加standby logfile

添加的日志的大小跟主庫的onlinelog保持一致,數(shù)量多兩組(主庫的onlinelog信息查看v$log)

SQL> alter database add standby logfile thread 1 group 21 ('+data') size 50M;
SQL> alter database add standby logfile thread 1 group 22 ('+data') size 50M;
SQL> alter database add standby logfile thread 1 group 23 ('+data') size 50M;
SQL> alter database add standby logfile thread 2 group 24 ('+data') size 50M;
SQL> alter database add standby logfile thread 2 group 25 ('+data') size 50M;
SQL> alter database add standby logfile thread 2 group 26 ('+data') size 50M;

19. 主庫修改參數(shù)文件

SQL> alter system set standby_file_management=auto sid='*';
SQL> alter system set db_file_name_convert='/u01/app/oracle/oradata/orcldg/datafile/','+DATA/orcl/datafile/','/u01/app/oracle/oradata/orcldg/tempfile/','+DATA/orcl/tempfile/' sid='*' scope=spfile;
SQL> alter system set log_file_name_convert='/u01/app/oracle/oradata/orcldg/onlinelog/','+DATA/orcl/onlinelog/' sid='*' scope=spfile;

到這里,主庫轉換為備庫的準備工作已完成!

20. 從庫配置tnsnames.ora

這里的配置tnsnames.ora的目的是,當原從庫轉變?yōu)樾轮鲙熘?,原主庫變?yōu)樾聫膸?,新主庫需要給新從庫發(fā)送歸檔日志,所以這里的tnsnames要指向新從庫,又由于dg庫應用歸檔只能在一個節(jié)點上, 所以toorcl只指向節(jié)點1。

[oracle@oradg ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora

toorcl =
 (DESCRIPTION =
 (ADDRESS_LIST =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.11)(PORT = 1521))
 )
 (CONNECT_DATA =
  (SERVER = DEDICATED)
  (SERVICE_NAME = orcl)
 )
 )

21. 從庫為onlinelog設置歸檔路徑

[oracle@oradg ~]$ mkdir -p /u01/app/oracle/oradata/orcldg/archivelog

SQL> alter system set log_archive_dest_1='location=/u01/app/oracle/oradata/orcldg/archivelog/ valid_for=(online_logfiles,primary_role) db_unique_name=orcldg';

22. 從庫設置遠程歸檔參數(shù)

SQL> alter system set log_archive_dest_3='service=toorcl valid_for=(online_logfiles,primary_role) db_unique_name=orcl';

到這里,從庫轉為主庫的準備工作已完成!

四、主從切換

23. 查看主庫的角色轉換狀態(tài)

SQL> select database_role,switchover_status from v$database;

24. 在節(jié)點1上主轉從

集群在做角色轉換時,只能有一個實例是打開狀態(tài),其余都要關閉,所以將節(jié)點2的實例關閉。
SQL> shutdown immediate; # 只在節(jié)點2上做

在節(jié)點1上執(zhí)行以下命令,將主庫轉為從庫,并且關閉實例

SQL> alter database commit to switchover to physical standby with session shutdown;

25. 在節(jié)點3上從轉主

SQL> select database_role,switchover_status from v$database;

如果是"NOT ALLOWED"表示歸檔還沒有應用完成,可以等待一段時間

如果日志全部應用了再查看角色轉換狀態(tài)

SQL> select database_role,switchover_status from v$database;

如果角色轉換狀態(tài)是TO PRIMARY,那么表示可以進行角色轉換

執(zhí)行從轉主的命令,命令執(zhí)行成功后,數(shù)據(jù)庫的狀態(tài)會變?yōu)閙ount

SQL> alter database commit to switchover to primary;
SQL> alter database open;

26. 打開新從庫

在節(jié)點1和節(jié)點2上

SQL> startup

節(jié)點1上應用歸檔

SQL> alter database recover managed standby database using current logfile disconnect from session;

節(jié)點3上切換歸檔

SQL> alter system switch logfile;

27. 驗證同步

主庫做修改

SQL> update scott.emp set sal=3000;
SQL> commit;

從庫查詢

SQL> select * from scott.emp;

28. 錯誤處理

如果發(fā)現(xiàn)日志傳不到備庫的話可以在主庫通過以下命令查看錯誤原因

SQL> select dest_id,dest_name,log_sequence,status,error from v$archive_dest;

如果報上面的錯誤的話,可以把歸檔開關重啟一下即可

SQL> alter system set log_archive_dest_state_3='defer' sid='*';
SQL> alter system set log_archive_dest_state_3='enable' sid='*';

五、總結

1. dg的切換需要停掉所有的應用,并把數(shù)據(jù)庫的所有連接全部kill掉,賬號全鎖,切換完成后再解鎖

2. rac在切換時,只留一個活的實例,其它全部關閉

3. 命令每執(zhí)行一條,就留意返回的結果,并實時查看alert.log

總結

以上所述是小編給大家介紹的Oracle 給rac創(chuàng)建單實例dg并做主從切換功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

您可能感興趣的文章:
  • DBCA命令行搭建Oracle ADG的流程
  • Oracle 10g DG 數(shù)據(jù)文件遷移的實現(xiàn)
  • 詳解Oracle dg 三種模式切換
  • Oracle數(shù)據(jù)庫 DGbroker三種保護模式的切換
  • win平臺oracle rman備份和刪除dg備庫歸檔日志腳本
  • Oracle區(qū)別ADG與DG案例詳解

標簽:泰安 焦作 酒泉 柳州 河源 銀川 梧州 南陽

巨人網(wǎng)絡通訊聲明:本文標題《Oracle 給rac創(chuàng)建單實例dg并做主從切換功能》,本文關鍵詞  Oracle,給,rac,創(chuàng)建,單實例,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle 給rac創(chuàng)建單實例dg并做主從切換功能》相關的同類信息!
  • 本頁收集關于Oracle 給rac創(chuàng)建單實例dg并做主從切換功能的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    如东县| 屏边| 吉隆县| 鹤岗市| 栖霞市| 柘城县| 麻江县| 呈贡县| 开原市| 兴安县| 丹东市| 始兴县| 唐河县| 兴山县| 郧西县| 九江市| 万安县| 肥城市| 巴林右旗| 南汇区| 宁乡县| 克东县| 依安县| 洛阳市| 独山县| 金华市| 平果县| 平顺县| 从江县| 大埔县| 英山县| 沁水县| 通山县| 外汇| 凌云县| 田东县| 石屏县| 湖南省| 高台县| 木兰县| 临夏县|