1.配置过程

  • 确认为归档模式
SQL> select log_mode from v$database;

LOG_MODE
------------
ARCHIVELOG
  • 配置归档日志存放路径(/home/oracle/arch提前创建)
主库:
SQL>alter system set log_archive_dest_1='location=/home/oracle/arch
db_unique_name=ora11g';
备库:
SQL> alter system set log_archive_dest_2='service=s74
db_unique_name=bei';
  • 将主库、备库加载入DG中
SQL> alter system set log_archive_config='dg_config=(ora11g,bei)';
System altered.
SQL> alter system set standby_file_management=auto;
System altered.
  • 开启强制记录日志功能
  • 拷贝全库至备库
查看文件存放位置(日志文件、数据文件、控制文件都在此目录下):
SQL> select * from v$logfile; 拷贝重做日志文件、数据文件至从库:
SQL>scp * 172.16.150.66:/home/oracle/standby 生成备库的控制文件,并拷贝至备库:
SQL> alter database create standby controlfile as '/home/oracle/bei.ctl';
[oracle@localhost ora11g]$scp /home/oracle/1.ctl 172.16.150.74:/home/oracle/standby 拷贝参数文件、口令文件至备库:
SQL> show parameter spfile;
[oracle@oracle dbs]$ scp /u01/oracle/product/11.2.0/dbs /spfileora11g.ora 172.16.150.74:/home/oracle/standby
[oracle@oracle dbs]$ scp /u01/oracle/product/11.2.0/dbs / orapwora11g/172.16.150.74:/home/oracle/standby 将参数文件、口令文件拷贝至$ORACLE_HOME/dbs
  • 主库配置tnsnames.ora
[oracle@oracle network]$ cd $ORACLE_HOME/network/admin

ORACLE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oracle.com)
)
) s74=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.150.74)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = bei)
)
)
  • 修改备库中的参数文件
ora11g.__db_cache_size=281018368
ora11g.__java_pool_size=4194304
ora11g.__large_pool_size=4194304
ora11g.__oracle_base='/u01/oracle'#ORACLE_BASE set from environment
ora11g.__pga_aggregate_target=301989888
ora11g.__sga_target=452984832
ora11g.__shared_io_pool_size=0
ora11g.__shared_pool_size=150994944
ora11g.__streams_pool_size=0
*.audit_file_dest='/home/oracle/standby/adump' #修改路径并创建目录
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/home/oracle/standby/bei.ctl'#修改路径并创建目录
*.db_block_size=8192
*.db_domain='com'
*.db_name='oracle'
*.db_recovery_file_dest='/home/oracle/standby/fast_recovery_area' #修改路径并创建目录
*.db_recovery_file_dest_size=4322230272
*.diagnostic_dest='/u01/app/oracle' #修改路径并创建目录
*.dispatchers='(PROTOCOL=TCP) (SERVICE=oracleXDB)'
*.local_listener='LISTENER_ORACLE'
*.log_archive_config='dg_config=(oracle,bei)'
*.log_archive_dest_1='location=/home/oracle/standby/arch db_unique_name=bei'
*.memory_target=754652928
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
db_unique_name=bei #添加
db_file_name_convert='/u01/oracle/oradata/oracle','/home/oracle/standby' #添加
log_file_name_convert='/u02/oracle/oradata/oracle/','/home/oracle/standby' #添加
  • 启动备库
重新生成spfile:
SQL> create spfile from pfile; 启动库:
SQL> alter database mount standby database;
Database altered.
SQL> select database_role from v$database;
DATABASE_ROLE
----------------
PHYSICAL STANDBY
  • 启动监听
  • 测试联通
自连:sqlplus  sys/oracle@172.16.150.74:1521/bei as sysdba
连接对方库:sqlplus sys/123456@172.16.150.40:1521/ora11g as sysdba
  • 备库开启实时归档日志功能
alter database recover managed standby database disconnect from session;
  • 主库切换到备库
SQL> select database_role,switchover_status  from v$database;

DATABASE_ROLE     SWITCHOVER_STATUS
---------------- --------------------
PRIMARY TO STANDBY
alter database commit to switchover to standby with session
shutdown
  • 备库切换到主库
SQL> select database_role,switchover_status  from v$database;
DATABASE_ROLE SWITCHOVER_STATUS
---------------- --------------------
PHYSICAL STANDBY TO PRIMARY(SESSIONS ACTIVE)

alter database commit to switchover to primary with session
shutdown

2.遇到的问题

  • 数据库完成主库、备库之间的切换,再次启动主库时,出现:
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /home/oracle/standby/arch
Oldest online log sequence 58
Next log sequence to archive 58
Current log sequence 58

SQL> select sequence# from v$log;

SEQUENCE#
  ----------
  58
  0
  0

原因:没有进行日志切换

  • 备库变成主库后,切换日志,从库的sequence号并没有发生改变

    主库如何相互切换

    如何实现redo_log的同步

    

3.其它问题

  • db_name service_name unique_name之间的关系
SQL> show parameter name;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string oracle
db_unique_name string oracle
global_names boolean FALSE
instance_name string ora11g
lock_name_space string
log_file_name_convert string
processor_group_name string
service_names string oracle.com
db_name:
1.在DG中db_name一样而db_unique_name不一致
2.在RAC中各节点db_name一样而instance_name不一样
db_unique_name:
1.在DataGuard中,主备库拥有相同的DB_NAME,为了区别,就必须有不同的DB_UNIQUE_NAME
instance_name:
1.可以和db_name不一致
service_name
1.客户端连接数据库时采用服务名
  • tnsnames.ora
s74=       #
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.150.74)#服务器IP
(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = bei) #数据库服务名
)
)
  • db_domain的作用

oracle 学习之DG的搭建的更多相关文章

  1. ORACLE 11g RAC-RAC DG Duplicate 搭建(生产操作文档)

    环境:rhel 6.7 64位源库:ORACLE 11204 RAC 未打PSU备库:ORACLE 11204 RAC PSU 20170718 一.停止中间件并做全库备份 1.在节点2做全备 2.首 ...

  2. 一步一步搭建 oracle 11gR2 rac + dg 之前传 (一)【转】

    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg  之前传 (一) 转自 一步一步搭建 oracle 11gR2 rac + dg ...

  3. 一步一步搭建oracle 11gR2 rac+dg之环境准备(二)【转】

    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之环境准备 (二) 一步一步搭建oracle 11gR2 rac+dg之环境准备 ...

  4. 一步一步搭建oracle 11gR2 rac+dg之共享磁盘设置(三)【转】

    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之共享磁盘准备 (三) 注意:这一步是配置rac的过程中非常重要的一步,很多童鞋 ...

  5. 一步一步搭建 oracle 11gR2 rac+dg之grid安装(四)【转】

    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之grid安装 (四) 转自 一步一步搭建 oracle 11gR2 rac+d ...

  6. 一步一步搭建oracle 11gR2 rac+dg之database安装(五)【转】

    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg 之database安装 (五)   转自 一步一步搭建oracle 11gR2 ...

  7. oracle 单实例DG(搭建篇一)

    一,介绍 lodding... 二,安装前环境配置 01,依赖包的安装: yum install binutils-* yum install compat-libstdc++-* yum insta ...

  8. Oracle学习线路

    出自huyangg的博客,地址是:oracle学习路线图 1.sql.pl/sql(网上有很多的视频,可以做一个简单的入手,然后看几本书,多做实验)    作为oracle的基本功,需要大家对sql和 ...

  9. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

随机推荐

  1. transaction manager has disabled its support for remote/network transactions. 该伙伴事务管理器已经禁止了它对远程/网络事务

    最近再用SSIS做数据归档,里面用到了分布式事务.在开发阶段是在一台计算机上运行只要是启动分布式服务就没什么问题,可是昨天把它部署到uat的时候遇到问题,错误信息是: 最后找到解决方案: 确认&quo ...

  2. 纯Java代码 图片压缩

    Java图片压缩代码 package com.img; import java.awt.Image; import java.awt.image.BufferedImage; import java. ...

  3. 点击某一按钮新增click,并切换页面

    应用场景:对于web端接收手机验证码的处理方法:1.如果有权限可以通过查询数据库来获得手机验证码,方便快捷.2.如果后台系统保存了手机验证码,可以去后台获取验证码,然后填写到前台页面,此方法有两种处理 ...

  4. apache2部署django以及静态文件

    django中的runserver只是一个很简单的web服务器,在开发中是不建议使用的,django在官方中建议是使用apache2等web服务器来配置,并且django会把静态文件交由apache2 ...

  5. delphi用TAdoStoredProc调用存储过程,兼容sql2005、2008、2014的远程事务问题

    delphi7写的程序,在sql2000里没问题,调用sql2008.2014里的存储过程时,如果存储过程里操作了大量数据,很容易会莫名其妙的自己撤销掉,但是程序还识别不到,认为还在正常执行.今天尝试 ...

  6. 【锋利的Jquery】读书笔记六

    ajax优点缺点 json格式的严格 { "people": [ { "firstName": "Brett", "lastNam ...

  7. js ajax 调试

    谷歌浏览器 F12->network->()请求ajax)->出现ajax调用的方法名-->点击查看网站请求地址--返回所有的数据(preview面板中) success返回后 ...

  8. CoreJavaE10V1P3.7 第3章 Java的基本编程结构-3.7 输入输出(Input ,Output)

    3.7.1 读取输入 Scanner in = new Scanner(System.in); System.out.print("What is your name? "); S ...

  9. Python中is和==的区别的

    在python中,is检查两个对象是否是同一个对象,而==检查他们是否相等. str1 = 'yangshl' str2 = 'yang' + 'shl' print('str1 == str2:', ...

  10. 视频编辑SDK---我们只提供API,任你自由设计炫酷的功能

    面对相对复杂的视频编辑处理技术,你是否束手无策? 在短视频应用中,有一定技术难度的视频编辑技术中,我们提出了一种全新的解决方法:画板和画笔.短视频处理,用画板和画笔,就够了! 我们设计了极其简单易懂的 ...