最近,客戶方要求每天定時導出數據庫某個用戶對象數據,方便出錯時用於數據恢復或用於調用數據。由於客戶生產環境的數據庫為非歸檔模式,數據量比較小,最後采用古老的exp/imp導出導入方法。下面主要講解一下EXP/IMP用戶對象導出導入的使用方法。
正文:
操作系統windows server 2003 oracle10g
EXP用戶對象導出操作:
在oracle客戶端配置tnsnames.ora
canway =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.2.43)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
使用EXP用戶對象導出的方法比較簡單:
打開cmd窗口,執行以下命令:
exp system/canway@canway owner=用戶名 file=*.dmp log=*.log compress=y direct=n rows=y
#標注:owner:需要導出的用戶名 compress: 導入一個extent (Y) DIRECT:直接路徑 (N) ROWS: 導出數據行 (Y)
IMP用戶對象導入操作:
由於imp導入用戶對象數據,不會進行覆蓋,故導入之前需要做以下操作:
1.查看用戶對應默認表空間:
select username,DEFAULT_TABLESPACE from dba_users;
2.刪除用戶並刪除此用戶名下的所有表和視圖(不刪除用戶所在的表空間):
drop user username cascade;
(若該用戶正在運行,需要KILL掉會話
select sid,serial# from v$session where username='user_name';
alter system kill session 'sid,serial'; )
3.重建之前的用戶和密碼:
create user 用戶名 identified by 密碼 default tablespace 表空間名;
(查找用戶對應的默認表空間:
select username,DEFAULT_TABLESPACE from dba_users;)
4.賦予用戶適當的權力
grant connect,resource,dba to 用戶名;
5.對用戶對象數據導入:
運行在命令行的窗口下
imp system/canway@canway file=I:\backup\*.dmp log=I:\backup\*.log fromuser=導出的用戶名 touser=導入的用戶名;
#注釋:file=導出文件存放的直接路徑和名稱.dmp log=導入過程中產生的日志追蹤log
Fromuser:導出的文件所有者 touser:即將需要導入到哪個用戶名。
總結:Exp/Imp導出導入是一個好的轉儲工具,特別是在小型數據庫的轉儲,表空間的遷移,表的抽取,檢測邏輯和物理沖突等中有不小的功勞,本次主要介紹用戶對象導出導入的方法。而對於越來越大的數據庫,特別是TB級數據庫和越來越多數據倉庫的出現,EXP/IMP越來越力不從心了,這個時候,數據庫的備份都轉向了RMAN和第三方工具。