Oracle11gR2 Aactive DataGuard(手动)安装部署及维护文档(一)之安装配置

l 第一部分:准备工作

一、 安装环境

Primary:

OS:linux5.5 DB:oracle11.2

Standby:

OS:linux5.5 DB:oracle11.2

Primary、Standby数据库安装目录结构相同。

l 第二部分:物理standby创建

一、Primary数据库配置及相关操作

1、确认主库处于归档模式

SQL> archive log list

数据库日志模式 存档模式

自动存档 启用

存档终点 USE_DB_RECOVERY_FILE_DEST

最早的联机日志序列 333

下一个存档日志序列 0

当前日志序列 334

注:如果没有归档,执行下面的步骤:

SQL> startup mount;
SQL> alter database archivelog;
SQL> archive log list;
SQL> alter database open;

2、将primary 数据库置为FORCE LOGGING 模式。通过下列语句:

SQL> alter database force logging;

3、创建角色转换后接收日志的redo log

此步是可选项,主要是用于主库角色转换后做为standby log日志接收主库的日志

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle/dbs/slog1.rdo') SIZE 500M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle/dbs/slog2.rdo') SIZE 500M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle/dbs/slog3.rdo') SIZE 500M;

SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/oracle/dbs/slog4.rdo') SIZE 500M;

4、创建primary数据库客户端初始化参数文件

注:主要此处修改项较多,为了方便,我们首先创建并修改pfile,然后再通过pfile 重建spfile,你当然也可以通过alter system set 命令直接修改spfile 内容。

SQL> create pfile from spfile;

稍后后复制到standby$ORACLE_HOME/dbs

修改客户端初始化参数文件(primaryr的initorcl.ora),增加下列内容

*.db_name=orcl

*.DB_UNIQUE_NAME=primary

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'

*.LOG_ARCHIVE_DEST_1='LOCATION=/oradata/orcl/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=primary'

*.LOG_ARCHIVE_DEST_2='SERVICE=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

LOG_ARCHIVE_MAX_PROCESSES=30

--下面是角色转换用到的参数

*.FAL_SERVER=standby

*.DB_FILE_NAME_CONVERT='/oradata/orcl','/oradata/orcl'

*.LOG_FILE_NAME_CONVERT='/oradata/orcl','/oradata/orcl'

*.STANDBY_FILE_MANAGEMENT=AUTO

通过pfile 重建spfile

SQL> shutdown immediate

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

SQL> startup

5、创建一份主库的备份

用rman或其它方法备份主库的数据文件,建议用rman。

6、创建standby 数据库控制文件

SQL> alter database create standby controlfile as '/oradata/orcl/stdcotrl.ctl';

7、复制数据文件到standby 服务器(方式多样,不详述)

把主库的备份文件、init参数文件、上面备份的控制文件、密码文件copy到standby服务器的相应目录下。

8、配置主备的listener 及net service names如下:

(1)Primary的tnsnames.ora内容

primary =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

standby=

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(sid = orcl)

)

)

(2)standby的tnsnames.ora内容

standby=

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

primary =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(sid = orcl)

)

)

注:listener.ora装数据库一般都已经配好,不用动就行。

配完之后重启主备listener:

[oracle@DB1 ~]$ lsnrctl stop

[oracle@DB1 ~]$ snrctl start

在主备分别通过tnsping 测试tnsnames 是否正确有效

通过下面的测试oracle net的连接

--[oracle@DB1 ~]$ sqlplus system/oracle@standby

[oracle@DB2 ~]$ sqlplus system/oracle@primary

二、Standby数据库配置及相关操作

1、 如果服务器是windows通过ORADIM 创建新的OracleService,如果linux\unix可以略去这一步。

2、 如果上面没有拷贝密码文件,也可以手工创建密码文件。注意保持sys 密码与primary 数据库一致。

[oracle@DB2 ~]$orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle entries=30

--密码最好自己重建一下,否则可能会出现ORA-01031: insufficient privileges

3、创建目录

[oracle@DB2 ~]$cd /oracle/admin/orcl

[oracle@DB2 ~]$mkdir adump bdump cdump dpdump udump

4、复制文件,上面第7步已经做过,把复制过来的文件拷到相应目录下即可。

5、修改初始化参数文件($ORACLE_HOME/dbs/initorcl.ora)

修改和增加下列参数

*.control_files='/oradata/orcl/stdcotrl1.ctl', '/oradata/orcl/stdcotrl2.ctl'

*.db_name=orcl

*.db_unique_name=standby

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(primary,standby)'

*.DB_FILE_NAME_CONVERT='/oradata/orcl','/oradata/orcl'

*.LOG_FILE_NAME_CONVERT='/oradata/orcl','/oradata/orcl'

*.LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc

*.LOG_ARCHIVE_DEST_1='LOCATION=/oradata/orcl VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

#---下列参数用于角色切换

*.LOG_ARCHIVE_DEST_2='SERVICE=primary LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=primary'

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

*.FAL_SERVER=primary

*.STANDBY_FILE_MANAGEMENT=AUTO

注意同时修改*_dest 的路径。

通过该pfile 创建spfile

SQL> create spfile from pfile;

6、启动standby 到mount

SQL> startup mount;

7、启动redo 应用

SQL> alter database recover managed standby database disconnect from session;

SQL> select name,open_mode,PROTECTION_MODE,DATABASE_ROLE from v$database;

NAME OPEN_MODE PROTECTION_MODE DATABASE_ROLE
--------- ---------- -------------------- ----------------
PRIMARY MOUNTED MAXIMUM PERFORMANCE PHYSICAL STANDBY

8、查看同步情况

首先连接到primary 数据库

SQL> show parameter instance_name;

NAME TYPE VALUE

---- ---- ----

instance_name string orcl

SQL> alter system switch logfile;

SQL> select max(sequence#) from v$archived_log;

然后连接到standby 数据库

SQL> show parameter instance_name;

NAME TYPE VALUE

---- ---- ----

instance_name string orcl

SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG;

SEQUENCE# APP

---------- ---

1 YES

2 YES

9、暂停应用

通过下列语句暂停redo 应用。

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

注意,此时只是暂时redo 应用,并不是停止Standby 数据库,standby 仍会保持接收只不过不会再应用接收到的归档,直到你再次启动redo 应用为止

10、使用standby的实时查询功能

COMPATIBLE数据库参数必需设为11.0以上时才能使用Oracle Active Data Guard新特性

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

SQL> ALTER DATABASE OPEN;

SQL> select open_mode from v$database;

OPEN_MODE

--------------------

READ ONLY

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

SQL> select open_mode from v$database;

OPEN_MODE

--------------------

READ ONLY WITH APPLY

注:也可以用

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

提 示:

DISCONNECT FROM SESSION子句并非必需,该子句的作用呢,是指定启动完应用后自动退出到命令操作符前。如果不指定该子句的话,当前SESSION就会一直停留处理REDO应用,如果想做其他操作,就只能新建一个连接。

你可能感兴趣的:(oracle11g)