oracle使用exp/imp導入導出(用戶)


實例,從遠程機器上導出nxgy用戶的所有對象和數據,然后導入到本機數據庫的nxgy用戶里(用戶名可自定義)

如果本機nxgy用戶已經存在(數據沒用,可以刪除),級聯刪除用戶所有對象

 

首先,從遠程機器上導出nxgy用戶的數據和對象

兩種方式:

 

  1. 使用exp命令,逐步根據提示操作(因為導出用戶,用該用戶登錄即可),在填寫完導出文件路徑后,選擇U(即(2)U(用戶)可以導出用戶的所有數據),以后選擇默認,填寫導出用戶時填寫:nxgy。
  2. 使用exp命令:exp user_name/password owner=導出用戶 file=導出地址

 

 

[sql]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. exp nxgy/nxgy owner=nxgy file=D:\dmp\user_nxgy.dmp  

如導出成功,會給出提示:成功終止導出,沒有出現警告。

 

另需要做的檢查:

1.在遠程機器上查看用戶默認空間,以便導入時創建一樣的空間。

 

[sql]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. SQL> select username,default_tablespace from dba_users where username='NXGY';  
  2.   
  3. USERNAME                       DEFAULT_TABLESPACE  
  4. ------------------------------ ------------------------------  
  5. NXGY                           USERS  


2.查看用戶使用的表空間

 

 

[sql]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. SQL> select DISTINCT owner,tablespace_name from dba_extents where owner like 'NX  
  2. GY';  
  3.   
  4. OWNER                          TABLESPACE_NAME  
  5. ------------------------------ ------------------------------  
  6. NXGY                           SYSTEM  
  7. NXGY                           USERS  
  8. NXGY                           GTZY_DATA  


3.查看表空間對應的數據文件,以便在本機上創建大小合適的數據文件

 

 

[sql]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. SQL> select file_name,tablespace_name,bytes from dba_data_files where tablespace  
  2. _name in ('SYSTEM','USERS','GTZY_DATA');  
  3.   
  4. FILE_NAME  
  5. --------------------------------------------------------------------------------  
  6.   
  7. TABLESPACE_NAME                     BYTES  
  8. ------------------------------ ----------  
  9. D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF  
  10. USERS                             9175040  
  11.   
  12. D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF  
  13. SYSTEM                          534773760  
  14.   
  15. D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\GTZY_DATA  
  16. GTZY_DATA                       146800640  


4.檢查本機的表空間,是否存在SYSTEM,USERS,GTZY_DATA

 

 

[sql]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. SQL> select name from v$tablespace where name in ('SYSTEM','USERS','GTZY_DATA');  
  2.    
  3. NAME  
  4. ------------------------------  
  5. SYSTEM  
  6. USERS  

沒有表空間gtzy_data,需要創建

 

5.查詢本機是否存在nxgy用戶

 

[sql]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. SQL> select username from dba_users where username='NXGY';    

 

6.創建表空間,和用戶

 

[sql]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. --刪除表空間,刪除gtzy_data時,磁盤上的文件沒有刪除,要手動刪除  
  2. --drop tablespace gtzy_data including contents and datafiles;  
  3. --drop tablespace gtzy_temp including contents and datafiles;  
  4. /*第1步:創建臨時表空間  */  
  5. create temporary tablespace gtzy_temp    
  6. tempfile 'D:\java\oracle\oradata\orcl\gtzy_temp.dbf'   
  7. size 50m    
  8. autoextend on    
  9. next 50m maxsize 1024m    
  10. extent management local;   
  11. /*第2步:創建數據表空間  */  
  12. create tablespace gtzy_data    
  13. logging    
  14. datafile 'D:\java\oracle\oradata\orcl\gtzy_data.dbf'   
  15. size 50m    
  16. autoextend on    
  17. next 50m maxsize 1024m    
  18. extent management local;   
  19.   
  20. --刪除用戶  
  21. --drop user nxgy cascade;  
  22.   
  23. /*第3步:創建用戶並指定表空間  */  
  24. create user nxgy identified by nxgy    
  25. default tablespace gtzy_data    
  26. temporary tablespace gtzy_temp;    
  27.    
  28. /*第4步:給用戶授予權限  */  
  29. grant connect,resource,dba to nxgy;  

在本機測試用,表空間給小點也無所謂,區別是遠程服務器上默認表空間為USERS,而在本機,我把默認表空間改成了GTZY_DATA

 

最后導入數據庫文件

使用imp命令:imp user_name/password fromuser=導出的用戶 touser=導入的用戶 file=文件路徑

C:\Users\administrator>imp nxgy/nxgy fromuser=nxgy touser=nxgy file=d:/dmp/user_nxgy.dmp

或者使用imp命令逐步進行,只需要注意在提示輸入用戶名是,輸入的是導入的用戶名,其它均為默認。

即用sys as sysdba登錄,用戶名填寫nxgy,則會把nxgy的數據導入到sys中

如導入成功,會給出提示:成功終止導入,沒有出現警告。

導出用戶和導入用戶不同,會出現警告


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM