oracle dataguard是一種資料庫級別的ha方案,最主要功能是冗災、資料保護、故障恢復等。
在生產資料庫的"事務一致性"時,使用生產庫的物理全備份(或物理copy)建立備庫,備庫會通過生產庫傳輸過來的歸檔日誌(或重做條目)自動維護備用資料庫。將重做資料應用到備用庫。本文介紹使用rman備份建立備庫(dataguard).
一:oracle dataguard環境概述
1.軟體環境
作業系統red linux enterprise as 5
資料庫版本oracle 10g release 2
2.primary databae
ip:192.168.18.1
oracle_sid=db1
db_unique_name=db1
3.standby database
ip:192.168.18.2
oracle_sid=standby
db_unique_name=standby
二,主資料庫(db1)做準備
1.設定主資料庫為force logging
sql> alter
database
force logging;
2.建立密碼檔案
cd $oracle_home/dbs/
orapwdfile
=orapwdb1
password
=123456
force=y
3.修改主庫的初始化引數
altersystemsetlog_archive_config='dg_config=(db1,standby)'
scope=both;
altersystemsetlog_archive_dest_1='location=/u01/db1/arch'
scope=both;
altersystemsetdb_unique_name='db1'
scope=both;
4.生成資料庫備份
rman>connecttarget sys/123456
rman> backupdatabaseformat='/oracle/rmanback/%d_%s.dbf'
plus archivelog;
[oracle@oracle rmanback]$ ls
db1_1.dbfdb1_2.dbf
5.生成備庫的control file
sql>alter
database
createstandby controlfileas'/oracle/rmanback/ctontrl01
6.配置listener.ora 和tnsnames.ora檔案
啟動lintener.ora,
[oracle@oracle dbs]$ lsnrctl status
lsnrctlforlinux: version 10.2.0.4.0 - productionon14-jun-2009 02:54:29
service "db1"
has 1 instance(s).
instance "db1"
, status ready, has 1 handler(s)forthis service...
service "db1_xpt"
has 1 instance(s).
instance "db1"
, status ready, has 1 handler(s)forthis service...
the command completed successfully
配置rnsnames.ora
vi $oracle_home/network/admin/tnsnames.ora
db1 =
(description =
(address_list =
(address = (protocol = tcp)(host = 192.168.18.1)(port = 1521))
)(connect_data =
(service_name = db1)
standby =
(description =
(address_list =
(address = (protocol = tcp)(host = 192.168.18.2)(port = 1521))
)(connect_data =
(service_name = standby)))
三.建立standby database
1.設定環境變數並安裝oracle軟體
#環境變數設成與主庫一樣
#只安裝軟體不安裝庫
./runinstaller –silent –responsefile /tmp/installoracle.rsp
2.建立相關的目錄
cd $oracle_home/dbs/
orapwdfile=orapwsid password=123456 force=y
#注要密碼要與主庫的一樣, 否則會歸檔失敗
3.建立密碼檔案
cd $oracle_home/dbs/
orapwd file=orapwsid password=123456 force=y
#注要密碼要與主庫的一樣, 否則會歸檔失敗
3.建立引數檔案(pfile)
db_name = standby
shared_pool_size = 120m
undo_management = auto
undo_tablespace = undotbs
sga_max_size = 200m
sga_target = 160m
db_2k_cache_size = 4m
4.cp主資料庫rman備份及控制檔案到備庫
注意:備份存放位置要與primary database rman備份檔案的位置相同. 控制檔案存放位置要與生成standby database controlfile的位置相同
scp /oracle/rmanback/*.dbf [email protected]:/oracle/rmanback/
scp /oracle/rmanback/*.ctl [email protected]:/oracle/oracle/oradata/standby
5.利用備用的控制檔案,把備用資料庫啟到mount
sql>connect / as sysdba
connnpcted to an idle instance.
sql>startup nomount pfile=$oracle_home/dbs/initstandby.ora
sql>alter database mount standby database
6. 配置listener.ora 和tnsnames.ora檔案.
與主庫相同啟動listener,tnsnames.ora也與主庫配置的一樣,
當主備庫的監聽都啟動後,進行測試,以例下面能順利進行
tnsping db1
tnsping standby
sql> sqlplus sys/123456@db1
sql> sqlplus sys/123456@standby
7.轉儲資料庫
rman>connect target /
connected to target database:test(dbid=788075692)
rman> restore database
8.恢復資料庫。
sql>recover managed standby database disconnect from session;
#如果有需要應用的日誌並想手工應用,可以執行如下命令
sql>recover automatic standby database;
9.檢查standby database是否建立成功
a.在primary database 上切換日誌
sql> alter systemswitchlogfile
b.在primary database上執行下面的語句
sql> select max(sequence#) from v$archived_log;
max(sequence#)
--------------17
c. 在standby database上執行下面的語句
10. 以spfile啟動並設為唯讀
sql> create spfile from pfile;
sql> shutdown immedaite
sql> startup mount
sql> alter database recover managed standby database disconnect from session;
sql> alter database open read only;
以上就是oracle dataguard資料備份的操作流程。
Oracle Data Guard 環境配置
data guard環境應配置的初始化引數 db name 同乙個data guard中所有資料庫db name相同 db unique name 為每乙個資料庫制定乙個唯一的名稱 log archive config 用來控制從遠端資料庫接收或傳送redo資料。log archive dest n...
ORACLE DATAGUARD傳輸原理
oracle dataguard 簡稱dg 有兩種傳輸模式 async 非同步 和sync 同步 在介紹這兩種傳輸模式前,說一下dg的重做傳輸程序架構。何為同步傳輸模式呢?顧名思義同步含有實時確認的意思。見如下圖 在最高可用性中,如果主庫收不到備庫應用的確認訊息,那麼會通過net timeout值超...
Oracle Data Guard配置手記
經過多次實踐,參閱網上n多文章 最後還是配不成,可能本人悟性太低,無法體會高手的筆記。最終還是在前輩的幫助下完成。特用最平實的手法記錄下來,以便如吾輩菜鳥能看得懂。執行data guard的條件 1 在主庫和從庫的所有機器上必須安裝同乙個版本的oracle企業版。2 主庫必須執行在歸檔模式下。3 主...