Oracle Dataguard的3种创建方法
2015-03-12 16:48
267 查看
一) 总介:
1. 冷备法
优点:操作比较简单。
缺点:操作过程需要停止主库服务。
简介:停止主库后,直接copy主机的所有数据文件,控制文件,归档日志文件,参数文件(spfile)到备机的相同路径下,再启动主、备库,然后修改相关配置文件完成主备自动同步。
2. 热备法
优点:无需停止主库服务。
缺点:操作比较复杂,操作过程对主库性能影响比较大。
简介:在主库开启状态下把主库的数据文件一个一个热备出来,然后连同控制文件,归档日志文件,参数文件(spfile)等一起复制到备机相同路径下,再启动备库并执行recover,然后修改相关配置文件完成主备自动同步。
3. RMAN复制法
优点:无需停止主库服务,操作过程对主库性能影响比较小。
缺点:操作比较复杂。
简介:在主库开启状态下运行rman,对主库进行全库备份,然后把备份集与参数文件(spfile)一起复制到备机,再启动备库到nomount状态后利用rman在备机上进行for standby的duplicate,然后修改相关配置文件完成主备自动同步。
无论上述何种方法,在开始之前,都必须先确认主库已正常运行,备机的操作系统,磁盘分区,oracle版本都必须与主机完全一致,备机上的oracle需要已安装好但不用建库。主、备机的网络都必须已联通,并能够在客户端使用putty或其他远程登陆工具通过ssh方式登陆(本文内所讲的“登陆”都是指:使用putty通过ssh方式以oracle账号登陆到主机或者备机的linux系统)。
本文假设主机ip地址是192.168.0.1,备机ip地址是192.168.0.2,oracle的数据文件,控制文件,联机日志文件的存放路径统一为:/opt/oracle/oradata/orcl/,归档日志的存放路径为:/opt/oracle/oradata/orcl/archive/,ORACLE_BASE目录为:/opt/oracle ,ORACLE_HOME目录为:/opt/oracle/product/9ir2,ORACLE_SID=orcl,分区/opt由于要存放oracle的所有文件与备份集,所以其容量要足够大。
确认主库是否开启了归档模式。
sqlplus‘/as sysdba’
SQL>archive log list
Database log mode Archive Mode
Automatic archival Enabled
若如上显示,则说明已开启了归档模式,那么从现在开始到最后dataguard建立完毕的整个过程,对主库都没有任何影响,即不会影响主库的正常运行。
如果与上面所示不同,则需要手工开启归档模式。
开启归档模式方法:
SQL>alter system set log_archive_start=true scope=spfile;
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
二)方法一详细操作步骤:
(冷备法)
1. 为备库创建控制文件
登陆主库后,运行:
sqlplus ‘/assysdba’
SQL>alter database create standby controlfile as '/opt/oracle/control01.ctl';
SQL> exit
cp control01.ctl control02.ctl
cp control01.ctl control03.ctl
2. 复制主库文件到备机
1)先登陆备库,执行:
mkdir –p /opt/oracle/oradata/orcl
mkdir –p /opt/oracle/oradata/orc
4000
l/archive
mkdir –p /opt/oracle/admin/orcl/bdump
mkdir –p /opt/oracle/admin/orcl/cdump
mkdir –p /opt/oracle/admin/orcl/udump
2)然后登陆主库,运行:
sqlplus ‘/as sysdba’
SQL> shutdown immediate;
SQL> exit
然后复制文件到备机的相同目录。
cd
scp 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/
scp *.dbf 192.168.0.2: /opt/oracle/oradata/orcl/archive/
3. 配置备库
1)生成密码文件。
登陆备库后,执行:
cd $ORACLE_HOME/dbs
orapwd file=orapworcl password=xxxxxx entries=5
2)配置备机数据库的监听器。
登陆备库后,执行:
cd $ORACLE_HOME/network/admin
scp 192.168.0.1:/opt/oracle/product/9ir2/network/admin/listener.oralistener.ora
scp 192.168.0.1:/opt/oracle/product/9ir2/network/admin/tnsnames.oratnsnames.ora
修改listener.ora中的“HOST =”后面的内容为备机的IP地址,然后启动监听
lsnrctl start
4. 启动备库
登陆备库后,执行:
sqlplus ‘/as sysdba’
SQL> startupnomount
SQL> alter system set service_names = standby;
SQL> alter system set fal_client=standby;
SQL> alter system set fal_server=orcl;
SQL> alter system set standby_file_management=auto;
SQL> alter database mount standby database;
建立3组standby redo log:
SQL> alter database add standby logfile group 4
2 '/opt/oracle/oradata/orcl/redo_stb01.log' size 100m;
SQL> alter database add standby logfile group 5
2 '/opt/oracle/oradata/orcl/redo_stb02.log' size 100m;
SQL> alter database add standby logfile group 6
2 '/opt/oracle/oradata/orcl/redo_stb03.log' size 100m;
启动自动应用归档日志:
SQL> alter database recover managed standby database disconnect from session;
5. 启动主库
登陆主库后,执行:
sqlplus ‘/as sysdba’
SQL>startup
建立3组standby redo log:
SQL> alter database add standby logfile group 4
2 '/opt/oracle/oradata/orcl/redo_stb01.log' size 100m;
SQL> alter database add standby logfile group 5
2 '/opt/oracle/oradata/orcl/redo_stb02.log' size 100m;
SQL> alter database add standby logfile group 6
2 '/opt/oracle/oradata/orcl/redo_stb03.log' size 100m;
SQL> alter system set log_archive_dest_2 = 'service=standby lgwrreopen=60';
SQL> alter system set fal_server=standby;
SQL> alter system set fal_client=orcl;
三)方式二详细操作步骤:
(热备法)
由于方法二与方法一大部分相同,只有第2-2小点不同,这里只列出不同点:
登陆主库,热备表空间:
sqlplus ‘/as sysdba’
SQL> alter tablespacesystem begin backup;
SQL> !cp /opt/oracle/oradata/orcl/system01.dbf/opt/oracle/system01.dbf
若system表空间有第2个数据文件system02.dbf,那么还需要:
SQL> !cp /opt/oracle/oradata/orcl/system02.dbf/opt/oracle/system02.dbf
SQL> alter tablespacesystem end backup;
………………
其他的表空间都按上面方法进行热备
………………
SQL>alter database create standby controlfile as '/opt/oracle/control01.ctl';
SQL> exit
cp control01.ctl control02.ctl
cp control01.ctl control03.ctl
然后将备份出来的所有数据文件(注意不是原始数据文件)、控制文件等复制到备机上去
cd
scp control0*.ctl 192.168.0.2:/opt/oracle/oradata/orcl/
scp *.dbf 192.168.0.2: /opt/oracle/oradata/orcl/
cd /opt/oracle/oradata/orcl/archive/
scp *.dbf 192.168.0.2: /opt/oracle/oradata/orcl/archive/
后面的步骤就与方法一都相同了。
四)方法三详细操作步骤:
(RMAN复制法)
1. 利用RMAN备份主库
先确定可以运行rman命令:
rman target / nocatalog
Recovery Manager: Release 9.2.0.6.0- Production
Copyright(c) 1995, 2002, Oracle Corporation. Allrights reserved.
connectedto target database: ORC1 (DBID=1236509999)
usingtarget database controlfile instead of recovery catalog
RMAN>
出现上面所示,说明可以正常运行rman命令,否则,请检查环境变量,确保oracle安装目录被优先搜索。
如:PATH=$ORACLE_HOME/bin:$PATH
若在环境变量定义文件.bash_profile中的最后增加上面这一行,可以保证oracle的安装目录被优先搜索。
假如存放数据库备份集的路径是:/opt/back
编辑(vi)一个空白的文本文件,所在路径及文件名为/opt/oracle/rmanstb,将下面红色代码加入到rmanstb中去:
run{
allocatechannel dev1 type disk;
backup
incremental level 0
filesperset=1
format '/opt/back/dbbak_%s_%p_%t'
database;
backupformat '/opt/back/ctrlbak_%s_%p_%t' current controlfile for standby;
sql'alter system archive log current';
backupfilesperset=40
format '/opt/back/bakset/logbak_%s_%p_%t'
archivelog all delete input;
releasechannel dev1;
}
然后运行下面的命令开始对主库进行rman备份:
rman target / nocatalog cmdfile /opt/oracle/rmanstbmsglog /opt/oracle/rmanstb.log
此时可以另外打开一个登录窗口,运行tail –f /opt/oracle/rmanstb.log
检查备份过程是否正常,确保备份正确完成。
2. 备机环境准备
1)登陆备机后,从主机拷贝spfile文件到备机的相同路径下。
cd $ORACLE_HOME/dbs
scp 192.168.0.1:/opt/oracle/product/9ir2/dbs/spfileorcl.oraspfileorcl.ora
2)建立数据库密码文件。
cd $ORACLE_HOME/dbs
orapwd file=orapworcl password=xxxxxx entries=5
3)配置备机数据库的监听器。
cd $ORACLE_HOME/network/admin
scp 192.168.0.1:/opt/oracle/product/9ir2/network/admin/listener.oralistener.ora
scp 192.168.0.1:/opt/oracle/product/9ir2/network/admin/tnsnames.oratnsnames.ora
修改listener.ora中的“HOST =”后面的内容为备机的IP地址,然后启动监听
lsnrctl start
4)建立数据文件,归档日志,控制文件以及各种系统日志文件的目录
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
5)启动备库到nomount状态
sqlplus ‘/as sysdba’
SQL> startup nomount
SQL> alter system set service_names = standby;
SQL> alter system set fal_client=standby;
SQL> alter system set fal_server=orcl;
SQL> alter system set standby_file_management=auto;
6)将主机上的rman备份集拷贝到备机的相同路径下。
cd /opt/back/
scp 192.168.0.1:/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
SQL> conn sys/xxxxxx@standby as sysdba
若能够连接,证明与备机数据库通讯正常。
2)登陆备机,测试与主机数据库通讯是否通畅:
sqlplus /nolog
SQL> conn sys/xxxxxx@orcl as sysdba
若能够连接,证明与主库通讯正常。
4. 在备机上生成dataguard
1)登陆备机,将主库上的归档日志拷贝过来,放置路径要与主库一致。
cd /opt/oracle/oradata/orcl/archive/
scp 192.168.0.1:/opt/oracle/oradata/orcl/archive/*.dbf.
2)在备机上使用rman从备份集duplicate出一个dataguard
rman target sys/xxxxxx@orcl nocatalog auxiliary sys/xxxxxx@standby
RMAN>run
{
allocate auxiliary channel dup1 type disk;
allocate auxiliary channel dup2 type disk;
duplicate target database for standby nofilenamecheck dorecover;
}
此过程花费时间会比较长,请注意观察是否有错误产生,若遇到错误请检查是否将命令写错,直到成功完成为止。
5. 备机数据库的自动同步
1)分别在主机与备机的数据库中建立3组standby redo log。
SQL> alter database add standby logfile group 4
2 '/opt/oracle/oradata/orcl/redo_stb01.log' size 100m;
SQL> alter database add standby logfile group 5
2 '/opt/oracle/oradata/orcl/redo_stb02.log' size 100m;
SQL> alter database add standby logfile group 6
2 '/opt/oracle/oradata/orcl/redo_stb03.log' size 100m;
2)登陆备机,将数据库置于自动同步状态。
SQL> recover standby database;
检查所需要的归档日志是否是主库还未产生的,若不是,请从主机拷贝所需要的archivelog到备机,然后输入“auto”。
SQL> alter database recover managed standby database disconnectfrom session;
3)登陆主机,修改发送归档日志参数。
SQL> alter system set log_archive_dest_2 = 'service=standby lgwrreopen=60';
SQL> alter system set fal_server=standby;
SQL> alter system set fal_client=orcl;
附录:
1)如何启动备机数据库(Dataguard)
登陆备机,执行:
SQL> startup nomount;
SQL> alter database mount standby database;
SQL> alter database recover managed standby database disconnectfrom session;
2)检查主机与备机的数据库是否同步。
分别登陆主机与备机,都执行下面这条SQL:
SQL> select max(sequence#) from v$log_history;
若得到的数字相等,说明主机与备机的数据库已经同步。
3)测试主库的归档日志能否自动传送到备机。
登陆主库,进行手工归档:
SQL> alter system archive log current;
再次检查主机与备机的数据库是否同步,若依然保持同步,说明主库的归档日志能自动传送到备机。到此,Dataguard就已建立成功!!
但是别忘了,要定时清理备机上的归档日志,以免时间长了将磁盘撑爆,最好使用crontab来定时清理,可以参考如下的清理脚本:
find /opt/oracle/oradata/orcl/archive/*.dbf –cmin+60 –exec rm {} \;
4)激活备机数据库
当主机硬件或者操作系统故障导致数据库无法启动时,可激活Dataguard。
登陆备机,执行:
SQL> alter database recover managed standby database cancel;
SQL> alter database activate physical standby database skip standby logfile;
SQL> shutdown immediate;
SQL> startup
然后修改监听(更改listener.ora中HOST=为原主库的服务IP)并重启之后,原来的备机现在就开始扮演主机的角色了。
1. 冷备法
优点:操作比较简单。
缺点:操作过程需要停止主库服务。
简介:停止主库后,直接copy主机的所有数据文件,控制文件,归档日志文件,参数文件(spfile)到备机的相同路径下,再启动主、备库,然后修改相关配置文件完成主备自动同步。
2. 热备法
优点:无需停止主库服务。
缺点:操作比较复杂,操作过程对主库性能影响比较大。
简介:在主库开启状态下把主库的数据文件一个一个热备出来,然后连同控制文件,归档日志文件,参数文件(spfile)等一起复制到备机相同路径下,再启动备库并执行recover,然后修改相关配置文件完成主备自动同步。
3. RMAN复制法
优点:无需停止主库服务,操作过程对主库性能影响比较小。
缺点:操作比较复杂。
简介:在主库开启状态下运行rman,对主库进行全库备份,然后把备份集与参数文件(spfile)一起复制到备机,再启动备库到nomount状态后利用rman在备机上进行for standby的duplicate,然后修改相关配置文件完成主备自动同步。
无论上述何种方法,在开始之前,都必须先确认主库已正常运行,备机的操作系统,磁盘分区,oracle版本都必须与主机完全一致,备机上的oracle需要已安装好但不用建库。主、备机的网络都必须已联通,并能够在客户端使用putty或其他远程登陆工具通过ssh方式登陆(本文内所讲的“登陆”都是指:使用putty通过ssh方式以oracle账号登陆到主机或者备机的linux系统)。
本文假设主机ip地址是192.168.0.1,备机ip地址是192.168.0.2,oracle的数据文件,控制文件,联机日志文件的存放路径统一为:/opt/oracle/oradata/orcl/,归档日志的存放路径为:/opt/oracle/oradata/orcl/archive/,ORACLE_BASE目录为:/opt/oracle ,ORACLE_HOME目录为:/opt/oracle/product/9ir2,ORACLE_SID=orcl,分区/opt由于要存放oracle的所有文件与备份集,所以其容量要足够大。
确认主库是否开启了归档模式。
sqlplus‘/as sysdba’
SQL>archive log list
Database log mode Archive Mode
Automatic archival Enabled
若如上显示,则说明已开启了归档模式,那么从现在开始到最后dataguard建立完毕的整个过程,对主库都没有任何影响,即不会影响主库的正常运行。
如果与上面所示不同,则需要手工开启归档模式。
开启归档模式方法:
SQL>alter system set log_archive_start=true scope=spfile;
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;
二)方法一详细操作步骤:
(冷备法)
1. 为备库创建控制文件
登陆主库后,运行:
sqlplus ‘/assysdba’
SQL>alter database create standby controlfile as '/opt/oracle/control01.ctl';
SQL> exit
cp control01.ctl control02.ctl
cp control01.ctl control03.ctl
2. 复制主库文件到备机
1)先登陆备库,执行:
mkdir –p /opt/oracle/oradata/orcl
mkdir –p /opt/oracle/oradata/orc
4000
l/archive
mkdir –p /opt/oracle/admin/orcl/bdump
mkdir –p /opt/oracle/admin/orcl/cdump
mkdir –p /opt/oracle/admin/orcl/udump
2)然后登陆主库,运行:
sqlplus ‘/as sysdba’
SQL> shutdown immediate;
SQL> exit
然后复制文件到备机的相同目录。
cd
scp 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/
scp *.dbf 192.168.0.2: /opt/oracle/oradata/orcl/archive/
3. 配置备库
1)生成密码文件。
登陆备库后,执行:
cd $ORACLE_HOME/dbs
orapwd file=orapworcl password=xxxxxx entries=5
2)配置备机数据库的监听器。
登陆备库后,执行:
cd $ORACLE_HOME/network/admin
scp 192.168.0.1:/opt/oracle/product/9ir2/network/admin/listener.oralistener.ora
scp 192.168.0.1:/opt/oracle/product/9ir2/network/admin/tnsnames.oratnsnames.ora
修改listener.ora中的“HOST =”后面的内容为备机的IP地址,然后启动监听
lsnrctl start
4. 启动备库
登陆备库后,执行:
sqlplus ‘/as sysdba’
SQL> startupnomount
SQL> alter system set service_names = standby;
SQL> alter system set fal_client=standby;
SQL> alter system set fal_server=orcl;
SQL> alter system set standby_file_management=auto;
SQL> alter database mount standby database;
建立3组standby redo log:
SQL> alter database add standby logfile group 4
2 '/opt/oracle/oradata/orcl/redo_stb01.log' size 100m;
SQL> alter database add standby logfile group 5
2 '/opt/oracle/oradata/orcl/redo_stb02.log' size 100m;
SQL> alter database add standby logfile group 6
2 '/opt/oracle/oradata/orcl/redo_stb03.log' size 100m;
启动自动应用归档日志:
SQL> alter database recover managed standby database disconnect from session;
5. 启动主库
登陆主库后,执行:
sqlplus ‘/as sysdba’
SQL>startup
建立3组standby redo log:
SQL> alter database add standby logfile group 4
2 '/opt/oracle/oradata/orcl/redo_stb01.log' size 100m;
SQL> alter database add standby logfile group 5
2 '/opt/oracle/oradata/orcl/redo_stb02.log' size 100m;
SQL> alter database add standby logfile group 6
2 '/opt/oracle/oradata/orcl/redo_stb03.log' size 100m;
SQL> alter system set log_archive_dest_2 = 'service=standby lgwrreopen=60';
SQL> alter system set fal_server=standby;
SQL> alter system set fal_client=orcl;
三)方式二详细操作步骤:
(热备法)
由于方法二与方法一大部分相同,只有第2-2小点不同,这里只列出不同点:
登陆主库,热备表空间:
sqlplus ‘/as sysdba’
SQL> alter tablespacesystem begin backup;
SQL> !cp /opt/oracle/oradata/orcl/system01.dbf/opt/oracle/system01.dbf
若system表空间有第2个数据文件system02.dbf,那么还需要:
SQL> !cp /opt/oracle/oradata/orcl/system02.dbf/opt/oracle/system02.dbf
SQL> alter tablespacesystem end backup;
………………
其他的表空间都按上面方法进行热备
………………
SQL>alter database create standby controlfile as '/opt/oracle/control01.ctl';
SQL> exit
cp control01.ctl control02.ctl
cp control01.ctl control03.ctl
然后将备份出来的所有数据文件(注意不是原始数据文件)、控制文件等复制到备机上去
cd
scp control0*.ctl 192.168.0.2:/opt/oracle/oradata/orcl/
scp *.dbf 192.168.0.2: /opt/oracle/oradata/orcl/
cd /opt/oracle/oradata/orcl/archive/
scp *.dbf 192.168.0.2: /opt/oracle/oradata/orcl/archive/
后面的步骤就与方法一都相同了。
四)方法三详细操作步骤:
(RMAN复制法)
1. 利用RMAN备份主库
先确定可以运行rman命令:
rman target / nocatalog
Recovery Manager: Release 9.2.0.6.0- Production
Copyright(c) 1995, 2002, Oracle Corporation. Allrights reserved.
connectedto target database: ORC1 (DBID=1236509999)
usingtarget database controlfile instead of recovery catalog
RMAN>
出现上面所示,说明可以正常运行rman命令,否则,请检查环境变量,确保oracle安装目录被优先搜索。
如:PATH=$ORACLE_HOME/bin:$PATH
若在环境变量定义文件.bash_profile中的最后增加上面这一行,可以保证oracle的安装目录被优先搜索。
假如存放数据库备份集的路径是:/opt/back
编辑(vi)一个空白的文本文件,所在路径及文件名为/opt/oracle/rmanstb,将下面红色代码加入到rmanstb中去:
run{
allocatechannel dev1 type disk;
backup
incremental level 0
filesperset=1
format '/opt/back/dbbak_%s_%p_%t'
database;
backupformat '/opt/back/ctrlbak_%s_%p_%t' current controlfile for standby;
sql'alter system archive log current';
backupfilesperset=40
format '/opt/back/bakset/logbak_%s_%p_%t'
archivelog all delete input;
releasechannel dev1;
}
然后运行下面的命令开始对主库进行rman备份:
rman target / nocatalog cmdfile /opt/oracle/rmanstbmsglog /opt/oracle/rmanstb.log
此时可以另外打开一个登录窗口,运行tail –f /opt/oracle/rmanstb.log
检查备份过程是否正常,确保备份正确完成。
2. 备机环境准备
1)登陆备机后,从主机拷贝spfile文件到备机的相同路径下。
cd $ORACLE_HOME/dbs
scp 192.168.0.1:/opt/oracle/product/9ir2/dbs/spfileorcl.oraspfileorcl.ora
2)建立数据库密码文件。
cd $ORACLE_HOME/dbs
orapwd file=orapworcl password=xxxxxx entries=5
3)配置备机数据库的监听器。
cd $ORACLE_HOME/network/admin
scp 192.168.0.1:/opt/oracle/product/9ir2/network/admin/listener.oralistener.ora
scp 192.168.0.1:/opt/oracle/product/9ir2/network/admin/tnsnames.oratnsnames.ora
修改listener.ora中的“HOST =”后面的内容为备机的IP地址,然后启动监听
lsnrctl start
4)建立数据文件,归档日志,控制文件以及各种系统日志文件的目录
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
5)启动备库到nomount状态
sqlplus ‘/as sysdba’
SQL> startup nomount
SQL> alter system set service_names = standby;
SQL> alter system set fal_client=standby;
SQL> alter system set fal_server=orcl;
SQL> alter system set standby_file_management=auto;
6)将主机上的rman备份集拷贝到备机的相同路径下。
cd /opt/back/
scp 192.168.0.1:/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
SQL> conn sys/xxxxxx@standby as sysdba
若能够连接,证明与备机数据库通讯正常。
2)登陆备机,测试与主机数据库通讯是否通畅:
sqlplus /nolog
SQL> conn sys/xxxxxx@orcl as sysdba
若能够连接,证明与主库通讯正常。
4. 在备机上生成dataguard
1)登陆备机,将主库上的归档日志拷贝过来,放置路径要与主库一致。
cd /opt/oracle/oradata/orcl/archive/
scp 192.168.0.1:/opt/oracle/oradata/orcl/archive/*.dbf.
2)在备机上使用rman从备份集duplicate出一个dataguard
rman target sys/xxxxxx@orcl nocatalog auxiliary sys/xxxxxx@standby
RMAN>run
{
allocate auxiliary channel dup1 type disk;
allocate auxiliary channel dup2 type disk;
duplicate target database for standby nofilenamecheck dorecover;
}
此过程花费时间会比较长,请注意观察是否有错误产生,若遇到错误请检查是否将命令写错,直到成功完成为止。
5. 备机数据库的自动同步
1)分别在主机与备机的数据库中建立3组standby redo log。
SQL> alter database add standby logfile group 4
2 '/opt/oracle/oradata/orcl/redo_stb01.log' size 100m;
SQL> alter database add standby logfile group 5
2 '/opt/oracle/oradata/orcl/redo_stb02.log' size 100m;
SQL> alter database add standby logfile group 6
2 '/opt/oracle/oradata/orcl/redo_stb03.log' size 100m;
2)登陆备机,将数据库置于自动同步状态。
SQL> recover standby database;
检查所需要的归档日志是否是主库还未产生的,若不是,请从主机拷贝所需要的archivelog到备机,然后输入“auto”。
SQL> alter database recover managed standby database disconnectfrom session;
3)登陆主机,修改发送归档日志参数。
SQL> alter system set log_archive_dest_2 = 'service=standby lgwrreopen=60';
SQL> alter system set fal_server=standby;
SQL> alter system set fal_client=orcl;
附录:
1)如何启动备机数据库(Dataguard)
登陆备机,执行:
SQL> startup nomount;
SQL> alter database mount standby database;
SQL> alter database recover managed standby database disconnectfrom session;
2)检查主机与备机的数据库是否同步。
分别登陆主机与备机,都执行下面这条SQL:
SQL> select max(sequence#) from v$log_history;
若得到的数字相等,说明主机与备机的数据库已经同步。
3)测试主库的归档日志能否自动传送到备机。
登陆主库,进行手工归档:
SQL> alter system archive log current;
再次检查主机与备机的数据库是否同步,若依然保持同步,说明主库的归档日志能自动传送到备机。到此,Dataguard就已建立成功!!
但是别忘了,要定时清理备机上的归档日志,以免时间长了将磁盘撑爆,最好使用crontab来定时清理,可以参考如下的清理脚本:
find /opt/oracle/oradata/orcl/archive/*.dbf –cmin+60 –exec rm {} \;
4)激活备机数据库
当主机硬件或者操作系统故障导致数据库无法启动时,可激活Dataguard。
登陆备机,执行:
SQL> alter database recover managed standby database cancel;
SQL> alter database activate physical standby database skip standby logfile;
SQL> shutdown immediate;
SQL> startup
然后修改监听(更改listener.ora中HOST=为原主库的服务IP)并重启之后,原来的备机现在就开始扮演主机的角色了。
相关文章推荐
- Oracle Dataguard的3种创建方法
- oracle 11g dataguard创建的简单方法
- Oracle 数据库11g版本dataguard创建的简单方法
- Oracle 创建自增字段的方法—使用序列方法(2)
- ORACLE自增字段创建方法
- oracle中dblink的创建方法
- ORACLE自增字段创建方法
- Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍
- Oracle 创建用户及数据表的方法
- Oracle DB Link创建方法
- tomcat与oracle的3种连接方法
- 创建ORACLE数据库方法--摘自于ORACLE8使用指南(David Austin 著)
- Oracle 创建用户及数据表的方法
- 【Vegas原创】Oracle Dblink(链接服务器)创建(Oracle对Oracle的链接)以及SQL对Oracle的互访方法
- 利用PL/SQL Developer工具在Oracle库中创建同名词Synonym的方法
- oracle创建数据库的3种方式
- Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍
- Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍
- oracle 中 dblink 的创建方法
- oracle 下 创建数据库和用户界面操作 和sql 语句 下的创建方法