最近開發(fā)環(huán)境的Oracle服務器磁盤空間滿了,于是又開始像以前一樣,到處刪東西,終于刪無可刪了,我又打起了oracle數據文件的主意,由于對oracle知之甚少,由此也引發(fā)了一系列的oracle錯誤,后來經過不懈努力,oracle終于又活了過來。成功之后,必然要將這次浪費了幾個小時的事件記錄下來,引以為戒吧。
由于不正常使用,Oracle服務器的硬盤磁盤空間滿了,沒法,到處刪東西,發(fā)現某個表空間沒什么用,但又不確定,于是,表空間沒做任何修改,而是直接在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應該在使用這個表空間的時候發(fā)現出錯會報錯,而不是啟動就報錯(無知真可怕。
有空間啦,于是興高采烈的開始制作樣板庫,結果半下不到,死逼!
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的表空間數據文件,網上的描述都是又是啟動歸檔模式又是搞這又是搞那的,這些東西對于生產環(huán)境可能很重要,但對于初學者或者非DBA類的程序員,完全可以只考慮移走文件其他的都無所謂啦。
本文出自:億恩科技【www.allwellnessguide.com】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]
|