Oracledataguard的3种创建方法Word格式.docx
《Oracledataguard的3种创建方法Word格式.docx》由会员分享,可在线阅读,更多相关《Oracledataguard的3种创建方法Word格式.docx(12页珍藏版)》请在冰点文库上搜索。
![Oracledataguard的3种创建方法Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/9ad8107e-4a92-451a-b170-7e725698f41d/9ad8107e-4a92-451a-b170-7e725698f41d1.gif)
/opt/oracle/oradata/orcl/archive/,ORACLE_BASE目录为:
/opt/oracle,ORACLE_HOME目录为:
/opt/oracle/product/9ir2,ORACLE_SID=orcl,分区/opt由于要存放oracle的所有文件与备份集,所以其容量要足够大。
确认主库是否开启了归档模式。
sqlplus‘/assysdba’
SQL>
archiveloglist
DatabaselogmodeArchiveMode
AutomaticarchivalEnabled
若如上显示,则说明已开启了归档模式,那么从现在开始到最后dataguard建立完毕的整个过程,对主库都没有任何影响,即不会影响主库的正常运行。
如果与上面所示不同,则需要手工开启归档模式。
开启归档模式方法:
altersystemsetlog_archive_start=truescope=spfile;
shutdownimmediate;
startupmount;
alterdatabasearchivelog;
alterdatabaseopen;
二)方法一详细操作步骤:
(冷备法)
1.为备库创建控制文件
登陆主库后,运行:
alterdatabasecreatestandbycontrolfileas'
/opt/oracle/control01.ctl'
;
exit
cpcontrol01.ctlcontrol02.ctl
cpcontrol01.ctlcontrol03.ctl
2.复制主库文件到备机
1)先登陆备库,执行:
mkdir–p/opt/oracle/oradata/orcl
mkdir–p/opt/oracle/oradata/orcl/archive
mkdir–p/opt/oracle/admin/orcl/bdump
mkdir–p/opt/oracle/admin/orcl/cdump
mkdir–p/opt/oracle/admin/orcl/udump
2)然后登陆主库,运行:
shutdownimmediate;
然后复制文件到备机的相同目录。
cd
scpcontrol0*.ctl192.168.0.2:
/opt/oracle/oradata/orcl/
然后需要输入oracle密码,后面的每次scp都一样需要输入此密码
cd/opt/oracle/oradata/orcl/
scp*.dbf192.168.0.2:
/opt/oracle/oradata/orcl/
cd/opt/oracle/oradata/orcl/archive/
/opt/oracle/oradata/orcl/archive/
3.配置备库
1)生成密码文件。
登陆备库后,执行:
cd$ORACLE_HOME/dbs
orapwdfile=orapworclpassword=xxxxxxentries=5
2)配置备机数据库的监听器。
cd$ORACLE_HOME/network/admin
scp192.168.0.1:
/opt/oracle/product/9ir2/network/admin/listener.oralistener.ora
/opt/oracle/product/9ir2/network/admin/tnsnames.oratnsnames.ora
修改listener.ora中的“HOST=”后面的内容为备机的IP地址,然后启动监听
lsnrctlstart
4.启动备库
startupnomount
altersystemsetservice_names=standby;
altersystemsetfal_client=standby;
altersystemsetfal_server=orcl;
altersystemsetstandby_file_management=auto;
alterdatabasemountstandbydatabase;
建立3组standbyredolog:
alterdatabaseaddstandbylogfilegroup4
2'
/opt/oracle/oradata/orcl/redo_stb01.log'
size100m;
alterdatabaseaddstandbylogfilegroup5
/opt/oracle/oradata/orcl/redo_stb02.log'
alterdatabaseaddstandbylogfilegroup6
/opt/oracle/oradata/orcl/redo_stb03.log'
启动自动应用归档日志:
alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
5.启动主库
登陆主库后,执行:
startup
altersystemsetlog_archive_dest_2='
service=standbylgwrreopen=60'
altersystemsetfal_server=standby;
altersystemsetfal_client=orcl;
三)方式二详细操作步骤:
(热备法)
由于方法二与方法一大部分相同,只有第2-2小点不同,这里只列出不同点:
登陆主库,热备表空间:
altertablespacesystembeginbackup;
!
cp/opt/oracle/oradata/orcl/system01.dbf/opt/oracle/system01.dbf
若system表空间有第2个数据文件system02.dbf,那么还需要:
cp/opt/oracle/oradata/orcl/system02.dbf/opt/oracle/system02.dbf
altertablespacesystemendbackup;
………………
其他的表空间都按上面方法进行热备
然后将备份出来的所有数据文件(注意不是原始数据文件)、控制文件等复制到备机上去
后面的步骤就与方法一都相同了。
四)方法三详细操作步骤:
(RMAN复制法)
1.利用RMAN备份主库
先确定可以运行rman命令:
rmantarget/nocatalog
RecoveryManager:
Release9.2.0.6.0-Production
Copyright(c)1995,2002,OracleCorporation.Allrightsreserved.
connectedtotargetdatabase:
ORC1(DBID=1236509999)
usingtargetdatabasecontrolfileinsteadofrecoverycatalog
RMAN>
出现上面所示,说明可以正常运行rman命令,否则,请检查环境变量,确保oracle安装目录被优先搜索。
如:
PATH=$ORACLE_HOME/bin:
$PATH
若在环境变量定义文件.bash_profile中的最后增加上面这一行,可以保证oracle的安装目录被优先搜索。
假如存放数据库备份集的路径是:
/opt/back
编辑(vi)一个空白的文本文件,所在路径及文件名为/opt/oracle/rmanstb,将下面红色代码加入到rmanstb中去:
run{
allocatechanneldev1typedisk;
backup
incrementallevel0
filesperset=1
format'
/opt/back/dbbak_%s_%p_%t'
database;
backupformat'
/opt/back/ctrlbak_%s_%p_%t'
currentcontrolfileforstandby;
sql'
altersystemarchivelogcurrent'
backupfilesperset=40
/opt/back/bakset/logbak_%s_%p_%t'
archivelogalldeleteinput;
releasechanneldev1;
}
然后运行下面的命令开始对主库进行rman备份:
rmantarget/nocatalogcmdfile/opt/oracle/rmanstbmsglog/opt/oracle/rmanstb.log
此时可以另外打开一个登录窗口,运行tail–f/opt/oracle/rmanstb.log
检查备份过程是否正常,确保备份正确完成。
2.备机环境准备
1)登陆备机后,从主机拷贝spfile文件到备机的相同路径下。
/opt/oracle/product/9ir2/dbs/spfileorcl.oraspfileorcl.ora
2)建立数据库密码文件。
3)配置备机数据库的监听器。
4)建立数据文件,归档日志,控制文件以及各种系统日志文件的目录
5)启动备库到nomount状态
startupnomount
6)将主机上的rman备份集拷贝到备机的相同路径下。
cd/opt/back/
/opt/back/*bak*.
3.测试主机与备机之间通讯是否正常
1)编辑主机的tnsnames.ora,增加到备机数据库的连接串,将下面这段红色代码添加进去即可:
STANDBY=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.2)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orcl)
然后测试与备机数据库通讯是否通畅:
sqlplus/nolog
connsys/xxxxxx@standbyassysdba
若能够连接,证明与备机数据库通讯正常。
2)登陆备机,测试与主机数据库通讯是否通畅:
connsys/xxxxxx@orclassysdba
若能够连接,证明与主库通讯正常。
4.在备机上生成dataguard
1)登陆备机,将主库上的归档日志拷贝过来,放置路径要与主库一致。
/opt/oracle/oradata/orcl/archive/*.dbf.
2)在备机上使用rman从备份集duplicate出一个dataguard
rmantargetsys/xxxxxx@orclnocatalogauxiliarysys/xxxxxx@standby
run
{
allocateauxiliarychanneldup1typedisk;
allocateauxiliarychanneldup2typedisk;
duplicatetargetdatabaseforstandbynofilenamecheckdorecover;
}
此过程花费时间会比较长,请注意观察是否有错误产生,若遇到错误请检查是否将命令写错,直到成功完成为止。
5.备机数据库的自动同步
1)分别在主机与备机的数据库中建立3组standbyredolog。
2)登陆备机,将数据库置于自动同步状态。
recoverstandbydatabase;
检查所需要的归档日志是否是主库还未产生的,若不是,请从主机拷贝所需要的archivelog到备机,然后输入“auto”。
3)登陆主机,修改发送归档日志参数。
附录:
1)如何启动备机数据库(Dataguard)
登陆备机,执行:
startupnomount;
2)检查主机与备机的数据库是否同步。
分别登陆主机与备机,都执行下面这条SQL:
selectmax(sequence#)fromv$log_history;
若得到的数字相等,说明主机与备机的数据库已经同步。
3)测试主库的归档日志能否自动传送到备机。
登陆主库,进行手工归档:
altersystemarchivelogcurrent;
再次检查主机与备机的数据库是否同步,若依然保持同步,说明主库的归档日志能自动传送到备机。
到此,Dataguard就已建立成功!
!
但是别忘了,要定时清理备机上的归档日志,以免时间长了将磁盘撑爆,最好使用crontab来定时清理,可以参考如下的清理脚本:
find/opt/oracle/oradata/orcl/archive/*.dbf–cmin+60–execrm{}\;
4)激活备机数据库
当主机硬件或者操作系统故障导致数据库无法启动时,可激活Dataguard。
alterdatabaserecovermanagedstandbydatabasecancel;
alterdatabaseactivatephysicalstandbydatabaseskipstandbylogfile;
startup
然后修改监听(更改listener.ora中HOST=为原主库的服务IP)并重启之后,原来的备机现在就开始扮演主机的角色了。