通常我們都是使用PL/SQL Developer來對Oracle中的數據對象和數據進行管理。如果我們想方便快速還原或者部署Oracle到新機器上,怎么進行數據庫的備份、導入恢復呢?
這里我們必須要考慮的:如何創建Oracle表空間、創建Oracle數據庫;如何把Oracle對象、表數據導出到sql腳本中。
1、數據庫備份
(1)導出數據庫對象
Tools-->ExportUser Objects,選擇需要導出的數據庫對象,包括:表、序列、存儲過程、視圖、函數等。

(2)導出表數據
Tools-->Export Tables,導出數據到PL/SQL數據庫腳本中。

2、新建表空間和Oracle數據庫
File-->New-->SQL Window,打開SQL窗口輸入:
表空間、用戶名都為IGSC。
create tablespace IGSC datafile 'E:\IGSOracle\IGSC.dbf' size 10240M; --DROP TABLESPACE IGSC INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; create user IGSC identified by IGSC default tablespace IGSC; grant connect,resource to IGSC; grant dba to IGSC; --Revoke dba from IGSC;
點擊
執行sql。此時,數據庫表空間、表結構、表數據齊全,可以開始遷移出一個完整的數據庫了。
3、導入數據庫及對象
Tools-->Import Tables,先導入數據庫對象,再導入表數據,此時,你的表數據文件可以分幾個文件導入也是不會報錯的,因為表結構已經存在。



執行過程中會出現如下界面:

到這,整個oracle數據庫的遷移工作已完成。注意:我們導出的Oracle對象和數據庫默認還是原來Oracle數據庫的表空間和數據庫用戶名。如果想在新的數據庫服務器中指定不同的表空間和數據庫用戶,則需要替換生成的sql腳本中的表空間和用戶名的設置,並且第二步指定合理的表空間和數據庫用戶。
4、常見問題
(1)就是上面說的注意
我遇到的問題:新環境的數據庫中存在IGS表空間,我導出的數據庫文件IGSOracle.sql表空間默認也為IGS,結果在導入數據庫對象到新表空間IGSC時,沒有導入成功,卻導入到了已存在的IGS表空間中。查看IGSOracle.sql:

發現導出的Oracle對象和數據庫默認還是原來Oracle數據庫的表空間和數據庫用戶名,我們要將表空間和用戶名都改為IGSC,重新導入。
(2)ORACLE initialization or shutdown in progress
想刪除不想要了的數據庫和dbf文件,停掉服務后刪除,重啟服務啟動數據庫實例時報錯。
解決:
開始-->輸入,sqlplus /nolog
SQL> connect system/hope;
解決:因為表數據比較大,我這里將步驟二中的size改為了10240M。
(4)PL/SQL導入表數據報錯Error reading file
如果此文對您有幫助,微信打賞我一下吧~

當表數據文件很大時,選擇Use Command Window方式導入報錯。對大量數據的導入選擇Use SQL*Plus,前者不能讀取大文件,后者可以。
