Mac De Oracle (Cross Platform Transportable Tablespace) #1 Tweet
さて、予告通りクロスプラットフォーム・トランスポータブル表領域機能をMacOSX上で試す事にする。
トランスポータブル表領域は、Oracle8i からサポートされていた機能であるが、Oracle10gでは、その機能が拡張され異なるプラットフォーム間で表領域を移動することができるようになった。
Mac De Oracleでは、Oracle10g EE R1 10.1.0.3.0 for MacOSX Serverと、Oracle10g EE R2 10.2.0.2.0 for Windows (32bit)及び、Oracle10g EE R1 10.1.0.2.0 for Windows(32bit) を利用し試してみることにする。
※MacOS Xは、Big endian、Windowsは、Little endianであるため、endianの変換がポイント。
H/Wは以下の通り。
● Oracle10g EE R1 10.1.0.3.0 (無理矢理インストールはこちらから)
Apple PowerMac G5 Dual 2.7Ghz
Memory : 1GB
OS : MacOSX Server Tiger 10.4.7● Oracle10g EE R1 10.1.0.2.0 / Oracle10g EE R2 10.2.0.2.0
AMD AthronMP Dual 2800+
Memory : 1GB
OS : Windows XP Professional SP2尚、データベースキャラクタセット及び、各国語キャラクタセットは、すべて同じである。
まずは、Oracle10g EE R1 10.1.0.3.0 for MacOSX ServerからOracle10g EE R2 for Windows(32bit) へのトランスポートを行う。
クロス・プラットフォーム・トランスポートの手順は以下。
前提や制限の詳細については、管理者ガイドの「データベース間での表領域のトランスポート」に記載されているので、そちらを参照のこと。
1.ソース・データベース側で、トランスポートセットを作成する。
トランスポートセットとは、トランスポートする表領域に含まれるすべてのデータファイルと、エクスポートされたメタデータを指す。2.ダーゲット・データベース側のあるサーバへトランスポートセットをコピーする。
(ターゲットデータベースが別サーバにある場合)
3.トランスポートセットを利用し、ターゲット・データベースへ表領域をプラグインする。
●準備
ソースデータベース側(MacOSX側)でトランスポートする表領域の準備を行う。
この例では、データファイルを1つ持つ表領域を作成し、簡単なリレーショナル表を作成しておく。
・表領域の作成。この例では、transportableという表領域を作成した。
> conn system
パスワードを入力してください:
接続されました。
SYSTEM>
SYSTEM> create tablespace transportable
2 datafile '/Volumes/DiscusWork/4oracle/u02/oradata/tiger/transportable01.dbf'
3 size 5m
4 extent management local autoallocate
5 segment space management auto
6 online;
表領域が作成されました。
SYSTEM> select
2 tablespace_name,
3 block_size,
4 status,
5 extent_management,
6 segment_space_management,
7 bigfile,
8 contents
9 from
10 dba_tablespaces
11 where
12 tablespace_name = 'TRANSPORTABLE';
TABLESPACE_NAME BLOCK_SIZE STATUS EXTENT_MAN SEGMEN BIG CONTENTS
------------------------------ ---------- --------- ---------- ------ --- ---------
TRANSPORTABLE 8192 ONLINE LOCAL AUTO NO PERMANENT
1行が選択されました。
・scottユーザが表を作成できるようにquotaを割り当てる。
SYSTEM> alter user scott quota unlimited on transportable;
ユーザーが変更されました。
SYSTEM>
・scottユーザで接続後、表をトランスポート対象表領域(表領域名:transportable)に作成し、
データを登録しておく。
SYSTEM> conn scott
パスワードを入力してください:
接続されました。
SCOTT>
SCOTT> create table hoge
2 (
3 id number primary key,
4 name varchar2(40)
5 )
6 tablespace transportable;
表が作成されました。
SCOTT> begin
2 for i in 1..10000 loop
3 insert into hoge values(i,'〜−○あいうえおabc‾:'||to_char(i));
4 end loop;
5 end;
6 /
PL/SQLプロシージャが正常に完了しました。
SCOTT> commit;
コミットが完了しました。
SCOTT> select * from hoge where rownum < 11 order by id;
ID NAME
---------- ----------------------------------------
1 〜−○あいうえおabc‾:1
2 〜−○あいうえおabc‾:2
3 〜−○あいうえおabc‾:3
4 〜−○あいうえおabc‾:4
5 〜−○あいうえおabc‾:5
6 〜−○あいうえおabc‾:6
7 〜−○あいうえおabc‾:7
8 〜−○あいうえおabc‾:8
9 〜−○あいうえおabc‾:9
10 〜−○あいうえおabc‾:10
10行が選択されました。
SCOTT>
・最後に、ディレクトリオブジェクト(ディレクトリオブジェクト名:transport_dir)を作成しておく。
このディレクトリオブジェクトは、Data Pumpで利用する。
SCOTT> conn / as sysdba
接続されました。
SYS> col directory_path for a40
SYS> select * from dba_directories where directory_path='/Volumes/DiscusWork/temp';
OWNER DIRECTORY_NAME DIRECTORY_PATH
------------------------------ ------------------------------ ----------------------------------------
SYS TRANSPORT_DIR /Volumes/DiscusWork/temp
ソースデータベース側での準備はここまで。次回はトランスポートセットの作成を行う。
聞いている曲:
Public Image Limited - 9 - Warrior


| 固定リンク | 0
コメント