将表空间、数据文件从文件系统迁移到ASM

本文档详细记录了将Oracle数据库的表空间和数据文件从Linux文件系统迁移到ASM的过程。首先,介绍了数据库环境,包括操作系统和数据库版本。然后,通过RMAN进行迁移操作,包括使表空间脱机、备份数据文件到ASM、切换数据文件到副本,最后重新联机表空间并验证迁移结果。整个过程展示了如何在不停机的情况下完成迁移。

1. 迁移

    数据库的迁移,不管是出于什么原因和需要的进行,唯一需要考虑的两个因素就是:停机时间和存储容量。因为这两个因素往往决定了你可以采用什么样的方式进行数据库迁移:如果停机时间不充裕,可以选择热迁移,但是要求足够的存储空间;如果存储容量不足,可以选择冷迁移,但是要求足够充裕的停机时间。上述两个因素是相互制约的。

    下面的例子将多种方式进行迁移试验,从OS File System到ASM,或者反之;从表空间、数据文件和数据库层面。

1.0. 数据库环境

环境为Linux 5.7 x64+Oracle 10.2.0.5 x64+4块1Gb磁盘

[oracle@gtser1 gt10g]$ uname -a

Linux gtser1 2.6.32-200.13.1.el5uek #1 SMP WedJul 27 21:02:33 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux

[oracle@gtser1 gt10g]$ cat /etc/issue

Oracle Linux Server release 5.7

Kernel \r on an \m

 

SQL> select * from v$version;

 

BANNER

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

Oracle Database 10g Enterprise Edition Release10.2.0.5.0 - 64bi

PL/SQL Release 10.2.0.5.0 - Production

CORE   10.2.0.5.0      Production

TNS for Linux: Version 10.2.0.5.0 - Production

NLSRTL Version 10.2.0.5.0 - Production


1.2.0. 表空间、数据文件迁移-从文件系统到ASM

[oracle@gtser1 ~]$ sqlplus "/as sysdba"

 

SQL*Plus: Release 10.2.0.5.0 - Production on MonFeb 25 15:09:59 2013

 

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

 

 

Connected to:

Oracle Database 10g Enterprise Edition Release10.2.0.5.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and RealApplication Testing options

 

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /u01/oracle/10g/arch

Oldest online log sequence     7

Next log sequence to archive   9

Current log sequence           9

SQL> set linesize 150

SQL> column ts# format 9

SQL> column name format a50

 

--使用表空间GTLIONS作为迁移对象,一共包含两个数据文件

SQL> Select ts#,Name From v$tablespace WhereName='GTLIONS'

  2  Union All

  3  Select file#,Name From v$datafile Wherets#=7;

 

TS# NAME

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

  7 GTLIONS

  5/u01/oracle/10g/oradata/gt10g/gtlions01.dbf

  6/u01/oracle/10g/oradata/gt10g/gtlions02.dbf

 

--使用RMAN进行迁移

[oracle@gtser1 ~]$ rman target /

 

Recovery Manager: Release 10.2.0.5.0 - Productionon Mon Feb 25 15:11:03 2013

 

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

 

connected to target database: GT10G(DBID=2268277830)

 

--列出当前用户信息

RMAN> report schema;

 

using target database control file instead ofrecovery catalog

Report of database schema

 

List of Permanent Datafiles

===========================

File Size(MB) Tablespace           RB segs Datafile Name

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

1   440      SYSTEM               ***     /u01/oracle/10g/oradata/gt10g/system01.dbf

2   25       UNDOTBS1             ***     /u01/oracle/10g/oradata/gt10g/undotbs1.dbf

3   250      SYSAUX               ***     /u01/oracle/10g/oradata/gt10g/sysaux01.dbf

4    5        USERS                ***     /u01/oracle/10g/oradata/gt10g/users01.dbf

5    0        GTLIONS              ***    /u01/oracle/10g/oradata/gt10g/gtlions01.dbf

6    0        GTLIONS              ***    /u01/oracle/10g/oradata/gt10g/gtlions02.dbf

 

List of Temporary Files

=======================

File Size(MB) Tablespace           Maxsize(MB) Tempfile Name

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

1   100      TEMP                 100        /u01/oracle/10g/oradata/gt10g/temp01.dbf

4   100      GTLIONSTEMP          100        /u01/oracle/10g/oradata/gt10g/gtlionstemp01.dbf

 

--使表空间脱机

RMAN> sql 'alter tablespace gtlions offline';

 

sql statement: alter tablespace gtlions offline

 

--开始备份两个数据文件

RMAN> backup as copy datafile 5 format'+data01';

 

Starting backup at 25-FEB-13

allocated channel: ORA_DISK_1

channel ORA_DISK_1: sid=143 devtype=DISK

channel ORA_DISK_1: starting datafile copy

input datafile fno=00005name=/u01/oracle/10g/oradata/gt10g/gtlions01.dbf

outputfilename=+DATA01/gt10g/datafile/gtlions.258.808326729 tag=TAG20130225T151205recid=117 stamp=808326729

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

Finished backup at 25-FEB-13

 

RMAN> backup as copy datafile 6 format'+data01';

 

Starting backup at 25-FEB-13

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

input datafile fno=00006name=/u01/oracle/10g/oradata/gt10g/gtlions02.dbf

outputfilename=+DATA01/gt10g/datafile/gtlions.265.808326737 tag=TAG20130225T151217recid=118 stamp=808326738

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

Finished backup at 25-FEB-13

 

--切换到cope副本

RMAN> switch datafile 5 to copy;

 

datafile 5 switched to datafile copy"+DATA01/gt10g/datafile/gtlions.258.808326729"

 

RMAN> switch datafile 6 to copy;

 

datafile 6 switched to datafile copy"+DATA01/gt10g/datafile/gtlions.265.808326737"

 

--重新联机GTLIONS表空间

RMAN> sql 'alter tablespace gtlions online';

 

sql statement: alter tablespace gtlions online

 

--在RMAN检查迁移结果

RMAN> report schema;

 

Report of database schema

 

List of Permanent Datafiles

===========================

File Size(MB) Tablespace           RB segs Datafile Name

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

1   440      SYSTEM               ***     /u01/oracle/10g/oradata/gt10g/system01.dbf

2   25       UNDOTBS1             ***     /u01/oracle/10g/oradata/gt10g/undotbs1.dbf

3   250      SYSAUX               ***    /u01/oracle/10g/oradata/gt10g/sysaux01.dbf

4    5        USERS                ***     /u01/oracle/10g/oradata/gt10g/users01.dbf

5   10       GTLIONS              ***    +DATA01/gt10g/datafile/gtlions.258.808326729

6   10       GTLIONS              ***    +DATA01/gt10g/datafile/gtlions.265.808326737

 

List of Temporary Files

=======================

File Size(MB) Tablespace           Maxsize(MB) Tempfile Name

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

1   100      TEMP                 100        /u01/oracle/10g/oradata/gt10g/temp01.dbf

4   100      GTLIONSTEMP          100        /u01/oracle/10g/oradata/gt10g/gtlionstemp01.dbf

 

--在SQL*PLUS检查迁移结果

SQL> Select ts#,Name From v$tablespace WhereName='GTLIONS'

  2  Union All

  3  Select file#,Name From v$datafile Wherets#=7;

 

TS# NAME

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

  7 GTLIONS

  5+DATA01/gt10g/datafile/gtlions.258.808326729

  6+DATA01/gt10g/datafile/gtlions.265.808326737

-The End-
### Oracle 文件系统迁移ASM 方法 #### 设置审计文件路径 为了确保迁移过程中有完整的日志记录,可以设置审计文件的目的地。这可以通过修改`audit_file_dest`参数来完成[^1]。 ```sql ALTER SYSTEM SET audit_file_dest='C:\oracle\product\10.2.0/admin/test2/adump'; ``` #### 修改默认创建文件位置 对于新的数据库对象,默认创建的位置应该指向ASM磁盘组而不是传统的文件系统。通过更改`DB_CREATE_FILE_DEST`参数可达成此目的[^3]: ```sql ALTER SYSTEM SET DB_CREATE_FILE_DEST='+DATA' SCOPE=BOTH; ``` 此处的`SCOPE=BOTH`表示该变更会立即生效并写入SPFILE以便重启后仍然有效。 #### 使用RMAN工具进行数据泵导出导入操作 一种常见的做法是从现有文件系统表空间导出全部数据再将其重新导入到基于ASM的新环境中。这种方法虽然简单但是耗时较长,在大型生产环境里可能不太适用。 另一种更为高效的方式是采用在线重定义或是直接复制的方法来进行转换工作。具体来说就是先建立临时表空间于目标ASM上,接着利用Data Pump或其他手段同步两份副本的数据直至一致最后切换过来。 #### 利用ASM Diskgroup特性实现不停机迁移 更先进的方案则是借助ASM本身的灵活性——即所谓的“加盘踢盘”。这意味着可以在不影响服务的情况下向现有的Disk Group添加来自新存储设备的空间资源作为成员之一;待确认无误后再逐步淘汰旧有的物理介质从而达到无缝转移的效果[^2]。 #### 验证迁移后的状态 迁移完成后应当验证各个组件是否正常运作以及检查所有的表空间确实已经成功转移到了ASM之上[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值