/第1步:建立臨時表空間 /sql
create temporary tablespace User_Temp tempfile '/u01/app/oracle/oradata/orcl/user_temp.dbf' size 200m autoextend on next 100m maxsize 20480m extent management local; 注:此步建立的是臨時表空間,能夠多個數據公用一個臨時表空間,注意建立的大小便可,名稱隨意。
/第2步:建立數據表空間 /數據庫
create tablespace User_Data logging datafile '/u01/app/oracle/oradata/orcl/user_data.dbf' size 200m autoextend on next 100m maxsize 20480m extent management local; 注:此步注意數據表空間的名稱最好與導出的備份文件所用的表空間名稱一致,不一致容易報錯! 用UltraEdit打開dmp文件切換16進制編輯,搜索tablespace能夠查看備份文件的表空間名稱。
/第3步:建立用戶並指定表空間/數組
create user User_Name identified by 密碼 default tablespace user_data temporary tablespace user_temp; 注:用戶名最好與導出的備份文件的數據庫名保持一致!
/第4步:給用戶授予權限 /oracle
grant connect,resource,dba to User_Name;
/修改用戶密碼 /app
alter user [username] identified by [password];
/刪除用戶 /ide
drop user User_Name cascade;
/刪除表空間 /大數據
DROP TABLESPACE 表空間名 INCLUDING CONTENTS AND DATAFILES;
/清空當前用戶下全部的表和數據的方法 /spa
使用場景:覆蓋一個已存在的庫,而且裏邊有數據,這時直接導入備份文件會報錯,只能清空裏邊原有表和數據以後再導入;固然你也能夠新建一個其餘庫來導入。code
$ su - oracle #切換到Oracle用戶 $ sqlplus / as sysdba #登陸數據庫控制檯 SQL>select 'Drop table '||table_name||';' from all_tables where owner='User_Name'; 注:`User_Name`英文必定要大寫;將會輸出一批刪除表的sql語句,這些SQL語句執行一下就能夠了(須要有drop table的權限) 建議使用sqldeveloper圖形化客戶端鏈接Oracle數據庫執行刪除語句。
兩種方式:exp/imp方式、數據庫泵expdp/impdp方式,推薦用數據泵的方式,支持大數據量。rem
1)前期準備,dumpdir目錄建立
以Linux系統爲例 $ mkdir /home/oracle/dumpdir #執行該命令以前,要首先在硬盤上建立'/home/oracle/dumpdir'數據庫導入、導出所對應的文件夾 $ su - oracle #切換到Oracle用戶 $ sqlplus / as sysdba #登陸數據庫控制檯 SQL>create directory dumpdir as '/home/oracle/dumpdir'; #建立數據泵導入、導出目錄 SQL>select * from dba_directories; #查看一下是否已存在該目錄 ------------------------------------------------------------------------------- SYS DUMPDIR /home/oracle/dumpdir SQL>grant read,write on directory dumpdir to dbname; #受權給操做用戶這個dump目錄的權限【dbname是一個已經存在的數據庫用戶】 SQl>exit
2)expdp數據泵導出
expdp User_Name/Password@orcl directory=dumpdir dumpfile=User_Name.bak.2016.1.1.dmp logfile=User_Name.bak.2016.1.1.log 注:幾個要點,用戶名密碼不用說,orcl是你配置的實例名;dumpdir是個變量,就是上邊那步建立的目錄,能夠多個,名稱隨意; 備份完文件會存放在建立的/home/oracle/dumpdir目錄下。
3)impdp數據泵導入
impdp User_Name/Password@orcl directory=dumpdir dumpfile=User_Name.bak.2016.1.1.dmp remap_schema=SOURCE_USER_Name:DEST_USER_Name 注:前幾個參數跟導出時同樣,導入須要把備份文件放到dumpdir目錄下;多了一個remap_schema, 是填寫備份文件的數據庫用戶名`SOURCE`和本機建立的數據庫用戶名`DEST`,這個在本機建立的用戶名不同的狀況下須要用到。 若是同樣寫成同樣的就好了。
exp命令交互導出
$ su - oracle $ exp #Windows下cmd也是輸入這個命令執行,下同。 1.用戶名:User_Name 回車 2.口令:輸入此用戶名的口令,回車; 3.輸入數組提取緩衝區大小:直接回車,選擇默認的4096; 4.導出文件: EXPDAT.DMP > 填寫導出生成的備份文件完整路徑、文件名,注意相應路徑要已存在,且要有足夠空間, 如:C:\backup\User_Name_2016.dmp ,回車; 5.選擇導出方式:直接回車,選擇默認的按用戶方式導出; 6.導出權限:直接回車,選擇默認的yes; 7.導出表數據:直接回車,選擇默認的yes; 8.導出權限:直接回車,選擇默認的yes; 9.壓縮區:直接回車,選擇默認的yes; 10.要導出的用戶:輸入剛開始的用戶名確認,注:必定要輸入,否則沒有數據導出! 11.再次出現「要導出的用戶」:此時直接回車便可; 12.導出完成,其中提示:導出成功終止, 但出現警告;這種輸入是正常的,說明導出操做成功完成;
imp導入
imp User_Name/Password@127.0.0.1:/orcl fromuser=User_Name touser=User_Name_New file=C:\backup\User_Name_2016.dmp commit=y ignore=y