搭建前环境准备

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. 精尽Spring MVC源码分析 - HandlerMapping 组件(三)之 AbstractHandlerMethodMapping

    该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...

  2. C++线程详细说明

    一.问题的提出 编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX ...

  3. 容器编排系统之Pod生命周期、健康/就绪状态探测以及资源限制

    前文我们了解了在k8s上的资源标签.标签选择器以及资源注解相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14141080.html:今天我们来聊下k8 ...

  4. easyUI验证框赋值

    下面来看看easyui的各种验证框赋值的方式: <input name="userId" id="userId" class="easyui-n ...

  5. Netty源码解析 -- PoolSubpage实现原理

    前面文章说了PoolChunk如何管理Normal内存块,本文分享PoolSubpage如何管理Small内存块. 源码分析基于Netty 4.1.52 内存管理算法 PoolSubpage负责管理S ...

  6. ActiveMq PUT任意文件上传漏洞(CVE-2016-3088)漏洞复现

    漏洞原理 该漏洞出现在fileserver应用中,ActiveMQ中的fileserver服务允许用户通过HTTP PUT方法上传文件到指定目录.Fileserver支持写入文件(不解析jsp),但是 ...

  7. C#中的深度学习(四):使用Keras.NET识别硬币

    在本文中,我们将研究一个卷积神经网络来解决硬币识别问题,并且我们将在Keras.NET中实现一个卷积神经网络. 在这里,我们将介绍卷积神经网络(CNN),并提出一个CNN的架构,我们将训练它来识别硬币 ...

  8. C#中RDLC报表常用表达式(字符串和转换)

    字符串函数 (1)使用串联运算符和 Visual Basic 常量可将多个字段组合在一起.以下表达式返回两个字段,它们分别位于同一文本框的不同行中:=Fields!FirstName.Value &a ...

  9. 【程序包管理】篇章3:CentOS平台下软件包安装方法总结

    1.软件包安装前的学习:程序包管理的基础知识 2.程序包安装的方法介绍: rpm文件的二进制包安装:Linux程序包管理之rpm安装总结 yum安装:Linux程序包管理之yum源安装 链接:本地yu ...

  10. C#中的依赖注入和IoC容器

    在本文中,我们将通过用C#重构一个非常简单的代码示例来解释依赖注入和IoC容器. 简介: 依赖注入和IoC乍一看可能相当复杂,但它们非常容易学习和理解. 在本文中,我们将通过在C#中重构一个非常简单的 ...