ORACLE数据文件名导致的奇怪问题 (51天)
发布日期:2021-06-30 13:23:29 浏览次数:2 分类:技术文章

本文共 2684 字,大约阅读时间需要 8 分钟。

今天创建了一些表空间,准备做data guard来看看效果。

为了方便起见,我用gridcontrol来做,主库也开了Omf,省去了好多步骤。

一路点下来,就等gc的那个状态变成对号了,结果装了近20分钟,alert日志开始报错。

******************** WARNING ***************************

alter system set encryption wallet open identified by oracle123;

然后行这次应该没问题了吧,第二遍

简单清理了一下,继续

但是过了一会,还是同样的错误,还是大红叉。

ORA-01516: nonexistent log file, datafile, or tempfile "/u01/app/oracle/oradata/disk_5/indx.dbf" (DBD ERROR: OCIStmtExecute)

然后我看到后台再反复重启有关共享服务器的进程,我想是不是也有一定的影响,

我先没关共享。看看这个数据文件先,

来到相应的目录

[oracle@oel1 disk_5]$ cd indx.dbf

奇怪的事情就发生了,我是眼睁睁的看着那个文件,但是就是ll不出来,

我想这还蹊跷,如果是drop tablespace xxx 没有including contents and datafiles cascade constraint 可能数据文件还不会立即删除,会保留相应的句柄,但是这个表空间我没做drop操作啊。

我查了下状态

SQL> select tablespace_name,status from dba_data_files;

TABLESPACE_NAME STATUSINDX AVAILABLE

查看datafile也看不出什么蹊跷。

可能是什么其他的地方吧。

我用如下的sql导处数据文件的状态。

select f.tablespace_name||'|'||f.file_name||'|'||f.autoextensible||'|'||f.bytes/1024/1024||'M' ||'|'|| t.initial_extent||'|'||t.next_extent||'|'||t.extent_management||'|'||t.segment_space_management||'|'||t.bigfile from dba_tablespaces t,dba_data_files f where t.tablespace_name=f.tablespace_name;

结果如下:

TBS1|/u01/app/oracle/oradata/disk_1/tbs01.dbf|NO|5M|1048576|1048576|LOCAL|AUTO|N

SYSAUX|/u01/app/oracle/oradata/disk_4/sysaux01.dbf|NO|325M|65536||LOCAL|AUTO|NO

SYSTEM|/u01/app/oracle/oradata/disk_4/system01.dbf|NO|325M|65536||LOCAL|MANUAL|NO

EXAMPLE|/u01/app/oracle/oradata/disk_5/example.dbf|YES|400M|1048576|1048576|LOCAL|AUTO|NO

INDX|/u01/app/oracle/oradata/disk_5/indx.dbf |NO|40M|65536||LOCAL|AUTO|NO

最后一行的 indx.dbf后面还有个空格,原来是这个文件导致的!!!

我有个好习惯,之前执行的语句都保留了下来,一翻,验证了我的想法。

create tablespace example datafile '/u01/app/oracle/oradata/disk_5/example.dbf' size 400M autoextend on maxsize 4g extent management local uniform. size 1M;

create tablespace indx datafile '/u01/app/oracle/oradata/disk_5/indx.dbf 'size 40M;

接下来该处理这个问题了。

10--文件号是10

SQL> alter database datafile 10 offline;

Database altered.

SQL> alter database rename file '/u01/app/oracle/oradata/disk_5/indx.dbf ' to '/u01/app/oracle/oradata/disk_5/indx.dbf'

貌似我写的文件空格不够标准???

SQL> select '|'||file_name||'|' from dba_data_files where file_id=10;

'|'||FILE_NAME||'|'

SQL> alter database rename file '/u01/app/oracle/oradata/disk_5/indx.dbf 'to '/u01/app/oracle/oradata/disk_5/indx.dbf1';

还是不行,晕了,这个问题还真是费劲啊。

这样做,

[oracle@oel1 disk_5]$ ll[oracle@oel1 disk_5]$ mv indx* indx.dbf1

SQL> alter database datafile 10 offline;

Database altered.

SQL> alter database rename file '/u01/app/oracle/oradata/disk_5/indx.dbf ' to '/u01/app/oracle/oradata/disk_5/indx.dbf1'

Database altered.

第5遍开始做dg

这次很快。中途抛了几个ORA错误提提神,影响不啊,最后终于看到了一个对号。

查看后台,正常了。

MRP0: Background Managed Standby Recovery process started (STDBY)

转载地址:https://jeanron100.blog.csdn.net/article/details/102506238 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:oracle共享服务器配置汇总(53天)
下一篇:关于drop user的cascade选项解惑(52天)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月07日 15时46分18秒