环境:RHEL 6.4 + Oracle 11.2.0.4

需求:数据库存储由文件系统迁移到ASM

数据库存储迁移到ASM磁盘组

Reference

数据库存储迁移到ASM磁盘组

实验环境前期准备:
- 文件系统数据库模拟环境《[Oracle 11g静默安装简明版](http://www.cnblogs.com/jyzhao/p/5001782.html)》
- ASM实例和磁盘组模拟环境《[单机静默安装GI软件并创建ASM实例和ASM磁盘组](http://www.cnblogs.com/jyzhao/p/5012949.html)》

迁移前原数据库各文件存储信息查询如下:

--控制文件
select name from v$controlfile;
--数据文件
select name from v$datafile;
--临时文件
select name from v$tempfile;
--日志文件
select member from v$logfile;
--参数文件
show parameter pfile --查询结果如下
SQL> select name from v$controlfile; NAME
--------------------------------------------------------------------------------
/u02/oradata/jingyu/control01.ctl
/u02/app/oracle/fast_recovery_area/jingyu/control02.ctl SQL> select name from v$datafile; NAME
--------------------------------------------------------------------------------
/u02/oradata/jingyu/system01.dbf
/u02/oradata/jingyu/sysaux01.dbf
/u02/oradata/jingyu/undotbs01.dbf
/u02/oradata/jingyu/users01.dbf SQL> select name from v$tempfile; NAME
--------------------------------------------------------------------------------
/u02/oradata/jingyu/temp01.dbf SQL> select member from v$logfile; MEMBER
--------------------------------------------------------------------------------
/u02/oradata/jingyu/redo03.log
/u02/oradata/jingyu/redo02.log
/u02/oradata/jingyu/redo01.log SQL> show parameter pfile NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u02/app/oracle/product/11.2.0
/dbhome_1/dbs/spfilejingyu.ora

1.1 编辑参数文件指定新的控制文件路径

```
SQL> create pfile='/tmp/pfile.ora' from spfile;
SQL> shutdown immediate
-- 修改controlfile参数值
$ vi /tmp/pfile.ora
controlfile='+DATA1/control01.ctl'
```

1.2 启动数据库到nomount模式

```
SQL> startup nomount pfile='/tmp/pfile.ora'
```

1.3 RMAN恢复控制文件

注意Oracle用户需要有读写ASM磁盘的权限

RMAN> restore controlfile from '/u02/oradata/jingyu/control01.ctl';

1.4 启动数据库到mount模式

```
RMAN> alter database mount;
```

1.5 RMAN Copy 数据文件

```
RMAN> backup as copy database format '+DATA1';
```

1.6 RMAN Switch 数据文件

```
RMAN> switch database to copy;
```

1.7 RMAN Switch 临时文件,并打开数据库

```
RMAN> run {
set newname for tempfile 1 to '+DATA1';
switch tempfile all;
}

RMAN> ALTER DATABASE OPEN;

<h2 id="1.8">1.8 迁移重做日志文件</h2>

set linesize 200

col member for a60

SQL> SELECT a.group#, b.member, a.status FROM v$log a, v$logfile b WHERE a.group#=b.group#;

SQL> ALTER DATABASE ADD LOGFILE MEMBER '+DATA1' TO GROUP 1;

SQL> ALTER DATABASE ADD LOGFILE MEMBER '+DATA1' TO GROUP 2;

SQL> ALTER DATABASE ADD LOGFILE MEMBER '+DATA1' TO GROUP 3;

SQL> ALTER SYSTEM SWITCH LOGFILE;

SQL> ALTER DATABASE DROP LOGFILE MEMBER '/u02/oradata/jingyu/redo01.log';

SQL> ALTER SYSTEM SWITCH LOGFILE;

SQL> ALTER DATABASE DROP LOGFILE MEMBER '/u02/oradata/jingyu/redo02.log';

SQL> ALTER SYSTEM SWITCH LOGFILE;

SQL> ALTER DATABASE DROP LOGFILE MEMBER '/u02/oradata/jingyu/redo03.log';

SQL> ALTER SYSTEM CHECKPOINT;

SQL> SELECT a.group#, b.member, a.status FROM v$log a, v$logfile b WHERE a.group#=b.group#;

<h2 id="1.9">1.9 服务器参数文件,并重启数据库</h2>

-- 在ASM磁盘组中创建服务器参数文件

SQL> create spfile='+DATA1' from pfile='/tmp/pfile.ora';

-- 正常关闭数据库

SQL> shutdown immediate

-- 删除$ORACLE_HOME/dbs/spfilejingyu.ora

$ rm $ORACLE_HOME/dbs/spfilejingyu.ora

-- 建立$ORACLE_HOME/dbs/initjingyu.ora,编辑内容指定ASM磁盘组中的服务器参数文件。

$ vi initjingyu.ora

spfile='+DATA1/JINGYU/PARAMETERFILE/spfile.266.897474951'

--启动数据库(会自动找到参数文件进而转到ASM磁盘组中的服务器参数文件)

SQL> startup

<h2 id="1.10">1.10 验证各文件存储位置</h2>

select name from v$datafile union all

select name from v$tempfile union all

select member from v$logfile union all

select name from v$controlfile;

show parameter pfile

结果如下:

SQL> select name from v$datafile union all

2 select name from v$tempfile union all

3 select member from v$logfile union all

4 select name from v$controlfile;

NAME

+DATA1/jingyu/datafile/system.257.897474123

+DATA1/jingyu/datafile/sysaux.258.897474149

+DATA1/jingyu/datafile/undotbs1.259.897474165

+DATA1/jingyu/datafile/users.261.897474169

+DATA1/jingyu/tempfile/temp.262.897474267

+DATA1/jingyu/onlinelog/group_1.263.897474349

+DATA1/jingyu/onlinelog/group_2.264.897474359

+DATA1/jingyu/onlinelog/group_3.265.897474363

+DATA1/control01.ctl

9 rows selected.

Elapsed: 00:00:00.02

SQL> show parameter pfile

NAME TYPE VALUE


spfile string +DATA1/jingyu/parameterfile/sp

file.266.897474951

至此,数据库存储已经成功由文件系统全部迁移到ASM。
<h1 id="2">Reference</h1>
- Steps To Migrate/Move a Database From Non-ASM to ASM And Vice-Versa (文档 ID 252219.1)

Oracle从文件系统迁移到ASM存储的更多相关文章

  1. 将数据库从普通文件系统迁移到ASM中

    数据库存储的是普通的文件系统,现在将数据库迁移到ASM存储中. 准备ASM环境: [oracle@kel ~]$ asmcmd ASMCMD> ls ASM/ KEL/ ASMCMD> 在 ...

  2. Oracle 11g R2 RAC with ASM存储迁移--Rman copy&ASM Rebalance(一)

    ASM GROUP-Rman copy迁移 0x00--环境介绍 VMware版本:VMware12pro 主机操作系统:RHEL6.5_64 共享存储使用VMWARE创建共享磁盘文件 数据库版本:O ...

  3. 如何快速将Linux文件系统迁移到Azure存储

    概述 前一段时间一直在给一个客户将原先搭载在Linux(客户使用的是CentOS 7.0)上的NFS快速迁移到Azure存储上,并且为了保证数据完整性还需要另开一个存储做冷备,架构图如下: 通过Cli ...

  4. Oracle 11g Rac 用rman实现把本地数据文件迁移到ASM共享存储中

    在Oracle Rac环境中,数据文件都是要存放在ASM共享存储上的,这样两个节点才能同时访问.而当你在某一节点下把数据文件创建在本地磁盘的时候,那么在另一节点上要访问该数据文件的时候就会报错,因为找 ...

  5. 使用RMAN迁移文件系统数据库到ASM

    --================================== -- 使用RMAN迁移文件系统数据库到ASM --================================== 在实际 ...

  6. Oracle DB 使用RMAN将数据库移植到ASM存储区

    1. 完全关闭数据库. 2. 关闭数据库并修改服务器参数文件,以使用Oracle Managed Files (OMF). 3. 编辑并执行以下RMAN 脚本: STARTUP NOMOUNT; RE ...

  7. Oracle冷备迁移脚本(文件系统)

    Oracle冷备迁移脚本(文件系统) 两个脚本: 配置文件生成脚本dbinfo.sh 网络拷贝到目标服务器的脚本cpdb16.sh 1. 配置文件生成脚本 #!/bin/bash #Usage: cr ...

  8. Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考

    操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...

  9. [置顶] Oracle 11g ASM:如何在 ASMCMD 命令行工具中创建 Oracle ACFS 文件系统

    实验环境:Oracle 11g R2 RAC (11.2.0.3.5)                Oracle Enterprise Linux 5.6 x86 1.创建 ASM 磁盘组 在两节点 ...

随机推荐

  1. Jenkins 安装的HTML Publisher Plugin 插件无法展示ant生成的JunitReport报告

    最近在做基于jenkins ant  junit 的测试持续集成,单独ant junit生成的junitreport报告打开正常,使用Jenkins的HTML Publisher Plugin 插件无 ...

  2. C++中的变长参数

    新参与的项目中,为了使用共享内存和自定义内存池,我们自己定义了MemNew函数,且在函数内部对于非pod类型自动执行构造函数.在需要的地方调用自定义的MemNew函数.这样就带来一个问题,使用stl的 ...

  3. SQLServer事务同步下如何收缩日志

    事务同步是SQLServer做读写分离的一种常用的方式. 随着业务数据的不断增长,数据库积攒了大量的日志,为了腾出硬盘空间,需要对数据库日志进行清理 订阅数据库的日志清理 因为订阅数据库所有的数据都来 ...

  4. React在开发中的常用结构以及功能详解

    一.React什么算法,什么虚拟DOM,什么核心内容网上一大堆,请自行google. 但是能把算法说清楚,虚拟DOM说清楚的聊聊无几.对开发又没卵用,还不如来点干货看看咋用. 二.结构如下: impo ...

  5. 前端学HTTP之实体和编码

    前面的话 每天都有各种媒体对象经由HTTP传送,如图像.文本.影片以及软件程序等.HTTP要确保它的报文被正确传送,识别.提取以及适当处理.为了实现这些目标,HTTP使用了完善的标签来描述承载内容的实 ...

  6. Angular2开发笔记

    Problem 使用依赖注入应该注意些什么 服务一般用来做什么 指令一般用来做什么 angular2如何提取公共组件 angular2为什么不需要提公共组件 父组件与子组件之间如何通讯 什么时候应该使 ...

  7. .Net Core上用于代替System.Drawing的类库

    目前.Net Core上没有System.Drawing这个类库,想要在.Net Core上处理图片得另辟蹊径. 微软给出了将来取代System.Drawing的方案,偏向于使用一个单独的服务端进行各 ...

  8. C#文件安全管理解析

    在实际的项目开发中,我们经常需要使用到文件的I/O操作,主要包含对文件的增改删查等操作,这些基本的操作我们都是很熟悉,但是较少的人去考虑文件的安全和操作的管理等方面,例如文件的访问权限管理,文件数据的 ...

  9. 编写高质量代码:改善Java程序的151个建议(第7章:泛型和反射___建议106~109)

    建议106:动态代理可以使代理模式更加灵活 Java的反射框架提供了动态代理(Dynamic Proxy)机制,允许在运行期对目标类生成代理,避免重复开发.我们知道一个静态代理是通过主题角色(Prox ...

  10. HTML5实现文件断点续传

    HTML5的FILE api,有一个slice方法,可以将BLOB对象进行分割.前端通过FileList对象获取到相应的文件,按照指定的分割方式将大文件分段,然后一段一段地传给后端,后端再按顺序一段段 ...