2013年2月26日火曜日

oracle expdpとimpdp


expdpとimpdpを使ってサーバAからサーバBにデータ引っ越ししてみた。

ここはサーバA上での作業
expdp hoge_user/hoge_pass schemas=hoge

※何も指定しなかったら、以下のパスに出力されてた...
★c:\app\oracle\product\11.2.0\dbhome_1\RDBMS\log\EXPDAT.DMP


ここからサーバB上での作業(※oracleをインストールしただけのまっさらなサーバ)

dmpファイルをサーバAからサーバBへコピー・・・

※Oracleに管理者(system)でログイン

-- サーバAと同じスキーマ(ここではhoge)を用意する
-- 表領域作成
CREATE SMALLFILE TABLESPACE "hoge"
 DATAFILE 'C:\APP\ORACLE\ORADATA\SERVERNAME\hoge'
  SIZE 100M AUTOEXTEND ON NEXT 50K MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO


-- さらにユーザも作成
CREATE USER "hoge_user"
  PROFILE "DEFAULT" IDENTIFIED BY "hoge_pass"
  DEFAULT TABLESPACE "hoge"
  TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK
GRANT "CONNECT" TO "hoge_user"

-- 作成したユーザに権限をセット
ALTER USER "hoge_user" QUOTA UNLIMITED ON "hoge"
GRANT "DBA" TO "hoge_user"
ALTER USER "hoge_user" DEFAULT ROLE ALL

-- ユーザ作成、権限の付与はかなりいいかげんなので、適切なものに変更した方が良いと思う...


-- データ(EXPDAT.DMP)取り込み
-- 指定なしだと c:\app\oracle\product\11.2.0\dbhome_1\RDBMS\log\EXPDAT.DMP を読みに行くらしいので
-- サーバB上の「サーバAと同じパス」にファイルを配置してみた。
impdp hoge_user/hoge_pass schemas=hoge

サーバB作業完了


...サーバAのスキーマとログインユーザまで含めて(サーバBに手動でcreate user などを発行しないで)ごっそりコピーする方法ってあるのかな?

0 件のコメント:

コメントを投稿