数据库存储的是普通的文件系统,现在将数据库迁移到ASM存储中。

准备ASM环境:

[oracle@kel ~]$ asmcmd
ASMCMD> ls
ASM/
KEL/
ASMCMD>

在本实例中,将数据库文件都存储在KEL磁盘组中。

对数据库做一个全备份,利用备份来恢复数据文件,从而达到转移存储的目的:

RMAN> run
2> {
3> backup as copy database format '+KEL';
4> }

修改数据库相关参数:

SQL> show parameter db_recovery_file

NAME				     TYPE		    VALUE
------------------------------------ ---------------------- ------------------------------
db_recovery_file_dest string /home/oracle/flash_recovery_ar
ea
db_recovery_file_dest_size big integer 2G

db_recovery_file_dest参数表示default database recovery file location

DB_RECOVERY_FILE_DEST_SIZE specifies (in bytes) the hard limit on the total space to be used by target database recovery files created in the flash recovery area

修改参数如下:(闪回区创建在磁盘组中)

SQL> alter system set db_recovery_file_dest_size=3g scope=both;

System altered.

SQL> alter system set db_recovery_file_dest='+KEL' scope=both;

System altered.

联机日志和自动创建数据文件文件位置的参数如下:

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

DB_CREATE_ONLINE_LOG_DEST_n (where n = 1, 2, 3, ... 5) specifies the default location for Oracle-managed control files and online redo logs. If more than one DB_CREATE_ONLINE_LOG_DEST_n parameter is specified, then the control
file or online redo log is multiplexed across the locations of the other DB_CREATE_ONLINE_LOG_DEST_n parameters. One member of each online redo log is created in each location, and one control file is created in each location.

DB_CREATE_FILE_DEST initializationparameter in your initialization parameter file to identify the defaultlocation for the database server to
create:

Datafiles

Tempfiles

Redo log files

Control files

Block change tracking files

修改参数如下:(将联机日志和自动创建数据文件位置指定为磁盘组,并且是多路复用)

SQL> alter system set db_create_file_dest='+KEL' scope=both;

System altered.

SQL> alter system set db_create_online_log_dest_1='+KEL' scope=both;

System altered.

SQL> alter system set db_create_online_log_dest_2='+ASM' scope=both;

System altered.

查看目前联机日志和standby日志位置:

SQL> select group#,member from v$logfile;

    GROUP# MEMBER
---------- ----------------------------------------
3 /home/oracle/oradata/ipap/redo03.log
2 /home/oracle/oradata/ipap/redo02.log
1 /home/oracle/oradata/ipap/redo01.log

通过给每个日志组添加一个成员在磁盘组中,然后删除老的日志,从而达到替换的目的:

添加日志组:

SQL> alter database add logfile member '+ASM','+KEL' to group 1;

Database altered.

SQL> alter database add logfile member '+ASM','+KEL' to group 2;

Database altered.
SQL> alter database add logfile member '+ASM','+KEL' to group 3;

Database altered.

删除原来的联机日志组:

SQL> alter system switch logfile;

System altered.

SQL>  alter database drop logfile member '/home/oracle/oradata/ipap/redo01.log';

Database altered.
SQL> alter system switch logfile; System altered. SQL> alter database drop logfile member '/home/oracle/oradata/ipap/redo02.log'; Database altered. SQL> alter system switch logfile; System altered. SQL> alter database drop logfile member '/home/oracle/oradata/ipap/redo03.log'; Database altered.

在删除的时候,必须要等待状态为inactive才能进行删除,可以通过以下来进行查询:

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

    GROUP# STATUS
---------- --------------------------------
1 CURRENT
2 ACTIVE
3 ACTIVE

如果存在standby日志,那么只要通过删除原来的,进行重建即可:

SQL> alter database drop standby logfile group 4;

Database altered.

SQL> alter database add standby logfile group 4 size 50m;

Database altered.

检查联机日志,确认全部迁移到ASM中:(存在多路复用)

SQL> select group#,member from v$logfile order by 1;

GROUP# MEMBER
------ ------------------------------------------------
1 +KEL/ipap/onlinelog/group_1.260.850694639
1 +ASM/ipap/onlinelog/group_1.265.850694631
2 +ASM/ipap/onlinelog/group_2.261.850694671
2 +KEL/ipap/onlinelog/group_2.262.850694685
3 +ASM/ipap/onlinelog/group_3.259.850694709
3 +KEL/ipap/onlinelog/group_3.264.850694717
4 +ASM/ipap/onlinelog/group_4.257.850695777
4 +KEL/ipap/onlinelog/group_4.275.850695773 8 rows selected.

查看当前临时表空间的配置:

SQL> select ts#,name from v$tempfile;

       TS# NAME
---------- ---------------------------------------------
3 /home/oracle/oradata/ipap/temp01.dbf
SQL> select ts#,name from v$tablespace where ts#=3;

       TS# NAME
---------- ---------------------------------------------
3 TEMP

给临时表空间添加文件,存储在ASM中:(注意临时表空间的大小)

SQL> alter tablespace temp add tempfile size 300m;

Tablespace altered.

查看增加的数据文件,是否存在ASM中:

SQL> select name from v$tempfile;

NAME
---------------------------------------------
+KEL/ipap/tempfile/temp.277.850696379
/home/oracle/oradata/ipap/temp01.dbf

删除旧的临时表空间文件:

SQL> alter database tempfile '/home/oracle/oradata/ipap/temp01.dbf' drop ;

Database altered.

再次确认临时表空间:

SQL> select name from v$tempfile;

NAME
---------------------------------------------
+KEL/ipap/tempfile/temp.277.850696379

把数据文件、控制文件迁移到ASM,在整个过程中,在这一步需要对数据库进行重启

查看当前控制文件位置:

SQL> show parameter control_files

NAME				     TYPE		    VALUE
------------------------------------ ---------------------- ------------------------------
control_files string /home/oracle/oradata/ipap/cont
rol01.ctl, /home/oracle/oradat
a/ipap/control02.ctl, /home/or
acle/oradata/ipap/control03.ct
l

修改控制文件位置:

SQL> alter system set control_files='+KEL/ipap/controlfile/control01.ctl','+KEL/ipap/controlfile/control02.ctl','+KEL/ipap/controlfile/control03.ctl' scope=spfile;

System altered.

关闭数据库:

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

将数据库启动到nomount阶段:

SQL> startup nomount;

在RMAN中进行完全恢复:

首先恢复控制文件:

RMAN> restore controlfile from autobackup;

Starting restore at 20-JUN-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=151 devtype=DISK recovery area destination: +KEL
database name (or database unique name) used for search: IPAP
channel ORA_DISK_1: autobackup found in the recovery area
channel ORA_DISK_1: autobackup found: +kel/IPAP/AUTOBACKUP/2014_06_20/s_850696380.278.850696381
channel ORA_DISK_1: control file restore from autobackup complete
output filename=+KEL/ipap/controlfile/control01.ctl
output filename=+KEL/ipap/controlfile/control02.ctl
output filename=+KEL/ipap/controlfile/control03.ctl
Finished restore at 20-JUN-14

将数据库进行挂载:

RMAN> alter database mount;

database mounted
released channel: ORA_DISK_1

切换数据文件:

RMAN> switch database to copy;

Starting implicit crosscheck backup at 20-JUN-14
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=151 devtype=DISK
Crosschecked 10 objects
Finished implicit crosscheck backup at 20-JUN-14 Starting implicit crosscheck copy at 20-JUN-14
using channel ORA_DISK_1
Crosschecked 4 objects
Finished implicit crosscheck copy at 20-JUN-14 searching for all files in the recovery area
cataloging files...
cataloging done List of Cataloged Files
=======================
File Name: +kel/IPAP/AUTOBACKUP/2014_06_20/s_850696380.278.850696381 datafile 1 switched to datafile copy "+KEL/ipap/datafile/system.259.850692939"
datafile 2 switched to datafile copy "+KEL/ipap/datafile/undotbs1.257.850693039"
datafile 3 switched to datafile copy "+KEL/ipap/datafile/sysaux.258.850693003"
datafile 4 switched to datafile copy "+KEL/ipap/datafile/users.256.850693045"

恢复数据库:

RMAN> recover database;

Starting recover at 20-JUN-14
using channel ORA_DISK_1 starting media recovery archive log thread 1 sequence 8 is already on disk as file +KEL/ipap/archivelog/2014_06_20/thread_1_seq_8.266.850695305
archive log thread 1 sequence 9 is already on disk as file +KEL/ipap/archivelog/2014_06_20/thread_1_seq_9.267.850695485
archive log thread 1 sequence 10 is already on disk as file +KEL/ipap/archivelog/2014_06_20/thread_1_seq_10.268.850695485
archive log thread 1 sequence 11 is already on disk as file +KEL/ipap/archivelog/2014_06_20/thread_1_seq_11.269.850695489
archive log thread 1 sequence 12 is already on disk as file +KEL/ipap/archivelog/2014_06_20/thread_1_seq_12.271.850695533
archive log thread 1 sequence 13 is already on disk as file +KEL/ipap/archivelog/2014_06_20/thread_1_seq_13.273.850695551
archive log thread 1 sequence 14 is already on disk as file +ASM/ipap/onlinelog/group_1.265.850694631
archive log filename=+KEL/ipap/archivelog/2014_06_20/thread_1_seq_8.266.850695305 thread=1 sequence=8
archive log filename=+KEL/ipap/archivelog/2014_06_20/thread_1_seq_9.267.850695485 thread=1 sequence=9
archive log filename=+KEL/ipap/archivelog/2014_06_20/thread_1_seq_10.268.850695485 thread=1 sequence=10
archive log filename=+KEL/ipap/archivelog/2014_06_20/thread_1_seq_11.269.850695489 thread=1 sequence=11
archive log filename=+KEL/ipap/archivelog/2014_06_20/thread_1_seq_12.271.850695533 thread=1 sequence=12
archive log filename=+KEL/ipap/archivelog/2014_06_20/thread_1_seq_13.273.850695551 thread=1 sequence=13
archive log filename=+ASM/ipap/onlinelog/group_1.265.850694631 thread=1 sequence=14
media recovery complete, elapsed time: 00:00:04
Finished recover at 20-JUN-14

打开数据库:

RMAN> alter database open resetlogs;

database opened

确认所有文件已经迁移到ASM中:

控制文件:

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
+KEL/ipap/controlfile/control01.ctl
+KEL/ipap/controlfile/control02.ctl
+KEL/ipap/controlfile/control03.ctl

数据文件:

SQL> select name,status from v$datafile;

NAME						   STATUS
-------------------------------------------------- --------------
+KEL/ipap/datafile/system.259.850692939 SYSTEM
+KEL/ipap/datafile/undotbs1.257.850693039 ONLINE
+KEL/ipap/datafile/sysaux.258.850693003 ONLINE
+KEL/ipap/datafile/users.256.850693045 ONLINE

联机日志:

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
+KEL/ipap/onlinelog/group_4.275.850695773
+ASM/ipap/onlinelog/group_4.257.850695777
+ASM/ipap/onlinelog/group_1.265.850694631
+KEL/ipap/onlinelog/group_1.260.850694639
+ASM/ipap/onlinelog/group_2.261.850694671
+KEL/ipap/onlinelog/group_2.262.850694685
+ASM/ipap/onlinelog/group_3.259.850694709
+KEL/ipap/onlinelog/group_3.264.850694717 8 rows selected.

临时表空间:

SQL> select name,status from v$tempfile;

NAME						   STATUS
-------------------------------------------------- --------------
+KEL/ipap/tempfile/temp.277.850696379 ONLINE

将数据库从普通文件系统迁移到ASM中的更多相关文章

  1. Oracle从文件系统迁移到ASM存储

    环境:RHEL 6.4 + Oracle 11.2.0.4 需求:数据库存储由文件系统迁移到ASM 数据库存储迁移到ASM磁盘组 1.1 编辑参数文件指定新的控制文件路径 1.2 启动数据库到nomo ...

  2. 将文件系统数据库迁移到ASM中

    使用裸设备配置ASM实例 http://www.cnblogs.com/myrunning/p/4270849.html 1.查看我们创建的磁盘组 [oracle@std ~]$ export ORA ...

  3. 【ASM】从asm中复制文件到本地,或者从本地到asm中方法

    工作中,有时需要把文件从ASM中复制到文件系统中或者反过来,做一些维护操作,本文介绍了4种复制文件的的方法: ASMCMD中的cp命令(11g) dbms_file_transfer包 rman的co ...

  4. oracle11g文件系统库迁移到ASM库上面

    最近把oracle11g的文件系统库迁移到了asm库上面. 迁移过程大致如下: 最少停机方案: 实例joinpay02 | |数据库joinpay02 需要改动的文件: 数据文件 控制文件 redo文 ...

  5. 如何将已部署在ASM的资源迁移到ARM中

    使用过Azure的读者都知道,Azure向客户提供了两个管理portal,一个是ASM,一个是ARM,虽然Azure官方没有宣布说淘汰ASM,两个portal可能会在很长的一段时间共存,但是考虑到AR ...

  6. (转)如何将数据库从SQL Server迁移到MySQL

    一.迁移Database Schema. 首 先使用Sybase Powerdesigner的逆向工程功能,逆向出SQL Server数据库的物理模型.具体操作是在Powerdesigner中选择“F ...

  7. 使用EF对已存在的数据库进行模块化数据迁移

    注:本文面向的是已经对EF的迁移功能有所了解,知道如何在控制台下进行相关命令输入的读者 问题 最近公司项目架构使用ABP进行整改,顺带想用EF的自动迁移代替了以前的手工脚本. 为什么要替代? 请看下图 ...

  8. asp.net core系列 30 EF管理数据库架构--必备知识 迁移

    一.管理数据库架构概述 EF Core 提供两种主要方法来保持 EF Core 模型和数据库架构同步.一是以 EF Core 模型为基准,二是以数据库为基准. (1)如果希望以 EF Core 模型为 ...

  9. EF Core 2.2 对多个 DbContext 单个数据库的情况进行迁移的示例

    目录 场景 创建新项目 创建第一个模型 创建第二个模型 使用依赖注入注册上下文 创建数据库 需要注意的情况 场景 在一个项目中,使用了多个 DbContext 且使用同一个数据库的情况 创建新项目 打 ...

随机推荐

  1. [hackerrank]Even Odd Query

    https://www.hackerrank.com/contests/w5/challenges 简单题,注意整数的0次方是1,奇数. #include <iostream> #incl ...

  2. MyBatis Mapper 文件例子

    转载:http://blog.csdn.net/ppby2002/article/details/20611737 <?xml version="1.0" encoding= ...

  3. eclipse安装插件的各种方法

    做为当下最流行的开源IDE之一,Eclipse的一大优势就在于其无数优秀的插件.一个好的插件可以大大的提高我们的工作效率,学习如何安装Eclipse插件自然也是必修课了.下面介绍Eclipse插件的安 ...

  4. 【c/c++】内存分配大小

    测试平台:linux 32位系统 用sizeof()运算符计算分配空间大小.单位:字节 1. 数组名与变量名的区别 int main() { char q[] = "hello"; ...

  5. bash: ./device/nexell/tools/build.sh: 权限不够

    /bin/bash: build/tools/diff_package_overlays.py: 鏉冮檺涓嶅 i686-linux-gcc: error trying to exec 'cc1': ...

  6. 【C#设计模式——创建型模式】抽象工厂模式

    抽象工厂模式比工厂模式具有更高层次的抽象性.当要返回一系列相关类中的某一个,而每个类都能根据需要返回不同的对象时,可以选择这种模式.直接进入示例. 示例描述:完成花园的规划,多种花园种类,每个里面多种 ...

  7. myeclipse2014破解版本链接

    myeclipse2014破解版本下载链接 http://www.my-eclipse.cn/#download myeclipse2014破解版本汉化链接 https://blog.my-eclip ...

  8. Android线性布局(Linear Layout)

    Android线性布局(Linear Layout) LinearLayout是一个view组(view group),其包含的所有子view都以一个方向排列,垂直或是水平方向.我们能够用androi ...

  9. java开发之匿名内部类,接口的使用

    下面的例子是Java.JDK7学习笔记上的 打算开发多人联机程序,对每个联机客户端,都会建立Client对象封装相关信息 1.Client.java public class Client { pri ...

  10. Kafka学习笔记

    一.Kafka使用背景 1. Kafka的定义 是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipel ...