oracle死了!
此时必然要做的就是重启服务器:
SQL> Startup
没用啊!
强制重启:
SQL> Startup force;
ORACLE instance started.
Total System Global Area 1073741824 bytes
Fixed Size 1223540 bytes
Variable Size 197133452 bytes
Database Buffers 868220928 bytes
Redo Buffers 7163904 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 12 - see DBWR trace file
ORA-01110: data file 12: '/u01/app/oracle/oradata/sourcejoy.com/sourcejoy.com.test.dbf'
分步重启:
SQL> Startup mount;
SQL> Alter database open;
Alter database open
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 12 - see DBWR trace file
ORA-01110: data file 12: '/u01/app/oracle/oradata/sourcejoy.com/sourcejoy.com.test.dbf'
晕了,开始到网上狂搜!
找到一篇文章
很符合,按照B情况来:
SQL> Shutdown immediate;
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1073741824 bytes
Fixed Size 1223540 bytes
Variable Size 197133452 bytes
Database Buffers 868220928 bytes
Redo Buffers 7163904 bytes
Database mounted.
更改表空间数据文件位置:
SQL> alter database rename file '/u01/app/oracle/oradata/sourcejoy.com/sourcejoy.com.test.dbf' to '/data/sourcejoy.com.test.dbf';
alter database rename file '/u01/app/oracle/oradata/sourcejoy.com/sourcejoy.com.test.dbf' to
*
ERROR at line 1:
ORA-01511: error in renaming log/data files
ORA-01141: error renaming data file 12 - new file
'/data/sourcejoy.com.test.dbf' not found
ORA-01110: data file 12: '/u01/app/oracle/oradata/sourcejoy.com/sourcejoy.com.test.dbf'
ORA-27041: unable to open file
Linux Error: 13: Permission denied
Additional information: 2
怎么回事?文件找不到?没权限是啥?
退出sqlplus,到/data/下,文件存在啊,晕死。(这时是oracle账户)
尝试把文件拷回原来的位置:
[oracle@localhost data]# cp sourcejoy.com.test.dbf /u01/app/oracle/oradata/sourcejoy.com/
Permission denied!
权限不够,晕死!接下来肯定是要修改权限啦。
跳回root用户:
[oracle@localhost data]# su - root
Password:
输完密码,开始修改权限:
[root@localhost ~]# cd /data/
[root@localhost data]# chmod 777 sourcejoy.com.test.dbf
回到sqlplus:
SQL> alter database rename file '/u01/app/oracle/oradata/sourcejoy.com/sourcejoy.com.test.dbf'
2 to
3 '/data/sourcejoy.com.test.dbf';
Database altered.
成功!
我打开数据库!
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 12 needs media recovery
ORA-01110: data file 12: '/data/sourcejoy.com.test.dbf'
我擦!
百度了一下,原来要recovery:
SQL> recovery database;
SP2-0734: unknown command beginning "recovery d..." - rest of line ignored.
暂时忍受,并按这厮的命令来(如果不行就打算骂娘啦!)
SQL> alter database datafile '/data/sourcejoy.com.test.dbf' online;
Database altered.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 12 needs media recovery
ORA-01110: data file 12: '/data/sourcejoy.com.test.dbf'
报错都和这哥们儿描述的一样!
SQL> recover database;
Media recovery complete.
SQL> alter database open;
Database altered.
成功!
教训、经验和总结:
1.别把oracle当白痴,数据库有任何问题这家伙肯定第一个知道!
2.oracle是博大精深地,应该好好扎实地了解它的基础知识和常用知识,哪怕你不是DBA,这样平时做事情的时候才会心中有数,不会像我一样像个无头苍蝇到处乱撞。
3.oracle的好多操作并没有想象中那样复杂,别害怕去操作oracle,其实它很温柔,网上好多oracle操作都是很复杂的,考虑很多东西,所以会吓退一些初学oracle的哥们儿,就像移动oracle的表空间数据文件,网上的描述都是又是启动归档模式又是搞这又是搞那的,这些东西对于生产环境可能很重要,但对于初学者或者非DBA类的程序员,完全可以只考虑移走文件其他的都无所谓啦。