共計 5175 個字符,預計需要花費 13 分鐘才能閱讀完成。
這篇文章給大家介紹 impdp/expdp 的示例分析,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
create tablespace C_MAIN DATAFILE
D:\oracle\product\10.2.0\oradata\orcl\main.dbf SIZE
1024M
一.exp/imp 備份還原
可使用 plsql 進行這種 oracle 數據庫的備份和還原。也可以使用 cmd 的命令行方式進行備份還原。
操作步驟大致有:
打開 cmd 窗口,切換到 d:\oracle10\product\10.1.0\db_1\bin\(oracle 安裝目錄下的可執行文件的文件夾目錄)。
調用命令:
備份:
exp
user/pass@database file=F:\dump\20120521.dmp owner=(user)
log=F:\dump\user-exp.log
還原
imp
newuser/pass@databasefile=F:\dump\20120521.dmp fromuser=user touser=newuser
log=F:\dump\user-imp.log
二. 使用 expdp、impdp 備份還原
登錄 linux 系統,sqlplus
/as sysdba 進入 sql 命令行,
2.1 查看目錄:
SQL select * from
dba_directories;
2.2、指定 dump_dir 目錄:(目錄維護命令:)
SQL create directory
dump_dir as /oracle/backup // 建立
Drop directory
dump_dir;// 刪除
2.3、為用戶對該目錄操作授權:
SQL grant read,write on directory
dump_dir to user_name;
2.4 進行命令操作:
備份:
expdp user/pass DIRECTORY =
dump_dir DUMPFILE=user.dmp SCHEMAS=user logfile=user-expdp.log
version=10.2.0.1.0 (需要導入機器的 version:用于將高版本導出導入到低版本 oracle 數據庫)
還原:
impdp
newuser/pass DIRECTORY=dump_dir DUMPFILE=user.dmp REMAP_SCHEMA=user:newuser
logfile=user-impdp.log
table_exists_action=replace
REMAP_SCHEMA 參數是: 源 scheme:目標 scheme.
三、遇到的問題:
3.1processing
object type
scheme_export/table/statistics/table_statistics。執行到這里出現假死,停在這個畫面很長時間
可以加一個參數 EXCLUDE=TABLE_STATISTICS。我是放著過了段時間回來執行完了。
3.2ORA-39213:
Metadata processing is not available 解決方法:
SQL execute
dbms_metadata_util.load_stylesheets;
==========================================================
網上資料參考:
可參考資料 http://www.cnblogs.com/lanzi/archive/2011/01/06/1927731.html impdp 和 expdp 的參數都很詳細
a. 創建到服務端的 dblink
create database link link_name connect to username
identified by password using connect_string //username 和 password 是 server 端的
b.conn / as sysdba
create or replace directory dir as directory
grant read,write on directory dir to username;
c.expdp
username/password directory=dir network_link=link_name …
// 這里的 username 用創建 dblink 的那個用戶,directory 也是目標數據庫創建的
4. 如果想不生成 dmp 文件而直接導入一個數據庫,原理和 2 類似,直接使用 impdp 帶 network_link
,這樣可以直接 impdp,而繞過了 expdp 的步驟
以及文章:
http://tech.it168.com/db/o/2007-03-14/200703140943314.shtml
引用
要了解 impdp,請先了解導出,我之前作過導出的筆記:oracle
10g 數據泵之 expdp。這兩個筆記也許只對程序員有用,通常用于把正式區的數據導入到測試區,對數據庫管理員也許幫助不大,他們使用這些工具大多是用于數據備份。
impdp 可以將數據加載到整個數據庫、特定的方案(也就是用戶)、特定的表空間或者特定的表,也可以將表空間傳輸到數據庫。impdp 支持網絡模式操作,即從另一個數據庫加載數據。
使用 impdp 導入數據
1.指定轉儲文件(存放導出數據的文件) 存放的目錄
SQL connect
sys/password as sysdba;
SQL create directory dump_dir as
‘d:\dump’;
2.使用 impdp 命令
開始 – 運行 – cmd
impdp username/password
parameter1[,parameter2,….]
其中,username 表示用戶名;password 表示用戶密碼;parameter1 和 parameter2 表示參數。參數的類型有近 40 個,可以使用命令 impdp
help= y 查看所有參數和參數的含義。下面介紹一些對導入數據庫和表需要的常用參數,它們的含義和在 expdp 中的含義完全相同。
content
:指定導入的內容。語法格式:content={all|
data_only|metadate_only}。其中 all 表示導入對象定義及其數據,data_only 表示只導入對象數據,metadate_only 表示只導入對象定義。默認為 all
directory:指定轉儲文件和日志文件所在的默認位置(也就是保存數據的文件位置)。語法格式:directory=direcotry_object。direcotry_object
是 create directory 語句創建的目錄對象。
dumpfile:指定轉儲文件的名稱。語法格式:dumpfile=[
direcotry_object:]file_name[,….]。direcotry_object 默認為上面 directory 參數指定的目錄對
象。file_name 默認名稱是 expdat.dmp。如果導入文件過大,可以指定多個文件名,如
direcotry_object:mydb_%U.dmp。”%U”是一個占位符,使用這種方式不會出現同名的文件。
logfile:指定日志文件的名稱。語法格式:logfile=[
direcotry_object:]file_name。direcotry_object 默認為 directory 參數指定的目錄對象。file_name 日志文件, 默認名稱是 export.log。
exclude:導入時要排除的對象。語法格式:
exclude=object_type[:name_clause][,….]。object_type 表示對象類型,如 table、view、
index、function、preocedure,name_clause 表示使用 SQL 語句,指定對象名的篩選條件,如 table:”like
‘emp%’”表示排除 emp 開始的任何表。
include:導入時要包含的對象。語法格式:include
=object_type[:name_clause][,….]。object_type 和 name_clause 含義同 exclude 參數解釋一樣。include 和 exclude 不可以同時使用。當一個對象被包含時,所有相關對象也被包含。
network_link:指定網格導入時的數據庫鏈接名。語法格式:network_link=database_link。database_link 表示遠程數據庫鏈接名。
query:指定導入數據的 where 條件。語法格式:query=[schema.][table_name:]query_clause。其中
schema 表示方案名,也就是用戶名,table_name 表示表名,query_clause 表示條件子句,即 where 子句。
tables:指定導入表。語法格式:tables=[schema.]table_name[,….]。schema 表示方案名,table_name 表示表名
full:指定是否將整個數據庫導入。語法格式:full={y|n}。y 表示執行數據庫導入,n 表不執行。默認為 n。
parfile:指定導入參數文件名。把 impdp 命令所需的參數寫在一個文件中, 執行 impdp 命令時指定這個文件,而不用指定各種參數
導入實例
順便把 expdp 命令也寫進來,以方便對比。為了不和上一篇導出筆記重復,這里以導入遠程數據庫的數據到本地數據庫為例。
導出遠程數據庫
1. 估算轉儲文件大小
如果數據庫很大,這個過程也許會執行很久。在導出數據庫之前,最好先估算一下轉儲文件 (導出到的文件) 的大小,以便確定合適 filesize 參數值,和確定是否有足夠的磁盤空間。使用語法:
expdp
username/password@234DB full=y estimate_only=y
nologfile=y;
其中 estimate_only= y 表示只估算轉儲文件的占的磁盤空間,不執行導出操作;@234DB 表示遠程數據庫,它是在 tnsnames.ora 文件中定義的。
2. 導出數據庫
expdp
username/password@234DB directory=dump_dir dumpfile=mydb_%U.dmp logfile=mydb.log
filesize=200m
full=y
其中 dump_dir 表示導出文件的目錄,由于這里是導出遠程數據庫,所以這個目錄是在遠程機子中的;%U 是一個占位符,表示 01~99 的兩位數,這時執行會創建如 MYDB_21.DMP 之類的文件
3. 導入整個數據庫
impdp
username/password directory=dump_dir dumpfile=mydb_%U.dmp
full=y;
其中 dump_dir 表示入出文件的目錄,這里要把遠程導出的文件拷貝到本地機子上
導入遠程表
1. 導出表
expdp
username/password@234DB directory=dump_dir dumpfile=mytable.dmp
tables=schemas.emp
其中 schemas 表示方案(即用戶),emp 表示遠程數據庫名。使用這種方式轉儲文件將保存在遠程服務器的操作系統中。如果要把轉儲文件保存到本地機子,使用以下語法:
expdp
username/password directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp
network_link=to234db
其中 username/password 分別是本機數據庫用戶名和密碼,to234db 是本地數據庫指向遠程數據庫的 database
link。這種方式可以把數據保存到本機中,但是會產生網絡流量。
2. 導入表
impdp username/password
directory=dump_dir dumpfile=mytable.dmp
tables=schemas.emp
其中 schemas 要和遠程用戶名相同,也就是說如果本地沒有這個用戶,要先創建用戶, 格式如:
grant
connect,resource to schemas identified by
password。emp 是要導入的表,如果本地 schemas 方案已經存在要導入的表,可以指定 tables_exists_action 參數,使用格
式是 tables_exists_action={skip|append|truncate|replace}這四個參數值分別表示忽略這個表、把記錄
追加到該表后面、先刪除表數據再追加記錄和使用新表替代已經存在的表。
關于 impdp/expdp 的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。