共计 6950 个字符,预计需要花费 18 分钟才能阅读完成。
- 主库环境比照
充分利用主数据库原来环境,仅量不对主库参数配置做过多的批改。
从新创立口令文件
su – oracle
$ orapwd file=’/u01/app/oracle/product/11.2.0/db_1/dbs/orapworcl’ password=oracle entries=10 force=y
- 批改配置 lisener 监听文件
阐明:增加 dgmgrl 动态监听配置,为前面的 dg broker 配置打基础。
$ cat /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.200)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = orcl)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = orcl)
)
)
ADR_BASE_LISTENER = /u01/app/oracle
其中的 GLOBAL_DBNAME 具备固定的格局:<db_unique_name>_DGMGRL.<db_domain>。
- 批改配置 tnsname.ora 文件
阐明:ORCL 是主库的服务名,DG 是备库的服务名。
$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.200)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
SLAVE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = slave)
)
)
- 批改配置成规档模式
1)、查看数据库是否处于归档状态
SQL> archive log list;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database flashback on;
SQL> alter database open;
2)、将主库设置为 FORCE LOGGING 模式
SQL> alter database force logging;
SQL> select force_logging,flashback_on from v$database;
FOR FLASHBACK_ON
YES YES
- 批改主库参数文件
SQL>
alter system set instance_name=’orcl’ scope=spfile;
alter system set db_unique_name=’orcl’ scope=spfile;
alter system set local_listener=’orcl’ scope=spfile;
alter system set log_archive_config=’DG_CONFIG=(orcl,slave)’;
alter system set log_archive_dest_1=’LOCATION=/u01/archivelog/ valid_for=(all_logfiles,all_roles) db_unique_name=orcl’ scope=spfile;
alter system set log_archive_dest_2=’SERVICE=slave lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=slave’ scope=spfile;
alter system set log_archive_format=’arch_%r_%t_%s.arc’ scope=spfile;
alter system set fal_client=’orcl’ scope=spfile;
alter system set fal_server=’slave’ scope=spfile;
alter system set standby_file_management=AUTO;
alter database add standby logfile group 4 ‘/u01/app/oracle/oradata/orcl/standby_redo04.log’ size 50M;
alter database add standby logfile group 5 ‘/u01/app/oracle/oradata/orcl/standby_redo05.log’ size 50M;
alter database add standby logfile group 6 ‘/u01/app/oracle/oradata/orcl/standby_redo06.log’ size 50M;
alter database add standby logfile group 7 ‘/u01/app/oracle/oradata/orcl/standby_redo07.log’ size 50M;
SQL> shutdown immediate;
SQL> startup;
三、备库配置
- 备库环境
操作系统版本 : OEL5.8 x64
数据库版本 : Oracle 11.2.0.3 x64(只装置 oracle 数据库软件,no netca dbca)
数据库名 : slave
数据库 SID : slave
db_unique_name: slave
instance_name : slave
DGMGRL : slave_DGMGRL
- 批改配置 lisener 监听文件
$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = slave)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = slave)
)
(SID_DESC =
(GLOBAL_DBNAME = slave_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = slave)
)
)
ADR_BASE_LISTENER = /u01/app/oracle
其中的 GLOBAL_DBNAME 具备固定的格局:<db_unique_name>_DGMGRL.<db_domain>。
- 批改配置 tnsname.ora 文件
阐明:ORCL 是主库的服务名,DG 是备库的服务名。
$ vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.200)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
SLAVE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = slave)
)
)
测试服务名连通性:
tnsping orcl
tnsping slave
- 创立 11g 数据库根本目录
su – oracle
mkdir -p /u01/app/oracle/admin/slave/{adump,dpdump,pfile,scripts}
mkdir -p /u01/app/oracle/oradata/slave
mkdir -p /u01/app/oracle/fast_recovery_area/slave
mkdir -p /u01/archivelog
- 拷贝主库口令文件并改名
注:10g DG 环境只要求明码雷同,11g DG 则要求与主库完全一致。
否则报无权限谬误。
$ cd /u01/app/oracle/product/11.2.0/db_1/dbs/
$ $ORACLE_HOME/dbs/
$ mv orapworcl orapwslave
测试近程登录
$ sqlplus as sysdba;
$ sqlplus as sysdba;
- 启动到 nomount 状态
$ echo ‘db_name=slave’ > $ORACLE_HOME/dbs/initslave.ora
$ sqlplus /nolog
SQL> conn / as sysdba;
SQL> startup nomount;
四、开始在 RMAN duplicate 数据库
- RMAN 同进连贯主库与备库
$ rman target auxiliary
复原管理器: Release 11.2.0.3.0 – Production on 星期五 8 月 16 21:14:10 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已连贯到指标数据库: ORCL (DBID=1351417842)
已连贯到辅助数据库: SLAVE (未装载)
- 开始 duplicate 数据库
RMAN>
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby nofilenamecheck from active database
dorecover
spfile
parameter_value_convert ‘orcl’,’slave’
set instance_name=’slave’
set db_unique_name=’slave’
set local_listener=’slave’
set db_file_name_convert=’/u01/app/oracle/oradata/orcl/’,’/u01/app/oracle/oradata/slave/’
set log_file_name_convert=’/u01/app/oracle/oradata/orcl/’,’/u01/app/oracle/oradata/slave/’
set control_files=’/u01/app/oracle/oradata/slave/control01.ctl’,’/u01/app/oracle/oradata/slave/control02.ctl’,’/u01/app/oracle/oradata/slave/control03.ctl’
set log_archive_dest_1=’LOCATION=/u01/archivelog/ valid_for=(all_logfiles,all_roles) db_unique_name=slave’
set log_archive_dest_2=’SERVICE=orcl lgwr async valid_for=(online_logfile,primary_role) db_unique_name=orcl’
set log_archive_max_processes=’5′
set standby_file_management=’AUTO’
set fal_client=’slave’
set fal_server=’orcl’;
release channel c1;
release channel c2;
release channel stby;
}
RMAN> quit
复原管理器实现。
- 查看备库状态
阐明:duplicate 数据库之后,备库只是处于 mount 状态,查看页游库状态。
$ sqlplus / as sysdba
查看备库状态
SQL> select open_mode,database_role,db_unique_name from v$database;
OPEN_MODE DATABASE_ROLE DB_UNIQUE_NAME
MOUNTED PHYSICAL STANDBY slave
- 将备库置与利用日志模式状态
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
- 验证物理备库日志利用
1)主库上操作
SQL> conn / as sysdba;
SQL> create user abc identified by abc ;
SQL> grant dba to abc;
SQL> conn abc/abc
SQL> create tablwww.pizei.come abc (id integer , name char(10));
SQL> insert into abc values (0 , ‘aaa’);
SQL> commit;
SQL> conn / as sysdba;
SQL> archive log list;
数据库日志模式 存档模式
主动存档 启用
存档起点 /u01/archivelog/
最早的联机日志序列 8
下一个存档日志序列 10
以后日志序列 10
2)备库上验证
SQL> archive log list
数据库日志模式 存档模式
主动存档 启用
存档起点 /u01/archivelog/
最早的联机日志序列 9
下一个存档日志序列 0
以后日志序列 10
SQL> select sequence#,first_time,next_time,applied from v$archived_log order by sequence#;
SEQUENCE# FIRST_TIME NEXT_TIME APPLIED
7 16- 8 月 -13 16- 8 月 -13 YES
8 16- 8 月 -13 16- 8 月 -13 YES
9 16- 8 月 -13 16- 8 月 -13 IN-MEMORY
通过测试,Oracle 11g dataguard 物理备库创立胜利。
将备库置于 Active DataGuard 模式
在 Oracle 11g 之前,物理备库(physical Standby)在利用 redo 的时候,数据库须要处于 mount 状态。从 11g 开始,利用 redo 的时候,物理备库能够处于 read-only 模式,这就称为 Active Data Guard,这种状态能够实现实时查问性能。
- 备库上操作
1) 查看备库以后状态 mount
SQL> select open_mode,database_role,db_unique_name from v$database;
OPEN_MODE DATABASE_ROLE DB_UNIQUE_NAME
MOUNTED PHYSICAL STANDBY slave
2) 勾销备库的主动复原
SQL> alter database recover managed standby database cancel;
数据库已更改。
3) OPEN 备库为只读模式(Dataguard 只能启动到 readonly 模式)
SQL> alter database open;
数据库已更改。
SQL> select open_mode,database_role,db_unique_name from v$database;
OPEN_MODE DATABASE_ROLE DB_UNIQUE_NAME
READ ONLY PHYSICAL STANDBY slave
4)关上实时利用状态模式
SQL> alter database recover managed standby database using current logfile disconnect;
数据库已更改。
SQL> select open_mode,database_role,db_unique_name from v$database;
OPEN_MODE DATABASE_ROLE DB_UNIQUE_NAME