搭建前环境准备

1.查看主库的oracle的uid和gid并在备库创建用户

# 主库查看oracle
$ id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba)
# 备库创建oracle用户,注意uid和gid
# groupadd -g 54322 dba
# groupadd -g 54321 oinstall
# useradd -u 54321 oracle -g oinstall -G dba

2.备库oracle软体安装

配置yum,设置内核参数,设置oracle环境变量,修改oracle_home、oracle_base目录的权限,安装oracle软体

3.主库生成pfile并传至备库

$ sqlplus / as sysdba
create pfile from spfile;
$ scp /oracle/11204/dbs/initdg01.ora xxx.xxx.xxx.xxx:/oracle/11204/dbs/

4.备库创建参数文件中的目录

*.audit_file_dest='/oracle/admin/dg01/adump'
*.control_files='/oradata01/dg01/control01.ctl','/oradata01/dg01/control02.ctl'
*.db_recovery_file_dest='/oracle/fast_recovery_area'

5.全备主库

$ rman target /
backup database to destination '/oradata01/backup';
$ scp -r /oradata01/backup xxx.xxx.xxx.xxx:/oradata01/

6.备库恢复控制文件

$ cd /oradata01/backup
$ rman target /
startup
restore standby controlfile from '/oradata01/backup/DG01/backupset/2019_08_13/o1_mf_ncsnf_TAG20190813T115827_go4fc84x_.bkp';

如果是10g,从主库copy过来一个controlfile,之后用命令穿件

$ scp /oradata01/dg01/control01.ctl xxx.xxx.xxx.xxx:/tmp
rman target /
restore standby controlfile from '/tmpcontrol01.ctl';

7.恢复数据库

查看主库的所有数据文件目录并在备库创建

select distinct substr(file_name,1, instr(file_name,'/',1, length(file_name)-length(replace(file_name,'/','')))) from DBA_DATA_FILES
$ rman target /
alter database mount;
restore database;
recover database until sequence 7;
# 这里的7是主库产生的最新一个归档,执行之后,会报出恢复需要的归档,把这些归档scp过来,继续执行上面的命令即

8.主库新建配置tnsnames.ora并scp至备库

可以使用netmgr图形化来配置

scp tnsnames.ora xxx.xxx.xxx.xxx:/oracle/11204/network/admin/

9.将主库的listener.ora传至备库并修改

$ scp listener.ora xxx.xxx.xxx.xxx:/oracle/11204/network/admin

10.将主库的密码文件传至备库

$ scp orapwdg01 xxx.xxx.xxx.xxx:/oracle/11204/dbs/

11.修改主备库的参数文件

主庫:
alter database force logging;
alter system set db_unique_name='dg01' scope=spfile;
alter system set log_archive_config='dg_config=(dg01,standby_dg01)' scope=both;
alter system set log_archive_dest_1='LOCATION=/archlog/dg01 valid_for=(all_logfiles,all_roles) db_unique_name=dg01';
alter system set log_archive_dest_2='service=standby_dg01 async valid_for=(online_logfiles, primary_role) db_unique_name=standby_dg01';
alter system set log_archive_dest_state_1=enable scope=both;
alter system set log_archive_dest_state_2=enable scope=both;
alter system set fal_client=dg01 scope=both;
alter system set fal_server=standby_dg01 scope=both;
alter system set log_archive_max_processes=30;
alter system set standby_file_management=auto scope=both; --主備庫都要更改,防止切換
備庫:
    alter database force logging;
    alter system set db_unique_name='standby_dg01' scope=spfile;
    alter system set log_archive_config='dg_config=(dg01,standby_dg01)' scope=both;
    alter system set log_archive_dest_1='LOCATION=/archlog/dg01  valid_for=(all_logfiles,all_roles) db_unique_name=standby_dg01';
   # 这里报错
# ERROR at line 1:
# ORA-02097: parameter cannot be modified because specified value is invalid
# ORA-16053: DB_UNIQUE_NAME standby_dg01 is not in the Data Guard Configuration
# 原因是db_unique_name没有生效,重启数据库后就可以了
    alter system set log_archive_dest_2='service=dg01 async valid_for=(online_logfiles, primary_role) db_unique_name=dg01';
    alter system set log_archive_dest_state_1=enable scope=both;
    alter system set log_archive_dest_state_2=enable scope=both;
    alter system set fal_client=standby_dg01 scope=both;
    alter system set fal_server=dg01 scope=both;
    alter system set log_archive_max_processes=30;
    alter system set standby_file_management=auto scope=both

12.重启备库

shutdown immediate;
startup nomount;
alter database mount standby database;
alter database open read only;
alter database recover managed standby database disconnect;

13.测试

--主库
create table test01(id number);
alter system switch logfile;
--备库查看是否有test01表

14.备库redo没有创建处理方法

修改参数

alter system set log_file_name_convert = '/oradata01/dg01','/oradata01/dg01' scope=spfile;
shutdown immediate;
startup;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT='MANUAL';
alter database clear logfile group 1;
alter database drop logfile group 1;
$ rm -f redo01.log
alter database add logfile group 1 ('/oradata01/dg01/redo01.log') SIZE 50M;
--如果redo是current状态,主库切换日志即可

创建完redo后修改回参数

create pfile from spfile;

修改参数文件,删除log_file_name_convert 参数并修改STANDBY_FILE_MANAGEMENT为auto

create spfile from pfile;

startup nomount;

alter database mount standby database;

alter database open read only;

alter databse recover managed standby database disconnect;

oracle dataguard搭建的更多相关文章

  1. Oracle DataGuard搭建(一)

    第一次搭建oracle dataguard.学oracle很长时间,却没有完整的搭过dg,说起来让人笑.总得有第一次,而且第一次总是很痛苦的. 数据库版本: Oracle Database 11g E ...

  2. Oracle DataGuard搭建(二)

    三.配置备库 创建catalog数据库 用dbca创建数据库,用oracle自带模板,不用em,启用归档,同一管理密码oracle,global name:dbcat1.node249.gewara, ...

  3. 9. Oracle DataGuard的介绍

    一. Oracle DataGuard简介 Oracle DataGuard:简称DG.是由一个Primary Database(主库)和一个或者多个Standby Database(备库)组成.对O ...

  4. Oracle DataGuard 物理Standby 搭建(上)

    物理standby database 环境搭建 Arch asysnc Oracle Dataguard host IP Oracle_sid DB_unique_name FAL_server FA ...

  5. Oracle 10gR2 Dataguard搭建(非duplicate方式)

    Oracle 10gR2 Dataguard搭建(非duplicate方式) 我的实验环境: 源生产库(主库): IP地址:192.168.1.30 Oracle 10.2.0.5 单实例 新DG库( ...

  6. 【Oracle】搭建DG(DataGuard)

    操作系统:OEL 5.6 Oracle 版本:11.2.0.4.0 DataGuard规划说明 DATABASE_ROLE DB_NAME IPADDR Primary lgr 192.168.10. ...

  7. Oracle dataguard 正常切换和应急切换

    oracle dataguard提供异地容灾方案,能有效的防止单点故障和提供高可用技术,这里介绍dataguard正常主备切换和应急切换(应急切换模拟主库出现问题无法还原,备库脱离dataguard接 ...

  8. 某控股公司OA系统ORACLE DG搭建

    *此处安装ORACLE DATAGUARD是利用ORACLE RMAN DUPLICATE方式安装.*可以搭建好ORACLE DG再来impdp生产数据,也可以先导入主库数据再来做DG*注意看下面的配 ...

  9. oracle dataguard主从切换

    前言: 众所周知DataGuard一般的切换分成两种,一种是系统正常的情况下的切换这种方式为:switchover是无损切换,不会丢失数据:另外一种方式属于灾难情况下的切换,这种情况下一般主库已经启动 ...

随机推荐

  1. html 01-认识Web和Web标准

    01-认识Web和Web标准 #Web.网页.浏览器 #Web Web(World Wide Web)即全球广域网,也称为万维网. 我们常说的Web端就是网页端. #网页 网页是构成网站的基本元素.网 ...

  2. python一键搭建ftp服务

    from pyftpdlib.authorizers import DummyAuthorizer from pyftpdlib.handlers import FTPHandler from pyf ...

  3. Python 函数对象的本质

    Python 函数对象本质上是 function 类的实例. 1 从示例说起 def factorial(n): '''return n!''' return 1 if n < 2 else n ...

  4. 用matlab提取jpg曲线数据或者jpg图片重新复原

    I = imread('111.jpg');%读取处理好的图片,必须是严格坐标轴线为边界的图片 I=rgb2gray(I); %灰度变化 I(I>200)=255; %二值化 I(I<=2 ...

  5. C# HTTP1.0 1.1 2.0与HTTPS 、TCP/IP协议的UDP与TCP、 Socket介绍与WebSocket

    一.HTTP1.0 1.1 2.0和HTTPS 1.HTTP协议是什么? HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol.它是从WEB服务器传输超文 ...

  6. 【程序包管理】本地yum仓库的创建

    一.yum优势 yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器. 基於RPM包管理,能够从指定的服务器 ...

  7. Java进阶专题(二十) 消息中间件架构体系(2)-- RabbitMQ研究

    前言 接上文,这个继续介绍RabbitMQ,并理解其底层原理. 介绍 RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的 ...

  8. flowable中使用到的一些方法。获取人员部门信息

    package org.springblade.desk.utils; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf ...

  9. 如何理解java枚举,看例子

    先来看一下不用枚举怎么表示常量: //常量类 class Num { public static String ONE = "ONE"; public static String ...

  10. AgileConfig-如何使用AgileConfig.Client读取配置

    前面的文章(AgileConfig基于.NetCore的一个轻量级配置中心,AgileConfig轻量级配置中心 1.1.0 发布,支持应用间配置继承)都是介绍AgileConfig服务端已经控制台是 ...