Oracle控制檔案新增,備份,恢複

來源:互聯網
上載者:User

控制檔案實驗
 控制檔案最多8個,至少1個,互為鏡像,只要丟失了控制檔案,資料庫將無法正常關閉,無法啟動。
 //增加控制檔案,必須加上原有的控制檔案,注意同一路徑下的檔案名稱不能相同
 alter system set control_files='/lvm/app/Oracle/oradata/updb/control01.ctl','/lvm/app/oracle/fast_recovery_area/updb/control02.ctl','/lvm/app/oracle/oradata/updb/control01a.ctl','/lvm/app/oracle/fast_recovery_area/updb/control02.ctl' scope=spfile;
 alter system set control_files='/lvm/app/oracle/oradata/updb/control01.ctl','/lvm/app/oracle/fast_recovery_area/updb/control02.ctl','/lvm/app/oracle/oradata/updb/control01a.ctl','/lvm/app/oracle/fast_recovery_area/updb/control02a.ctl' scope=spfile;
 

//複製原有的給建立的
 SQL> ho cp /lvm/app/oracle/oradata/updb/control01.ctl /lvm/app/oracle/oradata/updb/control01a.ctl
 SQL> ho cp /lvm/app/oracle/fast_recovery_area/updb/control02.ctl /lvm/app/oracle/fast_recovery_area/updb/control02a.ctl
 shutdown transactional
 startup
 

//減少控制檔案
 alter system set control_files='/lvm/app/oracle/oradata/updb/control01.ctl','/lvm/app/oracle/fast_recovery_area/updb/control02.ctl' scope=spfile;
 

shutdown
 startup
 

//控制檔案異常處理
 

先按照  的前兩步建立好預存程序,再建立下面的過程
 //刪除控制檔案 df=8刪除全部控制檔案,df<8刪除第幾個控制檔案
 create or replace procedure foway_test_1(df number)
 as
 j number;
 begin
 j:=1;
 if df>8 or df<0 then
  dbms_output.put_line('number can not gt 8 or lt 0');
 else
 

for i in(select name from v$controlfile) loop
    if length(i.name)>0 then
        if df=8 then
          del(i.name);
        else
          if j=df then
            del(i.name);
            exit;
          end if;
 

      end if;
      j:=j+1;
    end if;
 end loop;
 j:=1;
 end if;
 end;
 /
 
 1、啟動時報告版本錯誤
    複製高版本的給低版本的
 2、控制檔案部分丟失
    //先查看控制檔案的資訊
        SQL> select name from v$controlfile;
        select name from v$controlfile;
 

        NAME
        --------------------------------------------------------------------------------
        /lvm/app/oracle/oradata/updb/control01.ctl
        /lvm/app/oracle/fast_recovery_area/updb/control02.ctl
        /lvm/app/oracle/oradata/updb/control01a.ctl
        /lvm/app/oracle/fast_recovery_area/updb/control02a.ctl
      逐個 ls檢查
      SQL> exec foway_test_1(1);
      exec foway_test_1(1);
     
      PL/SQL procedure successfully completed.
      再檢查
      SQL> ho ls /lvm/app/oracle/oradata/updb/control01.ctl;
        ho ls /lvm/app/oracle/oradata/updb/control01.ctl;
        ls: cannot access /lvm/app/oracle/oradata/updb/control01.ctl: No such file or directory
      報告檔案丟失
      shutdown abort; //強行關閉資料庫,注意一定要關閉資料後進行操作,否則資料庫將崩潰。
      複製存在的給丟失的
      ho cp /lvm/app/oracle/oradata/updb/control01a.ctl /lvm/app/oracle/oradata/updb/ control01.ctl
      startup
      完成恢複
      如果報告版本錯誤,複製高版本的給低版本的。
     
 3、控制檔案全部丟失
  exec foway_test_1(8);
 
  a、資料庫還未關閉
    //備份控制檔案
    alter database backup controlfile to trace as '/tmp/c.sql';
    shutdown abort;
    //取出控制檔案的建立指令碼
    ho sed '1,/Set #2/p' -n /tmp/c.sql >/tmp/c1.sql;
    start /tmp/c1.sql;
    啟動成功後馬上進入rman target /
    backup database;
 
  b、資料庫已經關閉但是rman有有效備份(備份之後沒有resetlogs,沒有重建控制檔案,沒有clear logfile,當前資料庫使用的記錄檔沒有丟失,時歸檔的)
    rman target /
    startup nomount;
    restore controlfile from '*s*備份檔案';
    alter database mount;
    exit;
   
    sqlplus / as sysdba
    alter database backup controlfile to trace as '/tmp/c.sql' reuse;
    shutdown abort;
    //取出控制檔案的建立指令碼
    ho sed '1,/Set #2/p' -n /tmp/c.sql >/tmp/c1.sql;
    start /tmp/c1.sql;
    啟動成功後馬上進入rman target /
    backup database;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.