这里有新鲜出炉的精品教程, 程序狗速度看过来!
Oracle 关系数据库管理系统
Oracle Database, 又名 Oracle RDBMS, 或简称 Oracle 是甲骨文公司的一款关系数据库管理系统到目前仍在数据库市场上占有主要份额
数据库备份还原是我们日常开发少不了的一个功能, 但如果一不注意估计就会有问题, 下面这篇文章主要给大家介绍了关于 Oracle RMAN 还原时 set newname 文件名有空格报错的解决方法, 需要的朋友可以参考借鉴, 下面随着小编来一起学习学习吧
前言
在做数据恢复时, 偶尔会碰到需要对数据文件位置调整的案例, 在这种情况下, 可以在 RMAN 中使用 SET NEWNAME 命令
在 Oracle 11g 之前, RMAN 只支持 SET NEWNAME FOR DATAFILE, 在 Oracle 11g 中增加了 SET NEWNAME FOR TEMPFILE/SET NEWNAME FOR TABLESPACE/SET NEWNAME FOR DATABASE 的命令
优先顺序如下:
- SET NEWNAME FOR DATAFILE and SET NEWNAME FOR TEMPFILE
- SET NEWNAME FOR TABLESPACE
- SET NEWNAME FOR DATABASE
发现问题
今天遇到一个非常奇怪的现象, 查看 ORACLE 数据库的一个文件, 明明这个文件是存在的, 但是使用 ls -lrt 查看都显示这个文件不存在很是纳闷! 后面发现在终端输入文件名后并使用 tab 键时, 发现文件后其实是有空格 (不可见字符)
如下截图所示:
- [oracle@ehvlnx02 ~]$ ls -lrt /u01/oradata/SCM2/system01.dbf
- ls: /u01/oradata/SCM2/system01.dbf: No such file or directory
- [oracle@ehvlnx02 ~]$ cd /u01/oradata/SCM2/
- [oracle@ehvlnx02 SCM2]$ ls -lrt
- total 5238456
- -rw-r----- 1 oracle oinstall 48504832 Nov 8 19:24 users01.dbf
- -rw-r----- 1 oracle oinstall 209715712 Nov 8 19:24 redo06.log
- -rw-r----- 1 oracle oinstall 209715712 Nov 8 19:24 redo05.log
- -rw-r----- 1 oracle oinstall 209715712 Nov 8 19:24 redo04.log
- -rw-r----- 1 oracle oinstall 209715712 Nov 8 19:24 redo02_1.log
- -rw-r----- 1 oracle oinstall 367009792 Nov 8 19:24 ppc_x01.dbf
- -rw-r----- 1 oracle oinstall 786440192 Nov 8 20:04 sysaux01.dbf
- -rw-r----- 1 oracle oinstall 2553290752 Nov 8 20:09 undotbs01.dbf
- -rw-r----- 1 oracle oinstall 545267712 Nov 8 20:09 system01.dbf
- -rw-r----- 1 oracle oinstall 209715712 Nov 8 20:14 redo01_1.log
- -rw-r----- 1 oracle oinstall 9781248 Nov 8 20:17 control01.ctl
- [oracle@ehvlnx02 SCM2]$ ls system01.dbf\ \ \ \ \ \ \ \ \ \
- system01.dbf
- [oracle@ehvlnx02 SCM2]$ ls system01.dbf*
- system01.dbf
- [oracle@ehvlnx02 SCM2]$
- clip_image001
解决方法
那么这些数据库数据文件名怎么多了一些空格呢? 由于恰好这台 UAT 服务器, 我几小时前做过 RMAN 还原, 发现然来使用 set newname for datafile 后面指定路径和文件名时, 双引号之间有大量空格 (使用 UE 的列模式编写的还原命令), 第一次遇到这种情况, 看来以后使用 set newname 时, 新的文件名要注意不能出现空格否则就会出现这个情况
- run {
- sql'alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"';
- set until time '2017-11-08 03:30:00';
- set newname for datafile 1 to "/u01/oradata/SCM2/system01.dbf";
- set newname for datafile 2 to "/u01/oradata/SCM2/undotbs01.dbf";
- set newname for datafile 3 to "/u04/oradata/SCM2/undotbs02.dbf";
- set newname for datafile 4 to "/u01/oradata/SCM2/sysaux01.dbf";
- set newname for datafile 5 to "/u01/oradata/SCM2/users01.dbf";
- .............................................................
- restore database;
- switch datafile all;
- recover database;
- }
来源: http://www.phperz.com/article/18/0311/360793.html