由于開發過程中有時候無法直接連數據庫,這時候需要將數據庫導入開發環境中,故此總結一個完整的數據庫導入導出過程。
注意expdp和impdp命令末尾都不能加分號
-
1 導出某個用戶的所有數據庫對象
-
1.1 Linux導出
su - oracle
授權用戶grant exp_full_database to <源數據庫用戶名>;
exp <源數據庫用戶名>/<源數據庫用戶密碼>@<實例名> file=/srv/db/temp.dmp
-
1.2 Windows機器導出
進入sqlplus命令行sqlplus /nolog
用dba用戶登錄 conn system/a123@localhost/orcl as sysdba
創建目錄create or replace directory dump_dir as 'D:\oracle\datafile\';
授權grant read,write on directory dump_dir to <源數據庫用戶名>;
授權 grant exp_full_database to <源數據庫用戶名>;
退出sqlplus exit
導出expdp <源數據庫用戶名>/<源數據庫用戶密碼> directory=dump_dir dumpfile=<數據庫文件名dmp后綴> logfile=<日志文件名> schemas=<源數據庫用戶名>
?
-
2 導入(以Windows機器為例)
進入命令行sqlplus /nolog
用dba用戶登錄 conn system/a123@localhost/orcl as sysdba
創建表空間 create tablespace orcltbs datafile 'e:\orcltbs1.dbf' size 50M autoextend on next 5M maxsize 1024M
?extent management local autoallocate segment space management auto;
創建用戶create user <目標用戶名>?identified by <目標用戶密碼>?default tablespace?<表空間名>
授權 grant dba to <目標用戶名>
創建目錄create or replace directory dump_dir as 'D:\oracle\datafile\';
退出sqlplus exit
導入數據庫impdp <目標用戶名>/<目標用戶密碼>@<目標數據庫機器ip>/<目標實例名>?directory=dump_dir dumpfile=<數據庫文件名>?remap_schema=<源用戶名>:<目標用戶名> remap_tablespace=<源表空間>:<目標表空間>