单实例迁移至 RAC 环境
单实例迁移至 RAC 环境
-------By phoenix(276493290)
1
单实例迁移至 RAC 环境
目录
一、 环境预览 ........................................................................................................................... 3
1.1. 配置预览 ....................................................................................................................... 3
1.1.1、 前期准备工作 ....................................................................................................... 3
1.1.2、 网络服务配置 ....................................................................................................... 3
1.1.2.1、单实例端配置 .................................................................................................... 3
1.1.2.1.2、RAC 端配置 ..................................................................................................... 4
二、克隆方式迁移 ........................................................................................................................... 5
2.1、克隆方式迁移 .................................................................................................................. 5
2.1.1、迁移思路 ............................................................................................................... 5
2.1.2、切换到 RAC 模式 ................................................................................................ 16
2.2、rman 方式迁移 .............................................................................................................. 25
2.2.1、迁移思路 ............................................................................................................. 25
2.2.2、恢复数据库 ......................................................................................................... 26
2.2.3、切换到 RAC 模式 ................................................................................................ 32
2
单实例迁移至 RAC 环境
一、 环境预览
1.1. 配置预览
1.1.1、 前期准备工作
单实例数据库:
数据库版本:11.2.0.3
RAC 数据库:
数据库版本:11.2.0.3
1.1.2、 网络服务配置
1.1.2.1、单实例端配置
tnsnames.ora 配置如下:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.21)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
target =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.12)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(UR = A)
3
单实例迁移至 RAC 环境
)
)
1.1.2.1.2、RAC 端配置
1):修改 grid 用户下的 listener.ora 文件
增加如下内容,增加该内容是为了源端在进行 duplicate 命令时需要重启目标端的数据库,
如果不增加以下内容,那么在启动目标端数据库时会报错,说找不到监听中表述的连接符。
增加以下内容是为了能静态注册数据库,不论数据库是否启动监听总是注册数据库服务名
Su – grid
Vi $ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /oracle/product/11.2.1.2)
(SID_NAME = orcl)
)
)
注意:
该内容是增加到集群监听文件中,不是 oracle 用户下的监听文件中
4
单实例迁移至 RAC 环境
二、单实例迁移至 RAC
2.1、克隆方式迁移
2.1.1、迁移思路
1. 配置目标端的监听文件,使源端可以连接到目标端。
2. 配置源端的 tnsnames 文件。
3. 源端创建 pfile 文件,根据实际情况修改必要参数并传输到目标端用于启动数据库。
4. 目标端根据修改的参数文件启动数据库。
5. 源端传输密码文件至目标端,防止 rman 在连接目标端时报无权限的错误。
6. 根据修改的参数文件启动目标端。
7. 克隆数据库。
8. 待目标端数据库 open 以后增加第二节点的 undo 和 redo 并开启第二节点。
9. 目标端拷贝一个 RAC 环境的 pfile 文件过来,修改必要参数。
10. 目标端以 RAC 环境的 pfile 文件启动。
11. 目标端根据 pfile 文件创建 spfile 文件(spfile 文件放到共享存储上)。
12. 目标端修改或者而添加 init$ORACLE_SID 文件。
13. 注册数据库到集群。
14. 测试集群能否启停数据库。
2.1.1.1、源端配置(单实例)
1):source 端(192.168.1.10)
创建 pfile 文件并传输到 target(192.168.1.10)端
[oracle@dan ~]$ sqlplus / as sysdba
SQL> create pfile='/home/oracle/pfile.ora' from spfile;
2):传输到 target 端
[oracle@dan ~]$ scp pfile.ora oracle@192.168.1.10:/home/oracle/
3):传输密码文件至 RAC01 节点
[oracle@dan dbs]$ scp orapworcl oracle@192.168.1.10:/oracle/product/11.2.1.2/dbs
2.1.1.2、配置目标端(RAC)
1):修改 pifle 参数文件
[oracle@RAC01 ~]$ cat pfile.ora
orcl.__db_cache_size=230686720
5
单实例迁移至 RAC 环境
orcl.__java_pool_size=4194304
orcl.__large_pool_size=4194304
orcl.__oracle_base='/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=251658240
orcl.__sga_target=369098752
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=121634816
orcl.__streams_pool_size=0
*.audit_file_dest='/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/oracle/oradata/orcl/control01.ctl','/oracle/oradata/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4322230272
*.diagnostic_dest='/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.log_archive_format='%t_%s_%r.dbf'
*.memory_target=618659840
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.undo_tablespace='UNDOTBS1'
--修改标红的目录位置,如果没有则创建并且增加以下参数文件
DB_FILE_name_CONVERT=('/oracle/oradata/orcl ','+datavg01/orcl')
LOG_FILE_NAME_CONVERT=( '/oracle/oradata/orcl ','+datavg01/orcl ')
该参数的作用是转换数据文件路径
2):创建相应目录
节点 1:
[oracle@RAC01 ~]$ mkdir -p /oracle/admin/orcl1/adump
[grid@RAC01 ~]$ asmcmd
ASMCMD> lsdg
ASMCMD> ls
ASMCRS/
DATAVG01/
ASMCMD> cd datavg01
ASMCMD> mkdir orcl
ASMCMD>
节点 2:
[oracle@RAC01 ~]$ mkdir -p /oracle/admin/orcl2/adump
6
单实例迁移至 RAC 环境
2.1.1.3、目标端启动数据库
1):以修改过的 pfile 参数文件启动目标端数据库
SQL> startup nomount pfile=pfile.ora
ORACLE instance started.
Total System Global Area 617975808 bytes
Fixed Size 2230872 bytes
Variable Size 381683112 bytes
Database Buffers 230686720 bytes
Redo Buffers 3375104 bytes
[oracle@RAC01 ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 08-OCT-2014 16:12:15
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 08-OCT-2014 15:49:24
Uptime 0 days 0 hr. 22 min. 52 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /grid/asm/network/admin/listener.ora
Listener Log File /grid/base/diag/tnslsnr/RAC01/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.10)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.12)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "orcl" has 2 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
7
单实例迁移至 RAC 环境
因为数据库没有 mount 所以现在监听是 blocked 状态
2.1.1.4、源端克隆数据库
单实例端执行
[oracle@dan dbs]$ rman target / auxiliary sys/oracle@target
Recovery Manager: Release 11.2.0.3.0 - Production on Wed Oct 8 15:29:59 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1388190232)
connected to auxiliary database: ORCL (not mounted)
RMAN> duplicate target database to 'orcl' from active database nofilenamecheck;
Starting Duplicate Db at 08-OCT-14
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=33 device type=DISK
contents of Memory Script:
{
sql clone "create spfile from memory";
}
executing Memory Script
sql statement: create spfile from memory
contents of Memory Script:
{
shutdown clone immediate;
startup clone nomount;
}
executing Memory Script
Oracle instance shut down
connected to auxiliary database (not started)
Oracle instance started
8