目錄
Oracle導入導出數據庫可以使用兩種命令
一、導入:imp,導出:exp
1.創建表空間
create tablespace ekp1
datafile 'D:\app\orcl\ekp.dbf'
size 8G
autoextent on
next 100M
maxsize unlimited
extent management local autoallocate
segment space management auto
2.增加表空間
alter tablespace ekp1 datafile 'D:\app\orcl\ekp1.dbf' size 8G;
alter tablespace ekp1 datafile 'D:\app\orcl\ekp2.dbf' size 8G;
3.創建用戶並指定表空間
create user tengpengfei identified by 123 default tablespace ekp1
4.給用戶權限
grant dba to tengpengfei
5.導入/導出數據庫,導入/導出數據庫有兩種命令imp/exp,impdp/expdp
導入導出只能使用對應的命令
IMP
imp 用戶名/密碼@數據庫實例名 --創建實例
file=D:\20190811.dmp --待導入的dmp文件
log=D:\20190811.log --導入時生成的日誌文件
[ fromuser=導出數據的用戶名] --導出dmp文件的用戶(根據用戶名導入數據時配置)
[ touser=導入數據的用戶名] --導入dmp文件的用戶(根據用戶名導入數據時配置)
[full=y] --導入dmp文件中的全部內容
ignore=y --導入時如果沒有表,創建表導入數據,有表,忽略表導入數據
注意:full和fromuser,touser不能同時使用
EXP
exp 用戶名/密碼@數據庫實例 --創建實例
file=D:\20190811.dmp --待導出的dmp文件
log=D:\20190811.log --導出時生成的日誌文件
[owner=(用戶名)] --導出哪個用戶下的表和數據
[tables=(test1,test2)] --導出test1表和test2表
[query=\" where filed like'%0'\"] --導出指定條件結果
[full=y]
二、導入:impdp,導出:expdp
這個命令可以導入到指定的表空間,或者指定用戶,而imp/exp命令,導出時是什麼用戶/表空間,導入時不能修改。
源數據:
表空間ekp
用戶ekp12
目標數據
表空間ekp1
用戶tengpengfei
前三步和上面是一致的
4.創建邏輯目錄: create directory dump_dir as 'd:\';
5.給導出用戶賦予讀寫權限: grant read,write on directory dump_dir to tengpengfei;
6.導入\導出
IMPDP
impdp 用戶名/密碼@數據庫實例
directory=dump_dir
dumpfile=20190811.dmp
remap_schema=ekp12:tengpengfei
remap_tablespace=ekp:ekp1
logfile=20190811.log
EXPDP
expdp 用戶名/密碼@數據庫實例
schemas=ekp12
directory=dump_dir
dumpfile=20190811.dmp
logfile=20910811.log
注意:dump_dir是邏輯目錄,使用以下命令創建,查看,刪除
create directory dump_dir as 'd:\test';
select * from dba_directories;
drop directory dump_dir;
注意:在導入時,可能會卡死,當我們想刪除用戶再次創建用戶,再次重新執行以上命令出現異常
①:ora-01940:無法刪除當前已連接用戶,我的原因是強行終止導入導致用戶tengpengfei被鎖住了,可以使用
-
查看用戶對應的session:select username,sid,serial# from v$session where username='tengpengfei';
-
刪除session信息: alter system kill session'對應sid,對應serial#';
再次刪除用戶即可完成。
②ora-28000:賬戶已被鎖定
-
解鎖賬戶:alter user tengpengfei account unlock;
其他的一些命令:
-
刪除表空間:drop tablespace ekp1 including contents and datafiles;
-
刪除用戶以及用戶下的數據:drop user tengpengfei cascade
-
查看錶數據硬盤上所在位置:select * from dba_data_files
-
查看指定用戶下的數據量:select sum(s.bytes)/1024/1024 "size(MB)" from dba_segments s where s.owner='tengpengfei'