データベース: 2018年10月アーカイブ

テスト用データを Oracle DB にセットアップする必要があったんで、本番DBのバックアップファイルから impdb コマンドでインポートをしようかと。
全部のテーブルではなく、必要なのは3つだけなので、以下のようなコマンドを実行。

impdb HOGE/HOGEPW@HOGEDB directory=backup_dir dumpfile=backup.dmp table_exists_action=replace tables=(ロケーション,IPアドレスリスト,ユーザーマスタ)

そしたら、こんなエラーが出て失敗しちゃう。

ORA-39002: 操作が無効です
ORA-39166: オブジェクトHOGE.IPアドレスリストが見つかりません。

これ、エラーになるタイミングは毎回バラバラで、

ORA-39002: 操作が無効です
ORA-39166: オブジェクトHOGE.IPアドレスリストが見つかりません。
ORA-39166: オブジェクトHOGE.ユーザーマスタが見つかりません。

こういうときもある。
別にテーブル名が問題なわけではなく、

impdb HOGE/HOGEPW@HOGEDB directory=backup_dir dumpfile=backup.dmp table_exists_action=replace tables=(IPアドレスリスト)

こんな感じで、エラーになったテーブル単体でインポートすると、

. . "HOGE"."IPアドレスリスト"    12.3MB   12034行がインポートされました

こんな具合に成功する。カンマ区切りで複数テーブルを指定したときだけ問題。
でも、英語名のテーブルではエラーにならないんで、やっぱ日本語名なのが問題なんだろうなあと思って、

impdb HOGE/HOGEPW@HOGEDB directory=backup_dir dumpfile=backup.dmp table_exists_action=replace tables=("ロケーション","IPアドレスリスト","ユーザーマスタ")

こんな風に、テーブル名をダブルクォーテーションで括ってみた。

. . "HOGE"."ロケーション"    28.5MB   9800行がインポートされました
. . "HOGE"."IPアドレスリスト"    12.3MB   12034行がインポートされました
. . "HOGE"."ユーザーマスタ"      1.3MB   109行がインポートされました

ああ、やっぱり成功。

俺はそもそもテーブル名や項目名などに日本語を使うのが嫌い(プログラムでも、(日本語対応されているかどうかは関係なく)日本語の変数名を使うのとか大嫌い(読みづらいは!!)なんだけど、まあ、それはおいといて、日本語使えるんなら、英語名と同じ動きをしっかりしてほしいわ!!

Oracle は金に汚いだけの会社じゃのお。

このアーカイブについて

このページには、2018年10月以降に書かれたブログ記事のうちデータベースカテゴリに属しているものが含まれています。

前のアーカイブはデータベース: 2018年9月です。

次のアーカイブはデータベース: 2019年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら