Empress 資料一覧

Export/Import等を行わずにDBを別ユーザに移行する方法

2007/11/4更新

対応バージョン: 6.10

システムテーブル、及びtabzeroファイルを変更することにより可能である。

例えばユーザbeforeが所有するtestというDBをユーザafterにコピーする場合は以下のようにする。

DBを複製

DBの実体(~before/test)を別ディレクトリ(~before/tmp/test)にコピーする。

% whoami
before

% cd

% mkdir tmp

% cp -r test tmp

コピー先DBのシステムテーブルを変更

% whoami
before

% cd ~/tmp

% empcmd test "update sys_tables set tab_creator='after'"

% empcmd test "update sys_privs set priv_grantor='after' \
    where priv_grantor='before'"

% empcmd test "update sys_privs set priv_grantee='after' \
    where priv_grantee='before'"

% empcmd test "update sys_attr_privs set apriv_grantor='after' \
    where apriv_grantor='before'"

% empcmd test "update sys_attr_privs set apriv_grantee='after' \
    where apriv_grantee='before'"

同DBのtabzeroファイルを変更

% vi test/tabzero
:
MSDBADMINISTRATOR=after ← 変更後のユーザに変更

移行先アカウントにて同DBをディレクトリごとコピー

% su - after

% whoami
after

% cp -r ~before/tmp/test ~

システムテーブルの変更を有効化

% whoami
after

% empadm test recompile_all

関連資料・記事