ITPub博客

首页 > 数据库 > Oracle > ASM (2)

ASM (2)

原创 Oracle 作者:zhyuh 时间:2007-01-30 10:32:39 0 删除 编辑
========================
二、将数据库转移到ASM上
========================
[@more@]

我们用RMAN实现这一功能。在转移数据库以前,先设若干跟文件存储位置相关的参数。

C:¥oracle¥product¥10.2.0¥db_1¥database>set oracle_sid=orcl

C:¥oracle¥product¥10.2.0¥db_1¥database>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 12月 28 10:38:52 2006

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

SQL> connect/ as sysdba
已连接。
SQL> show parameter db_create_file_dest

NAME                  TYPE      VALUE                        
--------------------- --------- ------------------------------
db_create_file_dest   string    C:¥oracle¥product¥10.2.0¥orada
ta
SQL> alter system set db_create_file_dest='+DGROUP1' scope=spfile;

系统已更改。

SQL> alter system set db_recovery_file_dest='+DGROUP1' scope=spfile;

系统已更改。

SQL> alter system set db_recovery_file_dest_size=3000M scope=spfile;

系统已更改。

SQL> alter system reset control_files scope=spfile  sid='*';

系统已更改。

ALTER SYSTEM RESET 命令用来在SPFILE中删除(unset)参数,此处用来删除control_file参数,因为移到ASM上后需要重建control file。


将数据库重启到nomount状态。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup nomount
ORACLE 例程已经启动。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             272632708 bytes
Database Buffers          331350016 bytes
Redo Buffers                7135232 bytes
SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开

启动RMAN。
C:¥oracle¥product¥10.2.0¥db_1¥database>rman target /

恢复管理器: Release 10.2.0.1.0 - Production on 星期四 12月 28 10:42:58 2006

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

连接到目标数据库: orcl (未装载)

RMAN> restore controlfile from
'C:¥oracle¥product¥10.2.0¥oradata¥ORCL¥CONTROLFILE¥O1_MF_2OT4KXWB_.CTL';

启动 restore 于 28-12月-06
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK

通道 ORA_DISK_1: 已复制控制文件副本
输出文件名=+DGROUP1/orcl/controlfile/backup.256.610368623
输出文件名=+DGROUP1/orcl/controlfile/backup.257.610368627
完成 restore 于 28-12月-06

由于参数CREATE_FILE_DEST和RECOVERY_FILE_DEST都进行了设置,所以创建了2份controlfile。

转移数据库时使用命令 BACKUP AS COPY DATABASE...
RMAN> alter database mount;

数据库已装载
释放的通道: ORA_DISK_1

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

启动 backup 于 28-12月-06
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=153 devtype=DISK
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00001 name=C:¥ORACLE¥PRODUCT¥10.2.0¥ORADATA¥ORCL¥DATAFILE¥O1_MF_SYSTEM_2OT4J2H4_.DBF
输出文件名 = +DGROUP1/orcl/datafile/system.258.610368679 标记 = TAG20061228T105117 recid = 1 时间戳 = 610368724
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:56
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00003 name=C:¥ORACLE¥PRODUCT¥10.2.0¥ORADATA¥ORCL¥DATAFILE¥O1_MF_SYSAUX_2OT4J2J3_.DBF
输出文件名 = +DGROUP1/orcl/datafile/sysaux.259.610368733 标记 = TAG20061228T105117 recid = 2 时间戳 = 610368759
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:35
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00002 name=C:¥ORACLE¥PRODUCT¥10.2.0¥ORADATA¥ORCL¥DATAFILE¥O1_MF_UNDOTBS1_2OT4J2M1_.DBF
输出文件名 = +DGROUP1/orcl/datafile/undotbs1.260.610368769 标记 = TAG20061228T105117 recid = 3 时间戳 = 610368771
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:04
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00004 name=C:¥ORACLE¥PRODUCT¥10.2.0¥ORADATA¥ORCL¥DATAFILE¥O1_MF_USERS_2OT4J2M1_.DBF
输出文件名 = +DGROUP1/orcl/datafile/users.261.610368773 标记 = TAG20061228T105117 recid = 4 时间戳 = 610368773
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
通道 ORA_DISK_1: 启动数据文件副本
复制当前控制文件
输出文件名 = +DGROUP1/orcl/controlfile/backup.262.610368775 标记 = TAG20061228T105117 recid = 5 时间戳 = 610368778
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:03
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 28-12月-06
通道 ORA_DISK_1: 已完成段 1 于 28-12月-06
段句柄=+DGROUP1/orcl/backupset/2006_12_28/nnsnf0_tag20061228t105117_0.263.610368779 标记=TAG20061228T105117 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
完成 backup 于 28-12月-06

RMAN> switch database to copy;

数据文件 1 已切换成数据文件副本 "+DGROUP1/orcl/datafile/system.258.610368679"
数据文件 2 已切换成数据文件副本 "+DGROUP1/orcl/datafile/undotbs1.260.610368769"
数据文件 3 已切换成数据文件副本 "+DGROUP1/orcl/datafile/sysaux.259.610368733"
数据文件 4 已切换成数据文件副本 "+DGROUP1/orcl/datafile/users.261.610368773"

RMAN> alter database open;

数据库已打开

RMAN> exit


恢复管理器完成。


数据库转移完成,用SQL*PLUS进入数据库检查状态。
C:¥oracle¥product¥10.2.0¥db_1¥database>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 12月 28 10:56:48 2006

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

SQL> connect / as sysdba
已连接。

SQL> select instance_name,status from v$instance;

INSTANCE_NAME                    STATUS
-------------------------------- ------------------------
orcl                             OPEN

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
+DGROUP1/orcl/controlfile/backup.256.610368623
+DGROUP1/orcl/controlfile/backup.257.610368627

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
+DGROUP1/orcl/datafile/system.258.610368679
+DGROUP1/orcl/datafile/undotbs1.260.610368769
+DGROUP1/orcl/datafile/sysaux.259.610368733
+DGROUP1/orcl/datafile/users.261.610368773

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
C:¥ORACLE¥PRODUCT¥10.2.0¥ORADATA¥ORCL¥ONLINELOG¥O1_MF_3_2OT4L52X_.LOG
C:¥ORACLE¥PRODUCT¥10.2.0¥FLASH_RECOVERY_AREA¥ORCL¥ONLINELOG¥O1_MF_3_2OT4L63F_.LOG

C:¥ORACLE¥PRODUCT¥10.2.0¥ORADATA¥ORCL¥ONLINELOG¥O1_MF_2_2OT4L2VC_.LOG
C:¥ORACLE¥PRODUCT¥10.2.0¥FLASH_RECOVERY_AREA¥ORCL¥ONLINELOG¥O1_MF_2_2OT4L43X_.LOG

C:¥ORACLE¥PRODUCT¥10.2.0¥ORADATA¥ORCL¥ONLINELOG¥O1_MF_1_2OT4L0WS_.LOG
C:¥ORACLE¥PRODUCT¥10.2.0¥FLASH_RECOVERY_AREA¥ORCL¥ONLINELOG¥O1_MF_1_2OT4L1X9_.LOG

已选择6行。

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
C:¥ORACLE¥PRODUCT¥10.2.0¥ORADATA¥ORCL¥DATAFILE¥O1_MF_TEMP_2OT4LL2X_.TMP

可以看到controlfile和datafile都已经建在ASM磁盘上了,但是logfile和tempfile还在原先位置上。

转移tempfile。
SQL> alter tablespace TEMP add tempfile;

表空间已更改。

SQL> alter database tempfile 'C:¥ORACLE¥PRODUCT¥10.2.0¥ORADATA¥ORCL¥DATAFILE¥O1_MF_TEMP_2OT4LL2X_.TMP' drop;

数据库已更改。

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
+DGROUP1/orcl/tempfile/temp.264.610369327

转移logfile,先增加3个组。
SQL> alter database add logfile size 50m;

数据库已更改。

SQL> alter database add logfile size 50m;

数据库已更改。

SQL> alter database add logfile size 50m;

数据库已更改。

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

    GROUP# STATUS
---------- --------------------------------
         1 CURRENT
         2 INACTIVE
         3 INACTIVE
         4 UNUSED
         5 UNUSED
         6 UNUSED

已选择6行。

SQL> alter database drop logfile group 2;

数据库已更改。

SQL> alter database drop logfile group 3;

数据库已更改。

删除logfile group 1的时候会有些麻烦,因为你执行 SQL> alter system switch logfile 以后,GROUP 1的状态并不是INACTIVE,而是ACTIVE。得执行多次该命令,才能使GROUP 1处于INACTIVE状态。当然重启数据库也是个办法。
当GROUP 1处于INACTIVE状态时,我们就可以DROP GROUP 1。

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

    GROUP# STATUS
---------- --------------------------------
         1 INACTIVE
         4 INACTIVE
         5 CURRENT
         6 INACTIVE


SQL> alter database drop logfile group 1;

数据库已更改。

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

    GROUP# STATUS
---------- --------------------------------
         4 INACTIVE
         5 CURRENT
         6 INACTIVE

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------
+DGROUP1/orcl/onlinelog/group_4.265.610369507
+DGROUP1/orcl/onlinelog/group_4.266.610369511
+DGROUP1/orcl/onlinelog/group_5.267.610369523
+DGROUP1/orcl/onlinelog/group_5.268.610369527
+DGROUP1/orcl/onlinelog/group_6.269.610369537
+DGROUP1/orcl/onlinelog/group_6.270.610369541

已选择6行。

这样我们把整个数据库都移到了ASM上。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/207/viewspace-896065/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: ASM (3)
请登录后发表评论 登录
全部评论
  • 博文量
    233
  • 访问量
    2061868