Oracle 12.1新特性:在线rename或relocate数据文件
在Oracle12.1之前的版本中要重命名数据文件或移动数据文件需要关闭数据库或把表空间/数据文件置为offline状态才可以,参考之前总结的Oracle修改数据文件名/移动数据文件。但到了12.1版本,可以直接在数据文件online状态下把数据文件重命名或移动数据文件。
要实现这一功能需要使用ALTER
DATABASE
MOVE
DATAFILE
语句,语法如下
ALTERDATABASEMOVEDATAFILE('filename'|'ASM_filename'|file_number)[TO('filename'|'ASM_filename')][REUSE][KEEP]
下面在12.2版本测试这一功能
zx@ORA12C>select*fromv$version;BANNERCON_ID------------------------------------------------------------------------------------------OracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProduction0PL/SQLRelease12.2.0.1.0-Production0CORE12.2.0.1.0Production0TNSforLinux:Version12.2.0.1.0-Production0NLSRTLVersion12.2.0.1.0-Production0
1、创建测试表空间及数据文件:
sys@ORA12C>createtablespacet_movedatafile'/home/oracle/t_move.dbf'size50m;Tablespacecreated.sys@ORA12C>colnamefora50sys@ORA12C>selectd.name,d.statusfromv$datafiled,v$tablespacetwheret.ts#=d.ts#andt.name='T_MOVE';NAMESTATUS---------------------------------------------------------/home/oracle/t_move.dbfONLINE
现在数据文件'/home/oracle/t_move.dbf'为ONLINE状态
2、执行重命名操作
sys@ORA12C>alterdatabasemovedatafile'/home/oracle/t_move.dbf'to'/home/oracle/t_move01.dbf';Databasealtered.sys@ORA12C>selectd.name,d.statusfromv$datafiled,v$tablespacetwheret.ts#=d.ts#andt.name='T_MOVE';NAMESTATUS---------------------------------------------------------/home/oracle/t_move01.dbfONLINEsys@ORA12C>!ls-l/home/oracle/t_move01.dbf-rw-r-----1oracleoinstall52436992Jul1116:07/home/oracle/t_move01.dbfsys@ORA12C>!ls-l/home/oracle/t_move.dbfls:cannotaccess/home/oracle/t_move.dbf:Nosuchfileordirectory
可以看到文件名从t_move.dbf改为了t_move01.dbf,原文件已经不存在了。
3、执行移动目录操作
sys@ORA12C>alterdatabasemovedatafile'/home/oracle/t_move01.dbf'to'/u01/app/oracle/oradata/ora12c/t_move01.dbf';Databasealtered.sys@ORA12C>!ls-l/u01/app/oracle/oradata/ora12c/t_move01.dbf-rw-r-----1oracleoinstall52436992Jul1116:10/u01/app/oracle/oradata/ora12c/t_move01.dbfsys@ORA12C>!ls-l/home/oracle/t_move01.dbfls:cannotaccess/home/oracle/t_move01.dbf:Nosuchfileordirectorysys@ORA12C>selectd.name,d.statusfromv$datafiled,v$tablespacetwheret.ts#=d.ts#andt.name='T_MOVE';NAMESTATUS---------------------------------------------------------/u01/app/oracle/oradata/ora12c/t_move01.dbfONLINE
从上面的结果可以看到数据文件从'/home/oracle'目录移动到了'/u01/app/oracle/oradata/ora12c'目录下了。
4、copy数据文件到目标目录,保留原文件
sys@ORA12C>alterdatabasemovedatafile'/u01/app/oracle/oradata/ora12c/t_move01.dbf'to'/home/oracle/t_move01.dbf'keep;Databasealtered.sys@ORA12C>selectd.name,d.statusfromv$datafiled,v$tablespacetwheret.ts#=d.ts#andt.name='T_MOVE';NAMESTATUS---------------------------------------------------------/home/oracle/t_move01.dbfONLINEsys@ORA12C>!ls-l/home/oracle/t_move01.dbf-rw-r-----1oracleoinstall52436992Jul1116:15/home/oracle/t_move01.dbfsys@ORA12C>!ls-l/u01/app/oracle/oradata/ora12c/t_move01.dbf-rw-r-----1oracleoinstall52436992Jul1116:15/u01/app/oracle/oradata/ora12c/t_move01.dbf
从上面的结果可以看到数据文件改为了/home/oracle/t_move01.dbf,但原来的数据文件仍然被保留。
5、移动数据文件到ASM存储
--文件系统到ASMALTERDATABASEMOVEDATAFILE'/u01/oracle/rbdb1/user1.dbf'TO'+dgroup_01/data/orcl/datafile/user1.dbf';--ASM到ASMALTERDATABASEMOVEDATAFILE'+dgroup_01/data/orcl/datafile/user1.dbf'TO'+dgroup_02/data/orcl/datafile/user1.dbf';
参考:http://docs.oracle.com/database/121/ADMIN/dfiles.htm#ADMIN13837
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。