rman 的部署DG的思路

来源:互联网 发布:app端口是干什么用的 编辑:程序博客网 时间:2024/06/14 08:13
rman 的部署DG的思路和文档主archive log list;alter database force logging;ho mkdir /..../oradata/orcl/arch alter system set db_unique_name=pri scope=spfile;同时查看主上的环境例如 ip、 uname -r 、id oracle 、版本 and so onshow parameter db_unique_namestartup forceshow parameter db_unique_namealter system set log_archive_config='dg_config=(pri,std)';alter system set log_archive_dest_1='location=/..../oradata/orcl/arch/ valid_for=(all_logfile,all_roles) db_unique_name=pri'alter system set log_archive_dest_2='service=std lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=std';show parameter log_archive_formatalter system set fal_client=pri;alter system set fal_server=std;alter syetem set standby_filr_management=auto;select max(group#) from v$logfile;SQL> alter database add standby logfile group 5 '/home/oracle/db120/sredo01.log'size 50m;Database altered.SQL> alter database add standby logfile group 6 '/home/oracle/db120/sredo02.log'size 50m;Database altered.SQL> alter database add standby logfile group 7 '/home/oracle/db120/sredo03.log'size 50m;Database altered.SQL> alter database add standby logfile group 8 '/home/oracle/db120/sredo04.log'size 50m;Database altered.create pfile from spfile;shutdown immediatestartup去配置网络监听vi listener.ora保证有  )     (SID_DESC =      (SID_NAME = pri)      (ORACLE_HOME = /u01/oracle/product/10.2.0)      (service_name = pri)    )  )tnsnames.ora上  pri =     (DESCRIPTION =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.119)(PORT = 1521))      (CONNECT_DATA =      ( SERVER = DEDICATED)       ( SERVICE_NAME = pri)       )      )std =  (DESCRIPTION =      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.221)(PORT = 1521))      (CONNECT_DATA =      ( SERVER = DEDICATED)       ( SERVICE_NAME = std)       )      )lsnctl starttnsping  orcltnsping pri 下 是ok 了这个时候网络配置OK了rman target /备份数据文件backup full format=‘/bkdg/orcl%U‘ database include current controlfile for standby;这个备份加上备库上的控制文件(数据文件+ 备库的控制文件)exitalter system archive log current; 给当前数据库归档 目的为了安全root 上执行 vi /etc/exports/opt/oracle/bkdg *(ro)/etc/init.d/nfs start这个地方共享出去 另一台可以访问create pfile='/..../oracle/bkdg/initorcl.ora' from spfile;exitcp /..../密码文件 放到/..../oracle/bkdg/  这个时候主上的全部做完了注意:这个密码文件是这个实例的密码文件 拷贝到创建的这个/bkdg的目录里。以上是数据库都是open状态上做的备库上安装主一致的数据库版本 ip  id oraclecat ~oracle/.bash_profile检查是不是一致配置网络监听保证有主上的那段内容tnsnames.ora这个时候和主的是一致的lsnrctl  starttnsping orcl   注:orcl这个是库名称tnsping pritnsping std同时在备库上查看我们挂载的/bkdgroot上showmount -e 192.168.1.119mkdir /.../oracle/bkdg         同时在备库上创建这个目录mount 192.168.1.119:/.../oracle/bkdg/  /.../oracle/bkdgsu - oracle这个时候要把挂载在上面的两个文件cp到..../dbs中   这个时候要把主上面共享的密码文件,文本参数文件同时拷贝到v$ORACLE_HOME/dbs目录下面vi ini..ora 文件  全部要对换pri和std全部对换ls orapworclexport ORACLE_SID=orclsqlplus /nologconn / as sysdbastartup nomountho mkdir /...admin/orcl/{a,b,c,u,dp}dump -pstartup nomountho mkdir /..../oradata/orcl/arch -pstartup nomount这个时候才能使用rman来备库的恢复rman target sys/a@pri auxiliary sys/aduplicate target database for standby nofilenamecheck;rman 如果要使用挂来的时候就会报错了 (ora-27054)解决挂载ora-27054 在主上mount 192.168.1.119:/.../oracle/bkdg/  /.../oracle/bkdg -o rw,bg,hard,intr,timeo=600,wsize=32768,rsize=32678,tcp  mount (查看mount的情况)备库上duplicate target database for standby nofilenamecheck;exitsqlplus / as sysdbaselect group# ,member from v$logfile;生成备库的日志组ho ls /..../oracle/oradata/orcl/rman 不能恢复日志文件所以:alter database drop standby logfile group 5; 对应的日志文件不存在要删除只要是standby全部drop掉alter database drop standby logfile group 6;alter database drop standby logfile group 7;alter database drop standby logfile group 8;主上查看select group# ,member,type from v$logfile; 备库SQL> alter database add standby logfile group 5 '/home/oracle/db120/sredo01.log'size 50m;Database altered.SQL> alter database add standby logfile group 6 '/home/oracle/db120/sredo02.log'size 50m;Database altered.SQL> alter database add standby logfile group 7 '/home/oracle/db120/sredo03.log'size 50m;Database altered.SQL> alter database add standby logfile group 8 '/home/oracle/db120/sredo04.log'size 50m;Database altered.select thread# from v$log; 查询线程号 线程号的个数加1ho ls /..../oradata/orcl/ 查看这个目录下的文件把数据库进行恢复alter database recover managed standby database disconnect from session;这个时候打开告警日志tail -f /...../alert_orcl.log主库上切换日志alter system switch logfile;/经过去看从上面的日志发现这个时候没有切换过去这个时候就要到备库上做健康检查select dest_name,status,error from v$archive_dest; 发现并没有出现error那么我们在来切换一次日志alter system switch logfile;select dest_name,status,error from v$archive_dest;这个时候看备库上看 已经过去了如果没有办法了就去改参数show parameter log_archive_dest_2的这个参数 alter system set log_archive_dest_2='service=std lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=std';这个时候要做主从切换如果不切不算成功的 主要解决两个问题 1、解决没有redolog 文件 2、测试下看看能不能OK的问题主库:alter database commit to switchover to physical standby with session shutdown;shutdown immediatestartup nomountalter database  mount standby database;从库上:alter database commit to switchover to primary with session shutdown;shutdown immediatestartup这个时候备库直接变成主库了切下日志到原来的主库上执行alter database recover managed standby database disconnect from session;打开告警日志 tail -f .....到原来的主库上看看能不能传过去。原来的从库上切日志alter system switch logfile;这个时候还要切回去 原来的主还是主 原来的从还是从在原来的从上alter database commit to switchover to primary with session shutdown;shutdown immediatestartup nomountalter database  mount standby database;原来的主上:alter database commit to switchover to primary with session shutdown;shutdown immediatestartup这个时候就实现了主还是原来的主 从还是原来的从注意切换的时候要注意根据数据量的多少来确定的 时间上要注意不要终止。从库上:alter database recover managed standby database disconnect from session;打开告警日志 tail -f .....到原来的主库上看看能不能传过去。主上切换日志:alter system switch logfile;这个时候用rman 的搭建就OK了。转成逻辑的DG备库上退出日志的应用:alter database recover managed standby database cancel;先退出日志的应用在主上exec dbms_logstdby.buildalter system  archive log current;归档保证安全的(可以省掉)在从库上 alter database recover to logical standby orcl;  orcl 这个是数据库的库名 这个转的时候出现了错误要转换到spfile:  create pfile from pfile;shutdown immediatealter database recover to logical standby orcl;startup mountalter database open resetlogs;alter database start logical standby apply immediate;在主上创建表 来测试能不能同步create table st(id number primary key, name varchar2(20));insert into st valued(1,'1');insert into st valued(2,'2');commit;在备库上查询select * from tab;select * from st;

原创粉丝点击