oracle rename數據文件的兩種方法


oracle rename數據文件的兩種方法

 分類:

第一種 

alter tablespace users rename datafile '==' to ‘***';

這種方式需要數據庫處於open狀態,表空間在offline的狀態下才能更改。

 

[sql]  view plain  copy
 
  1. SQL> alter tablespace users rename datafile '/opt/ora10g/oradata/orcl/user0100.dbf','/opt/ora10g/oradata/orcl/user099.dbf' to '/opt/ora10g/oradata/orcl/userrename1.dbf','/opt/ora10g/oradata/orcl/userrename2.dbf';  
  2. alter tablespace users rename datafile '/opt/ora10g/oradata/orcl/user0100.dbf','/opt/ora10g/oradata/orcl/user099.dbf' to '/opt/ora10g/oradata/orcl/userrename1.dbf','/opt/ora10g/oradata/orcl/userrename2.dbf'  
  3. *  
  4. ERROR at line 1:  
  5. ORA-01525: error in renaming data files  
  6. ORA-01121: cannot rename database file 107 - file is in use or recovery  
  7. ORA-01110: data file 107: '/opt/ora10g/oradata/orcl/user0100.dbf'  
  8.   
  9. SQL> alter tablespace users offline;  
  10. Tablespace altered.  
  11.   
  12. SQL> alter tablespace users rename datafile '/opt/ora10g/oradata/orcl/user0100.dbf','/opt/ora10g/oradata/orcl/user099.dbf' to '/opt/ora10g/oradata/orcl/userrename1.dbf','/opt/ora10g/oradata/orcl/userrename2.dbf';  
  13. alter tablespace users rename datafile '/opt/ora10g/oradata/orcl/user0100.dbf','/opt/ora10g/oradata/orcl/user099.dbf' to '/opt/ora10g/oradata/orcl/userrename1.dbf','/opt/ora10g/oradata/orcl/userrename2.dbf'  
  14. *  
  15. ERROR at line 1:  
  16. ORA-01525: error in renaming data files  
  17. ORA-01141: error renaming data file 107 - new file '/opt/ora10g/oradata/orcl/userrename1.dbf' not found  
  18. ORA-01110: data file 107: '/opt/ora10g/oradata/orcl/user0100.dbf'  
  19. ORA-27037: unable to obtain file status  
  20. Linux-x86_64 Error: 2: No such file or directory  
  21. Additional information: 3  
  22.   
  23. SQL> !  
  24. [oracle@rac1 ~]$ cp /opt/ora10g/oradata/orcl/user0100.dbf /opt/ora10g/oradata/orcl/userrename1.dbf[oracle@rac1 ~]$ cp /opt/ora10g/oradata/orcl/user099.dbf /opt/ora10g/oradata/orc  
  25. l/userrename2.dbf  
  26. [oracle@rac1 ~]$ exit  
  27. exit  
  28.   
  29. SQL> alter tablespace users rename datafile '/opt/ora10g/oradata/orcl/user0100.dbf','/opt/ora10g/oradata/orcl/user099.dbf' to '/opt/ora10g/oradata/orcl/userrename1.dbf','/opt/ora10g/oradata/orcl/userrename2.dbf';  
  30. Tablespace altered.  
  31.   
  32. SQL> alter tablespace users online;  
  33. Tablespace altered.  

第二種

alter database rename file ‘==='  to '***';

這種方式需要數據庫處於mount狀態 

[sql]  view plain  copy
 
  1. SQL> startup mount  
  2. ORACLE instance started.  
  3.   
  4. Total System Global Area  788529152 bytes  
  5. Fixed Size                  2087216 bytes  
  6. Variable Size             423626448 bytes  
  7. Database Buffers          356515840 bytes  
  8. Redo Buffers                6299648 bytes  
  9. Database mounted.  
  10. SQL> alter database rename file '/opt/ora10g/oradata/orcl/userrename2.dbf','/opt/ora10g/oradata/orcl/userrename1.dbf' to '/opt/ora10g/oradata/orcl/user099.dbf','/opt/ora10g/oradata/orcl/user0100.dbf';  
  11.   
  12. Database altered.  
  13.   
  14. SQL> alter database open;  
  15. alter database open  
  16. *  
  17. ERROR at line 1:  
  18. ORA-01113: file 106 needs media recovery  
  19. ORA-01110: data file 106: '/opt/ora10g/oradata/orcl/user099.dbf'  
  20. --這里不能open的原因是剛剛關閉數據庫寫了userrename2.dbf和userrename1.dbf這兩個數據文件的scn,而user099.dbf和user0100.dbf的scn還是offline的時候的,這樣控制文件的頭和數據文件頭不一致,所以數據庫打不開。  
  21.   
  22. SQL> alter database rename file '/opt/ora10g/oradata/orcl/user099.dbf','/opt/ora10g/oradata/orcl/user0100.dbf' to '/opt/ora10g/oradata/orcl/userrename2.dbf','/opt/ora10g/oradata/orcl/userrename1.dbf';  
  23.   
  24. Database altered.  
  25.   
  26. SQL> alter database open;  
  27.   
  28. Database altered.  

 

另外附上批量修改數據文件名的語句

[sql]  view plain  copy
 
  1. set pagesize 999  
  2. set linesize 999  
  3. select 'alter database rename file '||''''||member||''''||' to '||chr(39)||replace(member,'/paic/hq/bk/restore/data/oradata/lass/','/paic/z4ah8020/stg/lass/oradata/hs03lass/')||''';'   
  4. from v$logfile  
  5. where member like '/paic/hq/bk/restore/data/oradata/lass/%';   
  6.    
  7. select 'alter database rename file '||''''||name||''''||' to '||chr(39)||replace(name,'/paic/hq/bk/restore/data/oradata/lass/','/paic/z4ah8020/stg/lass/oradata/hs03lass/')||''';'   
  8. from v$datafile   
  9. where name like '/paic/hq/bk/restore/data/oradata/lass/%'  
  10.   
  11. select 'alter database rename file '||''''||name||''''||' to '||chr(39)||replace(name,'/paic/hq/bk/restore/data/oradata/lass/','/paic/z4ah8020/stg/lass/oradata/hs03lass/')||''';'   
  12. from v$tempfile   
  13. where name like '/paic/hq/bk/restore/data/oradata/lass/%'  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM