Oracle 11g DG/ADG 搭建配置(逻辑备用数据库)

说明:本文为面向Oracle Data Guard初学者的搭建配置指导手册
标签:Oracle DG、Data Guard、Oracle ADG、Active Data Guard、搭建DG
注意:文中删去了不需要的多余参数,让初学者一目了然一学就会
版本区别:DG和ADG的搭建方式是一样的,同样可以参考本文
系统安装:对于Oracle 11gR2的安装本文不再指导,用户可以自行搜索相关文章
温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化


★ 相关文章
※ what is DG(Data Guard)
※ what is ADG(Active Data Guard)
※ 搭建DG(备用数据库类型:物理备用数据库)(Physical Standby Database)
※ 搭建DG(备用数据库类型:逻辑备用数据库)(Logical Standby Database)(本文)


★ 体系结构(逻辑备用数据库)


★ 搭建步骤
※ 相关搭建步骤(物理备用数据库)
    1.Create a Backup Copy of the Primary Database Datafiles
    2.Create a Control File for the Standby Database
    3.Create a Parameter File for the Standby Database
    4.Copy Files from the Primary System to the Standby System
    5.Set Up the Environment to Support the Standby Database
    6.Start the Physical Standby Database
    7.Verify the Physical Standby Database Is Performing Properly
※ 相关搭建步骤(逻辑备用数据库)(本文)
    1.Create a Physical Standby Database
    2.Stop Redo Apply on the Physical Standby Database
    3.Prepare the Primary Database to Support a Logical Standby Database
    4.Transition to a Logical Standby Database
    5.Open the Logical Standby Database
    6.Verify the Logical Standby Database Is Performing Properly


★ 实验环境
※ 主库
·IP:1.1.1.7
·DB_UNIQUE_NAME:orcl
·DB_NAME:orcl
·TNS:TNSbeiku
※ 备库
·IP:1.1.1.8
·DB_UNIQUE_NAME:bei
·DB_NAME:orcl
·TNS:TNSzhuku


★ 详情(逻辑备库)
工作方式:DG中的逻辑备用数据库将归档日志通过LOG-MONITOR将redo重新再现为SQL,然后再插入到逻辑备用数据库中

※ (主)在主数据库中查找没有唯一逻辑标识符的表。
SELECT OWNER, TABLE_NAME
  FROM DBA_LOGSTDBY_NOT_UNIQUE
 WHERE (OWNER, TABLE_NAME) NOT IN
       (SELECT DISTINCT OWNER, TABLE_NAME FROM DBA_LOGSTDBY_UNSUPPORTED)
   AND BAD_COLUMN = 'Y';

※ (主)添加禁用的主键RELY约束。
ALTER TABLE xxx ADD PRIMARY KEY (xxx) RELY DISABLE;

※ 创建物理备用数据库
(略)(详情参考博主相关文章)

※ (备)停止物理备库恢复
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

※ (主)配置归档路径
mkdir -p /home/oracle/arch2/
alter system set LOG_ARCHIVE_DEST_1= 'LOCATION=/home/oracle/arch/ VALID_FOR=(online_logfiles,all_roles) DB_UNIQUE_NAME=orcl';
alter system set LOG_ARCHIVE_DEST_2= 'SERVICE=TNSbeiku ASYNC VALID_FOR=(online_logfiles,primary_role) db_unique_name=bei';
alter system set LOG_ARCHIVE_DEST_3= 'LOCATION=/home/oracle/arch2/ VALID_FOR=(standby_logfiles,standby_role) DB_UNIQUE_NAME=orcl';
alter system set log_archive_dest_state_1=enable;
alter system set log_archive_dest_state_2=enable;
alter system set log_archive_dest_state_3=enable;

※ (主)在重做数据中构建字典
EXECUTE DBMS_LOGSTDBY.BUILD;

※ (备)转换为逻辑备用数据库
startup mount
ALTER DATABASE RECOVER TO LOGICAL STANDBY db_name;
--保留DBID和DB_NAME的命令:ALTER DATABASE RECOVER TO LOGICAL STANDBY KEEP IDENTITY;

※ (备)配置归档路径
mkdir -p /home/oracle/arch2/
alter system set LOG_ARCHIVE_DEST_1= 'LOCATION=/home/oracle/arch/ VALID_FOR=(online_logfiles,all_roles) DB_UNIQUE_NAME=bei';
alter system set LOG_ARCHIVE_DEST_2= 'SERVICE=TNSzhuku ASYNC VALID_FOR=(online_logfiles,primary_role) db_unique_name=orcl';
alter system set LOG_ARCHIVE_DEST_3= 'LOCATION=/home/oracle/arch2/ VALID_FOR=(standby_logfiles,standby_role) DB_UNIQUE_NAME=bei';
alter system set log_archive_dest_state_1=enable;
alter system set log_archive_dest_state_2=enable;
alter system set log_archive_dest_state_3=enable;

※ (备)打开逻辑备用数据库
shut immediate
startup mount
alter database open resetlogs;
alter database start logical standby apply immediate;

※ (主)查看并调试DG状态
alter system switch logfile;
select sequence#,applied from v$archived_log order by 2,1;
select process from v$managed_standby;
select error,dest_id from v$archive_dest where dest_id in (1,2,3);

※ (备)查看并调试DG状态
select process from v$managed_standby;
select error,dest_id from v$archive_dest where dest_id in (1,2,3);
select database_role from v$database; 
select status from v$instance;

※ (主)测试
select sal from scott.emp;
update scott.emp set sal=sal+1;
commit;

※ (备)测试
select sal from scott.emp;


※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~

over

猜你喜欢

转载自blog.csdn.net/zzt_2009/article/details/107890699