Oracle19C DataGuard搭建

2020-12-22 IT之鷹

Oracle19C DataGuard搭建

、配置前提

主庫 192.168.75.133 sid:orcl service:orcl

備庫 192.168.75.134 sid:orcl service:orcldg

、配置過程

1.判斷DG是否已經安裝:

select * from v$option where parameter = 'Oracle Data Guard'; 如果是true表示已經安裝可以配置,否則需要安裝相應組件。

2.設置主、從庫為強制記錄日誌。(主、從庫)

(1)開啟強制歸檔

1)SQL> conn / as sysdba (以DBA身份連接資料庫)

2)SQL> shutdown immediate; (立即關閉資料庫)

3)SQL> startup mount (啟動實例並加載資料庫,但不打開)

4)SQL> alter database archivelog; (更改資料庫為歸檔模式)

5)alter database force logging; (設置強制歸檔)

(2)sql>select name,force_logging from v$database;檢查狀態(YES為強制) (3)如果需要在主庫添加或者刪除數據文件時,這些文件也會在備份添加或刪除,使用如下:

sql> alter system set STANDBY_FILE_MANAGEMENT=auto;(設置自動同步)

sql>show parameter standby (默認此參數是manual手工方式)

3.創建standby log files(備用日誌文件)(主、從庫都建立)(最好最後創建)

su - oracle

cd $ORACLE_BASE/oradata/ORCL/

mkdir dg

chown oracle:dba dg

sql> alter database add standby logfile group 11 '/home/oracle/app/oracle/oradata/ORCL/dg/standby11.log' size 200M;

sql> alter database add standby logfile group 12 '/home/oracle/app/oracle/oradata/ORCL/dg/standby12.log' size 200M;

sql> alter database add standby logfile group 13 '/home/oracle/app/oracle/oradata/ORCL/dg/standby13.log' size 200M;

sql> alter database add standby logfile group 14 '/home/oracle/app/oracle/oradata/ORCL/dg/standby14.log' size 200M;

4.密碼文件和控制文件的創建傳輸

(1)一般資料庫默認就有密碼文件,存放在$ORACLE_HOME/dbs/orapwSID(linux),這裡為orapworcl,(windows server 2008 R2系統在D:\app\Administrator\product\19.3.0\dbhome_1\database) 如果沒有

sql>orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle

(2)檢查REMOTE_LOGIN_PASSWORDFILE值是否為 EXCLUSIVE sql>show parameter REMOTE_LOGIN_PASSWORDFILE 如果值不是EXCLUSIVE,則:

alter system set remote_login_passwordfile=exclusive scope=spfile;

(3)密碼文件需要scp到從庫

linux環境

scp orapworcl oracle@192.168.75.134:/home/oracle/app/oracle/product/19.3.0/db_1/dbs

windows環境

拷貝D:\app\Administrator\product\19.3.0\dbhome_1\database\ PWDorcl.ora 到192.168.75.134對應目錄

5.db_name和db_unique_name

默認db_name和db_unique_name和實例名是一致的,這裡是orcl需要注意在DG中主庫和從庫的db_unique_name是不能一致的,需要區分開的。這裡我們設置主庫的db_unique_name為orcl,從庫為orcldg. sql>show parameter db_unique_name sql>alter system set db_unique_name=orcl scope=spfile; (主庫)

sql>alter system set db_unique_name=orcldg scope=spfile; (從庫)

注意雖然默認db_unique_name和db_name是一致的,但是需要顯式設置,否則在spfile中沒有此參數

6.閃回資料庫:

(1)快速恢復區(Flash/Fast Recovery Area),默認是配置的,但是需要確認這個區域的磁碟夠大,至少300G以上(默認3G)

sql>show parameter db_recovery_file_dest

主、備都執行

mkdir /home/oracle/app/oracle/db_recovery_file_dest #創建閃回區

主、備都執行

更改大小:sql>alter system set db_recovery_file_dest_size=200G;

主、備都執行

可以修改位置:sql>alter system set db_recovery_file_dest='/home/oracle/app/oracle/db_recovery_file_dest';

(2)查看是否啟用,默認是不開啟的(主庫開啟,備庫在後面第17步開啟)

sql>select flashback_on from v$database; 開啟:sql>alter database flashback on;

如果你碰到 ORA-01153 報錯,那一定是在備庫進行此操作。你需要先取消重做日誌應用,啟用閃回日誌,然後重新啟用日誌應用。

在主庫啟用閃回日誌,不會同步備庫也啟用。你必須手動在主庫和備庫上均啟用閃回日誌。如果不啟用閃回日誌,當出現故障轉移時,你將需要完全重新開始創建一個備庫。

7.SQL*NET設置

(1)配置主庫的監聽

雖然可以通過netca來進行配置,但是除了這個默認的外,我們還需要一個靜態註冊SID_LIST_LISTENER,如果沒有此從參數而且dataguard啟動順序不正確,主庫會報PING[ARC1]:Heartbeat failed to connect to standby '***'.Error is 12514導致歸檔無法完成。配置如下:

vim /home/oracle/app/oracle/product/19.3.0/db_1/network/admin/listener.ora 加入下面的內容

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.75.133)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = orcl_DGMGRL) #增加_DGMGRL,後面的DG Broker使用

(ORACLE_HOME = /home/oracle/app/oracle/product/19.3.0/db_1)

(SID_NAME = orcl)

)

(SID_DESC =

(GLOBAL_DBNAME = orcldg_DGMGRL)

(ORACLE_HOME = /home/oracle/app/oracle/product/19.3.0/db_1)

(SID_NAME = orcl)

)

(SID_DESC =

(GLOBAL_DBNAME = orclpdb_DGMGRL)

(ORACLE_HOME = /home/oracle/app/oracle/product/19.3.0/db_1)

(SID_NAME = orcl)

)

(SID_DESC =

(GLOBAL_DBNAME = xukepdb_DGMGRL)

(ORACLE_HOME = /home/oracle/app/oracle/product/19.3.0/db_1)

(SID_NAME = orcl)

)

)

(2)配置tnsnames

vim /home/oracle/app/oracle/product/19.3.0/db_1/network/admin/tnsnames.ora

LISTENER_ORCL =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.75.133)(PORT = 1521))

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.75.133)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

ORCLDG =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.75.134)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcldg)

(UR=A)

)

)

(3)傳輸到備庫並修改listener.ora和tnsnames.ora

scp $ORACLE_HOME/network/admin/listener.ora oracle@192.168.75.134: $ORACLE_HOME/network/admin/

scp $ORACLE_HOME/network/admin/tnsnames.ora oracle@192.168.75.134: $ORACLE_HOME/network/admin/

vim listener.ora:

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.75.134)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = orcl_DGMGRL)

(ORACLE_HOME = /home/oracle/app/oracle/product/19.3.0/db_1)

(SID_NAME = orcl)

)

(SID_DESC =

(GLOBAL_DBNAME = orcldg_DGMGRL)

(ORACLE_HOME = /home/oracle/app/oracle/product/19.3.0/db_1)

(SID_NAME = orcl)

)

(SID_DESC =

(GLOBAL_DBNAME = orclpdb_DGMGRL)

(ORACLE_HOME = /home/oracle/app/oracle/product/19.3.0/db_1)

(SID_NAME = orcl)

)

(SID_DESC =

(GLOBAL_DBNAME = xukepdb_DGMGRL)

(ORACLE_HOME = /home/oracle/app/oracle/product/19.3.0/db_1)

(SID_NAME = orcl)

)

)

tnsnames.ora:不需要修改

8.重做日誌傳輸配置

(1)配置歸檔日誌位置: 查詢已經設置的歸檔路徑sql:archive log list或者show parameter log_archive_dest_1

(主庫操作)

mkdir /home/oracle/app/oracle/archive

sql> alter system set log_archive_dest_1='LOCATION=/home/oracle/app/oracle/archive valid_for=(all_logfiles,all_roles) db_unique_name=orcl' scope=spfile;

SQL> alter system set log_archive_dest_state_1='enable' scope=spfile;

(備庫操作)

mkdir /home/oracle/app/oracle/archive

sql> alter system set log_archive_dest_1='LOCATION=/home/oracle/app/oracle/archive valid_for=(all_logfiles,all_roles) db_unique_name=orcldg' scope=spfile;

SQL> alter system set log_archive_dest_state_1='enable' scope=spfile;

(註:官方文檔裡說使用 valid_for=(online_logfiles, all_roles),這將導致備庫無法歸檔備用日誌文件,因為它們不是在線日誌。但如果使用 all_logfiles 選項,主備庫將都能歸檔在線以及備用日誌。如果你想在備庫進行備份,並同時備份歸檔日誌的話,必須使用 all_logfiles。)

(2)配置重做日誌到備份庫:

(主庫操作)

sql>alter system set log_archive_dest_2='SERVICE=orcldg lgwr sync valid_for=(online_logfile,primary_role) db_unique_name=orcldg';

SQL> alter system set log_archive_dest_state_2='enable' scope=spfile;

(備庫操作)

SQL> alter system set log_archive_dest_2='SERVICE=orcl LGWR VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl';

SQL> alter system set log_archive_dest_state_2='enable' scope=spfile;

(3)設置db_file_name_convert和log_file_name_conver參數:

(主庫、備庫都操作)

SQL> alter system set log_file_name_convert='/home/oracle/app/oracle/archive','/home/oracle/app/oracle/archive' scope=spfile;

SQL> alter system set db_file_name_convert='/home/oracle/app/oracle/oradata/ORCL/dg','/home/oracle/app/oracle/oradata/ORCL/dg' scope=spfile;

(4)要注意STANDBY_ARCHIVE_DEST 參數不需要,已經被官方棄用。設置此參數後啟動資料庫,只會報 ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance 錯。

9.配置FAL_SERVER

這個參數指定當日誌傳輸出現問題時,備庫到哪裡去找缺少的歸檔日誌。它用在備庫接收的到的重做日誌間有缺口的時候。這種情況會發生在日誌傳輸出現中斷時,比如你需要對備庫進行維護操作。在備庫維護期間,沒有日誌傳輸過來,這時缺口就出現了。設置了這個參數,備庫就會主動去尋找那些缺少的日誌,並要求主庫進行傳輸。

主庫使用 :fal_server=從庫

從庫上就反過來:fal_server=主庫

sql>alter system set FAL_SERVER='orcldg'; (主庫)

alter system set fal_client=orcl scope=spfile; (主庫)

sql>alter system set FAL_SERVER='orcl'; (從庫)

alter system set fal_client=orcldg scope=spfile; (從庫)

10.Data Guard 配置裡的另外一個庫的名字(主備)

主庫操作

sql> alter system set log_archive_config = 'dg_config=(orcl,orcldg)';

備庫操作

sql> alter system set log_archive_config = 'dg_config=(orcldg,orcl)';

以上的辦法是我們採用alter system的方式在線修改,還有一種比較方便的辦法(但是容易出錯,所以方便和安全什麼時候都不可兼得)

11.主庫生成pfile (initorcl.ora),並傳輸到備庫進行修改

主庫操作

sql>create pfile from spfile;

scp /home/oracle/app/oracle/product/19.3.0/db_1/dbs/initorcl.ora oracle@192.168.75.134:/home/oracle/app/oracle/product/19.3.0/db_1/dbs

備庫操作

修改備庫的initorcl.ora 修改參數如下:

*.db_name='orcl'

*.db_unique_name='orcldg'

*.fal_server='orcl'

*.log_archive_config='dg_config=(orcldg,orcl)'

*.log_archive_dest_1='LOCATION=/home/oracle/app/oracle/archive valid_for=(all_logfiles,primary_role) db_unique_name=orcldg'

*.log_archive_dest_2='SERVICE=orcl lgwr sync valid_for=(online_logfile,primary_role) db_unique_name=orcl'

12.啟動備庫到nomount狀態: (備庫操作)

SQL> shutdown immediateSQL> create spfile from pfile='/home/oracle/app/oracle/product/19.3.0/db_1/dbs/initorcl.ora';SQL> startup nomount

13.在主庫上執行RMAN 並連接主資料庫和備資料庫

rman target / auxiliary sys/password@orcldg

RMAN>duplicate target database for standby from active database nofilenamecheck dorecover;

或執行下面操作

RMAN> run { allocate channel prmy1 type disk; allocate channel prmy2 type disk; allocate channel prmy3 type disk; allocate channel prmy4 type disk; allocate auxiliary channel dg type disk; duplicate target database for standby from active database;}

14.啟用物理備用資料庫: (duplicate 完成之後,備庫是mount的)

備庫操作

SQL>select status,instance_name from v$instance;

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

15.啟用主庫

SQL> startup

SQL> alter pluggable database all open;

16. 主備庫角色驗證、查看主備庫同步狀態

(1)分別在主備庫上,執行下面的SQL進行驗證:

主庫:SQL> select database_role,switchover_status from v$database;

備庫:SQL> select database_role,switchover_status from v$database;

(2)查看歸檔日誌同步狀況

SQL> alter system switch logfile; //主庫

sql>select sequence# from v$archived_log; 查看日誌序號

sql>select sequence#,applied from v$archived_log;備庫驗證

17.備庫開啟flashback:

SQL> select flashback_on from v$database; SQL> alter database recover managed standby database cancel; SQL> alter database flashback on; SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

18.啟動備庫到只讀模式

SQL> recover managed standby database cancel;

SQL> alter database open read only;

SQL> alter pluggable database all open;

SQL> recover managed standby database disconnect from session;

三、配置DG Broker服務

1、主備庫啟用broker

主備庫上執行下面的SQL啟用broker:

SQL> ALTER SYSTEM SET dg_broker_start=true scope=both;

2、創建broker配置文件

主庫執行

dgmgrl sys@orcl as sysdba

DGMGRL>create configuration dg_cfg as primary database is orcl connect identifier is orcl;

註:如果添加standby資料庫的時候,報如下錯誤:

ORA-16698: LOG_ARCHIVE_DEST_n parameter set for object to be added

在備庫上,將LOG_ARCHIVE_DEST_2參數的值清空重新添加即可。

SQL> alter system set LOG_ARCHIVE_DEST_2=' ' scope=both; (備庫操作)

3、啟動DGMGRL配置

DGMGRL> show configuration; 查看配置文件信息

DGMGRL> enable configuration; 開啟配置信息

DGMGRL> show database orcl 查看orcl配置

DGMGRL> show database orcldg 查看orcldg配置

4、使用dgmgrl執行主備切換

DGMGRL> show configuration;

DGMGRL> switchover to orcldg; 主備庫切換

DGMGRL> show configuration;

參考連結:https://blog.51cto.com/12608853/2362728

https://blog.51cto.com/candon123/2390513

https://blog.csdn.net/wll_1017/article/details/9794203

相關焦點

  • oracle 查詢 今天、昨天、本周、本月、本季度的所有記錄
    Oracle9i Enterprise Edition Release 9.2.0.3.0 - Production1.首先介入檢查資料庫任務$ sqlplus "/ as sysdba"SQL*Plus: Release 9.2.0.3.0 - Production on Wed Nov 17 20:23:53 2004Copyright (c)
  • Oracle資料庫二
    由於 Oracle 中一個實例只能操作一個資料庫的原因 oracle 中也會使用 SID 來作為庫的名稱。2.cfgtoollogs目錄如:sqlplus pxyxss/oracle@orclNAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)其中sqlplus是資料庫工具,pxyxss是連接的名,oracle是密碼,@oracl可以不寫。
  • Oracle 數據文件轉移:[1]表空間-百家號 - 百度經驗
    )2:設置表空間為read only 3:設置表空間為 offline狀態4:複製數據文件到新的路徑5:rename 轉移數據文件6:設置表空間 online 狀態7:設置表空間為 read write8:刪除原路徑中已經複製的數據文件注意:這裡是轉移的是應用表空間,對系統表空間system、undo表空間和temp表空間無法使用確定需求表空間:db320數據文件:/u01/app/oracle
  • DB2與Oracle資料庫SQL寫法的主要區別
    04-26 08:08:08','YYYY-MM-DD HH24:MI:SS')char(date('2007-04-29'))兼容寫法cast(1 as char)cast('1' as int)無無無兼容無  2、Where條件弱類型判斷  oracle
  • Oracle Solaris 11.4 SRU12 發布,Unix 作業系統
    atomicwrites、attrs、hypothesis、pathlib2、pluggy、scandir 更新版本:Bash 已更新為 5.3、Node.js 更新到 8.16.0、cryptography 更新到 2.5、Jsonrpclib 更新到 0.4.0、Coverage 更新到 4.5.2、Markupsafe 更新到 1.1.0、pygments 更新到 2.3.1、pyOpenssl 更新到 19.0.0
  • 搭建C語言開發環境,其實只需要兩個工具就行了!
    工欲善其事必先利其器,對於c語言學習來說,重要的不是看了多少本書,而是打了多少行代碼。在手打代碼之前,我們當然要先搭建自己的開發環境,對於c語言的學習來說,其實只需要兩個工具就行了,那就是文本編輯器和c編譯器了。
  • 如何減少oracle資料庫死鎖
    今天中午oracle系統死鎖,在30多萬行代碼裡面排查半天,原來是有段代碼的事務沒有提交。#程式設計師# 很多時候漏提交時務,就會造成災難性的後果,因此寫完代碼再檢查一遍,還是有必要的。
  • python + appium + 模擬器 搭建app自動點擊系統
    摘要本文主要介紹犀光科技app自動控制系統的搭建,利用python腳本驅動appium從而控制模擬器中app的行為。基本關係圖環境搭建一、python3 安裝直接登錄Python官網[https://www.python.org],下載最新版本即可。
  • Oracle宣布搬離總部和馬斯克做「鄰居」
    此外,早在Covid-19爆發的前期,Twitter就宣布其員工將永久選擇在家工作。冠狀病毒大流行之後,幾家公司紛紛宣布了離開加州的計劃:其他將總部遷出加州的科技公司包括惠普企業和Palantir Technologies。惠普上周表示,將把總部遷至德克薩斯州的休斯頓。
  • oracle sql 布爾值專題及常見問題 - CSDN
    id=1 and 1=(select decode(substr((select username%7c%7cpassword from admin),1,1),'a',1,0) from dual)id=1 and 1=(select decode(substr((select username%7c%7cpassword from admin),2,1),'d',1,0) from dual) --
  • ftp伺服器搭建並通過外網訪問
    工具/原料方法/步驟ftp搭建:1. 按【Win + R】快捷鍵打開運行對話框,輸入「optionalfeatures」後,按回車鍵,如下圖所示:2.  8.至此,一個新的FTP伺服器就搭建完成並順利啟動,在右側就可以看到新創建站點的所有信息,9.沒有實踐就沒有發言權,是時候檢驗一下勞動成果了,打開瀏覽器,清空地址欄,輸入「ftp://ip
  • Oracle DBA之常用SQL
    TO_CHAR(SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, 'MM-DD-YY hh24:MI:SS'),10,2),'18',1,0)),'999') "18",      TO_CHAR(SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, 'MM-DD-YY hh24:MI:SS'),10,2),'19
  • Saxo Payments Teams With Oracle to Simplify and Reduce the...
    For more information about Oracle (NYSE: ORCL), visit oracle.com.  Trademarks  Oracle and Java are registered trademarks of Oracle and/or its affiliates.
  • 基於VIVADO搭建ARM+FPGA系統架構實現軟硬體聯合開發
    打開APP 基於VIVADO搭建ARM+FPGA系統架構實現軟硬體聯合開發 賽靈思中文社區 發表於 2020-12-23 16:54:52
  • 東城區專業搭建鋼結構底商施工隊【錫林浩特資訊】
    東城區專業搭建鋼結構底商施工隊【錫林浩特資訊】北京意達鋼結構工程有限公司從事戶型改造設計,閣樓裝修。做閣樓夾層,現澆混凝土閣樓、鋼結構加層(隔層)搭建,鋼結構閣樓施工、樓梯。
  • 【Nginx】如何使用Nginx搭建流媒體伺服器實現直播?看完這篇我會了!!
    作為在網際網路行業奮鬥了多年的小夥伴,你有沒有想過如果使用Nginx搭建一套直播環境,那我們該如何搭建呢?別急,接下來,我們就一起使用Nginx來搭建一套直播環境。安裝Nginx注意:這裡以CentOS 6.8伺服器為例,以root用戶身份來安裝Nginx。