Oracle11g从单实例+ASM迁移至RAC+ASM

前几天部门同事在做项目的时候,客户要求将单实例+ASM的数据库迁移至RAC+ASM,事后,这位大神整理了一些思路和操作细节发表在了公司的公众号上,我看到以后手痒,所以打算自己做个实验,写一个完整的全步骤,以此来提升自己的技能、总结迁移过程中的思路,同时向该大神致敬!

我的虚拟机环境配置如下:

单实例+ASM:

IP地址:192.168.29.60  内存1g  主机名mtxdb 

RAC+ASM

IP地址:192.168.29.61  内存1g  主机名qianyi1  实例名mtxdb1

IP地址:192.168.29.62  内存1g  主机名qianyi2  实例名mtxdb2

共享存储是我在虚拟机中加的6块(每块大小3个G)共享磁盘,没分区,直接通过raw命令做的裸设备,然后绑定UDEV,具体配置如下:

ll /dev/raw*
total 0
crw-rw---- 1 grid asmadmin 162, 1 Jun 12 21:38 raw1
crw-rw---- 1 grid asmadmin 162, 2 Jun 12 21:38 raw2
crw-rw---- 1 grid asmadmin 162, 3 Jun 12 22:06 raw3
crw-rw---- 1 grid asmadmin 162, 4 Jun 12 21:38 raw4
crw-rw---- 1 grid asmadmin 162, 5 Jun 12 21:38 raw5
crw-rw---- 1 grid asmadmin 162, 6 Jun 12 21:38 raw6

more /etc/udev/rules.d/60-raw.rules

ACTION=="add", KERNEL=="/dev/sdb", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VBd7206812-68689e75", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="/dev/sdc", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VBde4d5bfc-6d91bbfd", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="/dev/sdd", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB1f49a410-5771ec25", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="/dev/sde", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB37be5bc0-b9a407ef", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="/dev/sdf", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB61fe4de3-5a9178bf", RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add", KERNEL=="/dev/sdg", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="1ATA_VBOX_HARDDISK_VB363c90c6-23361f67", RUN+="/bin/raw /dev/raw/raw6 %N"
KERNEL=="raw[1-6]", OWNER=="grid", GROUP="asmadmin", MODE="660"

单实例+ASM使用了raw1和raw2作为数据盘,RAC使用了raw3作为OCR和votedisk

本实验主要注重迁移的过程和思路,所以本次环境的搭建过程省略。

我现在单实例的数据库已经处于open状态,RAC端只装好了GI软件,下面开始进入迁移阶段。

1.注意修改RAC端共享存储的属主和权限(gird:asmadmin,660)

2.收集源端磁盘组的信息:

SQL> set lines 200
SQL> col name for a10
SQL> col path for a15
SQL> col failgroup for a10
SQL> select name,total_mb,free_mb,group_number,disk_number,path,failgroup,mount_status,header_status,name
  2  from v$asm_disk order by failgroup;

NAME         TOTAL_MB    FREE_MB GROUP_NUMBER DISK_NUMBER PATH            FAILGROUP  MOUNT_STAT HEADER_STA NAME
---------- ---------- ---------- ------------ ----------- --------------- ---------- ---------- ---------- ----------
DATA_0000        3072       2253            1           0 /dev/raw/raw1   DATA_0000  CACHED     MEMBER     DATA_0000
DATA_0001        3072       2255            1           1 /dev/raw/raw2   DATA_0001  CACHED     MEMBER     DATA_0001
                    0          0            0           1 /dev/raw/raw5              CLOSED     FORMER
                    0          0            0           2 /dev/raw/raw4              CLOSED     FORMER
                    0          0            0           0 /dev/raw/raw6              CLOSED     FORMER
                    0          0            0           3 /dev/raw/raw3              CLOSED     MEMBER

3.备份磁盘头信息

[grid@mtxdb ~]$ kfed read /dev/raw/raw1 text=raw1.txt
[grid@mtxdb ~]$ kfed read /dev/raw/raw2 text=raw2.txt

4.单实例端关闭数据库和GI

[oracle@mtxdb ~]$ srvctl stop database -d mtxdb
[root@mtxdb ~]# /u01/app/grid/product/11.2.0/grid/bin/crsctl stop has -f
CRS-2791: Starting shutdown of Oracle High Availability Services-managed resources on 'mtxdb'
CRS-2673: Attempting to stop 'ora.DATA.dg' on 'mtxdb'
CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'mtxdb'
CRS-2677: Stop of 'ora.DATA.dg' on 'mtxdb' succeeded
CRS-2673: Attempting to stop 'ora.asm' on 'mtxdb'
CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'mtxdb' succeeded
CRS-2677: Stop of 'ora.asm' on 'mtxdb' succeeded
CRS-2673: Attempting to stop 'ora.cssd' on 'mtxdb'
CRS-2677: Stop of 'ora.cssd' on 'mtxdb' succeeded
CRS-2673: Attempting to stop 'ora.evmd' on 'mtxdb'
CRS-2677: Stop of 'ora.evmd' on 'mtxdb' succeeded
CRS-2793: Shutdown of Oracle High Availability Services-managed resources on 'mtxdb' has completed
CRS-4133: Oracle High Availability Services has been stopped.

5.RAC端使用asmca命令挂载磁盘组asmca命令自动扫描相关磁盘并将可用磁盘组列出,点击mount all之后会挂载盘组(相关盘组资源会自动加载进集群资源)




6.安装数据库软件(仅仅只是安装)在database路径下直接运行./runInstaller,过程略

7.设置Oracle参数文件

源端创建pfile,并将pfile和密码文件scp到目标端

[oracle@mtxdb dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Wed Jun 13 00:41:48 2018

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> create pfile='/home/oracle/initmtxdb.ora' from spfile;

File created.
[oracle@mtxdb ~]$ scp initmtxdb.ora 192.168.29.61:/u01/app/oracle/product/11.2.0/db/dbs/spfilemtxdb1.ora
[oracle@mtxdb ~]$ scp initmtxdb.ora 192.168.29.62:/u01/app/oracle/product/11.2.0/db/dbs/spfilemtxdb2.ora
[oracle@mtxdb dbs]$ scp orapwmtxdb 192.168.29.61:/u01/app/oracle/product/11.2.0/db/dbs/orapwmtxdb1
oracle@192.168.29.61's password: 
orapwmtxdb                                              100% 1536     1.5KB/s   00:00    
[oracle@mtxdb dbs]$ scp orapwmtxdb 192.168.29.62:/u01/app/oracle/product/11.2.0/db/dbs/orapwmtxdb2
oracle@192.168.29.62's password: 
orapwmtxdb                                              100% 1536     1.5KB/s   00:00

8.目标端修改pfile内的相应参数,增加的参数如下(注意,db_name不能修改,因为数据库名是不变的,这始终是一套数据库):

我只改了目标端其中一个节点上的参数文件,在RAC中,SPFILE是放在ASM磁盘组里的,两个节点共享一个参数文件

*.cluster_database=true
*.REMOTE_LISTENER='qianyi-scan:1521'
mtxdb1.instance_name=mtxdb1
mtxdb2.instance_name=mtxdb2
mtxdb1.instance_number=1
mtxdb2.instance_number=2
mtxdb1.undo_tablespace='UNDOTBS1'
mtxdb2.undo_tablespace='UNDOTBS2'
mtxdb1.thread=1
mtxdb2.thread=2

9.创建spfile,并将spfile文件存放到ASM中,同时配置两个节点的pfile文件

SQL> create spfile='+DATA/mtxdb/spfilemtxdb.ora' from pfile;

File created.

SQL> exit

[oracle@qianyi1 dbs]$ vi initmtxdb1.ora 
spfile='+DATA/mtxdb/spfilemtxdb.ora'

10.在两台目标端创建所需要的目录

mkdir -p /u01/app/oracle/admin/mtxdb/adump

11.把数据库和实例注册到集群环境中

[oracle@qianyi1 dbs]$ srvctl add database -d mtxdb -o /u01/app/oracle/product/11.2.0/db
[oracle@qianyi1 dbs]$ srvctl add instance -d mtxdb -i mtxdb1 -n qianyi1
[oracle@qianyi1 dbs]$ srvctl add instance -d mtxdb -i mtxdb2 -n qianyi2
[oracle@qianyi1 dbs]$ srvctl config database -d mtxdb
Database unique name: mtxdb
Database name: 
Oracle home: /u01/app/oracle/product/11.2.0/db
Oracle user: oracle
Spfile: 
Domain: 
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: mtxdb
Database instances: mtxdb1,mtxdb2
Disk Groups: 
Mount point paths: 
Services: 
Type: RAC

Database is administrator managed

12.修改Oracle权限(两个节点都要执行)

[grid@qianyi1 ~]$ cd $ORACLE_HOME/bin

setasmgidwrap -o /u01/app/oracle/product/11.2.0/db/bin/oracle

13.启动Oracle实例并打开数据库

[oracle@qianyi1 dbs]$ srvctl start instance -d mtxdb -i mtxdb1

14.增加实例2的redolog以及undotbs2表空间

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                                       IS_
---------- ------- ------- ------------------------------------------------------------ ---
         3         ONLINE  +DATA/mtxdb/onlinelog/group_3.263.978538691                  NO
         2         ONLINE  +DATA/mtxdb/onlinelog/group_2.262.978538689                  NO
         1         ONLINE  +DATA/mtxdb/onlinelog/group_1.261.978538687                  NO

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1          4   52428800        512          1 NO  INACTIVE                949926 11-JUN-18       963133 11-JUN-18
         2          1          5   52428800        512          1 NO  INACTIVE                963133 11-JUN-18       974146 12-JUN-18
         3          1          6   52428800        512          1 NO  CURRENT                 974146 12-JUN-18   2.8147E+14

SQL> alter database add logfile thread 2 group 4 '+DATA' size 50m reuse;

Database altered.

SQL> alter database add logfile thread 2 group 5 '+DATA' size 50m reuse;

Database altered.

SQL> alter database add logfile thread 2 group 6 '+DATA' size 50m reuse;

Database altered.

SQL> create undo tablespace UNDOTBS2 datafile '+DATA' size 1G;

Tablespace created.

15.启动集群线程2

SQL> alter database enable public thread 2;

Database altered.

SQL> select thread#,status,enabled from v$thread;

   THREAD# STATUS ENABLED
---------- ------ --------
         1 OPEN   PUBLIC
         2 CLOSED PUBLIC

注意:如果thread2为private,可以采用下面的方法修改

关闭instance mtxdb2,重启至nomount状态。在现有一个instanceORCL1上操作:

alter database disable thread 2;

alter database enable public thread 2;

再开启mtxdb2

16.创建集群相关视图

SQL> @$ORACLE_HOME/rdbms/admin/catclust.sql

Package created.

Package body created.

PL/SQL procedure successfully completed.

View created.

Synonym created.

Grant succeeded.

View created.

Grant succeeded.

Synonym created.

View created.

Grant succeeded.

Synonym created.

View created.

Grant succeeded.

Synonym created.

View created.

Grant succeeded.

Synonym created.

View created.

Grant succeeded.

Synonym created.

View created.

Grant succeeded.

Synonym created.

View created.

Grant succeeded.

Synonym created.

View created.

Grant succeeded.

View created.

Grant succeeded.

Synonym created.

Synonym created.

Synonym created.

Synonym created.

Synonym created.

Synonym created.

Synonym created.

Synonym created.

Synonym created.

Synonym created.

Synonym created.

Synonym created.

View created.

Grant succeeded.

Synonym created.

View created.

Grant succeeded.

Synonym created.

PL/SQL procedure successfully completed.

17.启动实例2并验证

srvctl start instance -d mtxdb -i mtxdb2

SQL> select instance_name,status from gv$instance;


INSTANCE_NAME    STATUS
---------------- ------------
mtxdb1           OPEN
mtxdb2           OPEN
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值