合 一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + dg
Tags: Oracle安装部署racDG集群部署VMware WorkStationRHEL6.511gR2
- RAC主库准备工作
- ①RAC主库必须置为归档模式:
- ②RAC主库必须置为ForceLogging模式:
- ③RAC主库执行RMAN全备:
- ④RAC主库执行创建物理备库控制文件:
- ⑤RAC主库创建物理备库初始化参数文件:
- ⑥RAC主库修改口令文件,使双节点SYS用户口令一致:
- 物理备库准备工作
- ①FTP主库备份文件+备库控制文件+备库参数文件至物理备库服务器:
- ②物理备库创建口令文件:
- ③物理备库初始化参数文件修改:
- ④配置RAC主库,物理备库的tnsnames.ora文件:
- 创建物理备库
- ①物理备库启动NOMOUNT状态:
- ②RMAN恢复备库控制文件:
- ③MOUNT物理备库:
- ④RMAN restore物理备库:
- ⑤备库上创建standbylogfile:
- ⑥主库参数调整:
- ⑦备库接收主库日志:
- ⑧备库开始应用日志:
- ⑨备库以READONLY方式打开:
- 其它附加内容
- 11g rman duplicate命令
- 创建standby redo log 日志
- 测试物理备库功能
- 测试文件同步
- 查看主备库的表空间信息
- 主库创建表空间查看备库是否同步
- 主库删除表空间查看备库是否同步
- 测试数据同步
- 测试DATAGUARD SWITCHOVER功能
- RAC主库、ActiveDataguard角色切换
- ①主库修改相关参数fal_client、fal_server:
- ②主库创建standbylogfile:
- ③主库修改相关参数standby_file_management、db_file_name_convert 、log_filename_convert
- ④停止RAC节点2:
- ⑤RAC 节点 1 切换原 RAC 主库到备库:
- ⑥ 切换原物理备库到主库角色:
- ⑦ 将原 RAC 主库 2 个实例都启动到 MOUNT 状态:
- ⑧ 原 RAC 主库启动 redo apply:
- ⑨ 原 RAC 主库停止 redo apply,并将 RAC 主库所有节点以 READ ONLY 打开:
- ⑩测试切换后的效果
- 单实例主库,RAC备库角色切换
- ① 新主库(单实例库)状态查看:
- ② 新备库(RAC 库)状态查看:
- ③ 新备库(RAC 库)停止节点 2:
- ④ 新主库(单实例库)切换到备库:
- ⑤新备库(RAC 库)节点 1 切换到主库:
- ⑥ 新备库(RAC 库)全部启动所有节点:
- ⑦ 新备库(单实例库)重新启动并开始 redo apply:
- ⑧ 测试切换后的效果
- 补充说明
RAC主库配置单实例ActiveDataguard
这里配置的过程中需要注意的一项是多看看rac1和rac2以及dg的告警日志会对配置过程有更深刻的理解。。。配置oracle rac的dg环境说白了首先将主库的数据恢复到从库上,然后在主从库上配置一些DG需要用到的参数
注意:
- 由于DG是以DB_UNIQUE_NAME作为区分数据库标识的,因此主从库的该参数一定要不同以做区分。但是数据库名db_name必须一致以便主从切换时方便
- Standby库只需要安装数据库软件,不必创建数据库
- 主从库的数据库软件大版本必须一致,且必须是企业版数据库EE
RAC主库准备工作
该步骤主要是① 将rac主库修改为归档+forcelogging模式 ② 利用rman备份db、archivelog、control file 、pfile 和口令文件
①RAC主库必须置为归档模式:
和下一步一起做
②RAC主库必须置为ForceLogging模式:
alter database force logging;
alter database archivelog; ---归档模式下修改
SQL> alter database force logging;
Database altered.
SQL> select name , open_mode, log_mode,force_logging from gv$database;
NAME OPEN_MODE LOG_MODE FOR
--------- -------------------- ------------ ---
RACDB READ WRITE NOARCHIVELOG YES
RACDB READ WRITE NOARCHIVELOG YES
SQL> exit
[oracle@rac1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Fri Oct 3 15:30:17 2014
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup mount
ORACLE instance started.
Total System Global Area 784998400 bytes
Fixed Size 2232472 bytes
Variable Size 532680552 bytes
Database Buffers 247463936 bytes
Redo Buffers 2621440 bytes
Database mounted.
SQL> select name , open_mode, log_mode,force_logging from gv$database;
NAME OPEN_MODE LOG_MODE FOR
--------- -------------------- ------------ ---
RACDB MOUNTED NOARCHIVELOG YES
SQL> alter database archivelog;
Database altered.
SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> select name , open_mode, log_mode,force_logging from gv$database;
NAME OPEN_MODE LOG_MODE FOR
--------- -------------------- ------------ ---
RACDB READ WRITE ARCHIVELOG YES
RACDB READ WRITE ARCHIVELOG YES
SQL>
③RAC主库执行RMAN全备:
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
backup database format '/rmanbackup/FULL%U.bak';
backup archivelog all format '/rmanbackup/ARC%U.bak';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
④RAC主库执行创建物理备库控制文件:
Rman下:backup device type disk format '/rmanbackup/standby%U.ctl' current controlfile for standby;
或:SQL>alter database create standby controlfile as ‘/dats/backup/standby.ctl’
⑤RAC主库创建物理备库初始化参数文件:
SQL> create pfile ='/rman_backup/initphydb.ora' from spfile;
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/racdb/spfileracdb.ora
SQL>
SQL> show parameter cluster_database
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cluster_database boolean TRUE
cluster_database_instances integer 2
SQL>
⑥RAC主库修改口令文件,使双节点SYS用户口令一致:
最好是将其中一个口令文件复制到另外一个节点上,最后复制到dg下,确保口令文件是一样的
物理备库准备工作
①FTP主库备份文件+备库控制文件+备库参数文件至物理备库服务器:
将备份文件全部传递到dg库:
----rac1
scp /rman_backup/* oracle@192.168.59.140:/rman_backup/
scp /u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwracdb1 oracle@192.168.59.140:/u01/app/oracle/product/11.2.0/dbhome_1/dbs/orapwphydb
②物理备库创建口令文件:
上一步已做,不需要创建了
③物理备库初始化参数文件修改:
----------dg
[oracle@dg rman_backup]$ cp initphydb.ora $ORACLE_HOME/dbs/
[oracle@dg rman_backup]$ cd $ORACLE_HOME/dbs
这个是比较重要的步骤,我把行号弄出来了,当然写的时候是没有前边的行号的
物理备库初始化参数文件修改:
- phydb.__db_cache_size=255852544
- phydb.__java_pool_size=4194304
- phydb.__large_pool_size=4194304
- phydb.__oracle_base='/u01/app/oracle'#ORACLE_BASE environment from set
- phydb.__pga_aggregate_target=419430400
- phydb.__sga_target=423624704
- phydb.__shared_io_pool_size=0
- phydb.__shared_pool_size=146800640
- phydb.__streams_pool_size=0
- *.audit_file_dest='/u01/app/oracle/admin/phydb/adump'
- *.audit_trail='db'
- *.cluster_database=false
- *.compatible='11.2.0.0.0'
- *.control_files='+DATA/phydb/controlfile/cont.ctl'
- *.core_dump_dest='/u01/app/oracle/diag/rdbms/phydb/cdump'
- *.db_block_size=8192
- *.db_create_file_dest='+DATA'
- *.db_domain=''
- *.db_file_name_convert='+DATA/racdb/','+DATA/phydb/'
- *.db_name='racdb'
- *.db_recovery_file_dest='+FRA'
- *.db_recovery_file_dest_size=4070572032
- *.db_unique_name='phydb'
- *.diagnostic_dest='/u01/app/oracle'
- *.dispatchers='(PROTOCOL=TCP)(SERVICE=phydbXDB)'
- *.fal_client='phydb'
- *.fal_server='racdb1','racdb2'
- *.log_archive_config='dg_config=(racdb,phydb)'
- *.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=phydb'
- *.log_archive_dest_2='service=racdb1 valid_for=(online_logfiles,primary_role) db_unique_name=racdb'
- *.log_archiveformat='ARC%t%S%r.arc'
- *.log_file_name_convert='+DATA/racdb/','+DATA/phydb/'
- *.memory_target=842006528
- *.open_cursors=300
- *.processes=150
- *.remote_login_passwordfile='exclusive'
- *.service_names='phydb'
- *.standby_file_management='auto'
- *.thread=1
- *.undo_management='auto'
- *.undo_tablespace='UNDOTBS1'
[oracle@dg dbs]$ mkdir -p /u01/app/oracle/admin/phydb/adump
[oracle@dg dbs]$ mkdir -p /u01/app/oracle/diag/rdbms/phydb/cdump
[oracle@dg dbs]$
[grid@dg ~]$ asmcmd
ASMCMD> ls
DATA/
FRA/
GRIDDG/
ASMCMD> cd DATA
ASMCMD> ls
ASMCMD> mkdir phydb
ASMCMD> ls
phydb/
ASMCMD>
④配置RAC主库,物理备库的tnsnames.ora文件:
将以下内容复制到rac1,rac2和dg库:
racdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.139)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb.lhr.com)
)
)
racdb1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.135)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb.lhr.com)
(INSTANCE_NAME = racdb1)
)
)
racdb2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.136)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb.lhr.com)
(INSTANCE_NAME = racdb2)
)
)
phydb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.59.140)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = phydb)
)
)
验证一下:
分别在3个库上执行:
sqlplus sys/lhr@racdb as sysdba
sqlplus sys/lhr@racdb1 as sysdba
sqlplus sys/lhr@racdb2 as sysdba
确保3个库可以连接
创建物理备库
①物理备库启动NOMOUNT状态:
startup nomount
[oracle@dg dbs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Sat Oct 25 20:12:54 2014
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2233000 bytes
Variable Size 574623064 bytes
Database Buffers 260046848 bytes
Redo Buffers 2379776 bytes
SQL>
②RMAN恢复备库控制文件:
[oracle@dg dbs]$ rman target /
Recovery Manager: Release 11.2.0.3.0 - Production on Fri Oct 3 19:06:52 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: RACDB (not mounted)
RMAN> restore standby controlfile from '/rman_backup/standby_0tpk53jq_1_1.ctl';
Starting restore at 2014-10-03 19:06:55
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=16 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
output file name=+DATA/phydb/controlfile/cont.ctl
Finished restore at 2014-10-03 19:07:22
RMAN>
③MOUNT物理备库:
SQL> alter database mount;
或rman下:
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
RMAN>
④RMAN restore物理备库:
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
restore database ;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
RMAN> restore database ;
Starting restore at 2014-10-03 19:13:48
Starting implicit crosscheck backup at 2014-10-03 19:13:48
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=32 device type=DISK
Crosschecked 6 objects
Finished implicit crosscheck backup at 2014-10-03 19:13:49
Starting implicit crosscheck copy at 2014-10-03 19:13:49
using channel ORA_DISK_1
Finished implicit crosscheck copy at 2014-10-03 19:13:49
searching for all files in the recovery area
cataloging files...
no files cataloged
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to +DATA/phydb/datafile/system.256.859849357
channel ORA_DISK_1: restoring datafile 00004 to +DATA/phydb/datafile/users.259.859849357
channel ORA_DISK_1: restoring datafile 00005 to +DATA/phydb/datafile/example.264.859849549
channel ORA_DISK_1: reading from backup piece /rman_backup/FULL_0npk5395_1_1.bak
channel ORA_DISK_1: piece handle=/rman_backup/FULL_0npk5395_1_1.bak tag=TAG20141003T164524
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:04:23
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00002 to +DATA/phydb/datafile/sysaux.257.859849357
channel ORA_DISK_1: restoring datafile 00003 to +DATA/phydb/datafile/undotbs1.258.859849357
channel ORA_DISK_1: restoring datafile 00006 to +DATA/phydb/datafile/undotbs2.265.859849971
channel ORA_DISK_1: reading from backup piece /rman_backup/FULL_0opk53c4_1_1.bak
channel ORA_DISK_1: piece handle=/rman_backup/FULL_0opk53c4_1_1.bak tag=TAG20141003T164524
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:01:45
Finished restore at 2014-10-03 19:20:01
RMAN>
⑤备库上创建standbylogfile:
set line 9999
set pagesize 9999
col name format a100
select 'datafile' , name from v$datafile
union
select 'controlfile', name from v$controlfile
union
select 'logfile', member from v$logfile;
-----dg库
SQL> select name from v$datafile
2 union
3 select name from v$controlfile
4 union
5 select member from v$logfile;
NAME
--------------------------------------------------------------------------------
+DATA/phydb/controlfile/cont.ctl
+DATA/phydb/datafile/example.258.860008433
+DATA/phydb/datafile/sysaux.260.860008695
+DATA/phydb/datafile/system.257.860008433
+DATA/phydb/datafile/undotbs1.261.860008697
+DATA/phydb/datafile/undotbs2.262.860008697
+DATA/phydb/datafile/users.259.860008435
+DATA/phydb/onlinelog/group_1.261.859849493