Oracleバックアップ・データを別の表領域にインポートします(デフォルトの表領域のみが無効です)

1778 ワード

Oracleバックアップのデータファイル(*.dmp)を別のデータベースのユーザーにインポートする場合、表領域を変更する必要がある場合は、次の方法を使用します.
ユーザー名をエクスポートするとします:EXP_USER表領域:EXP_TSPACE
ユーザー名のインポート:IMP_USER表領域:IMP_TSPACE
1.インポート・ユーザーのデフォルト表領域および権限を設定します. 
a)建表文は以下の通りである.
create user IMP_USER
identified by "  "
default tablespace IMP_TSPACE
temporary tablespace TEMP(     )
 
 
b)表領域を設定するだけでは、問題は解決できません.impコマンドを使用してインポートする場合、インポートしたテーブルはEXP_に設定されていることがわかります.TSPACE表空間上.
なぜなら、インポートしたデータベースにもEXP_が存在するからです.TSPACE表空間、同時にIMP_SPACEにもこの表領域の使用権限があります.
原因IMP_USERユーザーの権限にはunlimited tablespace権限が含まれています.(ロールresource、dbaにはこの権限が含まれています).
i.既にユーザが存在し、他の権限は変更しない
a)既存のロールやパーミッションは変更せず,無限の表領域パーミッションのみを削除する.
コマンド:revoke unlimited tablespace from IMP_USER;
b)対IMP_の追加TSPACE権限.
コマンド:alter user qcui quota unlimited on IMP_USER;
 
ii. ユーザーを新規作成し、最小限の権限を付与
a)以下は開発ユーザーの最低権限と役割の参考である.
ロール:connect、exp_full_database、imp_full_database
アクセス権:debug connect session(ストレージ・プロシージャの使用をデバッグし、必須ではありません)
a)コマンド文参照:
		create user IMP_USER
		  identified by "  "
		  default tablespace IMP_TSPACE
		  temporary tablespace TEMP
		  profile DEFAULT
		  quota unlimited on IMP_TSPACE;
		-- Grant/Revoke role privileges 
		grant connect to IMP_USER;
		grant exp_full_database to IMP_USER;
		grant imp_full_database to IMP_USER;
		-- Grant/Revoke system privileges 
		grant debug connect session to IMP_USER;
 
 
2、dmpファイルを直接修正する(推奨しない)
a)UEなどのテキストツールソフトウェアを使用して、DMPファイルの内容を開いて表示することができる.一部のデータやコマンドがバイナリ文字化けしているほか、通常のcreate table、insert文は明文です.
b)建表文中の表領域名を一括修正する.すなわちtablespace EXP_TSPACE代替:tablespace IMP_TSPACE