Oracle Dataguard之物理standby的基本配置
尽管网上有很多Oracle Dataguard的配置教程,但不难发现,很多采用的是rman duplicate这种方法,尽管此种方法较为简便。但在某种程度上,却也误导了初学者,虽说也能配置成功,但只知其然不知其所以然,Dataguard的本质没有吃透,也不利于其维护和调优。
本配置文档基于Oracle官方文档,目的在于加深大家对于Dataguard的了解。
本配置的结果是最大性能模式下的异步传输 ,因此在参数文件中,只涉及基本的主备参数,没有考虑switchover和最大性能模式下的real time apply。在监听的配置中,也没有考虑Data Guard Broker的应用情况
配置环境:
主库: 备库:
操作系统版本: Oracle Linux 6.3 Oracle Linux 6.3
数据库版本: Oracle 11.2.0.1.0 Oracle 11.2.0.1.0
主机名: node1.being.com node2.being.com
IP: 192.168.1.11 192.168.1.12
db_name orcl victor
db_unique_name orcl orcl
instance_name orcl victor
service_names orcl victor
注意:1. Dataguard中只需要db_unique_name保持一致即可
2. 主库中除了安装Oracle软件以外,还需要dbca建库。而备库中,只需要安装Oracle软件即可,即在./runInstaller安装过程中,第三步选择install software only
即可
3. 主备库的ORACLE_BASE=/u01/app/oracle,ORACLE_HOME=$ORACLE_BASE/product/11.2.0.1/db_1
一、配置监听
1> 主库上
[oracle@node1 ~]$ cd $ORACLE_HOME/network/admin/
[oracle@node1 admin]$ cat tnsnames.ora
TO_VICTOR =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.12)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = victor)
)
)
其中to_victor为网络服务名,在后面配置log_archive_dest_2和fal_server中会用到
2> 备库上
[oracle@node2 ~]$ cd $ORACLE_HOME/network/admin/
[oracle@node2 admin]$ cat tnsnames.ora
TO_ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
注意:该配置只是基于基本的Dataguard配置,没有考虑Dataguard broker的配置
二、主库环境准备 -->> 在node1上操作
1> 将数据库设置为归档模式
SQL> archive log list -->>若Database log mode为No Archive Mode,则表示该数据库运行在非归档模式下。进行以下操作
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
2> 将数据库设置为Force Logging模式
SQL> select force_logging from v$database; -->>若为NO,则进行以下操作
SQL> alter database force logging;
3> 修改主库参数文件
SQL> alter system set log_archive_config='dg_config=(orcl,victor)';
-->> 代表该Dataguard是两个节点,一主一从,若要配置多个节点,则需要在此处添加。
SQL> alter system set log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(online_logfiles,primary_role) db_unique_name=orcl';
-->> location代表本地归档。在这里我们使用闪回区作为在线日志文件的归档目录,在实际生产环境中,如果归档日志是归档在本地文件系统上,不建议使用闪回区,因为闪回区和数据库软件是在同一个目录下,如果归档日志过多,闪回区空间增长过快,容易造成磁盘空间不足,这样容易使数据库挂掉。valid_for代表该归档目录只有在该库为主库,归档在线日志文件时才有效。
SQL> alter system set log_archive_dest_2='service=to_victor async valid_for=(online_logfiles,primary_role) db_unique_name=victor';
-->> service后面接的是网络服务名
SQL> alter system set log_archive_dest_state_1='enable';
SQL> alter system set log_archive_dest_state_2='enable';
SQL> alter system set remote_login_passwordfile=exclusive scope=spfile; -->> 设置密码文件的权限,该设置需重启数据库才能生效
SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile; -->> 设置归档日志的格式,该设置需重启数据库才能生效
-->> 最后两项可不用显性设定
三、 为备库创建各种文件 -->> 在node1上操作
1> 密码文件
[oracle@node1 ~]$ cd $ORACLE_HOME/dbs/
[oracle@node1 dbs]$ orapwd file=orapworcl entries=5 force=y password=oracle
2> 参数文件
SQL> create pfile='/home/oracle/orcl.ora' from spfile;
3> 备份数据库
对数据库做备份有多种办法,包括冷备、在线热备、RMAN备份,在这里我们使用RMAN备份
[oracle@node1 ~]$ mkdir /home/oracle/rman
[oracle@node1 ~]$ rman target /
RMAN> backup database format '/home/oracle/rman/full_%U';
4> 备份控制文件
SQL> alter system switch logfile;
SQL> alter database create standby controlfile as '/home/oracle/victor.ctl';
四、将上述四类文件copy到备库
[oracle@node1 ~]$ scp $ORACLE_HOME/dbs/orapworcl oracle@192.168.1.12:/u01/app/oracle/product/11.2.0.1/db_1/dbs/orapwvictor
[oracle@node1 ~]$ scp /home/oracle/orcl.ora oracle@192.168.1.12:/home/oracle/victor.ora
[oracle@node1 ~]$ scp -r /home/oracle/rman/ oracle@192.168.1.12:/home/oracle/rman
[oracle@node1 ~]$ scp /home/oracle/victor.ctl oracle@192.168.1.12:/home/oracle
五、 创建备库
1> 修改参数文件
[oracle@node2 ~]$ vim victor.ora
*.audit_file_dest='/u01/app/oracle/admin/victor/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/victor/control01.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
db_unique_name=victor
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(protocol=TCP)'
*.log_archive_config='dg_config=(orcl,victor)'
*.log_archive_dest_1='location=/u01/archivelog valid_for=(standby_logfiles,standby_role) db_unique_name=victor'
*.log_archive_dest_state_1='enable'
*.memory_target=471859200
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.shared_servers=1
*.undo_tablespace='UNDOTBS1'
fal_server=to_orcl
db_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/victor/'
log_file_name_convert='/u01/app/oracle/oradata/orcl/','/u01/app/oracle/oradata/victor/’
standby_file_management=auto
2> 创建参数文件中相应的目录
[oracle@node2 ~]$ mkdir -p /u01/app/oracle/admin/victor/adump
[oracle@node2 ~]$ mkdir /u01/archivelog
[oracle@node2 ~]$ mkdir -p /u01/app/oracle/oradata/victor
[oracle@node2 ~]$ cp /home/oracle/victor.ctl /u01/app/oracle/oradata/victor/control01.ctl
3> 创建备库
[oracle@node2 ~]$ sqlplus / as sysdba
SQL> create spfile from pfile='/home/oracle/victor.ora';
SQL> startup mount
[oracle@node2 ~]$ rman target /
RMAN> restore database;
RMAN> alter database open;
SQL> alter database recover managed standby database disconnect from session;
六、测试
1> 在备库上查询归档日志的序列号
SQL> select sequence# from v$archived_log;
2> 在主库上切换一次日志
SQL> alter system switch logfile;
3> 在备库上查询归档日志的序列号,看是否有增加
SQL> select sequence# from v$archived_log;
4> 在备库上查询归档日志是否被应用
SQL> select sequence#,applied from v$archived_log;
当然,也可以用具体案例进行测试,譬如在主库中新建一张表,对表进行增、删、改,然后切换日志,看备库能否应用。
Oracle Dataguard之物理standby的基本配置的更多相关文章
- Oracle Dataguard之Real-Time Apply
Oracle Dataguard一共支持三种模式:最大可用模式(Maximum Availability),最大性能模式(Maximum Performance),最大保护模式(Maximum Pro ...
- 9. Oracle DataGuard的介绍
一. Oracle DataGuard简介 Oracle DataGuard:简称DG.是由一个Primary Database(主库)和一个或者多个Standby Database(备库)组成.对O ...
- Oracle DataGuard 物理Standby 搭建(上)
物理standby database 环境搭建 Arch asysnc Oracle Dataguard host IP Oracle_sid DB_unique_name FAL_server FA ...
- Oracle DataGuard 物理Standby 搭建(下)
主备库切换 Switchover 一般SWITCHOVER切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个DATA GUARD环境不会被破坏,原来DATA GUAR ...
- Oracle Data Guard 创建物理Standby数据库
创建物理备库 机器名 a1 a2 IP: 192 ...
- 【DATAGUARD】物理dg配置客户端无缝切换 (八.4)--ora-16652 和 ora-16603错误
[DATAGUARD]物理dg配置客户端无缝切换 (八.4)--ora-16652 和 ora-16603错误 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各 ...
- 【DATAGUARD】物理dg配置客户端无缝切换 (八.3)--客户端TAF 配置
[DATAGUARD]物理dg配置客户端无缝切换 (八.3)--客户端TAF 配置 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你 ...
- 【DATAGUARD】物理dg配置客户端无缝切换 (八.2)--Fast-Start Failover 的配置
[DATAGUARD]物理dg配置客户端无缝切换 (八.2)--Fast-Start Failover 的配置 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各 ...
- 【DATAGUARD】物理dg配置客户端无缝切换 (八.1)--Data Guard Broker 的配置
[DATAGUARD]物理dg配置客户端无缝切换 (八.1)--Data Guard Broker 的配置 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技 ...
随机推荐
- Python开源框架
info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...
- Hive几种数据导出方式
Hive几种数据导出方式 今天我们再谈谈Hive中的几种不同的数据导出方式.可以根据导出的地方不一样,将这些方式分为三种: (1).导出到本地文件系统: (2).导出到HDFS中: (3).导出到Hi ...
- Reactnative 随笔一
---恢复内容开始--- 1.ReactDOM.render() React的最基本方法,用于将模板转为HTML语言,并插入指定的DOM节点 将h标签插入example节点 2.HTML语言直接 ...
- 本地推送UILocalNotification
//本地推送---无需网络,由本地发起 UILocalNotification *localNotification = [[UILocalNotification alloc]init]; //设置 ...
- 骨骼动画的实现(OpenGL实现)
人物模型动画一直是游戏中最重要的组成部分, 因此这里我们研究骨骼动画是如何实现的. 原理 首先模型通常是由多个三角形形成的网格构成, 每个三角形有三个顶点, 因此动画的根本原理就在于不同时间内为每个顶 ...
- 图解集合3:CopyOnWriteArrayList
初识CopyOnWriteArrayList 第一次见到CopyOnWriteArrayList,是在研究JDBC的时候,每一个数据库的Driver都是维护在一个CopyOnWriteArrayLis ...
- JDBC学习2:为什么要写Class.forName("XXX")?
Class.forName(String name) 接上一篇JDBC.本来这个内容是放在前面的一篇里面的一起的,后来发现越写越多,想想看就算了,还是单独开一篇文章好了,这样也能写得更加详细点. 上一 ...
- Programming Entity Framework CodeFirst--数据库约定和配置
这一章主要主要讲的是我们的模型如何映射到数据库,而不影响模型,以及不同的映射场景. 一.表名和列名 1.指定表名 [Table("PersonPhotos")] public cl ...
- HTML5文件上传插件 Huploadify V2.1发布
月初发布了HUploadify2.0版本,增加了文件的断点续传功能,得到了不少朋友的好评.本着按照Uploadify原样复制的原则,本次在一些朋友的建议中采纳了几点,做了一次较小的改动,定为2.1版本 ...
- Android多线程分析之五:使用AsyncTask异步下载图像
Android多线程分析之五:使用AsyncTask异步下载图像 罗朝辉 (http://www.cnblogs.com/kesalin) CC 许可,转载请注明出处 在本系列文章的第一篇<An ...