備份一個ORACLE資料庫有三種標準方式: EXPORT(匯出)、離線備份和聯機備份。匯出方式是資料庫的邏輯備份,其他兩種備份方式都是物理檔案備份。
邏輯備份
ORACLE的EXPORT公用程式exp用來讀取資料庫(其中包括資料字典)和把輸出寫入一個叫作匯出轉儲檔案(export dump file)的二進位檔案中。可以匯出整個資料庫、指定使用者或指定表。在匯出期間,可以選擇是否匯出與表相關的資料字典資訊,如許可權、索引和與其相關的約束條件。exp所寫的檔案包括完全重建全部被選對象所需的命令。
備份方法
(1)隨便找一台windows機器裝上oracle(如果你的oracle是裝在windows上,就不必再另外再安裝了,這步省下).如果只裝oracle的用戶端,好象不會自動裝上exp這個工具,所以得裝上資料庫伺服器。
(2)建立一個批次檔供windows的任務計劃調度執行(在控制台-任務計劃).
(3)在批次檔.bat中指定要匯出的user及exp的一些參數:
exp admin/admin@ora12 file=F:/Every_week_backup/server12/s12_evryweek.dmp owner=LINMARKDEV816,LINMARKHK,LINMARKINSTALL,LINMARKUTA816,NBDEMO,SAKSDEV,SAKSOWNER1227,SAKSOWNER2.6NP,CSPUAT2 consistent=y log=F:/Every_week_backup/server12/s12_evryweek_exp.log
(4)上例中 owner=後面的就是你要匯出的user,你可根據你的需要來輸入。admin/amin@ora12是一個具dba許可權的使用者(你可用system/密碼 來取代,以使它能匯出多個user。ora12是我要匯出的資料庫伺服器的執行個體名。這可能是另外一台機器上的伺服器,你可先在用戶端的$oraclehom/network/admin/tnsnames.ora中設定,使你的用戶端能連上oracle,或直接通過oracle的網路設定工具Net Configuration Assistant來配串連) file=就是你的匯出檔案即dmp檔案的存放路徑.
(5)編輯好批次檔後,你可在windows的任務計劃中執行這個檔案(可設定周期執行,例:如果你要每兩天備份一次,時間是在零辰1點,這個你可開啟任務計划去設定)。當然你得確保設定了任務計劃的電腦在任務執行時不關機。這樣,每次啟動匯出任務時,oracle會重新override那個dmp檔案,所以你也得將前次的dmp檔案拷出來,另外存放).
利用exp進行匯出備份具有三種方式: Full方式、User方式和Table方式。
Export公用程式
邏輯備份的用法
首先開啟【開始】菜單,選擇【運行】命令,彈出如圖1所示的“運行”對話方塊,在“開啟”文字框中輸入cmd,單擊【確定】按鈕。
圖2 “運行”對話方塊
此時會彈出一個DOS視窗,在此視窗下,可以使用EXP/IMP命令進行資料庫的邏輯備份和恢複,有三種操作方式:
* 互動式 是在直接輸入命令後,根據系統的提示一步一步進行,好像在和系統對話一樣。在此不再舉例說明。
* 命令列模式 是在命令的後面接一些參數和參數值。舉例說明:
圖3 命令列模式匯出
如果使用者對IMP和EXP命令參數比較熟悉,命令列模式是比較方便的一種操作方式。在做邏輯備份時檔案名稱最好使用絕對路徑。如果只給出檔案名稱,則備份檔案將被儲存在目前的目錄,這樣會加大控制和管理的難度。
* 參數模式 是在命令的後面接一個參數檔案的名稱,這個參數檔案中存放了執行過程需要調用的部分參數。參數模式其實就是將命令後面所帶的參數寫在一個參數檔案中,然後再使用命令,使後面帶一個調用該檔案的參數,這個參數為PARFILE=。我們可以通過普通的文字檔編輯器和建立這個檔案,為了明顯起見,將該參數檔案命名為. PARFILE的尾碼。以下就是一個參數檔案的內容:
USERID=SCOTT/TIGER@ARJDB
FULL=N
BUFFER=10000
FILE=DEPT.DMP
TABLES=DEPT
執行過程如下:
圖4 以參數模式匯出
上述提到的幾種模式和方法同樣適用於IMP命令。
4. 應用執行個體
下面結合執行個體具體說明匯入和匯出使用方法。為了避免由於操作失誤造成資料丟失,首先以SCOTT使用者登陸系統,建立兩個用作邏輯備份的表,分別為emp_dump表和dept_dump表。
圖5 建立邏輯備份表
確認表建立成功後,啟動DOS命令列視窗,利用匯出命令匯出剛才建立好的邏輯備份表,如圖所示。在做邏輯備份時檔案名稱最好使用絕對路徑,這樣可以減少控制和管理的難度。
圖6 匯出邏輯備份表
為了驗證之後的匯入工作是否正確,我們用DML語句把公司中所有員工都升職為CEO,具體操作如下:
圖7 更新表中的資料
可以用select語句驗證所做的修改是否成功。如圖所示。
圖8 更新後的表資料
由顯示結果可以看出,公司中的所有員工都已經升職為了CEO,資料更新成功。確認成功後刪除掉建立的兩個表。
圖9 刪除邏輯備份表
利用select語句確認兩個表已經不存在後,在DOS視窗中輸入匯入命令,如圖所示。
圖10 恢複邏輯備份表
返回SCOTT使用者,利用select語句驗證所做的邏輯恢複是否已經成功。
exp的選項及含義如下:
(1) Userid
執行匯出的帳戶的使用者名稱/口令,如果這是exp命令後的第一個參數,則關鍵字userid就不必指定。
(2) Buffer
用於擷取資料行的緩衝區尺寸,預設值隨系統而定,通常設為一個高值(大於64000)。
(3) File
匯出轉儲檔案的名字。
(4) Filesize
一個匯出轉儲檔案的最大尺寸。如果file條目中列出了多個檔案,將根據filesize設定值匯出這些檔案。
(5) Compress
一個Y/N標誌,用於指定匯出是否應把片段段壓縮成單個區。這個標誌影響將儲存到匯出檔案中的storage子句。
(6) Grants
一個Y/N標誌,用於指定資料庫物件的許可權是否匯出。
(7) Indexes
一個Y/N標誌,用於指示表上的索引是否匯出。
(8) Rows
一個Y/N標誌,用於指示行是否匯出。如果設定為N,在匯出檔案中將只建立資料庫物件的DDL。
(9) Constraints
一個Y/N標誌,用於指示表上的約束條件是否匯出。
(10) Full
若設為Y,執行FULL資料庫匯出。
(11) owner
匯出資料庫帳戶的清單,可以執行這些賬戶的USER匯出。
(12)Tables
匯出表的清單,可以執行這些表的TABLE匯出。
(13) Recordlength
匯出轉儲檔案記錄的長度,以位元組為單位。除非是在不同的作業系統間轉換匯出檔案,否則就使用預設值。
(14) Inctype
要執行的匯出類型(允許值為complete(預設)、cumulative和incremental )。
(15) Direct
一個Y/N標誌,用於指示是否執行DIRECT匯出。DIRECT匯出在匯出期間繞過緩衝區,從而大大提高匯出處理的效率。
(16) Record
用於INCREMENTAL匯出,這個Y/N標誌指示一個記錄是否儲存在記錄匯出的資料字典表中。
(17) Parfile
傳遞給EXPORT的一個參數檔案名稱,這個檔案可以包含exp所需的全部參數條目。
(18) Statistics
這個參數指示匯出對象的ANALYZE命令是否應寫到匯出轉儲檔案上。其有效值是COMPUTE、ESTIMATE ((預設)和N。在較早的ORACLE版本中,這個參數叫作ANALYZE。
(19) consistent
一個Y/N標誌,用於指示是否應保留全部匯出對象的讀一致版本。在EXPORT處理期間,當相關的表被使用者修改時需要這個標誌。
(20) Log
一個要寫匯出日誌的檔案名稱。
(21) Feedback
表匯出時顯示進度的行數。預設值是0,所以在一個表全部匯出前沒有反饋顯示。
(22) point_in_time_recover
一個Y/N標誌,用於向ORACLE指示,是否正在匯出用於資料表空間時間點恢複的中繼資料。
(23) recover_tablespaces
在資料表空間時間點恢複期間,其中繼資料應被匯出的資料表空間。
(24) Query
匯出時用於每個表的where子句。
(25) tablespaces
移動一個資料表空間時應匯出其中繼資料的資料表空間。
ORACLE8i中exp參數的預設值如表8.1-1所示。
使用exp help=Y可以顯示exp命令的參數。
1. Compress參數
對於包含多個區的資料區段,COMPRESS = Y選項可修改s t o r a g e子句的initial參數。因此,該段的總分配空間應壓縮到一個區。使用該參數要注意兩點: