Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Oracle Data Pumpによるエクスポートとインポート

oracle4engineer
February 20, 2024
7.8k

Oracle Data Pumpによるエクスポートとインポート

2024年2月20日開催 Oracle DBaseCampで発表した資料です。
アーカイブ動画:https://youtu.be/ysJdrpuwkNY

oracle4engineer

February 20, 2024
Tweet

Transcript

  1. 1. エクスポートとインポートの概要 2. Oracle Data Pump概要 3. Oracle Data PumpによるOracle

    Databaseの移行 4. Oracle Database移行時に役立つOracle Data PumpのTips 5. まとめ Agenda Copyright © 2024, Oracle and/or its affiliates 2
  2. 1. エクスポートとインポートの概要 • エクスポートおよびインポートとは • Oracle Databaseにおけるエクスポートとインポート • Oracle Data

    Pumpによるエクスポートとインポートの用途 2. Oracle Data Pump概要 3. Oracle Data PumpによるOracle Databaseの移行 4. Oracle Database移行時に役立つOracle Data PumpのTips 5. まとめ Agenda Copyright © 2024, Oracle and/or its affiliates 3
  3. データベース間のデータの移動を可能にするユーティリティ • エクスポートにより、ソース・データベースから対象のオブジェクトを抽出し、ダンプ・ファイルと呼ばれるOSファイルを作成 • このダンプ・ファイルは、エクスポートおよびインポート・ユーティリティのみで読み書き可能なバイナリファイル • インポートにより、ダンプ・ファイルからオブジェクトの定義および表データを読み込み、ターゲット・データベースに書き込む • 現在では Oracle

    Data Pump (10g〜)のコンポーネントを指す • 以前より提供されていたエクスポートとインポートは「オリジナルのエクスポート、オリジナルのインポート」と呼ぶ • Oracle Data Pumpのエクスポートによるダンプ・ファイルとオリジナルのエクスポートによるダンプ・ファイルには互換性は無い エクスポートおよびインポートとは Copyright © 2024, Oracle and/or its affiliates 4 ダンプ・ファイル expdp ソース・データベース impdp ターゲット・データベース
  4. 【特徴】 • データベース・サーバー側で実行するため高速 • APIによる呼び出し可能 • ジョブ管理 (停止・再開) ・ 状況監視が可能

    【特徴】 • ユーティリティ側 (クライアント側)で実行 • 古いOracle Databaseのデータ移行に利用されるのみ • Oracle Database 11g よりexpコマンドは原則サポートされない • Oracle Database 23c よりexpコマンドはサポート終了 Oracle Databaseにおけるエクスポートとインポート Copyright © 2024, Oracle and/or its affiliates 5 Oracle Data Pumpのエクスポートおよびインポート オリジナルのエクスポートおよびインポート Oracle Database PL/SQL Package Oracle Net Oracle Net Access Driver ダンプ・ファイル Export Utility expdp Import Utility impdp EXPDP/IMPDPの 実行エンジン サーバー クライアント Oracle Database Oracle Net Oracle Net ダンプ・ファイル Export Utility exp Import Utility imp サーバー クライアント
  5. • 異なるバージョン間での移動が可能 • 古いバージョン間でも利用可能 • Standard Edition 2 (SE2)でも使用で きる標準機能

    データベース バージョンアップ • 特定のテーブルやデータセットだけを バックアップし、必要な場合にそれを復 元可能 • 特定のデータを復元したい場合や、 データの移行を行いたい場合に有用 • 物理バックアップの補助手段として 有効。データベース全体の保護は 物理バックアップ (RMAN等)を活用 • バージョンアップと同様、異なるOracle Database環境におけるデータ移行に おいて活用 例: Autonomous Databaseへの移行 • マニュアル: • Import Data Using Oracle Data Pump on Autonomous Database • データ・ポンプの従来のエクスポート/インポー ト Oracle Data Pumpによるエクスポートとインポートの用途 Copyright © 2024, Oracle and/or its affiliates 6 論理バックアップ クラウドリフト データベースのバージョンアップ オンプレミス クラウド 100 営業部 101 経理部 102 総務部 ・・・ 100 営業部 101 経理部 ・・・ ・・・ 102 総務部 バックアップ クラウド移行
  6. 1. エクスポートとインポートの概要 2. Oracle Data Pump概要 • Oracle Data Pumpとは

    • Oracle Data Pumpの特徴 • Oracle Data Pumpのアーキテクチャ 3. Oracle Data PumpによるOracle Databaseの移行 4. Oracle Database移行時に役立つOracle Data PumpのTips 5. まとめ Agenda Copyright © 2024, Oracle and/or its affiliates 7
  7. 「パフォーマンス」と「管理性」を兼ね備えたOracle Database間のデータ移動ユーティリティ Oracle Database間におけるデータとメタデータの高速移動 • Oracle Database間のデータ移動 • 論理バックアップの取得 データ移動に伴う作業時間を大幅に短縮

    • データベース・サーバー上で実行 • パラレル実行 • データベース・リンクを利用した中間ファイルを介さない エクスポート、インポート Oracle Databaseのすべてのエディションで使用可能 Oracle Data Pumpとは ローカル・ストレージ ダンプ・ ファイル インポート エクスポート データベース・サーバー ローカル・ストレージ上に ダンプ・ファイルを配置 expdp impdp Copyright © 2024, Oracle and/or its affiliates 8
  8. 柔軟なデータ移動 ユースケース • 異なるバージョンのOracle Database間におけるデータ移動 • 異なるプラットフォーム間におけるデータ移動 • 対象範囲を選択したデータ移動(モード: データベース全体、表領域、スキーマ、表)

    • 対象範囲を選択したデータ移動(オブジェクト単位: EXCLUDE、INCLUDE、QUERY、CONTENT) • データベース構造の変更を伴う移行において利用可能 • 非CDB構成からPDB構成 • 暗号化、圧縮、キャラクタ・セット、表領域・スキーマの再マッピング 手順 1. ターゲット・データベース(移行先)を構築 2. 事前設定 3. ソース・データベース(移行元)からダンプ・ファイルにエクスポート 4. ダンプ・ファイルを転送 5. ターゲット・データベースにダンプ・ファイルからインポート Oracle Data Pumpの特徴 Copyright © 2024, Oracle and/or its affiliates 9 ダンプ・ファイル expdp ソース・データベース impdp ターゲット・データベース
  9. 柔軟なデータ移動(1) Copyright © 2024, Oracle and/or its affiliates 10 異なるバージョン間での移動

    対象範囲を選択(モード) 異なるプラットフォーム間での移動 移行可能なバージョン組み合わせ例 マルチ・プラットフォーム間での移行 エクスポート、インポートでモード選択可能 11g Release 2 12c Release 1 12c Release 2 18c 19c 11g Release 2 12c Release 1 12c Release 2 18c 19c ソース ターゲット Windows x64 Linux x86-64 Solaris SPARC Solaris x86 HP-UX AIX Linux on Z Windows x64 Linux x86-64 Solaris SPARC Solaris x86 HP-UX AIX Linux on Z ソース ターゲット 全体モード 表領域モード スキーマ・モード 表モード 全体モード 表領域モード スキーマ・モード 表モード ソース ターゲット 参考リンク: Export/Import DataPump Parameter VERSION - Compatibility of Data Pump Between Different Oracle Versions (Doc ID 553337.1) エクスポート/インポート データ・ポンプのパラメータ VERSION - 異なる Oracle バージョン間のデータ・ポンプの互換性 (Doc ID 2364786.1)
  10. 例) 特定の表だけをインポート データおよびメタデータのフィルタ処理: エクスポートおよびインポートする対象および行を制限可能 例) 特定の条件を満たす行だけをエクスポート 柔軟なデータ移動(2) パラメータ 説明 パラメータ設定例

    EXCLUDE オブジェクト型およびオブジェクトを指定して、 操作対象から除外 expdp FULL=YES DUMPFILE=expfull.dmp EXCLUDE=SCHEMA:"='HR'" INCLUDE オブジェクト型およびオブジェクトを指定して、 操作対象に含める expdp system SCHEMAS=HR DUMPFILE=exp.dmp DIRECTORY=dpump_dir1 LOGFILE=exp.log INCLUDE=TABLE:"IN ('EMPLOYEES', 'DEPARTMENTS')" INCLUDE=PROCEDURE INCLUDE=INDEX:"LIKE 'EMP%'" QUERY SQL SELECT文の句で指定することで、エクス ポート・ジョブ内のすべての表または特定の表 のデータをフィルタリング expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp QUERY=(hr.employees:"WHERE last_name IN (SELECT last_name FROM hr.employees@dblink1)") CONTENT メタデータのみ、データのみ、またはその両方の パターンでエクスポートまたはインポート expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp CONTENT=METADATA_ONLY エクスポート ダンプ・ファイル ダンプ・ファイル インポート Copyright © 2024, Oracle and/or its affiliates 11
  11. データベース・リンクを利用してソース・データベースからターゲット・データベースへデータを移動 ネットワーク・リンクを利用したエクスポート • ソース・データベースのデータをターゲット・データベース のストレージにダンプ・ファイルを出力 ネットワーク・リンクを利用したインポート • 中間ファイルを生成せず、直接ターゲット・データベー スへインポート ネットワークを活用したデータ移動

    (ネットワーク・リンク機能) ターゲット・データベース ソース・データベース ターゲット・データベースのストレージに ダンプ・ファイルを出力 直接ターゲット・データベースへ インポート ダンプ・ ファイル データベース・リンク ターゲット・データベース ソース・データベース データベース・リンク expdb network_link=… impdb network_link=… Copyright © 2024, Oracle and/or its affiliates 13
  12. 【パラレル処理】 • ワーカー・プロセス (後述) を複数利用して エクスポート処理をパラレルで おこなう • 2種類の並列処理 •

    表毎に並列処理(小さな表など) • 大規模表のパラレル問合せ 【トランスポータブル表領域】 • ソース側のみEE ターゲット側はSE2可 ※ • 表領域を読み取り専用に設 定し、表領域に格納されてい るオブジェクトのメタデータを expdpで取得 • 表領域を構成するデータファイ ルをターゲット・データベースに 移動 • メタデータをターゲット・データ ベースにimpdpで読み込む 【データ圧縮】 • ダンプ・ファイルに書き込む前に データを圧縮 • 圧縮アルゴリズムを選択可 • こちらの検証結果では生成さ れるダンプ・ファイルの数が1/3 に削減 【暗号化】 • ダンプ・ファイルに書き込む前に データを暗号化 • 暗号化方式やアルゴリズムを 選択可 Enterprise Edition(EE) において利用できる機能 Copyright © 2024, Oracle and/or its affiliates 14 Enterprise Edition (EE) Oracle Advanced Compression (ACO) Oracle Advanced Security (ASO) EE ACO ASO EE EE EE ※ SE2: Standard Edition 2 ダンプ・ ファイル エクスポート ダンプ・ ファイル ダンプ・ ファイル ダンプ・ ファイル データ・ ファイル エクスポート インポート エクスポート ダンプ・ ファイル エクスポート ダンプ・ ファイル コピー
  13. エクスポートおよびインポートの起動およびパラメータの指定方法 Oracle Data Pumpの実行 Copyright © 2024, Oracle and/or its

    affiliates 15 次のいずれかの方法を使用して、expdp、impdpの起動およびパラメータの指定ができます。 • コマンドライン • 対話方式モード(SQL Developer)
  14. Oracle Data Pumpのコンポーネント • expdpクライアントおよびimpdpクライアント • DBMS_DATAPUMP PL/SQLパッケージ(データ・ポンプAPI) • DBMS_METADATA

    PL/SQLパッケージ(メタデータAPI) Oracle Data Pumpのコンポーネント Copyright © 2024, Oracle and/or its affiliates 16 実行ユーザー expdp impdp DBMS_DATAPUMP DBMS_METADATA Direct path API External table API
  15. DMnn ※ DWnn ※ Oracle Data Pumpのアーキテクチャ Copyright © 2024,

    Oracle and/or its affiliates 17 制御プロセス キュー ワーカー・プロセス 実行ユーザー 制御表 (データ・ポンプ制御ジョブ表) ダンプ・ファイル expdp impdp サーバー・ プロセス サーバー・ プロセス ログ・ ファイル ※バックグラウンド・プロセス 接続ユーザーのスキーマに ジョブ管理をするテーブルを作成 例: SYS_EXPORT_SCHEMA_01 SYS_IMPORT_SCHEMA_01 Advanced Queuingを 利用するため、SGA (STREAMS_POOL_SIZE) を調整 JOBの指示を行ったら 接続を切り離してもよい
  16. PARALLELパラメータとワーカー・プロセスの関係(1) PARALLEL=1(デフォルト)を指定した場合 • ワーカー・プロセス: 1 PARALLEL=4を指定した場合 • ワーカー・プロセス: 全部で4つ •

    稼働中: 1つ • アイドル状態: 3つ Oracle Data Pumpのアーキテクチャ Copyright © 2024, Oracle and/or its affiliates 18 制御プロセス キュー ワーカー・プロセス ダンプ・ファイル Worker 1 制御プロセス キュー ワーカー・プロセス ダンプ・ファイル Worker 1 Worker 2 Worker 3 Worker 4 Z Z Z Z Z Z Z Z Z Z Z Z ダンプ・ファイルが 割り当てられておらず 書き込みができない ※制御表とログ・ファイルについては省略
  17. PARALLELパラメータとワーカー・プロセスの関係(2) PARALLEL=4、DUMPFILEパラメータで%L を指定 • ワーカー・プロセスはそれぞれダンプ・ファイルをロックして書き 込む 左と同一設定であっても、パラレル問合せがおこなわれる とアイドル状態のワーカー・プロセスはでてくる • 制御プロセスおよびパラレル問合せのコーディネーターとなる

    ワーカー・プロセスはPARALLEL指定数には含まれない Oracle Data Pumpのアーキテクチャ Copyright © 2024, Oracle and/or its affiliates 19 制御プロセス キュー ワーカー・プロセス ダンプ・ファイル Worker 1 Worker 2 Worker 3 Worker 4 制御プロセス キュー ワーカー・プロセス Worker 1 Worker 2 Worker 3 Worker 4 Z Z Z Z DUMPFILE=myexp%L.dmp USER1 TAB1 SUBPART1 SUBPART2 SUBPART3 ETC PX2 PX1 ① ② ③ ④
  18. 1. エクスポートとインポートの概要 2. Oracle Data Pump概要 3. Oracle Data PumpによるOracle

    Databaseの移行 • Oracle Data Pumpのベスト・プラクティス • Oracle Data Pumpの代表的なパラメータ • Oracle Data Pumpによるデータ移行手順 4. Oracle Database移行時に役立つOracle Data PumpのTips 5. まとめ Agenda Copyright © 2024, Oracle and/or its affiliates 20
  19. Oracle Data Pumpのベスト・プラクティス 【事前設定】 • SYS as SYSDBAを使用してエクスポートを起動しない • リソース使用率を適切に設定する

    (STREAM_POOL_SIZE初期化パラメータ) 【パラメータ】 • パラメータ・ファイルを使用する • Data Pumpエクスポートの一貫性を確保する • エクスポートおよびインポート中に診断パラメータを含める • データベース互換性を設定する (ターゲット・データベースのバージョンが下位の場合) 【抽出対象】 • エクスポートとインポートから統計情報を除外する 【性能】 • 並列処理と現在の統計情報を使用してパフォーマンスを向上する • 異なるOSおよびストレージ上のサーバーにネットワーク・リンクを使用する • スペース使用とパフォーマンスのためにエクスポートで圧縮を使用する 【その他】 • SecureFiles LOBを使用する • Data Pumpジョブ実行前のデータベース・チェック • Oracle Cloudデータベース向けのその他のプラクティス Oracle Data Pumpのベスト・プラクティス Copyright © 2024, Oracle and/or its affiliates 21 ※赤字はOracle Data Pumpの パラメータ指定に関わるもの
  20. • FLASHBACK_SCN • FLASHBACK_TIME • LOGTIME=ALL • METRICS=YES • COMPRESSION

    • COMPRESSION_ALGORITHM Oracle Data Pumpのベスト・プラクティスに記載のあるパラメータ Copyright © 2024, Oracle and/or its affiliates 22 エクスポートの一貫性 エクスポート時の圧縮 エクスポート/インポートの診断 並列処理 インポート時の SecureFiles LOBへの変換 統計情報の除外 • PARALLEL • DMPFILEの%U、%L 置換変数 • FILESIZE • EXCLUDE=STATISTICS • TRANSFORM =LOB_STORAGE:SECUREFILE 指定したSCNもしくは時刻における一貫性を維持し たデータのエクスポ ートをおこなう メッセージにタイムスタンプを付与 (LOGTIME) オブジェクトの数やジョブに関する経過時間の情報 を付与 (METRICS) ファイルを圧縮することでダンプ・ファイルの サイズとネットワーク・モードのインポートでの データ・ストリーム・サイズを削減 エクスポートおよびインポート・ジョブの為に動作するアク ティブな実行プロセスの最大数を指定 それにあわせDMPFILE、FILESIZEを調整 統計情報を除外 LOBセグメントの記憶域をSecureFiles LOBに変換 ACO EE EE
  21. 実行したい移行モードに該当するパラメータを指定 • デフォルトは「スキーマ・モード」 参考)Oracle Data Pump エクスポート・モード Copyright © 2024,

    Oracle and/or its affiliates 23 モード 機能説明 パラメータ 全体 データベース全体のエクスポート FULL=[YES | NO] スキーマ 指定したスキーマ全体のエクスポート SCHEMAS=schema_name [, ...] 表 指定したテーブル全体のエクスポート TABLES=[schema_name.]table_name[:partition_name] [, ...] 表領域 指定したテーブルスペース全体の エクスポート TABLESPACES=tablespace_name [, ...] トランスポータブル 表領域 トランスポータブル表領域エクスポートを 実行するために使用する TRANSPORT_TABLESPACES=tablespace_name [, ...]
  22. エクスポート用のパラメータ・ファイル(expdp.par) インポート用のパラメータ・ファイル(impdp.par) パラメータ・ファイルの記載例 Copyright © 2024, Oracle and/or its affiliates

    24 schemas=app parallel=8 dumpfile=mydump%U.dmp filesize=5g exclude=statistics logtime=all metrics=yes compression=all compression_algorithm=medium flashback_scn=3392846 schemas=app parallel=8 dumpfile=mydump%U.dmp exclude=statistics logtime=all metrics=yes transform=lob_storage:securefile • 上記のパラメータ設定を軸に、モード設定(上記ではスキーマ・モード)や データの選択(EXCLUDE、INCLUDE、QUERY)をおこなう 参考リンク: Oracle Database Technology Night 65回:Oracle Database移行ツールの概要とTips 資料:https://speakerdeck.com/oracle4engineer/technight-fy23-mar-number-65-2-oracledatabasemigrationtooltips 動画:https://www.youtube.com/watch?v=fGgx9XK3gDE
  23. 全体像 事前設定 • ダンプ・ファイル用のディレクトリ の準備 • expdp/impdpコマンド実行ユー ザーの作成 • 初期化パラメータ

    STREAMS_POOL_SIZEの 設定 エクスポート • ディクショナリ統計の収集 • ダンプ・ファイルのサイズ見積もり • パラメータ・ファイルの作成 • expdpコマンドの実行 ダンプ・ファイルの 転送 • ファイル転送コマンド(例:scp)を 使用したターゲット・データベー スへのダンプ・ファイルの転送 インポート • パラメータ・ファイルの作成 • impdpコマンドの実行 • 移行データの確認 • ディクショナリ統計の収集 Oracle Data Pumpによるデータ移行手順 Copyright © 2024, Oracle and/or its affiliates 25 参考リンク: Oracle Database Technology Night 69回:Oracle Databaseクラウド移行ツールさわってみた 資料:https://speakerdeck.com/oracle4engineer/oracle-database-technology-night- number-69-oracle-databasekuraudoyi-xing-turusawatutemita 動画:https://www.youtube.com/watch?v=ftwWghyr76s ソース・データベース ターゲット・データベース expdp impdp scp ダンプ・ファイル
  24. 事前設定 事前設定 • ダンプ・ファイル用のディレクトリ の準備 • expdp/impdpコマンド実行ユー ザーの作成 • 初期化パラメータ

    STREAMS_POOL_SIZEの 設定 エクスポート • ディクショナリ統計の収集 • ダンプ・ファイルのサイズ見積もり • パラメータ・ファイルの作成 • expdpコマンドの実行 ダンプ・ファイルの 転送 • ファイル転送コマンド(例:scp)を 使用したターゲット・データベー スへのダンプ・ファイルの転送 インポート • パラメータ・ファイルの作成 • impdpコマンドの実行 • 移行データの確認 • ディクショナリ統計の収集 Oracle Data Pumpによるデータ移行手順(1) Copyright © 2024, Oracle and/or its affiliates 26 ソース・データベース ターゲット・データベース expdp impdp scp ダンプ・ファイル
  25. 事前設定: コマンド例 ダンプ・ファイル用のディレクトリの準備 • ダンプ・ファイルを保管するOS上のディレクト リを作成し、ディレクトリ・パスをOracle Databaseのディレクトリ・オブジェクトとして 指定 • ディレクトリ名とディレクトリの配置は任意だ

    が、ディレクトリにダンプ・ファイルを保管でき る十分な領域を確保 expdp/impdpコマンド実行ユーザーの 作成 • Oracle Data Pumpのexpdp/impdp コマンドを実行するためのユーザを準備 (専用のスキーマ作成を推奨) エクスポートおよびインポート操作に必要な 権限を付与 初期化パラメータSTREAMS_POOL_SIZE の設定 • Data Pumpではメモリ領域である STREAMS_POOL_SIZEを使用するため、領 域の確保が必要 • 64Mから256Mの範囲が推奨 Oracle Data Pumpによるデータ移行手順(1) Copyright © 2024, Oracle and/or its affiliates 27 $ mkdir /tmp/datapump $ chmod 777 /tmp/datapump SQL> create directory dump_dir as '/tmp/datapump’; select directory_name, directory_path from dba_directories where directory_name='DUMP_DIR'; ソース側とターゲット側で実行するコマンド: 確認コマンド: SQL> create user <ユーザー名> identified by password; SQL> alter user <ユーザー名> quota unlimited on users; SQL> grant read, write on directory dump_dir to <ユーザー名> ; SQL> grant datapump_exp_full_database to <ユーザー名> ; SQL> grant datapump_imp_full_database to <ユーザー名> ; SQL> select current_size/1024/1024 as current_size_mb from v$sga_dynamic_components where component='streams pool'; SQL> alter system set streams_pool_size=256m scope=both; CURRENT_SIZE_MB --------------- 128 ソース側とターゲット側で実行するコマンド: ソース側実行するコマンド: ターゲット側で実行するコマンド: STREAMS_POOL_SIZEの値を確認 STREAMS_POOL_SIZEの値を指定するコマンド (不足する場合): 実行結果:
  26. ソース・データベース ターゲット・データベース エクスポート 事前設定 • ダンプ・ファイル用のディレクトリ の準備 • expdp/impdpコマンド実行ユー ザーの作成

    • 初期化パラメータ STREAMS_POOL_SIZEの 設定 エクスポート • ディクショナリ統計の収集 • ダンプ・ファイルのサイズ見積もり • パラメータ・ファイルの作成 • expdpコマンドの実行 ダンプ・ファイルの 転送 • ファイル転送コマンド(例:scp)を 使用したターゲット・データベー スへのダンプ・ファイルの転送 インポート • パラメータ・ファイルの作成 • impdpコマンドの実行 • 移行データの確認 • ディクショナリ統計の収集 Oracle Data Pumpによるデータ移行手順(2) Copyright © 2024, Oracle and/or its affiliates 28 expdp impdp scp ダンプ・ファイル
  27. エクスポート: コマンド例 ディクショナリ統計の収集 • エクスポートを実行する前にディクショナリ統 計を収集して最新の統計情報を維持 ダンプ・ファイルのサイズ見積もり • expdpコマンドにESTIMATEパラメータ、もし くはESTIMATE_ONLYパラメータを指定して、

    ファイルのサイズを見積もる ダンプ・ファイルを生成せず、出力されるダン プ・ファイルのサイズに対して準備した領域 が十分かを確認 パラメータ・ファイルの作成、および expdpコマンドの実行 • エクスポート(expdp)の実行に使用するパラ メータ・ファイルを作成 • エクスポートを実行 Oracle Data Pumpによるデータ移行手順(2) Copyright © 2024, Oracle and/or its affiliates 29 SQL> begin dbms_stats.gather_schema_stats('SYS'); dbms_stats.gather_schema_stats('SYSTEM'); end; ソース側で実行するコマンド: $ expdp <ユーザー名>/password full=y directory=dump_dir estimate=statistics estimate_only=y; estimate=statisticsを指定して実行する $ expdp <ユーザー名>/password full=y directory=dump_dir estimate=blocks estimate_only=y; estimate=blocksを指定して実行する モードの種類 定義 BLOCKS ブロックサイズにオブジェクトのブロック数をかけて 見積もる(精度は高くない) STATISTICS 統計情報を元に見積もる 表1. ESTIMATEパラメータのモードについて schemas=app parallel=8 dumpfile=mydump%U.dmp filesize=5g exclude=statistics logtime=all metrics=yes compression=all compression_algorithm=medium flashback_scn=3392846 圧縮ありのパラメータ・ファイル(expdp.par) $ expdp <ユーザー名>/password parfile=expdp.par 実行コマンド:
  28. ソース・データベース ターゲット・データベース ダンプ・ファイルの転送 事前設定 • ダンプ・ファイル用のディレクトリ の準備 • expdp/impdpコマンド実行ユー ザーの作成

    • 初期化パラメータ STREAMS_POOL_SIZEの 設定 エクスポート • ディクショナリ統計の収集 • ダンプ・ファイルのサイズ見積もり • パラメータ・ファイルの作成 • expdpコマンドの実行 ダンプ・ファイルの 転送 • ファイル転送コマンド(例:scp)を 使用したターゲット・データベー スへのダンプ・ファイルの転送 インポート • パラメータ・ファイルの作成 • impdpコマンドの実行 • 移行データの確認 • ディクショナリ統計の収集 Oracle Data Pumpによるデータ移行手順(3) Copyright © 2024, Oracle and/or its affiliates 30 expdp impdp scp ダンプ・ファイル
  29. ダンプ・ファイルの転送: コマンド例 ファイル転送コマンド(例:scp)を使用したターゲット側へのダンプ・ファイルの転送 • nohupをscpの前につけて実行することで、転送中にセッションが切れても転送を継続させることができる Oracle Data Pumpによるデータ移行手順(3) Copyright ©

    2024, Oracle and/or its affiliates 31 $ nohup scp -i /home/opc/.ssh/ssh-key-2024-02-20.key /tmp/datapump/dumpfile* [email protected]:/tmp/datapump nohupを使用したscpコマンド: $ jobs -l ジョブの状態を確認するコマンド: 転送が完了すると以下のような出力がなされる $ jobs –l [1]+ Done nohup scp –i /home/opc/.ssh/ssh-key-2024-02-20.key /tmp/datapump/dumpfile* [email protected]:/tmp/datapump
  30. ソース・データベース ターゲット・データベース インポート 事前設定 • ダンプ・ファイル用のディレクトリ の準備 • expdp/impdpコマンド実行ユー ザーの作成

    • 初期化パラメータ STREAMS_POOL_SIZEの 設定 エクスポート • ディクショナリ統計の収集 • ダンプ・ファイルのサイズ見積もり • パラメータ・ファイルの作成 • expdpコマンドの実行 ダンプ・ファイルの 転送 • ファイル転送コマンド(例:scp)を 使用したターゲット・データベー スへのダンプ・ファイルの転送 インポート • パラメータ・ファイルの作成 • impdpコマンドの実行 • 移行データの確認 • ディクショナリ統計の収集 Oracle Data Pumpによるデータ移行手順(4) Copyright © 2024, Oracle and/or its affiliates 32 expdp impdp scp ダンプ・ファイル
  31. インポート: コマンド例 パラメータ・ファイルの作成、および impdpコマンドの実行 • インポート(impdp)の実行に使用するパラ メータ・ファイルを作成 • インポートを実行 移行データの確認

    • ソース・データベースとのデータ量を比較 • 移行したスキーマのテーブルの種類や オブジェクトの数がソース・データベースと ターゲット・データベースで一致するか確認 ディクショナリ統計の収集 • インポートを実行した後にディクショナリ統 計を収集して最新の統計情報を維持 Oracle Data Pumpによるデータ移行手順(4) Copyright © 2024, Oracle and/or its affiliates 33 インポート用のパラメータ・ファイル(impdp.par) $ impdp <ユーザー名>/password parfile=impdp.par 実行コマンド: schemas=app parallel=8 dumpfile=mydump%U.dmp exclude=statistics logtime=all metrics=yes transform=lob_storage:securefile SIZE[GB] ---------- 1017.89063 実行結果 (ターゲット側): SQL> select sum(bytes)/(1024*1024*1024)"SIZE[GB]" from dba_segments where owner='SCOTT'; 実行コマンド: SIZE[GB] ---------- 1021.92725 実行結果 (ソース側): SQL> select table_name from dba_tables where owner = 'SCOTT'; テーブル一覧の確認 SQL> select count(*) from scott.customers; テーブルそれぞれのレコード数の確認 SQL> select object_name, object_type from dba_objects where owner = 'SCOTT' order by object_name; スキーマ所有のオブジェクト一覧の確認 SQL> begin dbms_stats.gather_schema_stats('SYS'); dbms_stats.gather_schema_stats('SYSTEM'); end; ターゲット側で実行するコマンド:
  32. 1. エクスポートとインポートの概要 2. Oracle Data Pump概要 3. Oracle Data PumpによるOracle

    Databaseの移行 4. Oracle Database移行時に役立つOracle Data PumpのTips • オンプレミスからクラウドへの移行ケースと考慮点 • Oracle Data Pump実行時のTips 5. まとめ Agenda Copyright © 2024, Oracle and/or its affiliates 34
  33. Oracle Cloud Infrastructure (OCI)への移行ケース • クラウド上のストレージサービスを利用し、ダンプ・ファイルをエクスポートおよびインポートする • データベース・リンクを利用し、オンプレミスからクラウドのデータベース上に直接インポートする • ネットワーク帯域など、ボトルネックになりそうな箇所はあらかじめ考慮が必要

    オンプレミスからクラウドへの移行ケースと考慮点 Copyright © 2024, Oracle and/or its affiliates 35 オンプレミス クラウド クラウド・ストレージ expdp impdp ダンプ・ ファイル オンプレミス クラウド 直接データのインポート データベース・リンク
  34. クラウドへの移行で考慮すべき点 • 移行時のダンプ・ファイルはHybrid Columnar Compression (HCC)による圧縮が無効になり、 容量が肥大化するため、ネットワーク帯域幅によってはデータ転送に時間がかかる可能性がある • PaaSへの移行の場合、OS上で割り当てられているファイルシステムの領域が小さいため、 クラウド上でのストレージサービス(OCI

    File Storage Service / OCI Object Storage)の利用を推奨 オンプレミスからクラウドへの移行ケースと考慮点 Copyright © 2024, Oracle and/or its affiliates 36 圧縮無効 2024年データ 2023年データ 2022年データ 2021年データ 2020年データ HCCによる圧縮 2024年データ オンプレミス クラウド データ転送 OS用 (GB) 75 データ用 (GB) 256 リガバリ用 (GB) 256 S/W用 (GB) 200 オンプレミス クラウド クラウド・ストレージ expdp 例: Oracle Base Database Service ストレージサイズ impdp Oracle Database用
  35. デモの概要 事前設定 • ダンプ・ファイル用のディレクトリ の準備 • expdp/impdpコマンド実行 ユーザーの作成 • 初期化パラメータ

    STREAMS_POOL_SIZEの 設定 エクスポート • ディクショナリ統計の収集 • ダンプ・ファイル・サイズの見積もり • パラメータ・ファイルの作成 • expdpコマンドの実行 ・ジョブの監視、中断、再開 ・ジョブの強制終了 ダンプ・ファイル の転送 •ファイル転送コマンド(例:scp)を 使用したターゲット・データベー スへのダンプ・ファイルの転送 インポート •パラメータ・ファイルの作成 •impdpコマンドの実行 •移行データの確認 •ディクショナリ統計の収集 Oracle Data Pump実行時のTips Copyright © 2024, Oracle and/or its affiliates 37
  36. デモの事前準備 • expdpの実行に使用するパラメータ・ファイルを作成します • エクスポートを実行します Oracle Data Pump実行時のTips(デモ) Copyright ©

    2024, Oracle and/or its affiliates 38 full=yes parallel=4 dumpfile=mydump%U.dmp directory=dump_dir filesize=20m exclude=statistics logtime=all metrics=yes compression=all compression_algorithm=medium flashback_scn=3392846 パラメータ・ファイル(expdp.par): $ expdp demo/DBaseCamp#0220#@pdb1 parfile=expdp.par 実行コマンド:
  37. ジョブステータスの監視、ジョブの中断・再開 Oracle Data Pumpでエクスポートおよびインポートの実行を中断したい場合は、「Ctrl + C」を1回押します ※ stop_jobコマンドを実行し、続いての確認に対して「yes」と入力すると中断され、コンソールに復帰します Oracle Data

    Pump実行時のTips(デモ) Copyright © 2024, Oracle and/or its affiliates 39 Starting “demo"."SYS_EXPORT_FULL_02": demo/********@pdb1 parfile=expdp.par ----Data Pumpの実行ログ---- ^C Export> stop_job Are you sure you wish to stop this job ([yes]/no): yes エクスポートの実行を中断します ※ 「Ctrl + C」を2回押してしまうと実行中のままコンソールに復帰してしまいます 続いて、実行中のユーザーでSQL*Plusへ接続して、実行しているジョブを確認します SQL> SELECT * FROM USER_DATAPUMP_JOBS; JOB_NAME OPERATION JOB_MODE STATE DEGREE ATTACHED_SESSIONS DATAPUMP_SESSIONS -------------------- ---------- ---------- --------------- ---------- ----------------- ----------------- SYS_EXPORT_FULL_01 EXPORT FULL NOT RUNNING 0 0 0 SYS_EXPORT_FULL_02 EXPORT FULL NOT RUNNING 0 0 0 接続ユーザーのスキーマに ジョブ管理をするテーブルが作成 現行のユーザーが所有するData Pumpのジョブを示す 現在実行しているジョブを確認する
  38. ジョブステータスの監視、ジョブの中断・再開 Oracle Data Pump実行時のTips(デモ) Copyright © 2024, Oracle and/or its

    affiliates 40 $ expdp <ユーザー名>/ password attach=SYS_EXPORT_FULL_02 Export> start_job SQL*Plusを終了し、以下のコマンドを実行するとジョブを再開できます ジョブ中断中のユーザー・セッションを確認します SQL> SELECT * FROM DBA_DATAPUMP_SESSIONS; no rows selected Export> status Job: SYS_EXPORT_FULL_01 Operation: EXPORT Mode: FULL State: EXECUTING ...... また、以下のコマンドでジョブのステータスを確認することができます ジョブを中断しているためセッションはありません 先ほど確認した最新のジョブを実行します Dump File: /home/....../datapump/mydump01.dmp size: 10,485,760 bytes written: 77,824 ...... Worker 1 Status: Instance ID: 1 Instance name: demo ...... State: EXECUTING
  39. DBMS_DATAPUMP:データ・ポンプ・インタフェース・プロセス MASTER:制御プロセス (ジョブごとに1つ) WORKER:ワーカー・プロセス (並列度に応じてジョブごとに1からn個) ジョブステータスの監視、ジョブの中断・再開 Oracle Data Pump実行時のTips(デモ) Copyright

    © 2024, Oracle and/or its affiliates 41 実行中のユーザーでSQL*Plusへ接続して、ジョブ実行中のユーザー・セッションを確認します SQL> SELECT * FROM DBA_DATAPUMP_SESSION; OWNER_NAME JOB_NAME INST_ID SADDR SESSION_TYPE ------------ ------------------- ---------- ------------------ ---------------- HR SYS_EXPORT_FULL_2 1 00000000D6BF2E58 DBMS_DATAPUMP HR SYS_EXPORT_FULL_2 1 00000000D68AEBC0 MASTER HR SYS_EXPORT_FULL_2 1 00000000D6A2F250 WORKER HR SYS_EXPORT_FULL_2 1 00000000D6BDEF18 WORKER HR SYS_EXPORT_FULL_2 1 00000000D6D50638 WORKER HR SYS_EXPORT_FULL_2 1 00000000D68DE1F8 WORKER parallel=4で設定しているので、 ワーカー・プロセスは4つ 制御プロセス キュー ワーカー・プロセス 制御表 (データ・ポンプ制御ジョブ表) ダンプ・ファイル
  40. ジョブの強制終了 Oracle Data Pump実行時のTips(デモ) Copyright © 2024, Oracle and/or its

    affiliates 42 SQL*Plusを終了し、以下のコマンドを実行するとジョブを強制終了できます ----Data Pumpの実行ログ---- 14-FEB-24 08:31:28.100: Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA ^C Export> kill_job Are you sure you wish to stop this job ([yes]/no): yes 強制終了したジョブは再開できず、制御表およびダンプ・ファイルが削除されます。 ログ・ファイルは、削除されません。
  41. 1. エクスポートとインポートの概要 2. Oracle Data Pump概要 3. Oracle Data PumpによるOracle

    Databaseの移行 4. Oracle Database移行時に役立つOracle Data PumpのTips 5. まとめ Agenda Copyright © 2024, Oracle and/or its affiliates 43
  42. 1. エクスポートとインポートの概要 • 「Oracle Data Pump」*、「オリジナルのエクスポートおよびインポート」の2種類がある • 論理バックアップ、データベースのバージョンアップ、クラウドリフトなどの用途がある 2. Oracle

    Data Pump概要 • 異なるバージョン、プラットフォームにおけるデータ移動と対象範囲を選択したデータ移動が可能 • expdp/impdpの実行により、Oracle Data Pumpのアーキテクチャとして、制御プロセスとワーカー・プロセスが作成され、 全体のジョブ制御とダンプ・ファイルへの書き込みが行われる 3. Oracle Data PumpによるDatabaseの移行 • Oracle Data Pumpのベスト・プラクティスを参考にパラメータ設定を行う 4. Oracle Database移行時に役立つOracle Data PumpのTips • オンプレミスからクラウドへの移行ケースとしては、クラウド・ストレージを利用したダンプ・ファイルのエクスポートおよびインポート、 データベース・リンクを使用したクラウドに直接インポートするなどの方法がある まとめ Copyright © 2024, Oracle and/or its affiliates 44 *Oracle Database 10g以降の提供