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

2006年9月16日 (土) / Author : Hiroshi Sekiguchi.

Mac De Oracle (Cross Platform Transportable Tablespace) #8

続きです。
Oracle10g EE R1 10.1.0.2.0 for Windows(32bit)から、Oracle10g EE R1 10.1.0.3.0 for MacOSX Serverへ表領域をトランスポートする。

今回はいままでの手順とは少々異なる。理由は後半で。(尚、ディレクトリオブジェクトや表領域及び、その表領域に含まれる表は、以前と同様な名称内容で作成済みである)

1.Windows側(ソースデータベース側)でトランスポートセットを作成する。

 1)トランスポート対象表領域を read only に変更する。

 2)トランスポート対象表領域のメタデータをエクスポートする。
   (Data Pump Exportを使用する)
 
 3)トランスポート対象表領域に対応するデータファイルのエンディアン変換した複製を作る。

 4)トランスポート対象表領域を read/write に変更する。



1.Windows側(ソースデータベース側)でトランスポートセットを作成する。
1)トランスポート対象表領域を read only に変更する。
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:¥Documents and Settings¥Administrator>cd C:¥external_dir
C:¥external_dir>sqlplus /nolog

SQL*Plus: Release 10.1.0.2.0 - Production on 土 9月 9 12:52:12 2006

Copyright (c) 1982, 2004, Oracle. All rights reserved.

> conn system/xxxx
接続されました。

SYSTEM> alter tablespace transportable read only;

表領域が変更されました。

SYSTEM>

2)トランスポート対象表領域のメタデータをエクスポートする。

SYSTEM> $ expdp system/glasscatfish directory=transport_dir dumpfile=transport4mac.dmp 
transport_tablespaces=transportable transport_full_check=y

Export: Release 10.1.0.2.0 - Production on 土曜日, 09 9月, 2006 13:07

Copyright (c) 2003, Oracle. All rights reserved.

接続先: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the OLAP and Data Mining options
"SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01"を起動しています: system/********
directory=transport_dir dumpfile=transport4mac.dmp transport_tablespaces=transportable
transport_full_check=y
オブジェクト型TRANSPORTABLE_EXPORT/PLUGTS_BLKの処理中です
オブジェクト型TRANSPORTABLE_EXPORT/TABLEの処理中です
オブジェクト型TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINTの処理中です
オブジェクト型TRANSPORTABLE_EXPORT/TTE_POSTINST/PLUGTS_BLKの処理中です
マスター表"SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01"は正常にロード/アンロードされました
******************************************************************************
SYSTEM.SYS_EXPORT_TRANSPORTABLE_01に設定されたダンプ・ファイルは次のとおりです:
C:¥EXTERNAL_DIR¥TRANSPORT4MAC.DMP
ジョブ"SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01"が13:09で正常に完了しました


SYSTEM>


3)トランスポート対象表領域に対応するデータファイルのエンディアン変換した複製を作る。

いままでは、ターゲットデータベース側のRMANでエンディアン変換していたのだが、今回は、ソースデータベース側でエンディアン変換してしまう。(ターゲットデータベース側でのエンディアン変換が失敗する場合など、状況に応じて、ターゲット又はソースデータベース側のいずれかでエンディアン変換すればいいだろう。)

尚、ソースデータベース側でエンディアン変換するには、RMANの convert tablespaceを利用する。

SYSTEM>
SYSTEM> $
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the OLAP and Data Mining optionsとの接続が切断されました。

C:¥external_dir>rman target / nocatalog

Recovery Manager: Release 10.1.0.2.0 - Production

Copyright (c) 1995, 2004, Oracle. All rights reserved.

ターゲット・データベース: GLASSCAT (データベースID=216418925)に接続されました
リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています

RMAN> convert tablespace transportable
2> to platform 'Apple Mac OS'
3> format='c:¥external_dir¥transportable01.dbf'
4> ;

backupが開始されました(開始場所: 06-09-09)
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: sid=142 devtype=DISK
チャネルORA_DISK_1: データ・ファイルの変換を開始しています
入力データ・ファイルfno=00005 名前=C:¥ORACLE¥PRODUCT¥10.1.0¥TEST¥GLASSCAT¥TRANSPORTABLE01.DBF
変換済データ・ファイル = C:¥EXTERNAL_DIR¥TRANSPORTABLE01.DBF
チャネルORA_DISK_1: データ・ファイルの変換が完了しました。経過時間: 00:00:01
backupが完了しました(完了場所: 06-09-09)

RMAN> exit


Recovery Managerが完了しました。

SYSTEM>


4)トランスポート対象表領域を read/write に変更する。

SYSTEM>
SYSTEM> $ dir

C:¥external_dir のディレクトリ

2006/09/09 13:11 <DIR> .
2006/09/09 13:11 <DIR> ..
2006/09/09 13:09 1,050 export.log
2006/09/09 13:09 77,824 TRANSPORT4MAC.DMP
2006/09/09 13:06 5,251,072 TRANSPORTABLE01.DBF

SYSTEM> alter tablespace transportable read write;

表領域が変更されました。

SYSTEM> select
2 tablespace_name,
3 status
4 from
5 dba_tablespaces
6 where
7 tablespace_name='TRANSPORTABLE';

TABLESPACE_NAME STATUS
------------------------------ ------------------
TRANSPORTABLE ONLINE

SYSTEM>


●手順を少々変更した理由について。

今までは、ターゲットデータベース側(トランスポート先)でデータファイルのエンディアン変換を行っていたのだが、今回はソースデータベース側で変換した。
マニュアルを読む限り変換を行うのは、どちらで行っても関係ないと受け取れるのだが、今回の場合、MacOSX側での変換は以下のように失敗する。その解決策として、ソースデータベース側でエンディアン変換することにした、というのが理由なのである。

RMAN> convert datafile '/Volumes/DiscusWork/temp/transportable01.dbf'
2> from platform = 'Microsoft Windows IA (32-bit)'
3> db_file_name_convert =
4> '/Volumes/DiscusWork/temp/transportable01.dbf',
5> '/Volumes/DiscusWork/4oracle/u02/oradata/tiger/transportable01.dbf';

backupが開始されました(開始場所: 06-09-09)
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: sid=147 devtype=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 09/09/2006 12:55:34
ORA-06502: PL/SQL: 数値または値のエラー: 文字列バッファが小さすぎます。が発生しました

RMAN>

今日はここまで。次回は、ターゲットデータベース側(MacOSX側)で表領域のインポートまでの操作を行う。



3連休、台風の影響で天気が悪いのかと思っていたが、今日だけは天気が持ちそうなので、久々に鎌倉ドライブでもしてきますかね。

聞いている曲:Karl Denson - Dance Lesson #2 - Who are you? Karl Denson - Dance Lesson #2 - Who Are You?
Karl Denson - Dance Lesson #2 - Who Are You?

| |

トラックバック


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

コメント

コメントを書く