Rainbow Planet (GT×IT×SP×SA)

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

01_IT技術 (Technology) 02_OracleDB

OracleDBのexpdp/impdpで発生したエラー対処[ORA-39002,ORA-39070,ORA-39087]&[ORA-39083,ORA-01658]

投稿日:

(4) エラー対応
 (4-1) エラー1:ORA-39002,ORA-39070,ORA-39087
  (4-1-1) 発生状況・エラーメッセージ
  (4-1-2) 原因
  (4-1-3) 対処
 (4-2) エラー2:ORA-39083,ORA-01658
  (4-2-1) 発生状況・エラーメッセージ
  (4-2-2) 原因
  (4-2-3) 対処

(4) エラー対応

(4-1) エラー1:ORA-39002,ORA-39070,ORA-39087

(4-1-1) 発生状況・エラーメッセージ

expdpでデータベースのバックアップを取得しようとした際にエラーとなりました。

ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-39087: directory name DATA_DUMP_DIR is invalid

 

(図411)

  >目次にもどる

(4-1-2) 原因

“directory”のオプションにてエラーになっていますが、Data Pumpによるエクスポートでは、ディレクトリオブジェクトによるdmpやlogの出力先の指定が必須となっており、ここの設定がうまく出来ていない時などにこのエラーが出ます。

目次にもどる

(4-1-3) 対処

今回のケースでは「DATA_PUMP_DIR」のRead/Write権限がexportを実行するユーザーに対して付与する必要があります。

<権限付与コマンド>

GRANT READ ON DIRECTORY DATA_PUMP_DIR TO SCOTT;
GRANT WRITE ON DIRECTORY DATA_PUMP_DIR TO SCOTT;

 

(図413)

目次にもどる

(4-2) エラー2:ORA-39083,ORA-01658

(4-2-1) 発生状況・エラーメッセージ

impdpでデータベースのダンプを他DBにインポートしようとした際にエラーとなりました。

ORA-39083: Object type TABLE:"[Table Name]"."[Column Name]" failed to create with error:
ORA-01658: unable to create INITIAL extent for segment in tablespace [Table Space Name]

 

(図421)

目次にもどる

(4-2-2) 原因

データファイルの容量が足りずに、INITIALエクステント領域を確保できなかったために当該エラーが発生しています。

Oracleではセグメントを作成した際に最初に確保される領域をINITIALセグメント(連続したデータブロック)と呼んでいます。そしてINITIALセグメントが満杯になるとOracleは自動で新しいエクステントをセグメントに割当てますが、これをNEXTエクステント(増分エクステント)と呼びます。

今回のケースではテーブルの作成時に初期のデータファイルの容量を小さく指定し過ぎてしまった事が根本原因でした(エクスポート側とインポート側でサイズを揃えたつもりが、そうなっていなかった)

その結論に至るまでの調査で利用したSQLを二つ備忘で記載します。

■原因調査SQL①

まずは表領域の状態をチェックしました。

select * from dba_tablespaces;

エクステントに関連する数値に着目していましたが、結果としてエクスポート元もエクスポート先も同じ設定になっていました。

(図422)②dba_tablespaces(エクスポート側)


差異なし

(図422)③dba_tablespaces(インポート側)

■原因調査SQL②
表領域の設定は同じだったので、次はデータファイルのサイズを比較するためにdba_data_filesテーブルでデータファイルの容量をチェックしました。

select * from dba_data_files;

こちらに関しては差異がありました。エクスポート側が100MBに対して、インポート側は2MBしか確保されていませんでした。

(図422)④dba_data_files(エクスポート側)
104,857,600/1024/1024 = 100MB


差異あり

(図422)⑤dba_data_files(インポート側)
2,097,152/1024/1024 = 2MB

目次にもどる

(4-2-3) 対処

上記の差分をなくすため、インポート側のデータファイルをエクスポート側に揃える形で100MBに拡張したら、インポートが正常に動作しました。

(図413)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-01_IT技術 (Technology), 02_OracleDB

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ドメインと名前解決およびドメインの運営の仕組みについて

(0)目次&概説 (1) ドメインと名前解決  (1-1) 名前解決とは?  (1-2) DNSサーバの階層  (1-3) DNSサーバの名前解決の流れ (2) ドメインの運営とビジネスの仕組み  ( …

PythonでHTTP Error 403: Forbiddenエラーが出た時の対処方法とエラーの意味について

(0)目次&概説 (1) エラー:HTTP Error 403: Forbidden  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処方法   (1-3-1) 修正前の …

scpコマンドを使った異なるLinuxサーバ間のファイル転送の方法

異なるLinuxサーバ間(サーバA⇔サーバB)でファイルを転送する方法について書きます。 (0)目次&概説 >(1) 転送コマンドの構文 >(2) 転送コマンドの実行  >(2-1) 転送元の転送前( …

PythonのSQLAlchemyで「ArgumentError : Could not parse rfc1738 URL」エラーや「InvalidRequestError: Could not reflect: requested tables(s)」エラーが出た時の対処について

(0)目次&概説 (1) エラー対応1:sqlalchemy.exc.ArgumentError  (1-1) 発生状況・エラーメッセージ   (1-1-1) エラーメッセージ   (1-1-2) エ …

Linuxサーバ(CentOS6)にEclipse(OXYGEN)をインストールする

0.目次 (1) JDKの概要  (1-1) JDKの種類  (1-2) JDKのバージョン(2018年2月時点) (2) JDKのインストール  (2-1) wget コマンドでJDK の rpm …

Top