当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
oracle菜鸟的一次oracle恢复笔记
发布时间:2010/5/19 11:49:53 来源:城市学习网 编辑:ziteng
  最近开发环境的oracle服务器磁盘空间满了,于是又开始像以前一样,到处删东西,终于删无可删了,我又打起了oracle数据文件的主意,由于对oracle知之甚少,由此也引发了一系列的oracle错误,后来经过不懈努力,oracle终于又活了过来。成功之后,必然要将这次浪费了几个小时的事件记录下来,引以为戒吧。
  由于不正常使用,oracle服务器的硬盘磁盘空间满了,没法,到处删东西,发现某个表空间没什么用,但又不确定,于是,表空间没做任何修改,而是直接在linux下把表空间的数据文件从一个磁盘移动到另一个磁盘了(/data/挂载的是另一个磁盘):
  [root@localhost ~]# cp /u01/app/oracle/oradata/sj/sj_test.dbf /data/
  [root@localhost ~]# rm /u01/app/oracle/oradata/sj/sj_test.dbf
  (移动可以用mv的,请各位高手原谅本菜。)
  此时心里想的是oracle应该在使用这个表空间的时候发现出错会报错,而不是启动就报错(无知真可怕!)
  有空间啦,于是兴高采烈的开始制作样板库,结果半下不到,死逼!
  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'
  晕了,开始到网上狂搜!
  找到一篇文章
  http://blog.csdn.net/nini1109/archive/2009/04/24/4105637.aspx[NextPage]   很符合,按照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.
  成功!
[NextPage]   我打开数据库!
  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.
  我XXX!
  狂搜!
  发现一哥们的雷人恢复笔记
  http://yhailcy.blog.163.com/blog/static/36353229200910333716783/
  暂时忍受,并按这厮的命令来(如果不行就打算骂娘啦!)
  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类的程序员,完全可以只考虑移走文件其他的都无所谓啦。
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved