日期:2014-05-16  浏览次数:20606 次

linux下oracle删除表空间引发错误的解决方法

  由于表空间容量不足,需要增加表空间容量,于是在原表空间上新建一个表空间并增加到原表空间上,由于不熟练,导致没有建成功。在创建的过程中,对新添加的表空间进行了多次添加和删除。当时,没有重启机器。所以,没有发现什么问题,用着一切正常。但事事难料,由于夏季用电量大,导致保险丝烧掉,于是造成大面积断电。这台主机也没有幸免。就是这次断电,导致了悲剧的发生。

   当来电之后,再次打开机器,在登录oracle用户时,报“用户的$home/.dmrc已被忽略,这将无法保存 默认会话和语言。该文件应该由用户所有,并且权限设置为644。用户的$home目录应由用户自己所有,别的用户也无法写入”错误。当时没有解决,直接忽略进入系统。进入系统打开sqlplus连接不上指定用户。于是就开始连接sys用户,sys用户可以连接上去,这说明oracle服务打开了。测试监听和em都打开了。打开em一看,监听正常,实例没有打开。而且报出“ora-01033:oracle initialization or shutdown in progress”。这时,就想到了,shutdown oracle之后再startup一次,看看能不能打开oracle实例。于是,按着自己的想法就测试一下。在关闭重启之后,问题依旧。于是,就在网上搜索一下。

  自己总结一下,需要先修正登录oracle用户时的错误。于是就按照网上所说的修改权限的方法,于是就用解决办法:
chmod 755 -R /home/用户名
chmod 644 /home/用户名/.dmrc

来修改登录oracle用户的错误。解决完这一错误之后,接着需要解决oracle实例的错误。

  这是需要先用sqlplus  sys/密码 as sysdba, 登录sqlplus之后,

SQL> shutdown immediate

ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes
数据库装载完毕。

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01122: 数据库文件 11 验证失败
ORA-01110: 数据文件 11: 'E:\APP\DATABASE\STU_DB.DBF'
ORA-01203: 此文件的原型错误 - 创建 SCN 错误

SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01139: RESETLOGS 选项仅在不完全数据库恢复后有效

SQL> alter database datafile 11 offline drop;   //(这里的“11”就是前面的“数据库文件 11”)
数据库已更改。
SQL> alter database open resetlogs;
alter database open resetlogs

*
第 1 行出现错误:
ORA-01139: RESETLOGS 选项仅在不完全数据库恢复后有效

SQL> alter database open;
数据库已更改。
SQL> shutdown normal;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

 

SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 171966464 bytes
Fixed Size                   787988 bytes
Variable Size             145750508 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes
数据库装载完毕。

到此,问题解决了。