加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle 12.1新特性:在线rename或relocate数据文件

发布时间:2020-12-12 14:41:33 所属栏目:百科 来源:网络整理
导读:在Oracle12.1之前的版本中要重命名数据文件或移动数据文件需要关闭数据库或把表空间/数据文件置为offline状态才可以,参考之前总结的 Oracle修改数据文件名/移动数据文件。 但到了12.1版本,可以直接在数据文件online状态下把数据文件重命名或移动数据文件。

在Oracle12.1之前的版本中要重命名数据文件或移动数据文件需要关闭数据库或把表空间/数据文件置为offline状态才可以,参考之前总结的Oracle修改数据文件名/移动数据文件。但到了12.1版本,可以直接在数据文件online状态下把数据文件重命名或移动数据文件。

要实现这一功能需要使用ALTERDATABASEMOVEDATAFILE语句,语法如下

ALTERDATABASEMOVEDATAFILE('filename'|'ASM_filename'|file_number)
[TO('filename'|'ASM_filename')]
[REUSE][KEEP]

下面在12.2版本测试这一功能

zx@ORA12C>select*fromv$version;

BANNER										CON_ID
------------------------------------------------------------------------------------------
OracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProduction		0
PL/SQLRelease12.2.0.1.0-Production							0
CORE	12.2.0.1.0	Production								0
TNSforLinux:Version12.2.0.1.0-Production						0
NLSRTLVersion12.2.0.1.0-Production							0

1、创建测试表空间及数据文件:

sys@ORA12C>createtablespacet_movedatafile'/home/oracle/t_move.dbf'size50m;

Tablespacecreated.

sys@ORA12C>colnamefora50
sys@ORA12C>selectd.name,d.statusfromv$datafiled,v$tablespacetwheret.ts#=d.ts#andt.name='T_MOVE';

NAME						STATUS
---------------------------------------------------------
/home/oracle/t_move.dbf			ONLINE

现在数据文件'/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,v$tablespacetwheret.ts#=d.ts#andt.name='T_MOVE';

NAME						STATUS
---------------------------------------------------------
/home/oracle/t_move01.dbf			ONLINE

sys@ORA12C>!ls-l/home/oracle/t_move01.dbf
-rw-r-----1oracleoinstall52436992Jul1116:07/home/oracle/t_move01.dbf

sys@ORA12C>!ls-l/home/oracle/t_move.dbf
ls: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.dbf

sys@ORA12C>!ls-l/home/oracle/t_move01.dbf
ls:cannotaccess/home/oracle/t_move01.dbf:Nosuchfileordirectory

sys@ORA12C>selectd.name,v$tablespacetwheret.ts#=d.ts#andt.name='T_MOVE';

NAME						STATUS
---------------------------------------------------------
/u01/app/oracle/oradata/ora12c/t_move01.dbf	ONLINE

从上面的结果可以看到数据文件从'/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,v$tablespacetwheret.ts#=d.ts#andt.name='T_MOVE';

NAME						STATUS
---------------------------------------------------------
/home/oracle/t_move01.dbf			ONLINE

sys@ORA12C>!ls-l/home/oracle/t_move01.dbf
-rw-r-----1oracleoinstall52436992Jul1116:15/home/oracle/t_move01.dbf

sys@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存储

--文件系统到ASM
ALTERDATABASEMOVEDATAFILE'/u01/oracle/rbdb1/user1.dbf'
TO'+dgroup_01/data/orcl/datafile/user1.dbf';
--ASM到ASM
ALTERDATABASEMOVEDATAFILE'+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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读