我的JAVA

          從頭來
          隨筆 - 19, 文章 - 0, 評論 - 6, 引用 - 0
          數據加載中……

          ORACLE歸檔模式下恢復----UNDO,數據文件損壞

          有個同學在MSN和我聊起ORACLE維護的事,他對歸檔文件的概念不是很熟。我就叫他看書,他講看書暈糊糊,叫我做個實例給他看。我就在MSN上一步步的示范,順便貼出來。不過,我記得好像我以前也是看別人的,不要鄙視我哦!!
          他很仰慕哦,我回答:“無它,手熟耳!”
          呵呵,是不是好巒顛的
          SQL> archive log list;
          數據庫日志模式            存檔模式
          自動存檔             啟用
          存檔終點            d:\oracle\oradata\test\archive
          最早的概要日志序列     26
          下一個存檔日志序列   28
          當前日志序列           28
          ORACLE要在歸檔模式下
          建個用戶zb
          CONNECT zb/zb
          建個表
          CREATE TABLE family
                 (seq NUMBER(2),
           NAME VARCHAR2(14) ,
           LOC VARCHAR2(13) ) ;
          INSERT INTO family VALUES
           (1,'周斌','爸爸');
          commit;
          SQL> select * from family;

                 SEQ NAME           LOC
          ---------- -------------- -------------
                   1 周斌           爸爸

          做備份恢復時,把undo改小一點
          SQL>CREATE UNDO TABLESPACE undo1
          DATAFILE 'D:\oracle\oradata\test\undo01.dbf'
          SIZE 6M AUTOEXTEND ON;
          SQL>ALTER SYSTEM SET UNDO_TABLESPACE=UNDO1;
          SQL>DROP TABLESPACE UNDOTBS1;
          commit
          shutdown immediate;
          冷備哦
          startup;
          con sys as sysdba
          alter system switch logfile;
          產生日志
          INSERT INTO zb.family VALUES
           (2,'楊','媽媽');
          commit;
          alter system switch logfile;
          INSERT INTO zb.family VALUES
           (3,'陽','兒子');
          SQL> select * from zb.family;

                 SEQ NAME           LOC
          ---------- -------------- -------------
                   1 周斌           爸爸
                   2 楊             媽媽
                   3 陽             兒子
           SQL> shutdown abort
          3) 此時,把undo破壞
             在‘服務‘中,將OracleServicetest停止
              刪除(OS)undo01文件
          4) 在‘服務‘中,將OracleServicetest啟動

          看警告日志D:\oracle\admin\a00215\bdump\alert_test.log,
          Errors in file d:\oracle\admin\test\bdump\test_dbw0_5764.trc:
          ORA-01157: cannot identify/lock data file 19 - see DBWR trace file
          ORA-01110: data file 19: 'D:\ORACLE\ORADATA\TEST\UNDO01.DBF'
          ORA-27041: unable to open file
          OSD-04002: 無法打開文件
          O/S-Error: (OS 2) 系統找不到指定的文件。


          6) 恢復:
          SQL> SHUTDOWN ABORT
          將備份的undo01.dbf copy回去
          SQL> STARTUP MOUNT
          SQL> recover database(或者recover datafile 19//或者 recover'D:\ORACLE\ORADATA\test\UNDO01.DBF')
          SQL> alter database open;

          數據庫已更改。

          SQL> select * from zb.family;

                 SEQ NAME           LOC
          ---------- -------------- -------------
                   1 周斌           爸爸
                   2 楊             媽媽

          OK
          如果在INSERT后COMMIT,則數據不會丟失
          SQL> select * from zb.family;

                 SEQ NAME           LOC
          ---------- -------------- -------------
                   1 周斌           爸爸
                   2楊             媽媽
                   3 陽             兒子
          數據文件一樣。
          數據文件的丟失和損壞可以恢復到COMMIT的狀態

          posted on 2005-08-30 21:30 周斌 閱讀(1921) 評論(0)  編輯  收藏 所屬分類: ORACLE

          主站蜘蛛池模板: 湖南省| 屏东市| 西藏| 台南县| 菏泽市| 安丘市| 诸城市| 萝北县| 岐山县| 慈利县| 张家界市| 安丘市| 河曲县| 昌都县| 余江县| 任丘市| 文山县| 武夷山市| 七台河市| 阿拉尔市| 洪江市| 新昌县| 昭觉县| 漾濞| 霍林郭勒市| 哈密市| 太仆寺旗| 仁寿县| 亚东县| 同德县| 迁安市| 承德县| 浦城县| 安龙县| 资源县| 丰都县| 平原县| 林甸县| 灵石县| 芷江| 松潘县|