欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Linux下Oracle删除表空间引发错误的解决方法

程序员文章站 2022-06-01 11:46:46
...

当来电之后,再次打开机器,在登录oracle用户时,报ldquo;用户的$home/.dmrc已被忽略,这将无法保存 默认会话和语言。该文件应

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

当来电之后,再次打开机器,在登录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
数据库装载完毕。

到此,问题解决了。

Linux下Oracle删除表空间引发错误的解决方法