将数据库从普通文件系统迁移到ASM中
数据库存储的是普通的文件系统,现在将数据库迁移到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中的更多相关文章
- Oracle从文件系统迁移到ASM存储
环境:RHEL 6.4 + Oracle 11.2.0.4 需求:数据库存储由文件系统迁移到ASM 数据库存储迁移到ASM磁盘组 1.1 编辑参数文件指定新的控制文件路径 1.2 启动数据库到nomo ...
- 将文件系统数据库迁移到ASM中
使用裸设备配置ASM实例 http://www.cnblogs.com/myrunning/p/4270849.html 1.查看我们创建的磁盘组 [oracle@std ~]$ export ORA ...
- 【ASM】从asm中复制文件到本地,或者从本地到asm中方法
工作中,有时需要把文件从ASM中复制到文件系统中或者反过来,做一些维护操作,本文介绍了4种复制文件的的方法: ASMCMD中的cp命令(11g) dbms_file_transfer包 rman的co ...
- oracle11g文件系统库迁移到ASM库上面
最近把oracle11g的文件系统库迁移到了asm库上面. 迁移过程大致如下: 最少停机方案: 实例joinpay02 | |数据库joinpay02 需要改动的文件: 数据文件 控制文件 redo文 ...
- 如何将已部署在ASM的资源迁移到ARM中
使用过Azure的读者都知道,Azure向客户提供了两个管理portal,一个是ASM,一个是ARM,虽然Azure官方没有宣布说淘汰ASM,两个portal可能会在很长的一段时间共存,但是考虑到AR ...
- (转)如何将数据库从SQL Server迁移到MySQL
一.迁移Database Schema. 首 先使用Sybase Powerdesigner的逆向工程功能,逆向出SQL Server数据库的物理模型.具体操作是在Powerdesigner中选择“F ...
- 使用EF对已存在的数据库进行模块化数据迁移
注:本文面向的是已经对EF的迁移功能有所了解,知道如何在控制台下进行相关命令输入的读者 问题 最近公司项目架构使用ABP进行整改,顺带想用EF的自动迁移代替了以前的手工脚本. 为什么要替代? 请看下图 ...
- asp.net core系列 30 EF管理数据库架构--必备知识 迁移
一.管理数据库架构概述 EF Core 提供两种主要方法来保持 EF Core 模型和数据库架构同步.一是以 EF Core 模型为基准,二是以数据库为基准. (1)如果希望以 EF Core 模型为 ...
- EF Core 2.2 对多个 DbContext 单个数据库的情况进行迁移的示例
目录 场景 创建新项目 创建第一个模型 创建第二个模型 使用依赖注入注册上下文 创建数据库 需要注意的情况 场景 在一个项目中,使用了多个 DbContext 且使用同一个数据库的情况 创建新项目 打 ...
随机推荐
- Hibernate逍遥游记-第5章映射一对多-02双向(<set>、<key>、<one-to-many>、inverse、cascade="all-delete-orphan")
1. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hi ...
- sudo和su
su命令就是切换用户的工具 sudo 授权许可使用的su,也是受限制的su 1. sudo 的适用条件 由于su 对切换到超级权限用户root后,权限的无限制性,所以su并不能担任多个管理员所管理的系 ...
- Splunk作为日志分析平台与Ossec进行联动
背景: Ossec安装后用了一段时间的analogi作为ossec的报警信息显示平台,但是查看报警分类信息. 以及相关图标展示等方面总有那么一点点的差强人意,难以分析.因此使用逼格高一点的splunk ...
- 机器人学 —— 轨迹规划(Introduction)
轨迹规划属于机器人学中的上层问题,其主要目标是计划机器人从A移动到B并避开所有障碍的路线. 1.轨迹计划的对象 轨迹规划的对象是map,机器人通过SLAM获得地map后,则可在地图中选定任意两点进行轨 ...
- Servlet的应用
1.重定向 HttpServletRequest接口提供的sendRedirect()方法用于生产302响应码和Location响应头,从而通知客户端去重新访问Location响应头中指定的U ...
- JS代码片段:一个日期离现在多久了
var dateDiff = function(hisTime,nowTime){ if(!arguments.length) return ''; var arg = arguments, now ...
- 非常实用的PHP代码片段推荐
当使用PHP进行开发的时候,如果你自己收 藏 了一些非常有用的方法或者代码片段,那么将会给你的开发工作带来极大的便利.今天我们将介绍10个超级好用的PHP代码片段,希望大家能够喜欢! 1. 使用te ...
- 抽象工厂在ADO.Net中的应用
https://msdn.microsoft.com/zh-cn/library/ms971499.aspx http://www.c-sharpcorner.com/UploadFile/moses ...
- 对github中项目进行更新
进入本地仓库文件夹,我的仓库名是tufujiegit,然后 进入 git clone 接着将先前记录下来的地址复制到后面,回车 将下载github中该仓库的所有文件及文件夹,包括.git文件夹在内 ...
- 函数buf_LRU_old_adjust_len
调整LUR_old位置,放到八分之五位置,是新的,后八分之三是旧的 512个页全变成新的,然后从后往前数,数到8分之3,设置为旧的 /********************************* ...