1、/opt/oracle/oradata/orcl/archive/,ORACLE_BASE目录为:/opt/oracle ,ORACLE_HOME目录为:/opt/oracle/product/9ir2,ORACLE_SID=orcl,分区/opt由于要存放oracle的所有文件与备份集,所以其容量要足够大。确认主库是否开启了归档模式。sqlplus /as sysdbaSQL archive log list Database log mode Archive Mode Automatic archival Enabled若如上显示,则说明已开启了归档模式,那么从现在开始到最后datagua
2、rd建立完毕的整个过程,对主库都没有任何影响,即不会影响主库的正常运行。如果与上面所示不同,则需要手工开启归档模式。开启归档模式方法:alter system set log_archive_start=true scope=spfile;shutdown immediate;startup mount;alter database archivelog;alter database open;二)方法一详细操作步骤: (冷备法)1. 为备库创建控制文件登陆主库后,运行: alter database create standby controlfile as /opt/oracle/ con
3、trol01.ctl; exitcp control01.ctl control02.ctlcp control01.ctl control03.ctl2. 复制主库文件到备机1)先登陆备库,执行:mkdir p /opt/oracle/oradata/orclmkdir p /opt/oracle/oradata/orcl/archivemkdir p /opt/oracle/admin/orcl/bdumpmkdir p /opt/oracle/admin/orcl/cdumpmkdir p /opt/oracle/admin/orcl/udump2)然后登陆主库,运行: shutdown
4、 immediate;然后复制文件到备机的相同目录。cdscp control0*.ctl 192.168.0.2:/opt/oracle/oradata/orcl/然后需要输入oracle密码,后面的每次scp都一样需要输入此密码cd /opt/oracle/oradata/orcl/scp *.dbf 192.168.0.2: /opt/oracle/oradata/orcl/cd /opt/oracle/oradata/orcl/archive/ /opt/oracle/oradata/orcl/archive/3. 配置备库1)生成密码文件。登陆备库后,执行:cd $ORACLE_HO
5、ME/dbsorapwd file=orapworcl password=xxxxxx entries=52)配置备机数据库的监听器。cd $ORACLE_HOME/network/adminscp 192.168.0.1:/opt/oracle/product/9ir2/network/admin/listener.ora listener.ora/opt/oracle/product/9ir2/network/admin/tnsnames.ora tnsnames.ora修改listener.ora中的“HOST =”后面的内容为备机的IP地址,然后启动监听lsnrctl start4.
6、启动备库 startup nomount alter system set service_names = standby; alter system set fal_client=standby; alter system set fal_server=orcl; alter system set standby_file_management=auto; alter database mount standby database;建立3组standby redo log: alter database add standby logfile group 4 2 /opt/oracle/or
7、adata/orcl/redo_stb01.log size 100m; alter database add standby logfile group 5 /opt/oracle/oradata/orcl/redo_stb02.log alter database add standby logfile group 6 /opt/oracle/oradata/orcl/redo_stb03.log启动自动应用归档日志: alter database recover managed standby database disconnect from session;5. 启动主库登陆主库后,执
8、行: startup alter system set log_archive_dest_2 = service=standby lgwr reopen=60 alter system set fal_server=standby; alter system set fal_client=orcl;三)方式二详细操作步骤: (热备法)由于方法二与方法一大部分相同,只有第2-2小点不同,这里只列出不同点:登陆主库,热备表空间: alter tablespace system begin backup; !cp /opt/oracle/oradata/orcl/system01.dbf /opt/
9、oracle/system01.dbf若system表空间有第2个数据文件system02.dbf,那么还需要:cp /opt/oracle/oradata/orcl/system02.dbf /opt/oracle/system02.dbf alter tablespace system end backup;其他的表空间都按上面方法进行热备然后将备份出来的所有数据文件(注意不是原始数据文件)、控制文件等复制到备机上去后面的步骤就与方法一都相同了。四)方法三详细操作步骤:(RMAN复制法)1. 利用RMAN备份主库先确定可以运行rman命令:rman target / nocatalogRe
10、covery Manager: Release 9.2.0.6.0 - ProductionCopyright (c) 1995, 2002, Oracle Corporation. All rights reserved.connected to target database: ORC1 (DBID=1236509999)using target database controlfile instead of recovery catalogRMAN出现上面所示,说明可以正常运行rman命令,否则,请检查环境变量,确保oracle安装目录被优先搜索。如:PATH=$ORACLE_HOME/
11、bin:$PATH若在环境变量定义文件.bash_profile中的最后增加上面这一行,可以保证oracle的安装目录被优先搜索。假如存放数据库备份集的路径是:/opt/back编辑(vi)一个空白的文本文件,所在路径及文件名为/opt/oracle/rmanstb,将下面红色代码加入到rmanstb中去:run allocate channel dev1 type disk; backup incremental level 0 filesperset=1 format /opt/back/dbbak_%s_%p_%t database; backup format /opt/back/ct
12、rlbak_%s_%p_%t current controlfile for standby; sql alter system archive log current backup filesperset=40/opt/back/bakset/logbak_%s_%p_%t archivelog all delete input; release channel dev1; 然后运行下面的命令开始对主库进行rman备份:rman target / nocatalog cmdfile /opt/oracle/rmanstb msglog /opt/oracle/rmanstb.log此时可以另
13、外打开一个登录窗口,运行tail f /opt/oracle/rmanstb.log检查备份过程是否正常,确保备份正确完成。2. 备机环境准备1)登陆备机后,从主机拷贝spfile文件到备机的相同路径下。/opt/oracle/product/9ir2/dbs/spfileorcl.ora spfileorcl.ora2)建立数据库密码文件。3)配置备机数据库的监听器。4)建立数据文件,归档日志,控制文件以及各种系统日志文件的目录5)启动备库到nomount状态 startup nomount6)将主机上的rman备份集拷贝到备机的相同路径下。cd /opt/back/opt/back/*ba
14、k* .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 conn sys/xxxxxxstandby as sysdba若能够
15、连接,证明与备机数据库通讯正常。2)登陆备机,测试与主机数据库通讯是否通畅: conn sys/xxxxxxorcl as sysdba若能够连接,证明与主库通讯正常。4. 在备机上生成dataguard1)登陆备机,将主库上的归档日志拷贝过来,放置路径要与主库一致。/opt/oracle/oradata/orcl/archive/*.dbf .2)在备机上使用rman从备份集duplicate出一个dataguardrman target sys/xxxxxxorcl nocatalog auxiliary sys/xxxxxxstandbyrunallocate auxiliary cha
16、nnel dup1 type disk;allocate auxiliary channel dup2 type disk;duplicate target database for standby nofilenamecheck dorecover;此过程花费时间会比较长,请注意观察是否有错误产生,若遇到错误请检查是否将命令写错,直到成功完成为止。5. 备机数据库的自动同步1)分别在主机与备机的数据库中建立3组standby redo log。2)登陆备机,将数据库置于自动同步状态。 recover standby database;检查所需要的归档日志是否是主库还未产生的,若不是,请从主机
17、拷贝所需要的archivelog到备机,然后输入“auto”。3)登陆主机,修改发送归档日志参数。附录:1)如何启动备机数据库(Dataguard)登陆备机,执行: startup nomount;2)检查主机与备机的数据库是否同步。分别登陆主机与备机,都执行下面这条SQL: select max(sequence#) from v$log_history;若得到的数字相等,说明主机与备机的数据库已经同步。3)测试主库的归档日志能否自动传送到备机。登陆主库,进行手工归档: alter system archive log current;再次检查主机与备机的数据库是否同步,若依然保持同步,说明
18、主库的归档日志能自动传送到备机。到此,Dataguard就已建立成功!但是别忘了,要定时清理备机上的归档日志,以免时间长了将磁盘撑爆,最好使用crontab来定时清理,可以参考如下的清理脚本:find /opt/oracle/oradata/orcl/archive/*.dbf cmin +60 exec rm ;4)激活备机数据库当主机硬件或者操作系统故障导致数据库无法启动时,可激活Dataguard。 alter database recover managed standby database cancel; alter database activate physical standby database skip standby logfile; startup然后修改监听(更改listener.ora中HOST=为原主库的服务IP)并重启之后,原来的备机现在就开始扮演主机的角色了。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2