實例,從遠程機器上導出nxgy用戶的所有對象和數據,然后導入到本機數據庫的nxgy用戶里(用戶名可自定義)
如果本機nxgy用戶已經存在(數據沒用,可以刪除),級聯刪除用戶所有對象
首先,從遠程機器上導出nxgy用戶的數據和對象
兩種方式:
- 使用exp命令,逐步根據提示操作(因為導出用戶,用該用戶登錄即可),在填寫完導出文件路徑后,選擇U(即(2)U(用戶)可以導出用戶的所有數據),以后選擇默認,填寫導出用戶時填寫:nxgy。
- 使用exp命令:exp user_name/password owner=導出用戶 file=導出地址
- exp nxgy/nxgy owner=nxgy file=D:\dmp\user_nxgy.dmp
如導出成功,會給出提示:成功終止導出,沒有出現警告。
另需要做的檢查:
1.在遠程機器上查看用戶默認空間,以便導入時創建一樣的空間。
- SQL> select username,default_tablespace from dba_users where username='NXGY';
- USERNAME DEFAULT_TABLESPACE
- ------------------------------ ------------------------------
- NXGY USERS
2.查看用戶使用的表空間
- SQL> select DISTINCT owner,tablespace_name from dba_extents where owner like 'NX
- GY';
- OWNER TABLESPACE_NAME
- ------------------------------ ------------------------------
- NXGY SYSTEM
- NXGY USERS
- NXGY GTZY_DATA
3.查看表空間對應的數據文件,以便在本機上創建大小合適的數據文件
- SQL> select file_name,tablespace_name,bytes from dba_data_files where tablespace
- _name in ('SYSTEM','USERS','GTZY_DATA');
- FILE_NAME
- --------------------------------------------------------------------------------
- TABLESPACE_NAME BYTES
- ------------------------------ ----------
- D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
- USERS 9175040
- D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
- SYSTEM 534773760
- D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\GTZY_DATA
- GTZY_DATA 146800640
4.檢查本機的表空間,是否存在SYSTEM,USERS,GTZY_DATA
- SQL> select name from v$tablespace where name in ('SYSTEM','USERS','GTZY_DATA');
- NAME
- ------------------------------
- SYSTEM
- USERS
沒有表空間gtzy_data,需要創建
5.查詢本機是否存在nxgy用戶
- SQL> select username from dba_users where username='NXGY';
6.創建表空間,和用戶
- --刪除表空間,刪除gtzy_data時,磁盤上的文件沒有刪除,要手動刪除
- --drop tablespace gtzy_data including contents and datafiles;
- --drop tablespace gtzy_temp including contents and datafiles;
- /*第1步:創建臨時表空間 */
- create temporary tablespace gtzy_temp
- tempfile 'D:\java\oracle\oradata\orcl\gtzy_temp.dbf'
- size 50m
- autoextend on
- next 50m maxsize 1024m
- extent management local;
- /*第2步:創建數據表空間 */
- create tablespace gtzy_data
- logging
- datafile 'D:\java\oracle\oradata\orcl\gtzy_data.dbf'
- size 50m
- autoextend on
- next 50m maxsize 1024m
- extent management local;
- --刪除用戶
- --drop user nxgy cascade;
- /*第3步:創建用戶並指定表空間 */
- create user nxgy identified by nxgy
- default tablespace gtzy_data
- temporary tablespace gtzy_temp;
- /*第4步:給用戶授予權限 */
- 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中
如導入成功,會給出提示:成功終止導入,沒有出現警告。
導出用戶和導入用戶不同,會出現警告