在Oracle12.1之前的版本中要重命名數(shù)據(jù)文件或移動(dòng)數(shù)據(jù)文件需要關(guān)閉數(shù)據(jù)庫(kù)或把表空間/數(shù)據(jù)文件置為offline狀態(tài)才可以,參考之前總結(jié)的Oracle修改數(shù)據(jù)文件名/移動(dòng)數(shù)據(jù)文件。但到了12.1版本,可以直接在數(shù)據(jù)文件online狀態(tài)下把數(shù)據(jù)文件重命名或移動(dòng)數(shù)據(jù)文件。
公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)建站推出臨潭免費(fèi)做網(wǎng)站回饋大家。
要實(shí)現(xiàn)這一功能需要使用ALTER
DATABASE
MOVE
DATAFILE
語(yǔ)句,語(yǔ)法如下
ALTER DATABASE MOVE DATAFILE ( 'filename' | 'ASM_filename' | file_number ) [ TO ( 'filename' | 'ASM_filename' ) ] [ REUSE ] [ KEEP ]
下面在12.2版本測(cè)試這一功能
zx@ORA12C>select * from v$version; BANNER CON_ID -------------------------------------------------------------------------------- ---------- Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0 PL/SQL Release 12.2.0.1.0 - Production 0 CORE 12.2.0.1.0 Production 0 TNS for Linux: Version 12.2.0.1.0 - Production 0 NLSRTL Version 12.2.0.1.0 - Production 0
1、創(chuàng)建測(cè)試表空間及數(shù)據(jù)文件:
sys@ORA12C>create tablespace t_move datafile '/home/oracle/t_move.dbf' size 50m ; Tablespace created. sys@ORA12C>col name for a50 sys@ORA12C>select d.name,d.status from v$datafile d,v$tablespace t where t.ts#=d.ts# and t.name='T_MOVE'; NAME STATUS -------------------------------------------------- ------- /home/oracle/t_move.dbf ONLINE
現(xiàn)在數(shù)據(jù)文件'/home/oracle/t_move.dbf'為ONLINE狀態(tài)
2、執(zhí)行重命名操作
sys@ORA12C>alter database move datafile '/home/oracle/t_move.dbf' to '/home/oracle/t_move01.dbf'; Database altered. sys@ORA12C>select d.name,d.status from v$datafile d,v$tablespace t where t.ts#=d.ts# and t.name='T_MOVE'; NAME STATUS -------------------------------------------------- ------- /home/oracle/t_move01.dbf ONLINE sys@ORA12C>!ls -l /home/oracle/t_move01.dbf -rw-r----- 1 oracle oinstall 52436992 Jul 11 16:07 /home/oracle/t_move01.dbf sys@ORA12C>!ls -l /home/oracle/t_move.dbf ls: cannot access /home/oracle/t_move.dbf: No such file or directory
可以看到文件名從t_move.dbf改為了t_move01.dbf,原文件已經(jīng)不存在了。
3、執(zhí)行移動(dòng)目錄操作
sys@ORA12C>alter database move datafile '/home/oracle/t_move01.dbf' to '/u01/app/oracle/oradata/ora12c/t_move01.dbf'; Database altered. sys@ORA12C>!ls -l /u01/app/oracle/oradata/ora12c/t_move01.dbf -rw-r----- 1 oracle oinstall 52436992 Jul 11 16:10 /u01/app/oracle/oradata/ora12c/t_move01.dbf sys@ORA12C>!ls -l /home/oracle/t_move01.dbf ls: cannot access /home/oracle/t_move01.dbf: No such file or directory sys@ORA12C>select d.name,d.status from v$datafile d,v$tablespace t where t.ts#=d.ts# and t.name='T_MOVE'; NAME STATUS -------------------------------------------------- ------- /u01/app/oracle/oradata/ora12c/t_move01.dbf ONLINE
從上面的結(jié)果可以看到數(shù)據(jù)文件從'/home/oracle'目錄移動(dòng)到了'/u01/app/oracle/oradata/ora12c'目錄下了。
4、copy數(shù)據(jù)文件到目標(biāo)目錄,保留原文件
sys@ORA12C>alter database move datafile '/u01/app/oracle/oradata/ora12c/t_move01.dbf' to '/home/oracle/t_move01.dbf' keep; Database altered. sys@ORA12C>select d.name,d.status from v$datafile d,v$tablespace t where t.ts#=d.ts# and t.name='T_MOVE'; NAME STATUS -------------------------------------------------- ------- /home/oracle/t_move01.dbf ONLINE sys@ORA12C>!ls -l /home/oracle/t_move01.dbf -rw-r----- 1 oracle oinstall 52436992 Jul 11 16:15 /home/oracle/t_move01.dbf sys@ORA12C>!ls -l /u01/app/oracle/oradata/ora12c/t_move01.dbf -rw-r----- 1 oracle oinstall 52436992 Jul 11 16:15 /u01/app/oracle/oradata/ora12c/t_move01.dbf
從上面的結(jié)果可以看到數(shù)據(jù)文件改為了/home/oracle/t_move01.dbf,但原來(lái)的數(shù)據(jù)文件仍然被保留。
5、移動(dòng)數(shù)據(jù)文件到ASM存儲(chǔ)
--文件系統(tǒng)到ASM ALTER DATABASE MOVE DATAFILE '/u01/oracle/rbdb1/user1.dbf' TO '+dgroup_01/data/orcl/datafile/user1.dbf'; --ASM到ASM ALTER DATABASE MOVE DATAFILE '+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