如何rename datafile name中存在乱码的数据文件

摘要:
请注意ONLINE该数据文件!!
存在这样的情况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这样必须输入员文件名。

免责声明:文章转载自《如何rename datafile name中存在乱码的数据文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇端口扫描 开启 防火墙 iptables SELinuxLinux学习(二) ---- Linux文件格式权限全解 ls -al [原创]下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

怎么删除表空间对应的某一个数据文件

如果想要删除表空间的数据文件,最好且最安全的办法是,删除表空间后重建 步骤如下:   1,导出该表空间中的所有内容;   2,删除表空间:DROP TABLESPACE <tablespace_name> INCLUDING CONTENTS;   3,重新创建新的表空间及其数据文件;   4,将导出的数据导入表空间; 但是在实际应用环境中,数...

Oralce表空间创建和管理

1.表空间的概述    1.表空间是数据库的逻辑组成部分。     2.从物理上讲,数据库数据存放在数据文件中;     3.从逻辑上讲,数据库是存放在表空间中,表空间由一个或者多个数据文件组成。   2.oracle的逻辑组成    1.oracle 的逻辑结构包含 表 空间 段 区 块         2.数据库是由表空间构成,表空间又是有段构成,段是...

oracle创建数据库和用户、表空间,管理表空间和数据文件简介

介绍 表空间是数据库的逻辑组成部分 从物理上将:数据库数据存放在数据文件中 从逻辑上将:数据库则是存放在表空间中 表空间由一个或是多个数据文件组成   数据库的逻辑结构 介绍: Oracle中逻辑结构包括表空间、段、区、块 说明: 数据库由表空间构成 而表空间又是由段构成 而段又是由区构成 而区又是由Oracle块构成     这样的一种结果,可以提高...

oracle创建表空间 扩展表空间文件 修改表空间自动增长

  1. 创建表空间 create tablespace SIRM2  datafile 'D:oracleproduct10.2.0oradataorclSIRM2.dbf' size 1024M --存储地址 初始大小1G autoextend on next 10M maxsize unlimited   --每次扩展10M,无限制扩展 EXTENT...

【转载】只有.dbf数据文件进行数据库恢复

此篇文章为转载,来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26015009/viewspace-714742/ 个人mark下,在之后dbf的情况下,如何不完整恢复,拿出数据。 由于数据库服务器崩溃,造成了无法进入系统进行数据库备份,只能把oracle相关文件拷贝出来。对于拷贝出来的文件在测试机上进行一次不完全恢复,...

数据库打开时报错该如何解决

故障描述 故障主要表现为打开数据库时报错,内容为:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。经过对数据库文件的检测后初步可得出以下结论:sysaux01.dbf有坏块,sysaux01.dbf文件损坏。急需恢复zxfg用户下的数据。 故障分析出现上述报错的可能性原因主要有控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不...