Oracle12c中空格引发的ORA-01516问题

来源:这里教程网 时间:2026-03-03 12:55:07 作者:

    2019 1 29 日, zabbix 显示一个索引表空间告警,所以登录服务器查看:

10:02:22 SQL> col file_name for a50 10:02:42 SQL> select    file_id,tablespace_name,file_name,bytes/1024/1024/1024 G from   dba_data_files where tablespace_name='&ts' order by 1; Enter value for ts: TBS_LOGIDX old     1: select    file_id,tablespace_name,file_name,bytes/1024/1024/1024 G from dba_data_files   where tablespace_name='&ts' order by 1 new     1: select    file_id,tablespace_name,file_name,bytes/1024/1024/1024 G from   dba_data_files where tablespace_name='TBS_LOGIDX' order by 1        FILE_ID TABLESPACE_NAME           FILE_NAME                                                     G ---------- -----------------------   -------------------------------------------------- ----------            2 TBS_LOGIDX                /u01/app/oracle/oradata/DLOG/tbs_logix01.dbf    31.9999847           18 TBS_LOGIDX              /u01/app/oracle/oradata/DLOG/tbs_logix02.dbf    31.9570313           19 TBS_LOGIDX                /u01/app/oracle/oradata/DLOG/ tbs_unvidx03.dbf    31.9570313   3 rows selected.   Elapsed: 00:00:00.01

    一看就蒙了,之前不知道谁在加数据文件的时候,名字搞错了。万幸这是一套 12.2 的数据库,可以在线重命名数据文件,方法跟在线移动数据文件的位置一样,之前发过一篇博客简单介绍过: http://blog.itpub.net/31480688/viewspace-2214095/  

下面用这个方法修改一下数据文件名

10:05:03   SQL> alter /*source only*/ database move datafile   '/u01/app/oracle/oradata/DLOG/tbs_unvidx03.dbf' to '/u01/app/oracle/oradata/DLOG/tbs_logix03.dbf'; alter /*source   only*/ database move datafile '/u01/app/oracle/oradata/DLOG/tbs_unvidx03.dbf'   to '/u01/app/oracle/oradata/DLOG/tbs_logix03.dbf' * ERROR at line   1: ORA-01516 : nonexistent log file,   data file, or temporary file "/u01/app/oracle/oradata/DLOG/tbs_unvidx03.dbf"   in the current container

    结果报数据文件不存在。操作系统文件检查文件是存在的

oracle@ORADB-14417:   /u01/app/oracle/oradata/DLOG$ ls -lrt tbs_unvi*  -rw-r----- 1   oracle oinstall  1073750016 Jan 29   10:13 tbs_unvidx01.dbf -rw-r----- 1   oracle oinstall 34313609216 Jan 29 10:13 tbs_unvidx03.dbf

      查询 v$datafile 数据文件是存在的

10:07:29   SQL> select name,status from v$datafile where file#=19;   NAME -------------------- STATUS --------------------- /u01/app/oracle/oradata/DLOG/tbs_unvidx03.dbf ONLINE   1 row   selected.   Elapsed:   00:00:00.02

        Oracle 数据库从来不是华山一条路,而是条条大路通罗马,解决方法也很简单,指定 file_id 也是可以的。

10:14:09   SQL> alter /*source only*/ database move datafile 19 to   '/u01/app/oracle/oradata/DLOG/tbs_logix03.dbf';   Database   altered.   Elapsed:   00:11:41.37

    通过 toad 可以看到此过程加的锁     时间上还是比较久的     最后在 CRT 里鼠标选中的时候发现了问题    

相关推荐