DataGuardBroker的详细配置步骤

oracle Data Guard,以最低成本实现最高的数据保护。在硬件上没有特殊要求,普通PC机即可实现。
简单的来说,Data Guard,就是自动创建和维护生产数据库(或主数据库)的一个或多个事务一致的副本(备用数据库)。如果主数据库不可用(因为故障、维护或者灾难),那么可以激活一个备用数据库并使之承担主数据库的角色。
然而,在配置完成Data Guard后,若需要实现主备数据库间的切换,需要在主数据库及备用数据库上分别输入多个命令,切换步骤稍显麻烦。所以,一般情况下,DBA会将整个切换过程编辑成脚本,以便自动运行,进行状态切换。当然,oracle 也提供了工具Data Guard Broker,仅在控制端输入一个命令就能方便实现主备数据库间的切换。
在Data Guard Broker的基础上,配置并启用Fast-Start Failover,就能自动检测发现主机故障,实现主备切换,故障转移。
下面通过4个部分总结一下oracle 的 Data Guard 的相关配置:

  1. 基础知识准备。简单介绍一下在Data Guard配置过程中容易混淆的几个oracle基本概念,以及oracle 的网络配置
  2. 配置Data Guard
  3. 配置Data Guard Broker
  4. 配置及启用Fast-Start Failover
    现在说明下实际的配置环境。Data Guard的主备数据库分别位于2台服务器上。基本信息如下:
    primary server:
    操作系统:windows server 2003 32bit
    ip:192.168.0.225
    计算机名:sjzx-2
    standby server:
    操作系统:windows xp 32bit
    ip:192.168.0.212
    计算机名:20081208-1335

2台服务器上所用的oracle版本均为 oracle 10.2.0.3.0

  1. 基础知识准备:
    在进行Data Guard配置的时候,需要更改配置文件中的多项参数,涉及到多个oracle比较容易混淆的概念。所以在配置之前,单独把它们拿出来说明一下,以便配置过程避免一些不该发生的错误。
    对此部分内容熟悉的,可自行跳过。

a) oracle中的数据库和实例
这是oracle中最基本的2个概念。
先说数据库(database)。oracle中的数据库,是存储数据的一种媒介。常用的一般为2种形式,即文件和磁盘阵列。文件很好理解,就是在磁盘创建一批文件,然后在文件中存储数据信息。而磁盘阵列呢?所谓磁盘阵列,就是说数据不是存放在某个文件中的,而是把一个或多个磁盘格式化为oracle的一种格式,等于整个磁盘只能存放oracle数据库,不能作为其它用途。以我们最常用的文件格式来说,数据库就是那些所有数据文件、控制文件、REDO文件等等一系列文件的集合。即
数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件
实例(instance)是操作系统中一系列的进程以及为这些进程所分配的内存块。即
ORACLE实例 = 进程 + 进程所使用的内存(SGA)
由上可见,对数据库的应用,实例和数据库缺一不可。 仅有数据库,那么只表示数据存储在文件中,但是我们无法对它直接进行操作。仅有instance,表示我们可以进行操作,但是没有操作对象(不知道目标数据),也是没有什么意义的。
database是永久性的,instance是临时性的。当我们结束oracle的实例进程,它所占内存释放,那么instance也就不存在了。但是,各种数据库相关文件还是存在的,所以database仍然存在。
因此,也就不难理解了,oracle数据库服务器启动一般包含的3个步骤:1.创建并启动实例;2.装载数据库;3.打开数据库。每到一个阶段,都有相应的操作可以进行。例如,同一个SID,但是如果以不同的参数文件启动,那么我们可以装载和打开不同的数据库。同样的,一个数据库,也可以被不同的instance加载和打开。
那些oracle的各种启动命令,例如startup nomount、startup mount、startup open、startup(startup等同于startup open)分别对应于启动oracle数据库服务器到特定阶段。
一个实例在其生存期内只能装载(alter database mount)和打开(alter database open)一个数据库。
windows下,我们一般启动服务OracleServiceSID,就可以连接实例,对数据库进行操作,是因为安装oracle后,Windows的注册表中ORA_SID_AUTOSTART 默认设置为 true,数据库实例会随着服务的开启而开启。如果人为将其设置为false,那么即使OracleServiceSID启动,数据库实例也不会启动,需要我们手动startup。

b) oracle中的name,id
oracle中有多个name与id。有些需根据规则定义,有些可以随意指定。有些可以省略,有些不能省略。有些可以很方便的进行修改(一条sql,或者直接改参数文件),有些却不能修改,或者修改很麻烦。有些name之间有关系,有些却毫无关联。所以oracle中的各种name是最容易混淆的。以下内容都是目前自己的理解,难免有偏差,仅供参考。

db_name:数据库名。物理数据库的名字标识。数据库创建完成后,参数db_name被写入参数文件,格式如下:
db_name=orcl
数据名虽说可以修改,但是修改步骤比较麻烦。建议最好不要修改db_name。
在不同的服务器上创建数据库,可以使用同样的db_name
在DG环境中,主备服务器中的数据库有同样的db_name
可以利用下列sql查询db_name
select name from v$database;

db_domain:数据库域名。这个域同网络的域没有什么联系。个人理解是类似于把网络中的多个数据库分组管理。可以随意命名,可以为空。

global_name:全局数据库名。在windows操作系统中,利用Database Configuration Assistant创建数据库时,要求输入就是全局数据库名。通常,它的名字是由db_name.db_domain构成。

SID:实例标识。在windows操作系统中,利用Database Configuration Assistant创建数据库时,会要求输入SID。SID和instance_name的值是一致的。它是oracle的实例标识。在windows创建一个oracle实例后,会在操作系统中注册一个名称为OracleServiceSID的系统服务。由于在oracle中一个数据库可以对应多个实例,所以SID可以与db_name相同,也可以不相同。
简而言之,SID只与实例对应。
instance_name用于对外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名。
可以通过下列sql查询instance_name
select instance_name from v$instance;

db_unique_name:在Data Guard里,主从服务器中的数据库,都有一样的DB_NAME。然而它们和RAC环境下不一样,不代表同一个库(主备机中均有自己的数据库文件,不像RAC环境中通过多个实例通过磁盘阵列共享一个库)。但是它们的db_unique_name 是不一样的,用以标识不同的数据库。这个也是可以自己定义的。

service_name:服务名。service name是连接数据库的时候使用的别名。
需要注意的是,service_name主要用于数据库网络连接时,可以有多个,可以随意命名,可以通过系统初始化参数service_name设置。
一般情况下,service_name的缺省值为db_name.db_domain,同global_name相同。

Net service name:网络服务名,即连接描述符。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。网络服务名被记录在tnsnames.ora文件中,由自己随意命名。
下面是tnsname.ora中的一段配置:

TEST2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 20081208-1335)(PORT = 1521))
 	 )
	  (CONNECT_DATA =
		  (SERVER = DEDICATED)
		 (SERVICE_NAME = "TESTB_DGMGRL.DG")
	  )
  )

其中的TEST2就是 net service name。
c) oracle的网络配置文件
这里只介绍oracle最基本的网络结构。
首先是3个配置文件,listener.ora、sqlnet.ora、tnsnames.ora,均位于$ORACLE_HOME\network\admin目录下。

sqlnet.ora:
这是一个支持SQL*NET(oracle的网络组件,负责数据库服务的远程连接和登录)的基本配置文件,其中可以设定加密、连接限制、验证方式等等多种网络连接配置信息。其中,默认的,也是最常用的参数设置为以下2个。
SQLNET.AUTHENTICATION_SERVICES= (NTS,NONE)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
参数SQL

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A Master

您的鼓励是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值