Oracle Data Guard Linux 平台 Physical Standby 搭建实例


Data Guard 环境:

操作系统: RedHat 4.7 

Primary数据库:

IP地址:10.85.10.1

数据库SIDorcl

DB_UNIQUE_NAMEorcl_pd

 

Standby数据库:

IP地址:10.85.10.2

数据库SIDorcl

DB_UNIQUE_NAMEorcl_st

 

 

 

一. Primary 端的配置

 

1.  主库设置为force logging 模式

SQL> alter database force logging;

 

2. 主库设为归档模式

SQL> archive log list; 

SQL> shutdown immediate 

SQL> startup mount 

SQL> alter database archivelog; 

SQL> archive log list; 

 

3. 添加redo log file

添加一个新的Standby Redologs组(注意组号不要与当前存在的Online Redologs组重复),并为该组指定一个成员:

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/Oracle/oradata/orcl/redo04.log') size 50M; 

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orcl/redo05.log') size 50M; 

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/orcl/redo06.log') size 50M; 

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/orcl/redo07.log') size 50M; 

 

4. 创建备库的密码文件和控制文件

SQL> alter database create standby controlfile as '/u01/control01.ctl';

-- 说明: 判断一个数据库是Primary还是Standby,就是通过控制文件来判断的。

[oracle@localhost dbs]$ orapwd file=/u01/app/oracle/product/10.2.0/db_1/dbs/orapworcl password=admin

如果已经存在,就不用创建了。 缺省情况下,win下口令文件的格式是pwdsid.oraunix下的格式是orapwSID(大小写敏感)

 

5. 修改初始化参数文件

SQL> create pfile='/u01/initorcl.ora' from spfile;

 

initorcl.ora 添加如下内容:

*.DB_UNIQUE_NAME='orcl_pd' 

*.log_archive_dest_1='location=/u01/archive' 

*.log_archive_dest_2='SERVICE=orcl_st' 

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE 

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE 

*.standby_file_management='AUTO'

*.standby_archive_dest='/u01/archive'

*.FAL_SERVER='orcl_st' 

*.FAL_CLIENT='orcl_pd' 

 

 

如果主库和备库的数据文件位置不同,还需要加如下2个参数:

*.log_file_name_convert='/u02/oradata/orcl/','/u03/oradata/orcl/'

*.db_file_name_convert='/u02/oradata/orcl/','/u03/oradata/orcl/'

 

 

-- 注意:orcl_st,orcl_pd 是在tnsnames文件中配置的

 

'/u01/initorcl.ora' 这个pfile 启动数据库,并生成spfile

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup pfile='/u01/initorcl.ora';

ORACLE instance started.

Total System Global Area  167772160 bytes

Fixed Size                  1218316 bytes

Variable Size              79694068 bytes

Database Buffers           83886080 bytes

Redo Buffers                2973696 bytes

Database mounted.

Database opened.

SQL> create spfile from pfile='/u01/initorcl.ora';

File created.

 

6. 修改listener.ora tnsnames.ora 文件

 

Listener.ora 文件:

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)

      (PROGRAM = extproc)

    )

(SID_DESC =

(GLOBAL_DBNAME = orcl)

(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)

        (SID_NAME = orcl)  

    )

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

    )

  )

 

 

 

注意:SID_LIST_LISTENER 配置的是静态注册,如果没有该参数,而且Data Guard 启动顺序又不正确,那么在主库可能会报 PING[ARC1]: Heartbeat failed to connect to standby 'orcl_st'. Error is 12514. 错误,导致归档无法完成。

 

Oracle Listener 动态注册 与 静态注册

 

 

 

Tnsnames.ora 文件

ORCL_ST =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.85.10.2)(PORT = 1521))

    )

    (CONNECT_DATA =

(SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

 

ORCL_PD =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.85.10.1)(PORT = 1521))

    )

    (CONNECT_DATA =

          (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容