AUL6資料匯出_sqlloader匯入總結

dawn009發表於2014-04-04

    前段時間資料庫故障600內部錯誤導致部分兩個schema下部分資料丟失,包含普通表資料和分割槽表資料。嘗試過許多方法都沒能恢復回來,最後透過AUL6做恢復,現在這次的恢復做一個簡單總結。

恢復流程

  1.1建立AUL6cfg配製檔案,主要包括需要恢復的資料檔案(必須包括system.dbf,否則即使AUL6恢復流程不報錯,卻不會匯出文字資料),格式如下示:

0 0 D:\AUL_TEST\SUN.DBF

0 0 D:\AUL_TEST\SYSTEM01.DBF

  1.2AUL匯出的文字資料透過oraclesqlloader裝載入與要恢復表結果完全相同的一張臨時表。匯出文字格式如下示:

7369|SMITH|CLERK|7902|1980-12-17 00:00:00|800||20

7499|ALLEN|SALESMAN|7698|1981-02-20 00:00:00|1600|300|30

7521|WARD|SALESMAN|7698|1981-02-22 00:00:00|1250|500|30

7566|JONES|MANAGER|7839|1981-04-02 00:00:00|2975||20

7654|MARTIN|SALESMAN|7698|1981-09-28 00:00:00|1250|1400|30

7698|BLAKE|MANAGER|7839|1981-05-01 00:00:00|2850||30

7782|CLARK|MANAGER|7839|1981-06-09 00:00:00|2450||10

7788|SCOTT|ANALYST|7566|1987-04-19 00:00:00|3000||20

7839|KING|PRESIDENT||1981-11-17 00:00:00|5000||10

7844|TURNER|SALESMAN|7698|1981-09-08 00:00:00|1500|0|30

7876|ADAMS|CLERK|7788|1987-05-23 00:00:00|1100||20

7900|JAMES|CLERK|7698|1981-12-03 00:00:00|950||30

7902|FORD|ANALYST|7566|1981-12-03 00:00:00|3000||20

7934|MILLER|CLERK|7782|1982-01-23 00:00:00|1300||10

      1.3透過核心主鍵欄位做minus找出需要恢復的紀錄,插入到新建的另外一張臨時表中,指令碼如下示:

   create table org_info_temp as (select * from org_info_bk t1 where t1.org_name in (select            t2.org_name from org_info_bk t2 minus(select t3.org_name from org_info t3) ));

      1.4將校對出的丟失資料透過plsql匯出成sql指令碼,然後批次append插入到需要恢復的表中,當然最好事先做個資料庫備份.

      1.5個人感覺此次恢復過程難度不大,細節很重要,如果不是分割槽表,表資料又很大,單單AUL6匯出資料就需要不少時間,還有一個需要注意的東西就是sqlloader做批次匯入時的文字格式,由其欄位是日期格式的,處理過程中還發現AUL6匯出文字資料時有時會漏了表最後幾個欄位值(如果是空的話).

     1.6最後,和大家分享海倫.凱勒的一句話:一個人要想獲得真才實學,必須自己去攀登奇峻險峰.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1135983/,如需轉載,請註明出處,否則將追究法律責任。

相關文章