Oracle數據庫DG實現主從數據庫同步

 

概述

參考文檔下載鏈接:鏈接: https://pan.baidu.com/s/1gcSw0qsb8sI4XY84ZGV5Xg 提取碼: sn1p 

前提:本文檔基於已經創建了oracle數據庫,兩臺服務器網絡可以互相訪問,

 

 

 

主庫

備庫

OS系統

Centos 7.5 x64

Centos 7.5 x64

數據庫版本

12.2.0.1

12.2.0.1

IP

192.168.33.107

192.168.33.108

實例名

fxdb

sbdb

靜態監聽

1521-動態監聽

1522-靜態監聽

 

 

主庫:

Database軟件,dbca安裝數據庫,監聽

備庫:

Database軟件,無需dbca安裝數據庫,靜態監聽

 

 

  • 主庫服務器配置

1.配置/etc/hosts

將這兩ip配置上

 

2.啓用force logging

alter database force logging;

select force_logging from v$database;(查詢狀態是否爲YES)

 

3.啓用歸檔

alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;

alter system set log_archive_dest_1='LOCATION=/u01/arch' scope=spfile;

sql> shutdown immediate;

sql> startup mount;

sql> alter database archivelog;

sql> alter database open;

退出來創建/u01/arch路徑

 

4.配置主庫初始化參數

alter system set log_archive_config='DG_CONFIG=(fxdb,sbdb)' scope=both; 是指的DB_UNIQUE_NAME值

 

alter system set log_archive_dest_1='LOCATION=/u01/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=fxdb' scope=both;

 

alter system set log_archive_dest_2='SERVICE=tnssbdb LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=sbdb' scope=both;

 

alter system set standby_file_management='AUTO' scope=both;

alter system set fal_client='tnsfxdb' scope=both;  是指tnsname

alter system set fal_server='tnssbdb' scope=both;

 

5.配置tns,

編輯tnsnames.ora文件,一般這個文件都是在這個路徑下面的 $ORACLE_HOME/network/admin

 

LISTENER_FXDB =

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

 

FXDB =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = fxdb)

    )

  )

 

TNSFXDB =

  (DESCRIPTION =

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = fxdb)

    )

  )

 

TNSSBDB =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = fanxin02)(PORT = 1522))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = fxdb)

    )

  )

 

主庫配置完成

 

  • 備庫服務器配置

1.配置/etc/hosts

將這兩ip配置上

 

2.從主庫中拷貝密碼文件到備庫中

主庫和備庫,SYS密碼必須相同

命名規則:orapwSID

scp orapwfxdb fanxin02:/u01/app/oracle/product/12.2.0/db_1/dbs

mv orapwfxdb orapwsbdb

 

3.從主庫中拷貝tnsnames.ora到備庫中

scp tnsnames.ora

fanxin02:/u01/app/oracle/product/12.2.0/db_1/network/admin/tnsnames.ora

配置如下

 

 

4.從主庫中拷貝listener.ora到備庫中,配置靜態監聽

scp tnsnames.ora

fanxin02:/u01/app/oracle/product/12.2.0/db_1/network/admin/tnsnames.ora

配置如下

 

5.創建pfile文件

在$ORACLE_HOME/db_1/dbs目錄下

touch initsbdb.ora

 

編輯這個文件的內容

db_name='fxdb'

sga_target=1520M

pga_aggregate_target=579M

db_unique_name='sbdb'

compatible='12.2.0'  配置爲和主庫一致

log_archive_config='DG_CONFIG=(fxdb,sbdb)'

audit_file_dest='/u01/app/oracle/admin/sbdb/adump'

control_files='/u01/app/oracle/oradata/sbdb/control01.ctl','/u01/app/oracle/oradata/sbdb/control02.ctl'

log_archive_dest_1='LOCATION=/u01/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=sbdb'

log_archive_dest_2='SERVICE=tnsfxdb LGWR SYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=fxdb'

db_file_name_convert='/u01/app/oracle/oradata/fxdb','/u01/app/oracle/oradata/sbdb'

log_file_name_convert='/u01/app/oracle/oradata/fxdb','/u01/app/oracle/oradata/sbdb'

standby_file_management='AUTO'

remote_login_passwordfile='EXCLUSIVE'

fal_client='tnssbdb'

fal_server='tnsfxdb'

 

創建目錄:

mkdir -p /u01/app/oracle/admin/sbdb/adump

mkdir -p /u01/app/oracle/oradata/sbdb

mkdir -p /u01/arch

 

登錄oracle執行下面這條命令

create spfile from pfile;

可以看到對應生成了下面這個文件

 

6.然後再啓動nomount狀態

登錄oracle,啓動nomount狀態

startup nomount;

 

備庫配置完成

  • 主備庫測試監聽

早主備庫中都執行下面四個命令,測試是否成功

tnsping tnsfxdb

tnsping tnssbdb

sqlplus sys/Oracle123@tnsfxdb as sysdba

sqlplus sys/Oracle123@tnssbdb as sysdba

以上如果都沒問題,能夠聯的上對應oracle,纔可以進行下面操作

  • 創建備庫

rman備份集,備庫此時處於nomount狀態 --連接rman

rman target sys/123456789Wuw@tnsfxdb auxiliary sys/123456789Wuw@tnssbdb   

 

 --從主庫創建備庫

duplicate target database for standby from active database nofilenamecheck; 

如果失敗:

備庫:

shutdown->startup nomount

數據文件都刪除    --刪除/u01/app/oracle/oradata/sbdb 路徑的下的所有文件,然後在執行上面的操作

 

  • 開啓主從同步

在備庫中登錄Oracle,添加Standby日誌組並開啓同步,Standby日誌組=日誌組+1

alter database add standby logfile group 4 ('/u01/app/oracle/oradata/sbdb/stredo04.rdo') size 200m;

alter database add standby logfile group 5 ('/u01/app/oracle/oradata/sbdb/stredo05.rdo') size 200m;

alter database add standby logfile group 6 ('/u01/app/oracle/oradata/sbdb/stredo06.rdo') size 200m;

alter database add standby logfile group 7 ('/u01/app/oracle/oradata/sbdb/stredo07.rdo') size 200m;

如果失敗了,刪除對應文件

 

alter database drop standby logfile group 4;

alter database drop standby logfile group 5;

alter database drop standby logfile group 6;

alter database drop standby logfile group 7;

打開數據庫實例:

alter database open

--開啓實時同步

alter database recover managed standby database disconnect;

--更改保護模式爲最大可用

alter database set standby database to maximize availability;

查看狀態:

select name,open_mode,database_role,protection_mode,protection_level from v$database;

 

 

主從同步開啓完成,

 

六.服務器故障處理

PS:如果出現服務器宕機,停電等特殊情況,導致Oracle服務器中斷了,需要重新啓動oracle,這個時候oracle主從同步也會失效,需要重新開啓同步,需要按照以下規則來啓動

 

  1. 先啓動備庫,再啓動主庫(避免數據未同步問題)
  2. 先關閉主庫,再關閉備份(如果需要關閉服務的話)

 

PS:注意,以下操作都是在切換到Oracle用戶下進行的

操作1:啓動備庫

 

 

 

操作2:啓動主庫

1.啓動oracle實例

 

2.啓動oracle監聽

 

操作3:在備庫上重新開啓主從同步

 

開啓完成之後就可以自己測試一下了,

這邊我測試了一種情況,就是主從同步未開啓的情況,往主庫的表中插入數據,這個時候是不能同步到備庫中了,但是開啓了主從同步之後,主庫會自動將原先未開啓主從同步之前的數據也一起同步到備庫中去

 

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