Oracle

使用 impdb 的表空間 ‘XXX_SML_INDEX’ 不存在

  • April 20, 2020

我是甲骨文的新手。我正在嘗試使用轉儲文件將 Oracle 數據庫從一台機器導入到另一台機器。我正在使用以下命令進行導入

impdp MOBILETEST/MOBILETEST 目錄=MOBILETEST 轉儲文件=MOBILETEST.dmp 日誌文件=MOBILETEST.log full=y;

我收到錯誤:“表空間 ‘XXX_SML_INDEX’ 不存在”

ORA-39083: 對像類型 TABLESPACE_QUOTA 未能創建並出現錯誤:ORA-00959: 表空間 ‘XXX_SML_INDEX’ 不存在 失敗的 sql 是: DECLARE TEMP_COUNT NUMBER; SQLSTR VARCHAR2(200); BEGIN SQLSTR := ‘ALTER USER “MOBILETEST” QUOTA UNLIMITED ON “XXX_SML_INDEX”’; 立即執行 SQLSTR;如果 SQLCODE = -30041 THEN SQLSTR := ‘SELECT COUNT(*) FROM USER_TABLESPACES

WHERE TABLESPACE_NAME = ‘‘XXX_SML_INDEX’’ AND CONTENTS = ‘‘TEMPORARY’’’,則立即執行 SQLSTR;EXE ORA-39083:對像類型 TABLESPACE_QUOTA 未能創建並出現錯誤:

  • 我正在嘗試使用remap_tablespace但不知道在哪裡可以獲得第二個 TABLESPACE_QUOTA 名稱,例如 remap_tablespace=XXX_SML_INDEX: ?

在此處輸入圖像描述

查找數據庫級別的預設表空間(不一定是使用者的預設表空間):

SQL>  select property_value from database_properties 
     where property_name = 'DEFAULT_PERMANENT_TABLESPACE';

PROPERTY_VALUE
--------------
USERS

在另一個具有足夠查詢權限的使用者登錄時,為您的使用者找到預設表空間DBA_USERS

SQL> select default_tablespace from dba_users 
    where username = 'BP';

DEFAULT_TABLESPACE
------------------------------
USERS

以該使用者身份登錄時為您的使用者查找預設表空間:

SQL> select default_tablespace from user_users;

DEFAULT_TABLESPACE
------------------------------
USERS

使用該資訊,將表空間重新映射為:remap_tablespace=XXX_SML_INDEX:USERS.

在目標數據庫(您打算導入的地方)中找到現有表空間的列表,然後

select distinct tablespace_name from dba_tablespaces;

然後使用remap_tablespace

impdp MOBILETEST/MOBILETEST directory=MOBILETEST dumpfile=MOBILETEST.dmp logfile=MOBILETEST.log full=y remap_tablespace=XXX_SML_INDEX:CUSTOMER_TS

引用自:https://dba.stackexchange.com/questions/236873