萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> Oracle備份數據導入到其他的表空間(只設置默認表空間無效)

Oracle備份數據導入到其他的表空間(只設置默認表空間無效)

   我們在導入一個Oracle備份的數據文件(*.dmp)到另外一個數據庫的用戶下時,如果需要更換表空間,可以采用下幾個辦法。

  假設導出用戶名:EXP_USER 表空間為:EXP_TSPACE

  導入用戶名:IMP_USER 表空間為:IMP_TSPACE

  1、設置導入用戶的默認表空間以及權限。

  a)建表語句如下:

  create user IMP_USER

  Sql代碼

  identified by "密碼"

  default tablespace IMP_TSPACE

  temporary tablespace TEMP(臨時表空間)

  identified by "密碼"

  default tablespace IMP_TSPACE

  temporary tablespace TEMP(臨時表空間)

  b)只是設置表空間,還是解決不了問題。你會發現,在使用imp命令導入時,導入的表還是建立在EXP_TSPACE表空間上。

  原因是:導入的數據庫也存在EXP_TSPACE表空間,同時IMP_SPACE也存在該表空間的使用權限。

  可能原因IMP_USER用戶的權限含有含有unlimited tablespace權限。(角色resource、dba包含此權限)。

  i. 已存在用戶,不改變其他權限

  a) 不改變原有角色或權限,僅去掉無限表空間權限。

  命令:revoke unlimited tablespace from IMP_USER;

  b) 添加對IMP_TSPACE權限。

  命令:alter user qcui quota unlimited on IMP_USER;

  ii. 新建用戶,給予最低權限

  a) 以下是開發用戶最低權限跟角色的參考:

  角色:connect、exp_full_database、imp_full_database

  權限:debug connect session(調試存儲過程使用,非必須)

  a) 命令語句參考:

  Sql代碼

  create user IMP_USER

  identified by "密碼"

  default tablespace IMP_TSPACE

  temporary tablespace TEMP

  profile DEFAULT

  quota unlimited on IMP_TSPACE;

  -- Grant/Revoke role privileges

  grant connect to IMP_USER;

  grant exp_full_database to IMP_USER;

  grant imp_full_database to IMP_USER;

  -- Grant/Revoke system privileges

  grant debug connect session to IMP_USER;

  create user IMP_USER

  identified by "密碼"

  default tablespace IMP_TSPACE

  temporary tablespace TEMP

  profile DEFAULT

  quota unlimited on IMP_TSPACE;

  -- Grant/Revoke role privileges

  grant connect to IMP_USER;

  grant exp_full_database to IMP_USER;

  grant imp_full_database to IMP_USER;

  -- Grant/Revoke system privileges

  grant debug connect session to IMP_USER;

  2、 直接修改dmp文件(不推薦)

  a) 使用UE等文本工具軟件,可打開並查看DMP文件內容。除部分數據或命令是二進制亂碼外,普通的create table、insert語句都是明文。

  b) 批量修改建表語句中的表空間名稱。即:tablespace EXP_TSPACE替換為:tablespace IMP_TSPACE

copyright © 萬盛學電腦網 all rights reserved