今天在登录oracle hr的时候,做select,报错“ORA-00376”,数据文件不能读写。用下面的语句看了下status,发现example表空间(FILE# 6)处于OFFLINE状态。
1 select file#,status from v$datafile;
FILE# STATUS
---------- ---------------------
1 SYSTEM
2 ONLINE
3 ONLINE
4 ONLINE
5 ONLINE
6 OFFLINE
用下面语句使表空间文件online。
1 alter database datafile '/....../example.dbf' online;
之后发现,还是报错“ORA-00376”,问题似乎没有解决,原来是表空间没有online的原因,虽然这时候表空间文件已经online了。用下面的语句3使表空间online,然后用语句1使表空间可读写。至此问题解决。
1 alter tablespace example read write; 2 alter tablespace example read only; 3 alter tablespace example online;
在实际操作中,我是先用语句1和2的,当时并未理解表空间文件online和表空间online是两回事,但是语句1和2的提示完全不同,分别如下:
ORA-01646: 表空间 'EXAMPLE' 不是只读的 - 无法设置为读写 ORA-01539: 表空间 'EXAMPLE' 未联机
似乎语句2的提示更加准确,看来,dba在不清楚情况下的操作一定要尽量的细粒度操作来发现问题。