1、創(chuàng)建pfile
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比黟縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式黟縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋黟縣地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。
create pfile from spfile;
2、關(guān)閉數(shù)據(jù)庫
shutdown immediate
3、移動文件,并且準(zhǔn)備一個文件列表(控制文件、數(shù)據(jù)文件、聯(lián)機(jī)日志文件)。
4、記事本修改pfile內(nèi)容,將控制文件位置改為新文件位置。
5、使用修改后的pfile啟動到mount狀態(tài)
startup mount pfile='xxxx';
6、逐個修改數(shù)據(jù)文件位置
alter database rename file 'D:\oracle\product\10.2.0\oradata\orcl\system01.dbf' to 'e:\xxx\system01.dbf';
...
注:臨時表空間的文件可以不用管,回頭刪了重新創(chuàng)建即可。
7、打開數(shù)據(jù)庫。
alter database open;
8、根據(jù)新的pfile重新創(chuàng)建spfile
create spfile from pfile='xxxx';
9、完畢。
Oracle數(shù)據(jù)文件可以在數(shù)據(jù)庫OPEN的時候被重命名或移動,但此時表空間必須為只讀,這將允許用戶從表中查詢,但禁止他們這樣做的插入,更新和刪除,在表空間至于只讀狀態(tài)的時候,凍結(jié)數(shù)據(jù)文件塊頭。阻止更新數(shù)據(jù)文件塊頭,此時才能在線拷貝數(shù)據(jù)文件!
1.關(guān)閉運行中的數(shù)據(jù)庫
SQL shutdown immediate
2.啟動數(shù)據(jù)庫到mount狀態(tài)
SQL startup mount
3.移動系統(tǒng)表空間(SYSTEM表空間)的數(shù)據(jù)文件
SQL host move D:\ORADATA\ORCL\SYSTEM01.DBF D:\ORACLE\ORADATA\
4.修改該表空間的數(shù)據(jù)文件路徑
SQL alter database rename file 'D:\ORADATA\ORCL\SYSTEM01.DBF' to 'D:\ORACLE\ORA
DATA\SYSTEM01.DBF';
5.啟動數(shù)據(jù)庫,打開實例
SQL alter database open;
文件遷移分幾種
第一,如果是裸設(shè)備和asm存儲,那么最好就不要動,因為他們只能復(fù)制到一樣的存儲上,而且如果復(fù)制時出現(xiàn)問題,那么可能無法挽回。
如果是文件系統(tǒng)(操作系統(tǒng))的存儲,那么可以移動和復(fù)制,不過移動復(fù)制前要下線,或者關(guān)閉數(shù)據(jù)庫,然后利用命令改變該文件在數(shù)據(jù)庫中的位置,然后再上線。我記得就是利用rename命令進(jìn)行改變位置的。
create or replace directory MY_DIR as 'D:\TEST'; --這是目錄,不是文件名
create or replace directory TO_DIR as 'D:\TEST';
grant read,write on directory MY_DIR to SCHEMA;
grant read,write on directory TO_DIR to SCHEMA;
GRANT EXECUTE ON utl_file TO SCHEMA;
DECLARE
v_empfile UTL_FILE.FILE_TYPE;
v_src_dir VARCHAR2(50) := 'MY_DIR';
v_src_file VARCHAR2(20) := 'test.txt';
v_dest_dir VARCHAR2(50) := 'TO_DIR';
v_dest_file VARCHAR2(50) := 'test1111.txt'; --這是我改的地方,目標(biāo)文件名不能和源目標(biāo)名一樣,一樣了說明你在逗它玩兒,還有,如果是一樣的,會報錯且導(dǎo)致源文件丟失
v_replace BOOLEAN := TRUE;
BEGIN
UTL_FILE.FRENAME(v_src_dir,v_src_file,v_dest_dir,v_dest_file,v_replace);
END;