前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >dataguard备库的数据文件的迁移(r8笔记第22天)

dataguard备库的数据文件的迁移(r8笔记第22天)

作者头像
jeanron100
发布2018-03-19 11:40:58
9720
发布2018-03-19 11:40:58
举报
文章被收录于专栏:杨建荣的学习笔记

关于移动数据库文件,之前写了一篇博文,http://blog.itpub.net/23718752/viewspace-1127910/ 但是在备库中还是有一些的差别。最近因为对备库做了一些规划,新增加了几个分区,想把数据库的一部分文件放到SSD上。所以这个时候在现有的备库基础上需 要移动备库的数据库文件。这里就不局限于数据文件了,不过目前的测试情况来说,还是数据文件是重点,还是主要以数据文件为例。 在备库中目前尝试了两种方式,可以采用rename datafile的方式或者使用rman的方式,对于日志文件还是直接重建会比较方便。 采用rename datafile的方式。 首先在备库取消日志应用 SQL> recover managed standby database cancel; Media recovery complete. 操作系统级移动数据文件。 SQL> host mv /home/U01/app/oracle/oradata/test04/testdata01.dbf /home/U01/testdata01.dbf 使用rename datafile来移动数据文件,其实就是建立一个映射关系。 SQL> alter database rename file '/home/U01/app/oracle/oradata/test04/testdata01.dbf' to '/home/U01/testdata01.dbf'; Database altered. 修改完毕后,就可以修改备库文件管理模式为auto了。 SQL> alter system set standby_file_management=auto; System altered. 修改完成之后,查看数据文件的情况,发现数据字典层面已经改过来了。 SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- /home/U01/app/oracle/oradata/test04/system01.dbf /home/U01/app/oracle/oradata/test04/sysaux01.dbf /home/U01/app/oracle/oradata/test04/undotbs01.dbf /home/U01/app/oracle/oradata/test04/users01.dbf /home/U01/testdata01.dbf /home/U01/app/oracle/oradata/test04/testidx01.dbf 6 rows selected. 把备库启动到open,即read only状态 SQL> alter database open; Database altered. 11g的备库还是启用ADG。 SQL> recover managed standby database disconnect from session using current logfile; Media recovery complete. 然后再次查看数据文件的细节。 SQL> col file_name format a50 SQL> select file_name,status,online_status from dba_data_files; FILE_NAME STATUS ONLINE_STATUS -------------------------------------------------- ------------------ -------------- /home/U01/app/oracle/oradata/test04/users01.dbf AVAILABLE ONLINE /home/U01/app/oracle/oradata/test04/undotbs01.dbf AVAILABLE ONLINE /home/U01/app/oracle/oradata/test04/sysaux01.dbf AVAILABLE ONLINE /home/U01/app/oracle/oradata/test04/system01.dbf AVAILABLE SYSTEM /home/U01/testdata01.dbf AVAILABLE ONLINE /home/U01/app/oracle/oradata/test04/testidx01.dbf AVAILABLE ONLINE 6 rows selected. 由此可以看出文件迁移已经成功。 另外一种是使用rman的方式,但是原理还是相通的。 如果在主库中移动数据文件,可以采用如下的方式。 rman target / COPY DATAFILE 5 to '/DATA/app/testdata01.dbf'; sql 'alter database datafile 5 offline'; switch datafile 5 to copy; recover datafile 5; sql 'alter database datafile 5 online'; 在备库中不能这么使用,还是有一些不同之处,首先查看数据文件的情况。 FILE_NAME FILE_ID ------------------------------------------------------------ ---------- /home/U01/app/oracle/oradata/test04/users01.dbf 4 /home/U01/app/oracle/oradata/test04/undotbs01.dbf 3 /home/U01/app/oracle/oradata/test04/sysaux01.dbf 2 /home/U01/app/oracle/oradata/test04/system01.dbf 1 /home/U01/testdata01.dbf 5 /home/U01/app/oracle/oradata/test04/testidx01.dbf 6 6 rows selected. 然后在mount状态下,这个时候备库文件管理模式为auto或者manual就没有直接的影响了。 SQL> show parameter standby NAME TYPE VALUE ------------------------------------ ---------------------- ------------------------------ standby_archive_dest string ?/dbs/arch standby_file_management string AUTO 还是手工声明取消日志应用 SQL> recover managed standby database cancel; Media recovery complete. 然后开始rman中的数据文件迁移,把5号数据文件迁移到某个指定的路径下。 RMAN> COPY DATAFILE 5 to '/home/U01/app/oracle/oradata/test04/testdata01.dbf'; Starting backup at 2016-02-26 16:19:24 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=102 device type=DISK channel ORA_DISK_1: starting datafile copy input datafile file number=00005 name=/home/U01/testdata01.dbf output file name=/home/U01/app/oracle/oradata/test04/testdata01.dbf tag=TAG20160226T161925 RECID=14 STAMP=904839566 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 2016-02-26 16:19:26 上面的日志其实在搭建dataguard的时候会看到,是不是很熟悉。然后声明一个切换结束。 RMAN> switch datafile 5 to copy; using target database control file instead of recovery catalog datafile 5 switched to datafile copy "/home/U01/app/oracle/oradata/test04/testdata01.dbf" 然后声明数据文件为Online状态。 >sql 'alter database datafile 5 online'; --不运行实际上也会是Online 移动完成之后,开始查看迁移的情况,发现已经没有问题了。 FILE_NAME BYTES ONLINE_STATUS -------------------------------------------------- ---------- -------------- /home/U01/app/oracle/oradata/test04/users01.dbf 10485760 ONLINE /home/U01/app/oracle/oradata/test04/undotbs01.dbf 73400320 ONLINE /home/U01/app/oracle/oradata/test04/sysaux01.dbf 796917760 ONLINE /home/U01/app/oracle/oradata/test04/system01.dbf 786432000 SYSTEM /home/U01/app/oracle/oradata/test04/testdata01.dbf 209715200 ONLINE /home/U01/app/oracle/oradata/test04/testidx01.dbf 104857600 ONLINE 6 rows selected. 所以综上的感觉来看,rman的方式还是比较推荐,至少操作方便快捷,而且dataguard的原生支持就是如此,而且限制也少。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档