zoukankan      html  css  js  c++  java
  • 如何rename datafile name中存在乱码的数据文件

    存在这样的情况create tablespace.. datafile or alter tablespace add datafile时加入数据文件的datafile name中存在乱码,例如以下例子:  
    SQL> select file#,name from v$datafile where file#=20;
    
         FILE# NAME
    ---------- --------------------------------------------------
            20 /s01/锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟dbf
    
    SQL> alter database rename file '/s01/锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟dbf' to '/s01/rename.dbf';
    alter database rename file '/s01/锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟dbf' to '/s01/rename.dbf'
    *
    ERROR at line 1:
    ORA-01511: error in renaming log/data files
    ORA-01516: nonexistent log file, datafile, or tempfile
    "/s01/锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟dbf"
        以上直接rename存在乱码的数据文件可能遇到ORA-01516错误,对于这种由于存在乱码导致的数据文件管理问题,可以参考以下几种方案: 方法1. 通过alter database backup controlfile to trace; 修改backup controlfile to trace生成的CREATE CONTROLFILE脚本,把存在乱码的数据文件名修改为目标文件名; 这种方法稍微费力一点.............   方法2. 通过以下动态SQL执行alter database rename来修改数据文件名:    
    declare
    x varchar2(600);
    y varchar2(600);
    begin
    y:='/s01/rename.dbf';
    select file_name into x from dba_data_files where file_id=20;
    execute immediate 'alter database  rename file  '''||x||''' to '''||y||'''';
    end;
    /
    
    PL/SQL procedure successfully completed.
    
    SQL> select name,file# from v$datafile where file#=20;
    
    NAME
    --------------------------------------------------------------------------------
         FILE#
    ----------
    /s01/rename.dbf
            20
      这种方法通过动态SQL不涉及到乱码的输出和装换所以可以成功。请注意ONLINE 该数据文件!!   方法3.    
    RMAN> copy datafile 20 to '/s01/rename1.dbf';
    
    RMAN> switch datafile 20 to copy
    2> ;
    
    datafile 20 switched to datafile copy "/s01/rename1.dbf"
    
    RMAN> recover datafile 20;                  
    
    RMAN> sql ' alter database datafile 20 online';
    
    sql statement:  alter database datafile 20 online
        直接使用RMAN COPY+ SWITCH DATAFILE TO COPY或者SETNAME都可以代劳帮助你解决该问题,因为RMAN可以直接使用FILE#指代而不需要如ALTER DATABASE RENAME FILE这样必须输入员文件名。
  • 相关阅读:
    利用后退按钮进行重复提交的解决办法。
    运用上传拦截器时遇到的一个问题
    Fckeditor上传图片的错误
    关于分页的一些经验。
    spring在web工程中的运用
    引入js失败的可能原因
    hql执行update行为时可能遇到的一个问题。
    Eclipse下freemarker插件的安装
    同名文本框与同名复选框在传值上的不同.
    spring在java工程中的运用
  • 原文地址:https://www.cnblogs.com/macleanoracle/p/2968111.html
Copyright © 2011-2022 走看看