总结搭建Oracle11g DG踩的坑

此次的操作环境是Oracle11g 单实例,os为Linux,采用duplicate在线创建物理备库

primary上设置相关参数

ALTER SYSTEM SET LOG_ARCHIVE_CONFIG=‘DG_CONFIG=(ora11g,stdb)‘;alter system set log_archive_dest_2=‘SERVICE=DB_DG2 lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=stdb‘;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET FAL_SERVER=ORA11G02;
ALTER SYSTEM SET FAL_CLIENT=ORA11G01;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
alter system set LOG_ARCHIVE_DEST_1=
 ‘LOCATION=/data0/u01/app/oracle/arch
  VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
  DB_UNIQUE_NAME=ora11g‘ scope=spfile;
alter system set log_archive_format=‘%t_%s_%r.arch‘ scope=spfile;   

添加standby redo log

alter database add standby logfile thread 1 group 4(‘/data0/u01/app/oracle/oradata/ora11g/standby_redo04.log‘) size 50m;
alter database add standby logfile thread 1 group 5(‘/data0/u01/app/oracle/oradata/ora11g/standby_redo05.log‘) size 50m;
alter database add standby logfile thread 1 group 6(‘/data0/u01/app/oracle/oradata/ora11g/standby_redo06.log‘) size 50m;
alter database add standby logfile thread 1 group 7(‘/data0/u01/app/oracle/oradata/ora11g/standby_redo07.log‘) size 50m; 

备库安装完软件配置好环境变量

然后是配置监听文件listener.ora和tnsnames.ora

创建备库的命令为

DUPLICATE TARGET DATABASE
  FOR STANDBY
  FROM ACTIVE DATABASE
  DORECOVER
  SPFILE
    SET "db_unique_name"="jjdb"
    SET LOG_ARCHIVE_DEST_2="service=ora11g02 ASYNC REGISTER
     VALID_FOR=(online_logfile,primary_role)"
    SET FAL_CLIENT="ora11g02"
    SET FAL_SERVER="ora11g01"
  NOFILENAMECHECK;

针对以上过程,rman会自动拷贝server端的参数文件到standby端,然后启动到nomount状态,还原控制文件,并拷贝所有的数据文件、临时表空间和归档日志到备库。然后进行recovery

在将备库启动到nomount状态是使用pfile即:startup nomount pfile=initorcl11g.ora

否则由于spfile被占用而报:RMAN-05537: DUPLICATE without TARGET connection when auxiliary instance is started with spfile cannot use SPFILE clause
然后在primary端(standby端均可)登录rman

 rman target sys/oracle@ORA11G01 auxiliary sys/oracle@ORA11G02   

在创建备库期间,变更完参数后,从库会重启,报错:

RMAN-04006: error from auxiliary database: ORA-01017: invalid username/password; logon denied

首先确定口令文件是从主库端拷贝过来的,文件名字以及用户名和密码都是正确的

使用tnsping检查网络也都互通

最后查看从库监听状态,只有一个orcl11g实例(对应$ORACLE_SID)

但是linstener.ora 中的SID_NAME指定的非$ORACLE_SID

改正监听文件后开始创建备库

创建完成后查看备机的数据库状态

SQL> SELECT DATABASE_ROLE,OPEN_MODE,PROTECTION_MODE FROM V$DATABASE;

DATABASE_ROLE    OPEN_MODE            PROTECTION_MODE
---------------- -------------------- --------------------
PHYSICAL STANDBY MOUNTED              MAXIMUM PERFORMANCE# standbySQL> select GROUP#,STATUS,TYPE,MEMBER from v$logfile;

    GROUP# STATUS  TYPE    MEMBER---------- ------- ------- --------------------------------------------------------------------------------         3         ONLINE  /data0/u01/app/oracle/fast_recovery_area/STDB/onlinelog/o1_mf_3_d8byvvoq_.log         2         ONLINE  /data0/u01/app/oracle/fast_recovery_area/STDB/onlinelog/o1_mf_2_d8byvvn0_.log         1         ONLINE  /data0/u01/app/oracle/fast_recovery_area/STDB/onlinelog/o1_mf_1_d8byvvl6_.log

此时迷惑我的问题发生了,rman是不会拷贝redo日志文件的,那么此时查看到的redo日志文件是控制文件记录的,但是主上的redo log路径并不是这个,可视主机开启了闪回区,所以redo log在闪回区也有存在

所以可以推断控制文件记录的redo log的路径是: 闪回区路径/db_uniq_name/onlinelog,实际上在备库上并不存在这些redo log file

备库创建redo log和standby redo log

开始启动备库到实时应用日志

SQL> ALTER DATABASE OPEN READ ONLY;

Database altered.

SQL> SELECT DATABASE_ROLE,OPEN_MODE,PROTECTION_MODE FROM V$DATABASE;

DATABASE_ROLE    OPEN_MODE            PROTECTION_MODE
---------------- -------------------- --------------------
PHYSICAL STANDBY READ ONLY            MAXIMUM PERFORMANCE

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

Database altered.

SQL> SELECT DATABASE_ROLE,OPEN_MODE,PROTECTION_MODE FROM V$DATABASE;

DATABASE_ROLE    OPEN_MODE            PROTECTION_MODE
---------------- -------------------- --------------------
PHYSICAL STANDBY READ ONLY WITH APPLY MAXIMUM PERFORMANCE

备库上查看 archive log list

归档路径状态异常,查看使用的是LOG_ARCHIVE_DEST_3

SQL>  col DEST_NAME format a30
SQL> col DESTINATION format a30
SQL> SELECT dest_name, status, destination FROM v$archive_dest;

DEST_NAME                      STATUS    DESTINATION
------------------------------ --------- ------------------------------
LOG_ARCHIVE_DEST_1             BAD PARAM /data0/u01/app/oracle/arch
LOG_ARCHIVE_DEST_2             BAD PARAM ora11g02
LOG_ARCHIVE_DEST_3             VALID     USE_DB_RECOVERY_FILE_DEST

官方文档上对状态为BAD PARAM的解释为 A parameter error occurred; refer to error data.

select dest_id,status,error from v$archive_dest ;  # 未发现错误信息
查看参数发现是db_uniq_name设置错误
更正后重启数据库后
路径1和2的状态均为valid
但是archive log list看到的仍旧是
Archive destination            USE_DB_RECOVERY_FILE_DEST
官方文档解释:If you configure a Fast Recovery Area (by setting the DB_RECOVERY_FILE_DEST and DB_RECOVERY_FILE_DEST_SIZE parameters) and do not specify any local archive destinations, the database automatically selects the Fast Recovery Area as a local archive destination and sets LOG_ARCHIVE_DEST_1 to USE_DB_RECOVERY_FILE_DEST.
但是查看发现闪回区路径下和LOG_ARCHIVE_DEST_1下均产生归档日志文件

至此搭建完毕

时间: 2024-11-05 12:08:56

总结搭建Oracle11g DG踩的坑的相关文章

linux下oracle11G DG搭建(四):后续验证操作

环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本 RedHat Enterprise5.5.Oracle 11g 11.2.0.1 RedHat Enterprise5.5.Oracle 11g 11.2.0.1 主库下 $ tail -f /u01/app/oracle/diag/rdbms/bjdb/TestDB12/trace/alert_TestDB12.log 对于DG,一定要打开告警日志. 备库下 $ tail -f/u01/app/oracle/diag/rdbms

linux下oracle11G DG搭建(三):围绕备库搭建操作

环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本 RedHat Enterprise5.5.Oracle 11g 11.2.0.1 RedHat Enterprise5.5.Oracle 11g 11.2.0.1 三.围绕备库操作: 1.备库-修改初始化参数文件 $cd$ORACLE_HOME/dbs $df -h $vi initshdb.ora 修改简要说明: *.audit_file_dest='/u01/app/oracle/admin/sh/adump' //审计文件存

linux下oracle11G DG搭建(二):围绕主库搭建操作

环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本 RedHat Enterprise5.5.Oracle 11g 11.2.0.1 RedHat Enterprise5.5.Oracle 11g 11.2.0.1 二.围绕主库操作: 1.主库-修改初始化参数 SQL> show parameter spfile; NAME                 TYPE        VALUE ------------------------------------ --------

linux下oracle11G DG搭建(一):环境准备

linux下oracle11G  DG搭建(一):环境准备 环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本 RedHat Enterprise5.5.Oracle 11g 11.2.0.1 RedHat Enterprise5.5.Oracle 11g 11.2.0.1 一.环境准备: 1.vbox 导入虚拟机镜像(已安装oracle.已建库) 1.导入虚拟机(主库-北京,以下简称bj) 2.导入虚拟机(备库-上海,以下简称sh) 3.主库.备库分别添加一块磁盘 为主库和备库分

Asp.Net Core中使用Swagger,你不得不踩的坑

很久不来写blog了,换了新工作后很累,很忙.每天常态化加班到21点,偶尔还会到凌晨,加班很累,但这段时间,也确实学到了不少知识,今天这篇文章和大家分享一下:Asp.Net Core中使用Swagger,你不得不踩的坑. 这篇文章着重讲几点: swagger 跨层注释问题 swagger Get请求传多个参数的问题 swagger Enum 注释问题 swagger api文档版本控制 第一步:搭建一个webapi项目或者mvc项目,引入swagger nuget 我创建项目,习惯性的先创建一个

初用react容易踩的坑

此文章同步连接: https://github.com/p2227/p2227.github.io/issues/3 # 初用react容易踩的坑 ## 自定义组件忘记大写第一个字母 ```javascript var myComp = React.createClass({ render: function() { return <div>Hello world</div>; } }); ReactDOM.render(<myComp />, mountNode);

Ubuntu中安装FTP 服务器自己踩得坑

12点多了,擦!做个码农真不容易呀! 系统:Ubuntu16.04 安装:FTP 步骤: 1.不管有没有一上来我先卸载: sudo apt-get purge vsftpd 2.再安装:sudo apt-get install vsftpd 3.创建ftp用户: 创建用户目录 sudo mkdir /home/uftp 创建用户 sudo useradd -d /home/uftp -s /bin/bash uftp 修改密码 sudo passwd uftp#这里会提示你输入二次密码 4配置v

阿里云centos7.2 搭建 laravel 框架走过的坑

centos7.2 搭建 laravel框架走过的坑 前言 公司正在处于发展阶段最近开发的伙伴和运维的伙伴一直在忙碌着 开发人员一直在写laravel架构的代码以及新项目的拓展,时间很赶所以作为linux运维的我也不能怠慢. 首先搭建lnmp架构 nginx php 我选择的yum,wget的安装方法 mysql选择编译安装 因为我只认为MySQL我还有编译安装的需要(熟悉熟悉). 准备 : 1.PHP 7版本  2.openssl(yum安装)3.pdo扩展 mysql 4.安装compose

使用CCNode作为容器容易踩的坑

Cocos2dx中CCNode经常作为一个父容器,里面装一些UI控件,最后组成一个复杂的自定义的UI控件,但是在使用别人的自定义控件和自己写自定义问题的时候会踩一些坑. 首先拿到一个自定义的UI控件一定要明确他的position是在控件的什么位置,即锚点位置,这样才能知道改如何取设置position. 其次知道父容器区域是不是全包含子容器的,因为ccnode里面的子节点的范围是可以超出你设定的ccnode的区域的.原因在于ccnode可以没有区域,这个跟winform桌面编程的Panel有差别,