95
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. | 4回どさんこオラクル勉強会 今さら聞けないデータロード、 Export/Import Presented By シーズ・ネクスト 2016127

第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

  • Upload
    others

  • View
    25

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |

第4回どさんこオラクル勉強会

今さら聞けないデータロード、Export/Import

Presented By シーズ・ネクスト 2016年1月27日

Page 2: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものですまた、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さいオラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます

OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です文中の社名、商品名等は各社の商標または登録商標である場合があります

Page 3: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Oracle Databaseのデータ・ローディング

Export/Import

Oracle Database からのCSVアンロード

知っておきたい便利な使い方

まとめ

Program Agenda

Page 4: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved. 4

Oracle Databaseの データ・ローディング

Page 5: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Oracle Databaseのデータ・ローディング

• 中間ファイルを利用するもの

– exp/impユーティリティ、DataPump(expdp/impdp)ユーティリティ

– SQL*Loaderユーティリティ

– 外部表機能

– トランスポータブル表領域機能 (ソース側のデータベースはEnterprise Edition必須)

• ネットワークを利用するもの

– 分散処理機能(データベース・リンク + SQL)

– Oracle Data Integrator (ETLツール)

– Oracle GoldenGate(リアルタイム・レプリケーション・ツール) (リアルタイムにデータ連携、データ移行、データベース・アップグレード等で利用)

データ・ロードの種類

Page 6: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Oracle Databaseのデータ・ローディング

• 外部ファイルのデータをOracle Databaseの表に格納 –ユーティリティ(SQL*Loader)の利用

– Oracle Databaseの機能(外部表)を利用

主にテキスト・ファイルを利用するもの

Page 7: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

SQL*Loader(概要)

• Oracle Databaseに付属しているユーティリティのひとつ

• SQL*Loaderの制御ファイルを用意することで、外部ファイルからの柔軟なローディングを実施

外部ファイル

Oracle Database

SQL*Loader

制御ファイル ログ・ファイル

廃棄ファイル

不良ファイル

•外部ファイルの場所 •ファイル形式(固定長、可変長) •データの挿入先となる表 •外部ファイル内のデータと表カラムの紐付け

•SQL*Loader実行ログを格納 (ロード件数、エラー情報など)

•条件等が合わず、ローディング されなかったレコードを格納

•エラーによりローディング されなかったデータを格納

Page 8: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

SQL*Loader実行時モード

• 柔軟性、高速性に応じた実行モードを用意

– 柔軟) 従来型パス・モード

• 内部的にINSERT文を作成しINSERTを実行

– 高速) ダイレクト・パス・モード • 内部的にINSERTを実行しません

• ブロック(ORACLE_BLOCK=I/Oの単位)イメージを生成し、 物理的に直接書込みます(=ダイレクト・ロード)

• いくつかの制限事項があります

従来型パス・モード / ダイレクト・パス・モード

表ロック取得 DBブロック

イメージ作成

Page 9: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

SQL*Loaderパラレル処理

• 同一の表もしくはパーティション表の同一パーティションに対して 同時にダイレクト・パス・ロードを実行できます

– あらかじめ準備が必要です • SQL*Loaderの同時実行数分、外部ファイル(データ)を分割

• 外部ファイルにあわせて制御ファイルを作成(もしくは実行時にパラメータ DATA で外部ファイルを指定)

– 実行時にパラメータ PALALLEL=TRUE を指定します

パラレル・ダイレクト・パス

Page 10: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

SQL*Loader使用例

• 外部ファイルのフォーマット、ロード先の表の情報をもとに制御ファイルを作成

制御ファイルの作成

SQL> DESCRIBE emp 名前 NULL? 型 --------- -------- ------------ EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2)

1001,ichiro,20001025,SALESMAN,junk,10

1002,jiro,20011125,ANALYST,junk,20

1003,saburo,20021225,MANAGER,junk,30

外部ファイル:emp.dat

emp表の定義 LOAD DATA

INTO TABLE emp

APPEND

FIELDS TERMINATED BY ','

(

empno,

ename,

hiredate DATE 'YYYYMMDD',

job,

junk FILLER,

deptno

)

制御ファイル:emp.ctl

•カンマ区切りの可変長

•日付は8桁の数字列(YYYYMMDD)

•表のカラムすべてと1:1に紐付けできない

•表にロードすべきでないデータ「junk」が存在する

Page 11: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

SQL*Loader 使用例

• 従来型パス・モード

• ダイレクト・パス・モード

• パラレル・ダイレクト・パス・モード

実行例

% sqlldr scott/xx CONTROL=emp.ctl DATA=emp.dat

% sqlldr scott/xx CONTROL=emp.ctl DATA=emp.dat DIRECT=true

% sqlldr scott/xx CONTROL=emp.ctl DATA=emp1.dat LOG=emp1.log DIRECT=true PARALLEL=true &

% sqlldr scott/xx CONTROL=emp.ctl DATA=emp2.dat LOG=emp2.log DIRECT=true PARALLEL=true &

事前に主キーを無効にしておくか、

パラメータ SKIP_INDEX_MAINTENANCE = true をセットします

Page 12: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

SQL*Loaderロード方式性能比較

• ダイレクト・パス・モードは従来型パス・モードに比べ非常に高速

従来型パス・モード vs ダイレクト・パス・モード

0.19

1.00

0.00 0.20 0.40 0.60 0.80 1.00

ダイレクト・パス・ロード

従来型パス・ロード

emp表(カラム構成が単純)へのロード(10,000,000件)の比較例 (従来型パス・ロードを1としたときの相対時間)

Page 13: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

外部表(概要)

• Oracle Database内に存在していない表

• アクセス・ドライバを通じてOracle Databaseから読取り専用のアクセスをおこないます – ORACLE_LOADER

– ORACLE_DATAPUMP

• 外部表へのDML(INSERT/UPDATE/DELETE)操作、 索引付けはできませんが、ビューやシノニムを作成できます

• 外部表へのアクセスはバッファ・キャッシュを経由しません(後述)

Page 14: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

外部表アクセス・ドライバ

• ORACLE_LOADER

• ORACLE_DATAPUMP

– Oracle Database相互で利用

それぞれのアクセス・ドライバの利用イメージ

Page 15: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

外部表アクセス・ドライバ

• ORACLE_LOADER – 外部ファイルはテキスト・データ・ファイルのみ

– 圧縮されたテキスト・データ・ファイルも利用可能

• PREPROCESSOR指定

• ORACLE_DATAPUMP – 当アクセス・ドライバでUNLOADしたファイルを利用

• 外部ファイルはプラットフォーム非依存のバイナリ・ファイル

• DATAPUMP(expdp)のdmpファイルは利用できません

– UNLOADで生成した外部ファイルは、Oracle Database相互のデータ交換で利用

– 当アクセス・ドライバの機能で外部ファイルの圧縮、暗号化が可能

– ORACLE_LOADERアクセス・ドライバに比べ高速

ORACLE_LOADERとORACLE_DATAPUMP

Page 16: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

外部表 使用例

• 外部表を置くOS上のディレクトリを決め、Oracle Databaseの ディレクトリ・オブジェクトを作成します

• 外部表を作成するOracle Database上のユーザに対し、 ディレクトリ・オブジェクトの権限を付与します

使用前の準備

% sqlplus / as sysdba

SQL> CREATE DIRECTORY ext_tbls AS '/app/oracle/admin/orcl/ext_tbls';

SQL> GRANT READ ON DIRECTORY ext_tbls TO scott;

SQL> GRANT WRITE ON DIRECTORY ext_tbls TO scott;

Page 17: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

外部表 使用例

• 外部ファイル(テキスト・ファイル)の構造をもとに外部表を定義します

ORACLE_LOADERアクセス・ドライバを使用した定義

1001,ichiro,20001025,SALESMAN,junk,10

1002,jiro,20011125,ANALYST,junk,20

1003,saburo,20021225,MANAGER,junk,30

外部ファイル:ext_emp.dat

•カンマ区切りの可変長

•日付は8桁の数字列(YYYYMMDD)

•表のカラムすべてと1:1に紐付けできない

•表にロードすべきでないデータ「junk」が存在する

CREATE TABLE ext_emp (

empno NUMBER(4),

ename VARCHAR2(10),

job VARCHAR2(9),

hiredate DATE,

deptno NUMBER(2)

)ORGANIZATION EXTERNAL (

TYPE ORACLE_LOADER

DEFAULT DIRECTORY ext_tbls

ACCESS PARAMETERS (

RECORDS DELIMITED BY NEWLINE

FIELDS TERMINATED BY ','(

empno CHAR(4),

ename CHAR(10),

hiredate CHAR(8) date_format DATE mask "YYYYMMDD",

job CHAR(9),

junk CHAR(4),

deptno CHAR(2)

)

) LOCATION ('ext_emp.dat')

);

外部ファイルの

定義文

Page 18: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

外部表 使用例

• 外部表へのSELECT文の実行

• 実行時のログファイル等の出力

ORACLE_LOADERアクセス・ドライバを使用した実行

SQL> select * from ext_emp; EMPNO ENAME JOB HIREDATE DEPTNO ---------- ---------- --------- -------- ---------- 1001 ichiro SALESMAN 00-10-25 10 1002 jiro ANALYST 01-11-25 20 1003 saburo MANAGER 02-12-25 30

指定ディレクトリに

・ログファイル

・不良ファイル(対象データがあれば) ・廃棄ファイル(対象データがあれば)

が出力されます

Page 19: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

外部表 使用例

• 外部表の作成の一環として外部ファイル(ダンプファイル)を作成します

• 作成済外部ファイルを利用して外部表を作成します

ORACLE_DATAPUMPアクセス・ドライバを使用した定義

CREATE TABLE ext_emp_ul

ORGANIZATION EXTERNAL (

TYPE ORACLE_DATAPUMP

DEFAULT DIRECTORY ext_tbls

LOCATION ('ext_emp_ul.dmp')

)

AS

SELECT empno,

ename,

job,

mgr,

hiredate,

sal,

comm,

deptno

FROM emp

;

CREATE TABLE ext_emp (

empno NUMBER(4),

ename VARCHAR2(10),

job VARCHAR2(9),

mgr NUMBER(4),

hiredate DATE,

sal NUMBER(7,2),

comm NUMBER(7,2),

deptno NUMBER(2)

)

ORGANIZATION EXTERNAL (

TYPE ORACLE_DATAPUMP

DEFAULT DIRECTORY ext_tbls

LOCATION ('ext_emp_ul.dmp')

)

;

外部ファイル作成 外部ファイル利用

Page 20: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

外部表 前処理指定

• 前処理プログラムを使用することで、アクセス・ドライバがサポートしていない形式のファイルを外部ファイルとして利用できます

– 圧縮された外部ファイルを解凍

• 前処理プログラムを置くディレクトリ・オブジェクトの作成、権限付与を行います

ORACLE_LOADERアクセス・ドライバのPREPROCESSOR句 CREATE TABLE ext_emp (

empno NUMBER(4),

ename VARCHAR2(10),

job VARCHAR2(9),

hiredate DATE,

deptno NUMBER(2)

)

ORGANIZATION EXTERNAL (

TYPE ORACLE_LOADER

DEFAULT DIRECTORY ext_tbls

ACCESS PARAMETERS (

RECORDS DELIMITED BY NEWLINE

PREPROCESSOR exec_dir:'zcat'

FIELDS TERMINATED BY ','(

...

)

)

LOCATION ('ext_emp.dat.gz')

);

外部ファイル

の定義文

% cd /app/oracle/admin/orcl/exec_dir

% ln -s /bin/zcat

% sqlplus / as sysdba

SQL> CREATE DIRECTORY exec_dir AS

'/app/oracle/admin/orcl/exec_dir';

SQL> GRANT READ ON DIRECTORY exec_dir TO scott;

SQL> GRANT EXECUTE ON DIRECTORY exec_dir TO scott;

Page 21: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

外部表を利用したデータ・ローディング

• DML文(INSERT / UPDATE / MERGE / DELETE)をそのまま使用します –アクセス・ドライバ種別も意識せず、透過的に利用できます

• SQL*Loaderと同様、ダイレクト・ロードも可能です – SQL*Loaderのダイレクト・パスと同様、HWMより後ろのブロックを使用します

–ロード処理をPL/SQLでそのままバッチ処理の一部として取り込む事ができます

INSERT INTO emp SELECT * FROM ext_emp;

INSERT /*+ APPEND */ INTO emp SELECT * FROM ext_emp;

準備された外部表

準備された外部表

Page 22: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

参考)DMLエラー・ロギング

• INSERT、UPDATE、MERGE、DELETE文で利用可能

– これまでは大量の行を対象とした単一のDMLにエラーが発生すると処理の すべてがロールバックされていました

– 上記DMLに「ERROR LOGS」句をつけることで利用します

• エラー・ロギング表(上記のERR$_EMP)は DBMS_ERRLOG パッケージで作成

– 実行DMLとエラーロギング表への書き込みトランザクションは分離

– DML操作に失敗したデータを記録する為のものであり、 すべてのエラーを書き込むものではありません 例) ORA-01653(領域不足)、ORA-01555

INSERT INTO emp (empno, ename, dptno, sal)

( SELECT empno, ename, dptno, sal FROM ext_emp )

LOG ERRORS INTO ERR$_EMP ('WEEKLY_BATCH') REJECT LIMIT 50;

Page 23: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

参考)エラー・ロギング表

INSERT INTO emp (empno,ename,dptno,sal)

(SELECT empno,ename,dptno*1000,sal

FROM ext_emp

WHERE empno = 1)

LOG ERRORS INTO ERR$_EMP

('WEEKLY_BATCH') REJECT LIMIT 50;

UPDATE emp

SET dptno = dptno*1000

WHERE empno = 20

LOG ERRORS INTO ERR$_EMP

('WEEKLY_BATCH2') REJECT LIMIT 50;

INSERT でエラー発生 UPDATE でエラー発生

対象となるROWID

故意に桁あふれ 故意に桁あふれ

Page 24: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

外部表 アクセス・ドライバ性能比較

• ORACLE_DATAPUMPで利用する外部ファイルは バイナリであり、型変換がほとんど発生しない – Oracle Database間のデータ連携ではORACLE_DATAPUMP アクセス・ドライバの利用を推奨

ORACLE_LOADER vs ORACLE_DATAPUMP

0.84

1.00

0.00 0.20 0.40 0.60 0.80 1.00

ORACLE_DATAPUMP

ORACLE_LOADER

emp表(カラム構成が単純)へのロード(10,000,000件)の比較例 (ORACLE_LOADERアクセス・ドライバを1としたときの相対時間)

Page 25: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

SQL*Loaderと外部表の比較

• 業務アプリケーションが利用している表にそのままデータをロードすることは ほとんどありません – 通常、ステージング表(*1)に一度データをロードした後、エラーチェックや変換処理を行ったあと、 業務アプリケーション用の表にロードします

• 外部表を利用すると、多くの場合でステージング表にロードする工程を省くことができます

ステージング表の利用

SQL*Loader利用 (ステージング表使用)

外部表利用 (ステージング表未使用)

(*1):データの変換処理やロードの準備の為に設けた一時的な中間表のこと

Page 26: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

SQL*Loaderと外部表の比較

• ステージング表として利用している永続表への問い合わせ処理は基本的にOracle Databaseのバッファ・キャッシュを経由します

– 2回目以降のアクセスは高速化できます

– 必要に応じて、既存のキャッシュを破棄する場合があります

• 外部表への問い合わせ処理はOracle Databaseのバッファ・キャッシュを経由しません

– 既存のキャッシュを破棄せずに処理をおこなうことができます

– 複数回のアクセスはキャッシュがないため非効率となる場合があります

→ 複数回アクセスする場合はステージング表にロードします

バッファ・キャッシュの利用

Page 27: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

SQL*Loaderと外部表の比較

• 外部表参照の場合、永続表と同様にパラレル処理が可能 – テーブルの属性としてパラレル度数を設定

– セッション単位で設定(ALTER SESSION)

– ヒントによる設定

• ORACLE_LOADERアクセス・ドライバも可能だが制約あり 文字の境界が文字列中の任意のバイトで始まり、境界を判断できないマルチバイト・キャラクタ・セット(SJIS、EUC)を含む可変長データはパラレル処理が出来ません(UTF-8は問題なし)

• SQL*Loaderは事前に外部ファイルを分割する必要がある 実行時も複数回SQL*Loaderを指定するので、結果として手間がかかる

外部表のパラレル処理

ALTER SESSION FORCE PARALLEL QUERY;

ALTER SESSION FORCE PARALLEL DDL;

INSERT /*+ APPEND */ INTO emp SELECT * FROM ext_emp;

(外部表を使用したパラレル処理の例)

Page 28: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

SQL*Loaderと外部表の比較

• SQL*Loaderに適した処理 – ネットワークを介したデータのロード

– 複合オブジェクト・リレーショナル・データの任意のロード

– セカンダリ・ファイルを使用したLOBおよびコレクションのロード

– 定常的ではない、一時的なローディング(手早い)

•基本的には外部表を使用したデータローディング – 任意のSQL関数を利用した変換処理

– ダイレクト・パス・インサート

– パラレル・ロード(ファイル分割不要)

– 圧縮済ファイルの使用

SQL*Loaderと外部表の使い分け

Page 29: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

参考)SQL*LoaderによるLOBロード

• LOB値を別ファイルから読み込むことができます

1 disk.bmp 2 book.bmp

LOAD DATA INFILE test.dat INTO TABLE lob_tab TRUNCATE FIELDS TERMINATED BY WHITESPACE OPTIONALLY ENCLOSED BY '"' ( id integer external, ext_fname FILLER CHAR(10), blob_col lobfile(ext_fname) terminated by EOF )

制御ファイル

データ・ファイル:test.dat

カレント・フォルダに存在すること

Page 30: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved. 30

Export/Import

Page 31: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Export/Importとは

• データベース間のデータ の移動を可能にしています

データベース間のデータ 移動

Export

• 通称、このOSファイルのことをダンプ・ファイルと呼んでいます

このダンプファイルはバイナリ形式であり、エクスポートインポート

ユーティリティのみで読み書きがなされます

• FTPを使用して別サイトに転送、または物理的に移送

(テープの場合)できます

エクスポート対象のオブジェクトを抽出し、

OS上のファイルに書き込まれます

ダンプ・ファイルからオブジェクトの定義および

表データを読み込みます Import

Page 32: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Export/Import 用途 論理バックアップの取得

Database Backup

Database

論理バックアップは、様々な状況で物理バックアップを補足するために役立ちます。

ただ、論理バックアップをリストアするためには物理バックアップを再構築して、

Oracleサーバーで使用できるようにする必要があります。

よって、論理バックアップは、物理バックアップを補うために使用する事を推奨します。

Exportユーティリティで論理バックアップを取得します。

Importユーティリティを使用して、インポート可能です。

Page 33: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Export/Import 用途 データベースのバージョンアップ

ハードウェアが老朽化してきたから、そろそろハードウェアのリプレイスをしないと・・・・

このタイミングでOracle Database

もバージョンアップしよう!

バージョンアップするとなると、データを移行する必要があるな・・・

Export/Importでデータを移行しよう!

Page 34: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Export/Import 種類

•オリジナルExport/Import – expおよびimpコマンドで起動するオリジナルの エクスポート・ユーティリティおよびインポート・ユーティリティです

– Oracle Database11g では非推奨(原則としてサポートされなくなりました)

• Data Pump – Oracle Database10gから搭載されたexpdpおよびimpdpコマンドで起動する エクスポート・ユーティリティおよびインポート・ ユーティリティです

– データのロード・アンロードを高速に行うことができます

Page 35: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

オリジナルExport/Import 概要図 Import Utility

IMP Oracle Net

Oracle Database

Export Utility

EXP

xxx.dmp

ダンプ・ファイルはクライアント側に格納されます

(クライアントで

実行した場合)

Oracle Net

Page 36: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Data Pump 概要図 Import Utility

IMPDP

Oracle Net

Export Utility

EXPDP

Oracle Net

PL/SQL Package Access Driver xxx.dmp

Oracle Database

ダンプ・ファイルはサーバー側に

格納されます

(クライアント実行時でも)

EXPDP/IMPDP

の実行エンジン

Page 37: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

オリジナルとData Pumpの違い

• オリジナルExport/Importは、基本的にユーティリティ側で実行されますが、Data Pumpはデータベース・サーバー側で実行されます

サーバ側で実行するData Pumpのメリット

パラレル化が可能

APIにより呼び出しが可能

ジョブ管理・状況監視が可能

停止・再開が可能

Page 38: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Export/Import 起動

• 次のいずれかの方法を使用して、Export/Importの起動および パラメータの指定ができます –コマンドライン

–対話方式モード(Oracle Enterprise Manager)

Page 39: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Export/Importを使用する前に

• catexp.sqlまたはcatalog.sqlスクリプトの実行 – スクリプトを実行すると、データベースはエクスポートおよびインポート操作に備えて調整されます

– Export/Importを実行するデータベース上のSYSユーザーで1回実行しておく必要があります

– 通常はデータベースの作成時にcatalog.sqlが実行されているので、改めて実行する必要はありません

データ・ディレクトリへの必要なエクスポート・ビューおよびインポート・ビューの作成

EXP_FULL_DATABASEロールの作成

EXP_FULL_DATABASEおよびIMP_FULL_DATABASEロールへのすべての必要な権限の割当て

DBAロールへのEXP_FULL_DATABASEおよびIMP_FULL_DATABASEの割当て

インストールされているcatexp.sqlのバージョンの記録

Page 40: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Export/Importを使用する前に

• 十分なディスク領域の確認 –実際にExport/Importを実行するOS上のユーザーが、エクスポート・ファイルの書き込み先のディスク上またはテープ上に、十分な記憶領域があることを確認してください

• アクセス権限の確認 – Export/Importを実行する際に接続するデータベース・ユーザには、 データベースに対するCREATE SESSION権限が必要です また、別のユーザーが所有する表をエクスポートする場合は、 EXP_FULL_ DATABASEロールを付与されている必要があります

Page 41: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Export/Import 起動(コマンドプロンプト)

• 次のコマンド入力方法でExport/Importを起動できます

表モード

ユーザー・モード

表領域モード

全データベース・モード

exp(imp) ユーザ名/パスワード エクスポートモード ダンプファイル名

Ex. exp(imp) scott/tiger owner=oracle file=exp.dmp

ユーザー・モード

ダンプファイルは実行時のディレクトリに作成

ローカル接続

Page 42: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Export

モード 機能説明 パラメータ

フル データベース全体のエクスポート FULL=y

ユーザー 指定したユーザー全体のエクスポート OWNER=user[, …]

テーブル 指定したテーブル全体のエクスポート TABLES=table[, …]

テーブルスペース 指定したテーブルスペース全体のエクスポート TABLESPACES=tablespace[, …]

EXPで利用可能なモード

例1: > exp scott/tiger full=y

例2: > exp scott/tiger file=exp.dmp tables=(emp,dept)

フルモード

テーブルモード

Export Utility

EXP expコマンドで起動するオリジナルエクスポート・ユーティリティ

フル・モードでの注意点

SYSが所有する オブジェクト、およびORDSYS、CTXSYS、 MDSYS およびORDPLUGINSスキーマはエクスポートされません

Page 43: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

エクスポートオブジェクト

オブジェクトの指定

COMMAND > EXP scott/tiger TABLES=(wendy.emp) CONSTRAINTS=n

制約、権限、索引、トリガーをエクスポートするか指定します

COMMAND > EXP scott/tiger TABLES=(wendy.emp) GRANT=n

COMMAND > EXP scott/tiger TABLES=(wendy.emp) INDEXES=n

COMMAND > EXP scott/tiger TABLES=(wendy.emp) TRIGGERS=n

権限:GRANTS

索引:INDEXES

制約:CONSTRAINTS

デフォルトはすべて y

トリガー:TRIGGERS

Page 44: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

データ一貫性

エクスポート・ユーティリティによって読み込まれたデータのある時点における一貫性を維持し、expコマンドの実行中に変更されないように指定します

COMMAND > EXP scott/tiger TABLES=(wendy.emp) CONSISTENT=n

CONSISTENT

注意: ユーザーSYSとして接続しているとき、またはAS SYSDBAを使用しているとき

(あるいはその両方)に実行するエクスポートでは、CONSISTENT=yはサポートされません

デフォルトはCONSISTENT=n

Page 45: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

データ一貫性 処理の違い

時系列

ユーザB

TABLE1の

エクスポート開始

TABLE1、TABLE2の更新

トランザクションのコミット

TABLE1の

エクスポート終了

TABLE2の

エクスポート開始

CONSISTENT = n の場合 ・・・ TABLE2の更新は書き込まれますが、

TABLE1の更新は書き込まれません

CONSISTENT = y の場合 ・・・ TABLE1、TABLE2の更新ともに書き込まれません

• 読み取り一貫性の確保を実現 エクスポート開始した時点の整合性が確保できている状態で、データをエクスポートできます

ユーザA

2人のユーザーによる更新時のイベント順序

Page 46: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

ダイレクト・パス・エクスポート

従来型パス・エクスポートに比べて非常に高速なダイレクト・パス・ エクスポートの使用を指定します

COMMAND > EXP scott/tiger TABLES=(wendy.emp) DIRECT=y

DIRECT

デフォルトはDIRECT=n

注意: 次の場合は、ダイレクトエクスポートは使用できません

• 対話方式でのエクスポートの起動

• 表領域モード( TRANSPORT_TABLESPACES=Y ) • Queryパラメータの指定

Page 47: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

従来型とダイレクト・パス・ロードの違い 従来型パス・ロードによるエクスポート

Oracle専用の

メモリ領域

①エクスポートの実行

③データをディスクからバッファ・キャッシュへ読み込み

④行はクライアント・プロセスにある評価バッファに転送

します

②SELECT文発行

⑤式の評価が終了すると、エクスポート・ファイルに書き出さます

評価バッファ

Page 48: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

従来型とダイレクト・パス・ロードの違い ダイレクト・パス・ロードによるエクスポート

Oracle専用の

メモリ領域

①エクスポートの実行

②データをディスクからバッファ・キャッシュへ読み込み

③評価バッファをバイパスし、エクスポートファイルに書き出されます

評価バッファをバイパスするため、

従来型パス・エクスポートに比べ

非常に高速です

評価バッファ

Page 49: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Import Import Utility

IMP impコマンドで起動するオリジナルインポート・ユーティリティ

COMMAND > imp scott/tiger tables=emp,dept

IMPでは、EXPで使用できたパラメータのほとんどを利用することができます

IMPでパラメータを指定することにより、EXPで作成したダンプファイルからさらに対象データを絞りこんでインポートすることが可能です

ダンプファイルからemp表とdept表のみをインポート

COMMAND > imp scott/tiger owner=wendy

ダンプファイルからwendyユーザーのオブジェクトをインポート

Page 50: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

オブジェクト作成エラー処理

IGNORE=yに指定すると、データベース・オブジェクトの作成時に

作成エラーが発生しても、このエラーは無視され、エラーはレポートされずに継続します

COMMAND > IMP scott/tiger FILE=exp.dmp IGNORE=y

IGNORE

デフォルトはIGNORE=n

• 表がすでに存在する場合

IGNORE=yを指定すると、行は既存の表にインポートされます(エラー/メッセージは出力なし)

IGNORE=nを指定すると、エラーがレポートされ、表は行が挿入されないまま

スキップされます。また、表に依存するオブジェクトは作成されません。

Page 51: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Data Pump とは

• Oracle Database10gから導入されたユーティリティ – Oracle Data Pumpテクノロジを使用すると、 データおよびメタデータをデータベース間で非常に高速に移動できます

利用方法 • expdp/impdpコマンド

• Oracle Enterprise Manager

• DBMS_DATAPUMP PL/SQLパッケージ

• その他、外部表などのエンジンとして内部利用

Page 52: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Data Pump 利点

• エクスポート:オリジナルのExportに比べて2倍高速

• インポート:オリジナルのImportに比べて15~40倍高速

ダイレクトパスAPIの改善による処理速度向上

Oracle Data Pumpを使用したら速くなった!

Data Pumpは、大量データを扱う大きなジョブ向き

Data Pumpでは、マスター表を作成するためのオーバーヘッド

によって小さなジョブは遅くなりますが、大量のデータを高速に処理することは、中・大規模なジョブにとって大きなメリットとなります。

Page 53: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

パフォーマンス検証 検証環境

Sun Enterprise 3000

400MHz * 4CPU

4GB Memory

索引の張られていないテーブル(53partitions21,000,000rows)を用いてData Pumpを使ったエクスポート・インポートと従来のものとを比較する作成されるダンプファイルは1.15GB

750.418

136.45774.708 55.193

0

200

400

600

800

imp impdp impdp(2p) impdp(4p)

従来型インポートと Data Pump インポートの処理時間比較

443.483

80.005 49.664 51.269

0

200

400

600

800

exp expdp expdp(2p) expdp(4p)

従来型エクスポートと Data Pump エクスポートの処理時間比較

従来エクスポートに比べ、Data Pump は2パラレルで

約9分の1の処理時間!!

従来インポートに比べ、Data Pump は4パラレルで約13分の1の処理時間!!

検証内容

検証結果

Page 54: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Data Pump – 出力先ディレクトリ指定

• Data Pumpではクライアントではなくサーバーにより書き込みが行われるため、処理を行うディレクトリ位置が特定されている必要があります

• ダンプファイルを出力するディレクトリに対してDB上でディレクトリオブジェクトを作成し、実行時にはディレクトリオブジェクトをDIRECTORYパラメータで指定します

• パラメータでディレクトリを指定していない場合、OS環境変数「DATA_PUMP_DIR」、なければ ディレクトリオブジェクト「DATA_PUMP_DIR」が参照されます

SQL > CREATE DIRECTORY DPUMP_DIR1 AS ‘/home/oracle/oradata/dpump_dir’;

SQL > GRANT READ, WRITE ON DIRECTORY dpump_dir1 TO scott;

COMMAND > expdp scott/tiger tables=emp,dept directory=dpump_dir1

COMMAND > set DATA_PUMP_DIR=DPUMP_DIR1; export DATA_PUMP_DIR

COMMAND > expdp scott/tiger schemas=scott

権限付与

ディレクトリオブジェクト作成

環境変数の設定

Page 55: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Export – Data Pump –

オリジナルexportと同様の操作性をもった新エクスポートユーティリティ

モード 機能説明 パラメータ

フル データベース全体のエクスポート FULL=y

スキーマ 指定したスキーマ全体のエクスポート SCHEMAS=schema[, …]

テーブル 指定したテーブル全体のエクスポート TABLES=table[, …]

テーブルスペース 指定したテーブルスペース全体のエクスポート TABLESPACES=tablespace[, …]

EXPDPで利用可能なモード

例1: > expdp scott/tiger full=y

例2: > expdp scott/tiger dumpfile=exp.dmp tables=emp,dept

フルモード

テーブルモード

Export Utility

EXPDP

Page 56: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Data Pumpによるデータの移動方法

• 従来型パスを使用したデータ移動

• ダイレクト・パスを使用したデータ移動

• 外部表を使用したデータ移動

• データ・ファイル・コピーを使用したデータ移動(Transportable Tablespace)

• ネットワーク・リンク・インポートを使用したデータ移動 – NETWORK_LINKインポート・パラメータ

注意:データ・ポンプでは、無効な一意索引を持つ表は、ロードされません データを表にロードするには、その索引を削除するかまたは再度有効にする必要があります

Page 57: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

フィルタ処理

※空白等を区切り文字にしないためにダブルクオーテーションが必要ですが、OSによってはエスケープ文字が必要となります。従って、通常はパラメータを記述したファイルを読み込ませると便利です。

フィルタ処理を行い、エクスポートの対象となるオブジェクトを細かく設定することができます

エクスポートの対象オブジェクトをINCLUDEパラメータで指定します

COMMAND > expdp scott/tiger include=table

エクスポートの対象から除外するオブジェクトをEXCLUDEパラメータで指定します

COMMAND > expdp scott/tiger exclude=index:¥”LIKE ¥’EMP%¥’¥”

LIKEやINを指定することも可能

COMMAND > expdp scott/tiger include=index

INCLUDE / EXCLUDE

※INCLUDEとEXCLUDEパラメータは排他的で、同時に指定できません

Page 58: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

フィルタ処理 フィルタ処理を行い、エクスポートの対象となるデータを細かく設定することができます

• エクスポート対象表のセットから行のサブセットを選択できます

例:職種がSALESMANで、給与が1600より少ない従業員のみをエクスポートする場合

COMMAND > expdp scott/tiger TABLES=emp QUERY=¥"WHERE

job=¥'SALESMAN¥' and sal ¥<1600¥"

• サンプリングしてソース・データベースからアンロードするデータ行の割合を指定できます

例:SCOTTのEMP表の50%がエクスポートされます

COMMAND > expdp scott/tiger tables=emp SAMPLE=“SCOTT"."EMP":50

QUERY / SAMPLE

Page 59: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

ファイルサイズ 各ダンプ・ファイルがそのサイズを上限とし、置換変数(%U)を持つテンプレートを指定していてダンプ・ファイルを分割します

• サイズが3MBのダンプ・ファイルを設定する

COMMAND > expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr_3m.dmp FILESIZE=3MB

3MBでもすべてのエクスポート・データを保持するのに十分でなかった場合、次のエラーが表示され、ジョブは中止されます

ORA-39095: Dump file space has been exhausted: Unable to allocate 217088 bytes

FILESIZE

ファイル指定に置換変数が含まれている場合は、新しいファイルが作成されます

COMMAND > expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr_3m%U.dmp FILESIZE=3MB

キロバイト(KB)、メガバイト(MB)、ギガバイト(GB)を付けて指定する事もできます

Page 60: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

フラッシュバック・モード 指定したSCNもしくは時刻における一貫性を維持したデータのエクスポートが可能です

あるSCNにおける一貫性を維持したデータをエクスポートするために

FLASHBACK_SCNパラメータを指定します

COMMAND > expdp scott/tiger flashback_scn=364909

SCN指定

ある時刻における一貫性を維持したデータをエクスポートするために

FLASHBACK_TIMEパラメータを指定します

COMMAND > cat parfile.txt

FLASHBACK_TIME=“TO_TIMESTAMP(‘2004/03/20 10:00’,’YYYY/MM/DD HH:MI’)”

COMMAND > expdp scott/tiger parfile=parfile.txt

時刻指定

TO_TIMESTAMP()で時刻を指定

エスケープ文字が必要となるので、パラメータファイルで指定

FLASHBACK_SCN / FLASHBACK_TIME

Page 61: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

パラレル・エクスポート

エクスポート処理をパラレルで行うことが可能です

並列度をPARALLELパラメータで指定します

出力先ディレクトリをそれぞれ指定することも可能です

COMMAND > expdp scott/tiger parallel=3 dumpfile=dpump_dir1:expdat%U.dmp, dpump_dir2%U.dmp

COMMAND > ls –lR

dpump_dir1:

…….expdat01.dmp

…….expdat02.dmp

dpump_dir2:

…….expdat01.dmp

Enterprise Edition

置き換え変数(%U)を指定しない場合、dumpfileのファイル数はparallelの値に合わせる必要があります。

指定している場合、指定されたファイル指定がラウンドロビンに使用されます。

生成されたダンプファイルセットの確認

PARALLEL

Page 62: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

ダンプファイルサイズ事前見積

ESTIMATE ダンプファイルを生成せず、生成されるダンプファイルのサイズを

見積もることが可能です

見積もりのモードをESTIMATEパラメータで指定します

パラメータ値には次のどちらかを設定します

BLOCKS ・・・ ブロックサイズにオブジェクトのブロック数をかけて見積もります

(精度は高くありません)

STATISTICS ・・・ 統計情報を元に見積もります

見積もりのみ出力する場合には、ESTIMATE_ONLY=yを指定します

COMMAND > expdp scott/tiger tables=emp,dept estimate=blocks estimate_only=y

Page 63: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

見積例 実際にデータを作成し(40万行、2GB)、見積もりの精度を計測。dbms_statsはサンプル100%で実施。

COMMAND > expdp scott/tiger tables=test estimate=blocks estimate_only=y

Estimate in progress using BLOCKS method...

Processing object type TABLE_EXPORT/TABLE/TBL_TABLE_DATA/TABLE/TABLE_DATA

. estimated “SCOTT".“TEST" 3.062 GB

Total estimation using BLOCKS method: 3.062 GB

COMMAND > expdp scott/tiger tables=test estimate=statistics estimate_only=y

Estimate in progress using STATISTICS method...

Processing object type TABLE_EXPORT/TABLE/TBL_TABLE_DATA/TABLE/TABLE_DATA

. estimated “SCOTT".“TEST" 1.947 GB

Total estimation using STATISTICS method: 1.947 GB

COMMAND > ls –l

……. 2092179456 …. expdat.dmp

約1.948GB マスターテーブルの容量が見積もりに入らないため、その分は考慮する必

要があります

BLOCKS

STATISTICS

確認

Page 64: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Tips

• Oracle RAC構成でData Pumpまたは外部表を使用するには、ディレクトリ・オブジェクトのパスがクラスタ・ファイル・システム上に存在するようにする必要があります – この目的で使用できる共有ストレージが構成内にない場合にも並列処理が必要であれば、CLUSTER=noパラメータを使用して、すべてのワーカー・プロセスを、Data Pumpジョブが開始されたインスタンスのみに置くことができます

– ASMを使用可能にした場合のディレクトリ・オブジェクトの使用方法 SQL> CREATE or REPLACE DIRECTORY dpump_dir as '+DATAFILES/‘;

–ログ・ファイル用の個別のディレクトリ・オブジェクトの作成 SQL> CREATE or REPLACE DIRECTORY dpump_log as '/homedir/user1/‘;

–使用例 > expdp hr DIRECTORY=dpump_dir DUMPFILE=hr.dmp LOGFILE=dpump_log:hr.log

Page 65: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Import – Data Pump – オリジナルインポートツールと同様の操作性をもった新インポートユーティリティ

Import Utility

IMPDP IMPDPでは、EXPDPで使用できたパラメータのほとんどを利用することができます

IMPDPでパラメータを指定することにより、EXPDPで作成したダンプファイルからさらに対象データを絞りこんでインポートすることが可能です

COMMAND > impdp scott/tiger include=index

COMMAND > impdp scott/tiger tables=emp,dept

ダンプファイルからemp表とdept表のみをインポート

ダンプファイルから索引のみをインポート

Page 66: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

ネットワーク・リンク

NETWORK_LINK データベース・リンクを使用して、リモートデータベースから直接ローカルデータベースにインポートを行うことができます

参考:エクスポートのネットワーク・リンク指定は、リモートデータベースのデータをローカルにエクスポートする機能です。インポートの場合には直接ローカルデータベースに書き込むので、ダンプファイルを作成しません。

COMMAND > impdp scott/tiger tables=emp,dept directory=dpump_dir

network_link=scott.jp.oracle.com

接続するリモートデータベースを、NETWORK_LINKパラメータで指定します。

指定する値はデータベース・リンク名です。

DB LINKの指定

Page 67: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved. 67

Oracle Databaseからの CSVアンロード

Page 68: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

なぜCSVでロード / アンロードしたいのか?

• RDBMS製品間のデータ交換 – Oracle Database から他社RDBMSへ

–他社RDBMSから Oracle Database へ

• 業務処理(本番環境)としてデータ交換を行なっている

• 検証・開発用にデータをベンダーに提供する

Page 69: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

CSVロード / アンロードに関する問題

• CSVはフォーマット・エラーが発生しやすい –ローディングが行えず、PoC(導入前実機検証)や開発等の実作業が始められない

• Oracle Database には CSVアンローダーが存在しない –どのような手法でアンロードするかが性能に大きく影響する

– CSVフォーマット・エラーが発生しやすい

Page 70: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

CSVフォーマットとは

• 狭義では CSV = Comma-Separated Values [RFC4180] –フィールド終端: , レコード終端: CRLF

• 広義では CSV = Character-Separated Values –フィールド終端とレコード終端が特定の文字

• 狭義のCSVを使いがちだが ほとんどのソフトウェアが広義のCSVに対応している

• 狭義のCSVはフォーマット・エラーを起こしやすい

Page 71: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

フォーマット・エラー

abc def 1,234

uvw xyz 7,890

データにフィールド終端が含まれている

abc def 1 234

uvw xyz 7 890

abc,def,1,234

uvw,xyz,7,890 2列に分割されてしまっている

Page 72: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

正しい対応例

• 例)フィールド終端: タブ(^I) abc^Idef^I1,234 uvw^Ixyz^I7,890

• タブ区切りテキスト (TSV) は Microsoft Excel 含め、 対応ソフトウェアが多いので利用しやすい

• 注意: ユーザーが自由入力できるアプリケーション (textarea要素を含むWebアプリケーションなど)では データにタブが含まれることが少なくない

終端記号をデータに含まれない文字にする

Page 73: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

ORACLE_LOADERでの最適な対応例

• ORACLE_LOADERドライバー(SQL*Loader含む)は ASCII制御文字を含むあらゆる文字に対応できる

• 例)フィールド終端: ユニット分離標識(^_) レコード終端: レコード分離標識(^^) abc^_def^_1,234^^uvw^_xyz^_7,890

• マイナーなASCII制御文字がデータに含まれている確率はほぼゼロ

• Vimでは Ctrl + V → Ctrl + ^ でASCII制御文字を入力可能

• 制御ファイルでは DELIMITED BY X'1E' のように16進数指定も可能

終端記号にマイナーなASCII制御文字を使用する

Page 74: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

誤った対応例

• エンクロージャ " を追加する "abc","def","1,234"

• データに " は含まれていないか? → 含まれている → エラー "abc","def","1'23""

• データに " が含まれていないことが確実なのであれば、 フィールド終端を " にするだけで解決 abc"def"1,234

エンクロージャでは解決できない

Page 75: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

ORACLE_LOADERで間違いやすい対応例 1

• ORACLE_LOADERドライバー(SQL*Loader含む)は エンクロージャを使ってもデータにレコード終端を含められない 例)フィールド終端: , レコード終端: 改行 エンクロージャ: “ ”abc“,”def“,”12 34“ → エラー: 2番目の囲み文字列がありません

• 可変レコード形式 (VAR) を使った対応方法もあるが、 レコード終端を改行から別のASCII制御文字に変更したほうが簡単

エンクロージャをつけても、レコード終端はデータに含められない

Page 76: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

ORACLE_LOADERで間違いやすい対応例 2

• ORACLE_LOADERドライバー(SQL*Loader含む)は エスケープ文字でフィールド終端とレコード終端を無効化できない 例)フィールド終端: , レコード終端: 改行 abc,def,1¥,234 uvw,xyz,78¥ 90

エスケープ文字は使用できない

abc def 1¥ 234

uvw xyz 78¥

90

単なる文字として扱われる

Page 77: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

ORACLE_LOADERで間違いやすい対応例 3

• ORACLE_LOADERドライバー(SQL*Loader含む)は 文字 “列” に対応できるが、これで常に解決できるわけではない

• 例)フィールド終端: ,, abc,,def,,1,234 ← 一見良さそう uvw,,xy,,,7,890 ← 想定外の区切り

文字列にしても解決できない

uvw xy ,7,890

区切りがずれている

Page 78: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

正しいアプリケーション実装

• 終端記号にマイナーなASCII制御文字を使用できないシステムでは 少なくとも2個の印字可能文字は、データに含まれないように RDBMSからの入力時 / RDBMSからの出力時に置き換える – ISO10646文字実体参照: , → &#44;

– SQLインジェクション対策に合わせて実装する

Page 79: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved. 79

知っておきたい 便利な使い方

Page 80: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

複数の表をExportし、データのみをImportしたい

複数の表をExportし、データのみをImportしたいが、外部キーが多数

あり、整合性制約に違反してしまう・・・

COMMAND> expdp system/manager ; SQL> alter table emp disable constraint emp_no_fk ; ・・・関連するすべての参照整合性約をdisableに設定します COMMAND> impdp system/manager ; SQL> alter table emp enable constraints emp_no_fk ; ・・・関連するすべての参照整合性約をenableに設定します

A:以下のように、関連する参照整合性制約を disableし、Import後に参照整合性制約を enable にすると、エラーを解消できます

オリジナル / Data Pump

Page 81: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Exportダンプから一部データを取り出す方法

誤って一部データをdeleteし、commit してしまった!!

エクスポートのダンプ・ファイルから取り出したい・・・

COMMAND> impdp system/manager

remap_schema=oradirect:dummy

SQL> insert into oradirect.emp select * from dummy.emp where emp_id=100;

SQL> drop table dummy.emp

SQL> delete from oradirect.emp

where emp_id=100;

SQL> commit;

A:以下のように削除したデータをエクスポートのダンプ・ファイルより取り出せます

注)エクスポートした時点のデータと削除したデータが一致するかは不明であるため、

この例の場合emp_id=100のデータに関して、 エクスポート時と誤って削除した時が

同じであったことを前提と しています

オリジナル / Data Pump

Page 82: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

索引作成文を受け取る方法 -オリジナル-

エクスポート・ファイルのCREATE TABLE文もコメントとして含まれます

オリジナル

Option INDEXFILE

デフォルト なし

用途 索引作成文を受け取るファイルを指定します

使用例 imp scott/tiger TABLES=(wendy.emp) INDEXFILE=‘index.txt’

Page 83: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

索引作成文を受け取る方法 -Data Pump- Data PumpではすべてのSQL文を受け取れます

Data Pump

Option SQLFILE

デフォルト なし

用途 インポートが他のパラメータに基づいて実行するすべてのSQL DDLの書込み先のファイルを指定します

使用例 impdp scott/tiger TABLES=(wendy.emp) SQLFILE=‘index.txt’

注意: パスワードは、SQLファイルに含まれないことに注意してください

たとえば、実行したDDLにCONNECT文が含まれている場合、

その文はコメントで置き換えられ、スキーマ名のみが表示されます

例:TEST_TABLE表をインポートする際のSQLFILEを受け取る場合

impdp oradirect/oradirect dumpfile=test_table.dmp tables=test_table sqlfile=sqlfile.txt

Page 84: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Data Pump SQLFILE例 Data Pump

CREATE TABLE文や

CREATE INDEX文を

確認する事ができます

さらにINSERT文も

確認する事ができます

Page 85: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Data Pump 圧縮

• COMPRESSION={ALL | DATA_ONLY | METADATA_ONLY | NONE} – NONE...エクスポート操作全体について圧縮が無効 – METADATA_ONLY(default)...全ての“メタデータ”が圧縮形式でダンプ・ファイルへ書き込み (以下の操作はAdvanced Compressionオプションが必要) – DATA_ONLY...全ての“データ”が圧縮形式でダンプ・ファイルへ書き込み – ALL...データ、メタデータともに圧縮

• (例)スキーマを指定し、メタデータ、データともに圧縮してダンプ・ファイルscott.dmpへエクスポート

データやメタデータを圧縮してダンプファイルにエクスポートできる Advanced Compression

Option

Data Pump

$ expdp scott/tiger DIRECTORY=dpump_dir DUMPFILE=scott.dmp

COMPRESSION=ALL SCHEMAS=scott

Page 86: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

Data Pump 暗号化

• ENCRYPTION = {ALL | DATA_ONLY | ENCRYPTED_COLUMNS_ONLY | METADATA_ONLY | NONE}

– ALL:すべてのデータおよびメタデータについて暗号化が有効

– DATA_ONLY:データのみが暗号化

– ENCRYPTED_COLUMNS_ONLY:暗号化された列のみが暗号化される

– METADATA_ONLY:メタデータのみが暗号化

– NONE:データは暗号化されない

• (例)ダンプ・ファイルでデータのみが暗号化されるエクスポート操作

データやメタデータを暗号化してダンプファイルにエクスポートできる

$ expdp scott/tiger DIRECTORY=dpump_dir DUMPFILE=scott_enc.dmp

SCHEMAS=scott ENCRYPTION=data_only ENCRYPTION_PASSWORD=tiger

Advanced Security

Option

Data Pump

Page 87: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved. 87

まとめ

Page 88: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

まとめ

• Oracle Databaseにおいてテキスト・ファイルからのデータ・ロード方法は2種類

– SQL*Loader

– 外部表を使用したローディング

• SQL*Loaderは以前のバージョンから提供されており馴染み深いが、現在は外部表の利用が主流

• 外部表を利用することでデータ・ロードをSQLで柔軟に実現可能

• エクスポート・インポートの種類は2種類

– オリジナルExport/ImportとData Pump

– Oracle Database 10gからはData Pumpを使用

• Oracle Database 10g以前のバージョンからデータを移行する場合は、オリジナルエクスポート・インポートを使用

• ダイレクト・パス・ロードで高速な移行を実現

• Optionコマンドを使って、最適なExport/Importを実現

– Advanced Compressionで圧縮して高速化を実現

– セキュリティを高めたいなら、Advanced Security

Page 89: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved. 89

Appendix HWMを下げる オペレーション

Page 90: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

参考)ダイレクト・ロードとHWM

• テーブルに割り当てたブロックの中で、いままでデータが挿入されたことのある最後尾のブロック

– ハイウォーターマーク(High Water Mark):高水位標

• テーブルのフルスキャン時にはHWMまで読み取ります

– メリット:テーブルの大きさに対してデータ量が少ない場合、高速に検索できる

– デメリット: 大量削除などでHWM以前の空きが多い場合、実レコード数に比較して時間がかかる

ハイウォーターマーク(HWM)とは

HWM

データ格納済

ブロック

空き ブロック

HWM

データ格納済

ブロック

空き ブロック

データ削除

HWM

空き ブロック テーブルのフルスキャン

空き ブロック

HWM

空き ブロック テーブルのフルスキャン

Page 91: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

参考)ダイレクト・ロードとHWM

• ダイレクト・ロードはHWMの後ろにデータを書き込みます

– ブロック・イメージを作成し直接物理的に書き込む為、使用中のブロックを利用しません

– ダイレクト・ロードは書込み速度は速いが、利用できない空き領域 (HWMよりも前の空き領域)がでてきます

• データ削除が頻繁に発生する表にダイレクト・ロードを行う際はHWMを下げるような運用も検討してください

ダイレクト・ロードの書込み

HWM

データ格納済

ブロック

空き ブロック

ダイレクト・ロードによる データ書込み開始ブロック

Page 92: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

HWMを下げるオペレーション

• 業務的に対象表にアクセスさせない状態で実施 1. 論理バックアップユーティリティ(EMP/IMP) + 元表削除(DROP)

2. CREATE AS SELECT + TRUNCATE + INSERT SELECT

3. CREATE AS SELECT + 元表削除(DROP) + RENAME

4. ALTER TABLE <表名> MOVE TABLESPACE <表領域名>)

※ 索引等のメンテナンスも必須

• オンライン状態で実施 1. オンライン表再定義(Enterprise Edition機能)

2. オンライン・セグメント縮小(標準機能)

Page 93: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved.

HWMを下げるオペレーション

• オンライン・セグメント縮小

–業務でテーブルを利用中でもセグメント縮小が可能

–自動セグメント領域管理(ASSM)のみ利用可能

オンライン・セグメント縮小

ALTER TABLE <表名> ENABLE ROW MOVEMENT; ALTER TABLE <表名> SHRINK SPACE[CASCADE];

① ②

データの移動 HWMの移動

領域の解放 HWM 空き領域

Page 94: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

Copyright © 2015 Oracle & C’sNEXT Co.,Ltd. All rights reserved. 94

Page 95: 第4回どさんこオラクル勉強会 今さら聞けないデータロード …第4回どさんこオラクル勉強会 ... •DATAPUMP(expdp)のdmpファイルは利用できません

95