#chiroito ’s blog

Java を中心とした趣味の技術について

開発環境でもこれだけはやろう -表領域編-

概要

 開発環境ではUSERS表領域一択といったように適当になりがちな表領域管理ですが、開発環境で使うスキーマa、スキーマb、スキーマcは表領域A、テスト環境で使うスキーマd、スキーマe、スキーマfは表領域Bと分けておくとバックアップの範囲を絞ったりリカバリの影響範囲を絞ったりなどメリットがあります。
 この様に分けておくと、誤って開発環境を壊してしまった場合にテスト環境への影響を最小限リカバリすることが可能となり開発の全工程を止めなくてもよくなります。
 今回はOracle Enterprise Manager Database Control上での表領域の管理方法と、その管理と同様のことをSQLでやろうとした場合を示します。

表領域の確認

 既存の表領域の確認はOracle Enterprise Managerの[サーバー]-[表領域]と進むことで表領域の一覧画面へ遷移します。
表領域の一覧画面

select * from DBA_TABLESPACES;

表領域の作成方法

 表領域を作成するには表領域の一覧画面から[作成]ボタンを押すことで作成画面へ遷移します。表領域の作成と同時に表領域を構成するデータファイルの作成も行います。
表領域の追加画面

データファイルの追加画面

CREATE SMALLFILE TABLESPACE "TEST_TS" DATAFILE '/u01/app/oracle/oradata/orcldsk/test_ts_df' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

割り当てられてるデフォルト表領域の確認

 ユーザの一覧画面でもデフォルト表領域の確認は可能です。ユーザのデフォルト表領域を変更するにはユーザの編集画面から変更する事が可能で、ユーザ作成後にユーザのデフォルト表領域を変更した場合でも、これまでにそのスキーマに作成したものは元の表領域のままです。
ユーザの一覧画面

select * from dba_users where username = 'TEST_U';
ユーザの編集画面

ALTER USER "TEST_U" DEFAULT TABLESPACE "TEST_TS"

オンライン・オフライン化

 表領域はオン/オフラインにする事が出来ます。表領域をオン/オフラインにするには表領域一覧の画面から行うことが可能です。オフラインにすることで表領域のメンテナンスを行うことが可能です。
表領域のオンライン化画面

表領域のオフライン化画面

alter tablespace TEST_TS online;
alter tablespace TEST_TS offline normal;

バックアップ・エクスポート

 バックアップやData Pumpによるエクスポートでは表領域を単位とすることが可能です。今回の例はData Pumpによるエクスポートになります。
エクスポート画面

[oracle@db] expdp dumpfile=ダンプファイル tablespaces=TEST_TS

Data Pumpのインポートでの注意点

 expdpで出力したダンプファイルを別スキーマにimpdpで取り込む事がありますが、その場合はremap_schemaだけでは表領域は変更されません。表領域を取り込み先スキーマのデフォルト表領域にするにはremap_tablespaceを利用します。
 下の例ではUSERS表領域にあるTEST_TS_FROMスキーマのデータをTEST_TSスキーマ・TEST_TS表領域へインポートします。
[oracle@db] inpdp dumpfile=ダンプファイル schemas=TEST_TS_FROM remap_schema=TEST_TS_FROM:TEST_TS remap_tablespace=USERS:TEST_TS