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

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

oracle4engineer
February 20, 2024
2.7k

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

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

oracle4engineer

February 20, 2024
Tweet

More Decks by oracle4engineer

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以降の提供