exp_imp實戰

zhangshengdong發表於2012-06-11
匯出操作:
第一步:首先進入sqlplus客戶端,以sysdba進入
sqlplus "/as sysdba"
第二步:檢視你要匯入的資料表和對應的owner
select owner,table_name from dba_tables where table_name like 'T_BAIDU%';
檢視得出是:zhangsd
第三步:連線到你所屬的zhangsd使用者裡面
conn zhangsd/zhangsd
第四步:檢視zhangsd使用者下的表,哪些是你要匯入的
select * from tab;
select * from tab where tname like 'XXXXX%';
第五步:exp語句
exp zhangsd/zhangsd@ORACLE9I  direct=y recordlength=65532 buffer=20480000 file=D:
\dump\%date:~0,10%_baike.dmp log=D:\dump\%date:~0,10%_baike.log tables=
(T_BAIDU_DOC,T_BAIDU_DOC_CATEGORY,T_BAIDU_DOC_CATEGORY_OLD,T_BAIDU_DOC_HIS,T_BAIDU
_DOC_HISBAK,T_BAIDU_DOC_INNERLINK,T_BAIDU_DOC_TITLE,T_BAIDU_DOC_UPPER,T_BAIDU_DOC_
UPPER_ALL,T_BAIDU_TITLE_UPPER_MINUS)
引數解釋:
direct 直接路徑,這個有別於傳統模式,基本上是用來加速oracle的匯出操作,跳過不必要
的資料轉換,直接將記錄返回到客戶端,直接寫入到檔案中。
file  寫入檔案的dmp
log   記錄日誌
buffer 設定最大快取,加速exp速度
recordlength IO記錄的最大長度,減少IO讀寫的次數,加速exp速度
tables 要匯出的表

匯出完畢後,要再進行測試,看你的匯出的dmp是否可用。

匯入操作:
第一步:檢視源資料段,使用者和表對應的表空間,(我這裡有個lob欄位,它直接獨立儲存在
一個空間裡面了)
檢視語句:
select username,default_tablespace from user_users;
select table_name,tablespace_name from user_tables;
在本地建立相應的表空間,進行測試(大家可以根據情況相應設定)
create tablespace BAIDU_DOC
logging
datafile 'F:\app\zsd\oradata\oracle11g\BAIDU_DOC.dbf'
size 32m
autoextend on
next 32m maxsize 20480m
extent management local;
 
create tablespace GAIBAN_DATA
logging
datafile 'F:\app\zsd\oradata\oracle11g\GAIBAN_DATA.dbf'
size 32m
autoextend on
next 32m maxsize 20480m
extent management local;
 
create user BAIDU_DOC identified by BAIDU_DOC
default tablespace BAIDU_DOC
 
create user zhang identified by zhang
default tablespace BAIDU_DOC
 
grant connect,resource to zhang;
 
grant imp_full_database to zhang;
 
imp語句
imp zhang/zhang@oracle11g recordlength=65532 buffer=20480000 fromuser=zhangsd
touser=zhang file=F:\2012-06-11_baike.dmp log=F:\2012-06-11_baike.log
 
最後,如果是windows 2003寫,每天都做一個備份,然後只保留一個星期的策略指令碼:
exp.bat:
 
@echo off
exp daiqi/daiqidaiqi@ORACLE9I  direct=y recordlength=65532 buffer=20480000
file=D:\dump\%date:~0,10%_baike.dmp log=D:\dump\%date:~0,10%_baike.log tables=
(T_BAIDU_DOC,T_BAIDU_DOC_CATEGORY,T_BAIDU_DOC_CATEGORY_OLD,T_BAIDU_DOC_HIS,T_BAIDU
_DOC_HISBAK,T_BAIDU_DOC_INNERLINK,T_BAIDU_DOC_TITLE,T_BAIDU_DOC_UPPER,T_BAIDU_DOC_
UPPER_ALL,T_BAIDU_TITLE_UPPER_MINUS)
 
rm.bat:
 
forfiles /p "d:\dump" /m *.dmp /d -7 /c "cmd /c del @path"
 
在wins下,把兩個指令碼放置到任務計劃中,每天凌晨2點和3點分別執行:
linux的定期執行可使用crontab。刪除的七天之前的指令碼要使用find命令。

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