Oracle データベースでは、データを DMP 形式にエクスポートする必要がある場合、PLSQL を使用してエクスポートすることはできず、データベース サーバーを介してエクスポートする必要があります。
操作方法は以下の通りです。
1. データベースサーバーにログインします。
2. データベースユーザーを切り替えます。
3. エクスポートするテーブルデータのコマンドを実行します。
例としてテーブル APPLSYS.FND_ID_FLEX_SEGMENTS を取り上げます。
exp gl/gl file=/data03/bakdmp/test.dmp log=/data03/bakdmp/test.log tables=APPLSYS.FND_ID_FLEX_SEGMENTS
コマンドの説明:
exp: エクスポート (インポートコマンドは imp)
gl/gl: ユーザー名とシークレット
file=/data03/bakdmp/test.dmp: エクスポートされたファイル名とパス
log=/data03/bakdmp/test.log: エクスポートされたログ名とパス テーブル
=APPLSYS.FND_ID_FLEX_SEGMENTS: エクスポートされるテーブル
プロンプトデータの実行後: EXP-00009: APPLSYS のテーブル FND_ID_FLEX_SEGMENTS をエクスポートする権限がありません (テーブルをエクスポートする権限がありません)
理由は、ユーザーがデータベース データをエクスポートする権限ロール EXP_FULL_DATABASE を持っていないためです。したがって、
最初に EXP_FULL_DATABASE ロールを割り当てます。ユーザーへ:
alter user 此处填用户名 default role EXP_FULL_DATABASE;
ユーザーに EXP_FULL_DATABASE ロールが割り当てられた後のクエリは次のとおりです:
EXP_FULL_DATABASE ロールが割り当てられた後でも、データベースは DMP 形式ファイルをエクスポートするときに、アクセス許可がないことを示すエラーを報告します。エクスポート ロール権限 EXP_FULL_DATABASE は NO です。
解決策は次のとおりです。
次のコマンドを実行します。
alter user 此处填用户名 default role all;
コマンドの解釈: デフォルトで、このユーザーのすべてのロール権限を有効にします。
実行後のクエリは次のようになります。
4. エクスポート コマンドを再度実行します。