« Mac De Oracle (Cross Platform Transportable Tablespace) | トップページ | Mac De Oracle (Cross Platform Transportable Tablespace) #2 »

2006年9月 8日 (金) / Author : Hiroshi Sekiguchi.

Mac De Oracle (Cross Platform Transportable Tablespace) #1

さて、予告通りクロスプラットフォーム・トランスポータブル表領域機能を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 Public Image Limited - 9
Public Image Limited - 9

| |

トラックバック


この記事へのトラックバック一覧です: Mac De Oracle (Cross Platform Transportable Tablespace) #1:

コメント

コメントを書く