DG
配置
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
DATAGUARD
创建主要是配置
primary
数据库和
standby
数据库的相关属性并进行数据库迁移。下面为具体创建步骤:
实验环境
:TEST (<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />10.1.1.231)
为主库
STANDBY (10.1.1.203)
为备库
primary
数据库配置
1、确认主库处于归档模式,如果为非归档则必须改为归档模式
SQL> archive log list;
![](https://i-blog.csdnimg.cn/blog_migrate/e8ab38f3417c5a91d775f78f8c1ee450.gif)
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
2、将primary 数据库置为FORCE LOGGING 模式
SQL> alter database force logging;
select FORCE_LOGGING from v$database
![](https://i-blog.csdnimg.cn/blog_migrate/b998969caa3376d64c5cc90758724556.gif)
3、配置netmgr测试两个数据库可以互相连通
测试:在主库TEST上
![](https://i-blog.csdnimg.cn/blog_migrate/f22eb160bee114f802d5cb76d5faca20.gif)
在备库STANDBY上
![](https://i-blog.csdnimg.cn/blog_migrate/f22eb160bee114f802d5cb76d5faca20.gif)
在备库STANDBY上
4、创建TEST 数据库初始化参数文件便于参数修改
SQL> create pfile= ‘/home/oracle/initdg.ora’ from spfile;
SQL> create pfile= ‘/home/oracle/initdg.ora’ from spfile;
修改生成的initdg.ora参数文件
![](https://i-blog.csdnimg.cn/blog_migrate/4c4c0cbf8fedc916f0da771a1f3bec42.gif)
二、 standby 数据库配置
SQL> create pfile=‘/home/oracle/initdg.ora’ from spfile;
修改生成的initdg.ora参数文件
![](https://i-blog.csdnimg.cn/blog_migrate/c2eef88d67d64f93c6b2b81c2e9cee49.gif)
三、迁移
test
数据库的数据文件、控制文件到
standby
1、启动standby到nomount状态
![](https://i-blog.csdnimg.cn/blog_migrate/18560fa71410eec1b9b57fcb90a14077.gif)
2、主库上利用RMAN制作test数据库备份(所有RMAN操作都在主数据库上执行)
RMAN > connect target /
RMAN >backup full database format=‘/home/oracle/backup/%U' include current controlfile for standby;
![](https://i-blog.csdnimg.cn/blog_migrate/3b50d8e057facc57f4745b9c52d51878.gif)
-将rman的备份集拷贝至standby库相同的路径,并在主库连接,不要断开上面的连接,如果断开,那么重新连接主库
在备库上 mkdir –p /home/oracle/backup 建立与主库相同目录
在主库上拷贝备份集
scp /home/oracle/backup/ 25kqa6gb_1_1 oracle@10.1.1.203:/home/oracle/backup
scp /home/oracle/backup/ 24kqa68u_1_1 oracle@10.1.1.203:/home/oracle/backup
scp /home/oracle/backup/ 25kqa6gb_1_1 oracle@10.1.1.203:/home/oracle/backup
scp /home/oracle/backup/ 24kqa68u_1_1 oracle@10.1.1.203:/home/oracle/backup
Rman 备份的控制文件也要拷到相应的目录
RMAN > connect auxiliary sys/sys@standby
![](https://i-blog.csdnimg.cn/blog_migrate/454e01b16c7ad547cca23ec159554187.gif)
复制standby数据库,接着上面的连接在主库上执行
RMAN > duplicate target database for standby nofilenamecheck; 正常运行无错误后直接执行
说明:此命令结束后从库直接启动到mount
![](https://i-blog.csdnimg.cn/blog_migrate/d30f30b956c6e8b399fa1e9af8b4c217.gif)
修改standby数据库自动恢复状态
alter database recover managed standby database disconnect from session;
![](https://i-blog.csdnimg.cn/blog_migrate/4fb49ca24c54695934c596c71a5414b8.gif)
四、确认
DATAGUARD
环境状态是否正常
主库操作
:
select process from v$managed_standby;
![](https://i-blog.csdnimg.cn/blog_migrate/8c50aa7d52d25353a27a0511f8f81c25.gif)
-确认主库没有lns进程(日志网络服务进程-负责把主库归档日志传输到备库)
如果无此进程则执行下面命令
alter system set log_archive_dest_2='SERVICE=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby';
alter system set log_archive_dest_state_2=ENABLE;
alter system switch logfile;
![](https://i-blog.csdnimg.cn/blog_migrate/9fc160be1c7f85e6c6501b8d014020da.gif)
继续确认有无lns进程,
![](https://i-blog.csdnimg.cn/blog_migrate/054b62734c379248f62c7969162206a1.gif)
如果还没有启动则查看相关错误信息
select error from v$archive_dest; 根据具体ORACLE错误码查找错误原因.
备库操作:
SQL> select process from v$managed_standby;
RFS --远程文件服务-接收由主库lns进程传送过来的日志
MRP0 --介质恢复进程-同步主库日志数据到从库
注意:如果没有RFS进程,则查看主库lns进程是否正常.如果没有MRP进程则执行
alter database recover managed standby database disconnect from session;
五、
READ ONLY
模式打开物理
STANDBY
1、mount状态下首先取消redo应用:
SQL> alter database recover managed standby database cancel;
然后再打开数据库
SQL> alter database open ;
提示:open 的时候不需要附加read only 子句,oracle 会根据控制文件判断是否是物理
Standby,从而自动启动到read only 模式,直接startup也是同理。
standby数据库只读模式打开后不能再应用日志进行恢复,与primary存在数据延迟,在一定条件下可作为报表服务器使用减小主库压力。
2、从open 状态切回redo应用状态(mount状态),并不需要shutdown,直接启用redo应用即可
SQL> alter database recover managed standby database disconnect from session;
使用下面查询查看修改后的状态是否正确
SQL> select status from v$instance;
六、验证
在切换后的主库上切换日志并查询主备库的归档日志最大序列号是否同时变化,
如果是则切换成功否则检查错误。
主库执行 Alter system switch logfile;
主备库执行下面语句查看日志最大序列号是否同时改变或查看归档日志目录文件数是否同步增加
select max(sequence#) from v$archived_log;
主库:
![](https://i-blog.csdnimg.cn/blog_migrate/3995db681d5164a625d9ec7d35f8ae18.gif)
备库:日志切换前后分别查看
![](https://i-blog.csdnimg.cn/blog_migrate/ec3332619386bccdb9fd91ded118ba92.gif)
转载于:https://blog.51cto.com/wanglq/209570