Datapump のインポートを実施中に ORA-00959 が発生した!
ORA-00959:表領域"TABLE02"は存在しません
Datapumpのオプション remap_tablespace を使っていたりしない?
そういった場合は、エスケープ文字を使う必要がある。
データ・ポンプ・コマンドラインでの引用符の使用
一部のオペレーティング・システムでは引用符が特殊文字として処理されるため、バックスラッシュ(\)などのエスケープ文字を前に付けないと、アプリケーションに正しく渡されません。これは、コマンドラインとパラメータ・ファイル内の両方に当てはまります。また、オペレーティング・システムによっては、コマンドラインで、特殊文字を含むパラメータ値全体を一重引用符または二重引用符で囲む必要があります。
次の例では、これらの概念を説明します。特定のオペレーティング・システムに該当しない場合があること、および各ユーザーに固有の運用環境は想定していないことに注意してください。
次のように、パラメータ・ファイルでTABLESパラメータを指定するとします。
TABLES = \"MixedCaseTableName\"
これをコマンドラインで指定するとき、一部のオペレーティング・システムでは、次のように一重引用符で囲む必要があります。
TABLES = '\"MixedCaseTableName\"'
https://docs.oracle.com/cd/E16338_01/server.112/b56303/dp_export.htm#BEHJHGHB
どういうことかというと、Oracle は "" を使用せずに名前を指定した場合すべて大文字として処理してしまう。
なので、もし小文字が混ざった文字列をremap_tablespace などのオプションで使う場合、"" が必要となる。
しかし、ドキュメントにもあるように、"" を使っても"" が OS 側で処理されてしまい impdp には "" なしのパラメータが渡されてしまうため、テーブルが見つからないと怒られてしまうわけだ。
以下が実際にエラーが発生した時のログ。
実行例
C:\D\temp>impdp scott/tiger tables=t2 remap_tablespace="USERS":"Table02"
Import: Release 12.1.0.2.0 - Production on 木 2月 1 14:54:23 2021
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics, Real Application Testing
and Unified Auditing options
マスター表"SCOTT"."SYS_IMPORT_TABLE_01"は正常にロード/アンロードされました
"SCOTT"."SYS_IMPORT_TABLE_01"を起動しています: scott/******** tables=t2 remap_tablespace=USERS:Table02
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
ORA-39083: オブジェクト型TABLE:"SCOTT"."T2"の作成が次のエラーで失敗しました:
ORA-00959: 表領域'TABLE02'は存在しません
エラー文は次のとおりです: 5.054 KB 1行がインポートされました
解消するには、以下のようにエスケープ文字を付与する必要がある。
remap_tablespace='\"USERS\":\"Table02\"'
実行例
C:\D\temp>impdp scott/tiger tables=t2 remap_tablespace='\"USERS\":\"Table02\"'
Import: Release 12.1.0.2.0 - Production on 木 2月 1 20:09:45 2021
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics, Real Application Testing
and Unified Auditing options
マスター表"SCOTT"."SYS_IMPORT_TABLE_01"は正常にロード/アンロードされました
"SCOTT"."SYS_IMPORT_TABLE_01"を起動しています: scott/******** tables=t2 remap_tablespace='"USERS":"Table02"'
オブジェクト型SCHEMA_EXPORT/TABLE/TABLEの処理中です
オブジェクト型SCHEMA_EXPORT/TABLE/TABLE_DATAの処理中です
. . "SCOTT"."T2"