实验: 把数据库迁移到ASM(完全恢复)

网络很多帖子介绍的都是不完全恢复的方法.

注意: 迁移前要保证是归档状态下.

1 迁移在线重做日志文件

迁移重做日志的方法与不完全恢复的做法是一致的。在ASM上有两个磁盘组,一个是DATA,一个是FRA

1.1 修改参数

SQL> show parameter db_create;

NAME                                  TYPE         VALUE

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

db_create_file_dest                 string

db_create_online_log_dest_1         string

db_create_online_log_dest_2         string

db_create_online_log_dest_3         string

db_create_online_log_dest_4         string

db_create_online_log_dest_5         string

SQL> alter system set db_create_online_log_dest_1 = '+DATA';

System altered.

SQL> alter system set db_create_file_dest = '+DATA';

System altered.

SQL> alter system set db_recovery_file_dest = '+FRA';

System altered.

SQL> show parameter db_create;

NAME                                  TYPE         VALUE

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

db_create_file_dest                 string         +DATA

db_create_online_log_dest_1         string         +DATA

db_create_online_log_dest_2         string

db_create_online_log_dest_3         string

db_create_online_log_dest_4         string

db_create_online_log_dest_5         string

SQL> show parameter db_recovery

NAME                                   TYPE         VALUE

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

db_recovery_file_dest                string          +FRA

db_recovery_file_dest_size      big integer            2G

1.2 增加日志组

增加日志组,新的日志组路径指向ASM,并删除旧的日志组

SQL> alter database add logfile group 4 size 25M;

Database altered.

SQL> alter database add logfile group 5 size 25M;

Database altered.

SQL> alter database add logfile group 6 size 25M;

Database altered.

SQL> select group#,status from v$log;

    GROUP# STATUS

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

         1 INACTIVE

         2 INACTIVE

         3 CURRENT

         4 UNUSED

         5 UNUSED

         6 UNUSED

6 rows selected.

1.3 删除日志组

SQL> alter database drop logfile group 1;

Database altered.

SQL> alter database drop logfile group 2;

Database altered.

SQL> alter system switch logfile;

System altered.

SQL> alter system checkpoint;

System altered.

SQL> alter database drop logfile group 3;

Database altered.

1.4 查看ASM日志组

此时可以看到在ASM上的日志组信息:

[oracle@cent4 ~]$ export ORACLE_SID=+ASM

[oracle@cent4 ~]$ asmcmd

ASMCMD> ls

DATA/

FRA/

ASMCMD> cd data

ASMCMD> cd test

ASMCMD> cd onlinelog

ASMCMD> ls

group_4.256.752606807

group_5.257.752606815

group_6.258.752606821

ASMCMD> pwd

+data/test/onlinelog

2 迁移数据文件

迁移数据文件要在mount的状态下进行。

2.1 原数据库切换到mount状态下

SQL> shutdown immediate

SQL> startup mount

2.2 rman下迁移数据文件

[oracle@cent4 ~]$ rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on 星期二 5 31 17:29:36 2011

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

connected to target database: TEST (DBID=2050570208, not open)

RMAN> backup as copy database format '+DATA';

Starting backup at 2011-05-31 17:29:54

using target database control file instead of recovery catalog

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=100 devtype=DISK

channel ORA_DISK_1: starting datafile copy

input datafile fno=00001 name=/oradata/test/system01.dbf

output filename=+DATA/test/datafile/system.259.752606999 tag=TAG20110531T172955 recid=2 stamp=752607035

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:45

channel ORA_DISK_1: starting datafile copy

input datafile fno=00003 name=/oradata/test/sysaux01.dbf

output filename=+DATA/test/datafile/sysaux.260.752607043 tag=TAG20110531T172955 recid=3 stamp=752607059

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25

channel ORA_DISK_1: starting datafile copy

input datafile fno=00005 name=/oradata/test/example01.dbf

output filename=+DATA/test/datafile/example.261.752607067 tag=TAG20110531T172955 recid=4 stamp=752607075

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15

channel ORA_DISK_1: starting datafile copy

input datafile fno=00002 name=/oradata/test/undotbs01.dbf

output filename=+DATA/test/datafile/undotbs1.262.752607083 tag=TAG20110531T172955 recid=5 stamp=752607084

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07

channel ORA_DISK_1: starting datafile copy

input datafile fno=00004 name=/oradata/test/users01.dbf

output filename=+DATA/test/datafile/users.263.752607089 tag=TAG20110531T172955 recid=6 stamp=752607089

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01

channel ORA_DISK_1: starting datafile copy

copying current control file

output filename=+DATA/test/controlfile/backup.264.752607091 tag=TAG20110531T172955 recid=7 stamp=752607091

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03

channel ORA_DISK_1: starting full datafile backupset

channel ORA_DISK_1: specifying datafile(s) in backupset

including current SPFILE in backupset

channel ORA_DISK_1: starting piece 1 at 2011-05-31 17:31:34

channel ORA_DISK_1: finished piece 1 at 2011-05-31 17:31:35

piece handle=+DATA/test/backupset/2011_05_31/nnsnf0_tag20110531t172955_0.265.752607095 tag=TAG20110531T172955 comment=NONE

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02

Finished backup at 2011-05-31 17:31:35

 

RMAN> switch database to copy;

datafile 1 switched to datafile copy "+DATA/test/datafile/system.259.752606999"

datafile 2 switched to datafile copy "+DATA/test/datafile/undotbs1.262.752607083"

datafile 3 switched to datafile copy "+DATA/test/datafile/sysaux.260.752607043"

datafile 4 switched to datafile copy "+DATA/test/datafile/users.263.752607089"

datafile 5 switched to datafile copy "+DATA/test/datafile/example.261.752607067"

2.3 查看ASM数据文件

ASMCMD中看到的结果:

ASMCMD> ls

EXAMPLE.261.752607067

SYSAUX.260.752607043

SYSTEM.259.752606999

UNDOTBS1.262.752607083

USERS.263.752607089

3 迁移控制文件

3.1 从跟踪文件中获取建库脚本

最好要在做完日志文件迁移与数据文件迁移后, 再生成控制文件. 这样子, 生成的脚本中对应数据文件与日志文件的路径等参数不要做修改.

SQL> alter database backup controlfile to trace as '/home/oracle/ctl.txt';

编缉控制文件后(删头去尾),得到如下的内容:

[oracle@cent4 ~]$ cat ctl.txt

CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 4 '+DATA/test/onlinelog/group_4.256.752606807'  SIZE 25M,

  GROUP 5 '+DATA/test/onlinelog/group_5.257.752606815'  SIZE 25M,

  GROUP 6 '+DATA/test/onlinelog/group_6.258.752606821'  SIZE 25M

DATAFILE

  '+DATA/test/datafile/system.259.752606999',

  '+DATA/test/datafile/undotbs1.262.752607083',

  '+DATA/test/datafile/sysaux.260.752607043',

  '+DATA/test/datafile/users.263.752607089',

  '+DATA/test/datafile/example.261.752607067'

CHARACTER SET ZHS16GBK

;

3.2 切换控制文件路径

SQL> shutdown immediate

SQL> startup nomount

SQL> show parameter control_files

NAME             TYPE             VALUE

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

control_files    string           /oradata/test/control01.ctl,

                                  /oradata/test/control02.ctl,

                                  /oradata/test/control03.ctl

SQL> alter system set control_files='+DATA','+FRA' scope=spfile;

System altered.

3.3 nomount状态下切换控制文件路径

这里还要再重启一下, 保证修改的控制文件路径的参数生效.

SQL> shutdown immediate

SQL> startup nomount

SQL> @/home/oracle/ctl.txt

Control file created.

3.4 打开数据库并创建临时表空间

要生成临时文件, 在脚本中这一段被我删去了.

SQL> alter database open;

Database altered.

SQL> alter tablespace temp add tempfile size 20M;

Tablespace altered.

4 迁移参数文件

4.1 切换参数文件路径

SQL> create pfile from spfile;

File created.

SQL> show parameter spfile

NAME               TYPE         VALUE

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

spfile             string      /u01/app/oracle/product/10.2.0/db_1/dbs/spfiletest.ora

SQL> create spfile='+DATA' from pfile;

File created.

删除spfile, 编辑pfile, 保证路径指向ASM中的参数文件

[oracle@cent4 dbs]$ rm spfiletest.ora

[oracle@cent4 dbs]$ vi inittest.ora

修改参数文件inittest.ora,内容改成如下:

spfile=+data/orcl/PARAMETERFILE/spfile.268.752608305

4.2 查看参数文件

ASMCMD> ls

BACKUPSET/

CONTROLFILE/

DATAFILE/

ONLINELOG/

PARAMETERFILE/

TEMPFILE/

ASMCMD> cd parameterfile

ASMCMD> ls

spfile.268.752608305

ASMCMD> pwd

+data/test/parameterfile

5 验证迁移

重启后验证参数文件与三大数据库文件.

5.1 参数文件

SQL> show parameter spfile

NAME               TYPE        VALUE

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

spfile             string      +DATA/orcl/parameterfile/spfile.268.752608305

5.2 控制文件

SQL> show parameter control_files

NAME               TYPE        VALUE

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

control_files      string      +DATA/test/controlfile/current.266.752607653,

                               +FRA/test/controlfile/current.257.752607653

5.3 数据文件

SQL> col file_name format a50

SQL> col tablespace_name format a20

SQL> select file_name, tablespace_name from dba_data_files;

FILE_NAME                                          TABLESPACE_NAME

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

+DATA/test/datafile/example.261.752607067          EXAMPLE

+DATA/test/datafile/users.263.752607089            USERS

+DATA/test/datafile/sysaux.260.752607043           SYSAUX

+DATA/test/datafile/undotbs1.262.752607083         UNDOTBS1

+DATA/test/datafile/system.259.752606999           SYSTEM

5.4 日志文件

SQL> col member format a45

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER                                         IS_

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

         4 STALE   ONLINE  +DATA/test/onlinelog/group_4.256.752606807     NO

         6 STALE   ONLINE  +DATA/test/onlinelog/group_6.258.752606821     NO

         5         ONLINE  +DATA/test/onlinelog/group_5.257.752606815     NO

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值