Mac De Oracle (Cross Platform Transportable Tablespace) #8 Tweet
続きです。
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連休、台風の影響で天気が悪いのかと思っていたが、今日だけは天気が持ちそうなので、久々に鎌倉ドライブでもしてきますかね。
| 固定リンク | 0
コメント