事象:EXP-00091:不振な統計をエクスポートしています
下記コマンドが書かれたBATファイルを実行し、
テーブルのレコードをエクスポートしようとした。
export.bat
exp USER/PASS@SAMPLE file=D:\work\SAMPLE.dmp log=SAMPLE.log tables=TABLE_SAMPLE query=\" WHERE DAY BETWEEN '20190101' AND '20191231' AND TYPE IN('A','B','C') \"
▼結果
コマンドプロンプト:LOG
指定された表をエクスポートします... 従来型パス経由...
.. 表 TABLE_SAMPLEをエクスポート中 100行エクスポートされました。
EXP-00091:不振な統計をエクスポートしています
EXP-00091:不振な統計をエクスポートしています
EXP-00091:不振な統計をエクスポートしています
エクスポートは正常に終了しましたが、警告が発生しました。
と警告が表示された。
▼実行環境
OS:Windows
DB:Oracle
結論:表の一部分を抜き出したため、統計情報の意味がなくなったから。
実行したBATファイルでは、
query=" WHERE DAY BETWEEN '20190101' AND '20191231' AND TYPE IN('A','B','C')
とWHERE句を指定している。
エクスポートを行う際、テーブルの統計情報も一緒に抜き出される。
テーブルの一部のみを抜き出した場合、統計情報が有効でなくなる(場合がある)。
「EXP-00091:不振な統計をエクスポートしています」
はそんな感じの話を伝えてくれていたようだ。
解決策:オプション[statistics=none]をつける
statistics=none をコマンドの最後に付ければ、統計情報の抜き出しを行わない。
export.bat
exp USER/PASS@SAMPLE file=D:\work\SAMPLE.dmp log=SAMPLE.log tables=TABLE_SAMPLE query=\" WHERE DAY BETWEEN '20190101' AND '20191231' AND TYPE IN('A','B','C') \" statistics=none
補足
-
「統計情報」って??
効率的なデータ探索をどう実行できるか?(=実行計画)を決めるためのデータ。
表/インデックス内のデータ分布なんかも保管しているそうな。 -
エクスポート サンプル
export.bat
exp USER/PASS@接続情報 file=ファイルパス query=\" WHERE句 \" <OPTION>
※サンプルを使う場合は注意して自己責任で使ってください。
だいぶん疲れた状態でこの記事を書いているので。。。笑