asdtiang的博客 感謝blogjava提供的博客交流平臺(tái)

          兄弟剛用ORACLE,因?yàn)椋桑械刂纷兞讼拢媪税胩欤皇O聰?shù)據(jù)文件了,網(wǎng)上查了一天資料,終于搞定,成功將數(shù)據(jù)文件恢復(fù)到新的數(shù)據(jù)庫中。(主要 是以前沒玩過,花了我一天半的時(shí)間,哎,書到用時(shí)方恨少啊)

          oracle數(shù)據(jù)恢復(fù):只有數(shù)據(jù)文件的情況下;
          狀況描述:當(dāng)Oracle的控制文件丟失或損壞,但數(shù)據(jù)文件完好時(shí),可以通過重建控制文件的方式對(duì)數(shù)據(jù)庫實(shí)例進(jìn)行恢復(fù)。恢復(fù)方法如下:
          一、備份數(shù)據(jù)文件
          一、安裝Oracle,安裝過程中不要?jiǎng)?chuàng)建數(shù)據(jù)庫。
          二、安裝好后,用DBCA(Database Configuration Assistant)創(chuàng)建與丟失的實(shí)例相同名稱的實(shí)例。創(chuàng)建實(shí)例時(shí)數(shù)據(jù)庫名和實(shí)例名要和丟失前的一致。數(shù)據(jù)文件與控制文件的信息可以從 (admin\xxxx\bdump\alert_xxxx.log)文件找到,其中xxxx為數(shù)據(jù)庫名,參照這個(gè)文件里的CREATE CONTROLFILE 語句段。還要注意創(chuàng)建實(shí)例時(shí)的歸檔模式及非歸檔模式,如果admin\zhxt\bdump\alert_xxxx.log文件中的CREATE CONTROLFILE 那一行最后是NOARCHIVELOG,則為非歸檔模式,如為ARCHIVELOG,則為歸檔模式,沒有則保持沒有
          三、關(guān)閉Oracle(我的方法,在服務(wù)里將ORACLE的有關(guān)服務(wù)改為手動(dòng),重啟機(jī)子),用備份出來的數(shù)據(jù)文件覆蓋新建的數(shù)據(jù)文件,并將新生成的控制文 件及重做日志文件刪除。
          四、啟動(dòng)Oracle有監(jiān)聽(在服務(wù)里將ORACLE有關(guān)的服務(wù)開啟)
          五、用sys用戶連接到oracle
          Sqlplus /nolog
          SQL>conn sys/sys as sysdba;
          六、關(guān)閉數(shù)據(jù)庫
          SQL> shutdown immediate;
          七、起動(dòng)數(shù)據(jù)庫,但不掛載數(shù)據(jù)文件
          SQL> startup nomount;
          八、重建控制文件,重建控制文件的腳本可以從admin\xxxx\bdump\alert_xxxx.log)文件找到,搜索 CREATE CONTROLFILE 語句,如果存在多處這樣的語句,則使用最后的。
          控制文件的腳本類似如下語句:

          CREATE CONTROLFILE REUSE DATABASE "zhxt" NORESETLOGS NOARCHIVELOG
          -- SET STANDBY TO MAXIMIZE PERFORMANCE
              MAXLOGFILES 50
              MAXLOGMEMBERS 5
              MAXDATAFILES 100
              MAXINSTANCES 1
              MAXLOGHISTORY 226
          LOGFILE
          GROUP 1 'E:\ORADATA\zhxt\REDO01.LOG' SIZE 100M,
          GROUP 2 'E:\ORADATA\zhxt\REDO02.LOG' SIZE 100M,
          GROUP 3 'E:\ORADATA\zhxt\REDO03.LOG' SIZE 100M
          -- STANDBY LOGFILE
          DATAFILE
          'E:\ORADATA\zhxt\RKXT.ORA',
          'E:\ORADATA\zhxt\SYSTEM01.DBF',
          'E:\ORADATA\zhxt\TOOLS01.DBF',
          'E:\ORADATA\zhxt\TYZHXTTBS.ORA',
          'E:\ORADATA\zhxt\UNDOTBS01.DBF',
          'E:\ORADATA\zhxt\USERS01.DBF',
          CHARACTER SET ZHS16GBK

          這一語句有幾個(gè)地方需要修改:
          1、   因?yàn)橹刈鋈罩疚募褋G失,所以要將第一句的,NORESETLOGS 改為 RESETLOGS
          2、   LOGFILE段的幾個(gè)重做日志文件指定為實(shí)際希望的位置
          3、   DATAFILE段的數(shù)據(jù)文件改為數(shù)據(jù)文件實(shí)際的位置,注意這里不要包括臨時(shí)表空間用到的文件,否則會(huì)出錯(cuò)。

          執(zhí)行修改后的腳本。如果提示控制文件創(chuàng)建完成,則可以進(jìn)行下一步操作。

          結(jié)果系統(tǒng)報(bào)錯(cuò):
          ORA-01503: CREATE CONTROLFILE ??
          ORA-01160: ???? data file
          ORA-01110: ???? : 'D:\oracle\oradata\cicdb\TEMP01.DBF'


          則需要將重建日志文件中DATAFILE段中TEMP01這行刪除,因?yàn)樗桥R時(shí)表空間,可以在創(chuàng)建后用alter database語句加上。再次執(zhí)行重建控制文件的腳本。

          九、創(chuàng)建控制文件成功后,執(zhí)行以下語句打開數(shù)據(jù)庫,加上RESETLOGS參數(shù)是為了重新生成重做日志文件。
          SQL> alter database open RESETLOGS;
          如果出現(xiàn)以下錯(cuò)誤:

              alter database open resetlogs
          *
          第 1 行出現(xiàn)錯(cuò)誤:
          ORA-01194: 文件 1 需要更多的恢復(fù)來保持一致性
          ORA-01110: 數(shù)據(jù)文件 1:
          'D:ORACLEPRODUCT10.2.0ORADATAORACLE10GSYSTEM01.DBF'
          解決方法如下:
          SQL> alter database open resetlogs;
          alter database open resetlogs
          *
          ERROR at line 1:
          ORA-01194: file 1 needs more recovery to be consistent
          ORA-01110: data file 1: 'F:SUNSYSTEM01.DBF'


          SQL> set wrap off
          SQL> set lin 300
          SQL> select * from v$recover_file;

          FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
          ---------- ------- ------- ----------------------------------------------------------------- ---------- ----------
          1 ONLINE ONLINE 476049 08-JAN-08
          2 ONLINE ONLINE 476049 08-JAN-08
          3 ONLINE ONLINE 476049 08-JAN-08
          4 ONLINE ONLINE 476049 08-JAN-08

          SQL> recover database until cancel;
          ORA-00283: recovery session canceled due to errors
          ORA-01610: recovery using the BACKUP CONTROLFILE option must be done


          SQL> recover database using backup controlfile until cancel;
          ORA-00279: change 476049 generated at 01/08/2008 19:13:19 needed for thread 1
          ORA-00289: suggestion : F:ORACLEFLASH_RECOVERY_AREASUNARCHIVELOG2008_01_08O1_MF_1_18_%U_.ARC
          ORA-00280: change 476049 for thread 1 is in sequence #18


          Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

          ORA-00308: cannot open archived log 'F:ORACLEFLASH_RECOVERY_AREASUNARCHIVELOG2008_01_08O1_MF_1_18_%

          U_.ARC'
          ORA-27041: unable to open file
          OSD-04002: ????????????
          O/S-Error: (OS 2) ??????????????????????


          ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
          ORA-01194: file 1 needs more recovery to be consistent
          ORA-01110: data file 1: 'F:SUNSYSTEM01.DBF'


          SQL> recover database using backup controlfile until cancel;
          ORA-00279: change 476049 generated at 01/08/2008 19:13:19 needed for thread 1
          ORA-00289: suggestion : F:ORACLEFLASH_RECOVERY_AREASUNARCHIVELOG2008_01_08O1_MF_1_18_%U_.ARC
          ORA-00280: change 476049 for thread 1 is in sequence #18


          Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
          E:oracleoradatasunsunredo01.log
          ORA-00310: archived log contains sequence 17; sequence 18 required
          ORA-00334: archived log: 'E:ORACLEORADATASUNSUNREDO01.LOG'


          ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
          ORA-01194: file 1 needs more recovery to be consistent
          ORA-01110: data file 1: 'F:SUNSYSTEM01.DBF'


          SQL> recover database using backup controlfile until cancel;
          ORA-00279: change 476049 generated at 01/08/2008 19:13:19 needed for thread 1
          ORA-00289: suggestion : F:ORACLEFLASH_RECOVERY_AREASUNARCHIVELOG2008_01_08O1_MF_1_18_%U_.ARC
          ORA-00280: change 476049 for thread 1 is in sequence #18


          Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
          E:oracleoradatasunsunredo02.log
          Log applied.
          Media recovery complete.
          SQL> alter database open;
          alter database open
          *
          ERROR at line 1:
          ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


          SQL> alter database open resetlogs;

          Database altered.

          SQL>
          十、將臨時(shí)表空間加入到實(shí)例上
          SQL> alter tablespace TEMP add tempfile 'E:\oradata\zhxt\TEMP01.DBF' reuse;

          十一、退出sqlplus,重啟oracle,測試是否成功

          如何更改Oracle的默認(rèn)監(jiān)聽端口(1521)
          Oracle 的默認(rèn)監(jiān)聽端口為1521,你可以方便的依照下列步驟修改為其他端口:
          [oracle@dbserver2 admin]$ cd $ORACLE_HOME/network/admin
          [oracle@dbserver2 admin]$ vi listener.ora
          修改這個(gè)文檔中的1521端口為你需要的端口your port
          [oracle@dbserver2 admin]$ lsnrctl stop
          [oracle@dbserver2 admin]$ lsnrctl start

          這時(shí)雖然用sqlplus能連上,但用程序是連不上的,在CMD下,netstat -an 查看時(shí),1521端口是未開啟的
          解決方法如下(實(shí)際上是第三種,用手動(dòng)啟動(dòng)數(shù)據(jù)庫監(jiān)聽就OK了):

          程序報(bào)錯(cuò):Io 異常: The Network Adapter could not establish the connection
          這個(gè)異常的出現(xiàn)一般與數(shù)據(jù)庫和你的PC的設(shè)置有關(guān)

          這種異常的出現(xiàn)大致上有下面幾種:
          1。IP錯(cuò)誤。
          在設(shè)置URL時(shí)錯(cuò)誤,例如:jdbc:oracle:thin:@192.168.0.36:1521:sharp
          數(shù)據(jù)庫服務(wù)器不正確:ping 服務(wù)器IP是否正確。不正確,將URL更改為正確
          端口號(hào)錯(cuò)誤:一般不會(huì)錯(cuò)誤。
          進(jìn)行一下操作:在DOS上鍵入sqlplus,檢查oracle是否開啟
          一卻正常,執(zhí)行下面第2步。
          2。防火墻
          如果機(jī)器上安裝有放火墻,可能是服務(wù)器端口號(hào)屏蔽而造成的。關(guān)閉防火墻后,嘗試重新連接。
          仍然不行,執(zhí)行第3步。
          3。數(shù)據(jù)庫監(jiān)聽未啟動(dòng) 修改PC上注冊(cè)表中的ImagePath值。
          以下是以現(xiàn)在主流的數(shù)據(jù)庫ORACLE為例
          重新手動(dòng)啟動(dòng)數(shù)據(jù)庫監(jiān)聽:
          1:開始 → 運(yùn)行→ 輸入CMD→ 進(jìn)入DOS命令提示界面
          d:>lsnrctl
          LSNRCTL> status
          或者
          LSNRCTL> start

          至此,完全搞定



          天蒼蒼,野茫茫,風(fēng)吹草底見牛羊

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          posts - 80, comments - 24, trackbacks - 0, articles - 32

          Copyright © asdtiang

          asdtiang的博客 PaidMailz
          點(diǎn)擊廣告網(wǎng)賺A(每天4個(gè)廣告,每個(gè)0.0025美元,一個(gè)搜索廣告0.03美元)
          主站蜘蛛池模板: 夏邑县| 昔阳县| 什邡市| 江津市| 张家口市| 巩留县| 比如县| 江永县| 铁岭市| 中方县| 博客| 临桂县| 吕梁市| 婺源县| 上虞市| 海南省| 罗城| 乃东县| 宜川县| 汽车| 商都县| 镇巴县| 宜宾市| 南充市| 汤阴县| 汝阳县| 永定县| 南投市| 玛多县| 南岸区| 昔阳县| 西华县| 南召县| 军事| 古田县| 勐海县| 游戏| 昌图县| 昌邑市| 乌什县| 库尔勒市|