zoukankan      html  css  js  c++  java
  • 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/%'  
  • 相关阅读:
    反射+自定义注解,实现获取注解标记的属性
    jeecg导出Excel
    Date类的getYear(),getMonth过时,现在的获取方法
    Mysql的sql语句,Delete 中包含 not in
    EhCache与Redis的比较
    SpringMVC+Bootstrap项目
    按位运算| ^
    按步长检索数据,放缓有问题数据的处理
    DateTime 格式相比较,timestampdiff() 函数的运用
    作用域在函数定义时就已经确定了。而不是在函数调用时确定
  • 原文地址:https://www.cnblogs.com/skyay/p/7271444.html
Copyright © 2011-2022 走看看