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

环境:RHEL 6.4 + Oracle 11.2.0.4 需求:数据库存储由文件系统迁移到ASM

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

Reference

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

实验环境前期准备:

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

--控制文件
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;

1.8 迁移重做日志文件

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#;

1.9 服务器参数文件,并重启数据库

-- 在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

1.10 验证各文件存储位置

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。

Reference

  • Steps To Migrate/Move a Database From Non-ASM to ASM And Vice-Versa (文档 ID 252219.1)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PHPer 进击

MySQL - 扩展性 2 扩展策略:氪金氪脑任君选

如果将应用的所有数据简单地放在一台 MySQL 服务器实例上,就不用谈什么扩展性了。但是业务能稳定持续的增长,那么应用肯定会碰到性能瓶颈。

7920
来自专栏Android技术分享

Android ContentProvider实例详解

ContentProvider(内容提供者)是Android的四大组件之一,管理android以结构化方式存放的数据,以相对安全的方式封装数据(表)并且提供简易...

29620
来自专栏Nicky's blog

Oracle AWR报告生成和性能分析

对于SQL调优,局部SQL,我们可以直接使用执行计划等直接调优,而对于整个系统来说?这时候就可以用Oracle系统自带的报告对系统进行整体分析了,Oracle提...

14630
来自专栏idba

MySQL 最新的release notes

从MySQL发布正式版本8.0.11以来,MySQL 又相继发布8.0.12-8.0.15 四个版本.本文着重介绍8.0.13和8.0.14 版本中值得关注的改...

14820
来自专栏cmazxiaoma的架构师之路

删库跑路不怕,用mysqldump和mysqlbinlog进行数据恢复

1.创建douyin数据库、tbl_douyin_author数据库表、插入测试数据。

13110
来自专栏idba

show status和set gtid_mode 导致线程死锁案例

我们数据库组今年上半年的计划之一是将所有数据库实例打开GTID特性。在线上进行灰度开启GITD过程中遇到数据库hang。具体表现是执行如下命令时:

11220
来自专栏Linyb极客之路

Spring ShedLock指南

Spring为定时任务提供了一个易于实现的API。在没有部署应用程序的多个实例之前,它很有效。默认情况下,Spring无法处理多个实例上的调度程序同步,而是在每...

16330
来自专栏Linyb极客之路

面试官:你有过一线的MySQL实战经验,能给我详细聊聊吗?

本文来自一线的实战经验,主要针对DBA和后端开发人员,总是在灾难发生后,才想起容灾的重要性;总是在吃过亏后,才记得曾经有人提醒过。

12730
来自专栏飞总聊IT

飞总聊IT的2019年

2019年转眼就过去两周了。两周前写完2018年总结的时候,我就问自己的2019年的公众号要做什么不要做些什么。两周以来伴随我对公众号的更新,这个问题也有了比较...

18750
来自专栏机器学习算法与Python学习

两个月成为资深数据分析师:带你Python+SQL+Tableau等五大工具一次拿下

大数据现在有多热门?在公司里私下问一圈,发现10个同事中就有9个,正打算或者已经开始了自学数据分析。

38230

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励