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

Oracle Advanced Compression and Transparent Data Encryption

Oracle Advanced Compression and Transparent Data Encryption

Oracle DatabaseのAdvanced Compressionによるデータ・ブロックの圧縮とAdvanced SecurityによるTransparent Data Encryptionは特に制限なく組み合わせて使用可能である説明です。

oracle4engineer

February 09, 2021
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. Oracle Database 19c勉強会
    Advanced Compression & Advanced Security
    日本オラクル株式会社
    日下部明
    2020年8月25日

    View full-size slide

  2. Safe harbor statement
    以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とする
    ものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することを確約
    するものではないため、購買決定を行う際の判断材料になさらないで下さい。
    オラクル製品に関して記載されている機能の開発、リリース、時期及び価格については、弊社の裁量により決定され、変
    更される可能性があります。
    Copyright © 2020, Oracle and/or its affiliates

    View full-size slide

  3. このセッション
    Advanced Compression – 圧縮
    • データ・ブロック
    • ネットワーク・データ
    • RMANバックアップ・ファイル
    • Data Pumpダンプ・ファイル
    Advanced Security – 正規のクライアントからのみ見える
    • 透過的データ暗号化 (データ・ブロック)
    - 列暗号化
    - 表領域暗号化
    • (ネットワーク・データの暗号化はAdvanced Securityライセンス不要)
    • RMANバックアップ・ファイル
    • Data Pumpダンプ・ファイル
    • Data Redaction
    Copyright © 2020, Oracle and/or its affiliates

    View full-size slide

  4. Advanced Compression

    View full-size slide

  5. Copyright © 2020, Oracle and/or its affiliates
    Oracle Databaseの圧縮機能
    5
    機能名 対象 用途
    基本表圧縮 データ・ブロック(表) データの変更が少ない表やパーティション
    接頭辞圧縮 データ・ブロック(索引) 索引
    高度な行圧縮 データ・ブロック(表) データの変更が頻繁にある表やパーティション
    高度なLOB圧縮と重複削除 データ・ブロック(LOB) DWH環境やOLTP環境における非構造化データ
    高度な索引圧縮 データ・ブロック(索引) 索引
    高度なネットワーク圧縮 ネットワーク クライアントとサーバーの間の通信データ
    REDO転送の圧縮 ネットワーク Data Guardのネットワーク通信データ
    RMANバックアップ圧縮 RMANバックアップ・ファイル 物理バックアップ
    Data Pumpデータの圧縮 Data Pumpダンプ・ファイル 論理バックアップ
    自動データ最適化(ADO)/ヒートマップ データ・ブロック(表) データ配置の最適化
    ハイブリッド列圧縮 – ウェアハウス用 データ・ブロック(表)
    データ変更が少ない表やパーティション、より高い圧
    縮で分析クエリを高速化したい場合
    ハイブリッド列圧縮 – アーカイブ用 データ・ブロック(表)
    データの変更が少なく、データの検索も少ない表や
    パーティション、最も高い圧縮率が実現される
    Advanced Compression
    Option
    Oracle
    Storage,
    Exadata

    View full-size slide

  6. データ・ブロックを対象とした圧縮
    Oracle Databaseの圧縮は1つのデータ・ブロックにより多くのデータを格納する機能
    その結果、必要なデータ・ブロックの個数が減る
    データ・ブロックのサイズがストレージ上で小さくなる機能ではない
    zipのようなファイルを圧縮する機能にあらず
    Copyright © 2020, Oracle and/or its affiliates
    非圧縮データ・ブロック 圧縮データ・ブロック
    圧縮

    View full-size slide

  7. データ・ブロックの圧縮
    同一データ・ブロック内に同じ値があることが重要
    圧縮処理とは:
    1.同じ値の探索
    2.短い符号へ置き換えて詰める
    圧縮処理はCPU時間をそれなりに消費する
    データ・アクセスは同一ブロック内のポインタをたどるだけなのでオーバーヘッドはほとんどない
    分析処理の対象になるような表には同じ値が繰り返し現れることが期待される
    50%から25%くらいになる→大量にI/Oを発行する分析処理で大きな効果
    重複する列の値が極めて少ないことがわかっている表ならば圧縮機能は無効に
    値が重複しないなら圧縮が効かないので探索処理が無駄
    Copyright © 2020, Oracle and/or its affiliates
    値1
    値1
    値1
    圧縮

    View full-size slide

  8. 基本表圧縮
    Advanced Compressionライセンス不要
    ダイレクト・パス・ロードのときに圧縮状態の表データ・ブロックを作成する
    通常INSERTでは圧縮不可
    圧縮にかかる時間分ロード時間は大幅増加
    (何度も実行する)SELECTの時間が減少する
    用途はデータ・ウェアハウスなどの一度INSERTされたら更新されない表データの作成
    ダイレクト・パス・ロード
    SGAのデータベース・バッファ・キャッシュ上でデータ・ブロックを操作するのではなく、PGA上でデータ・ブロックを作
    成しデータ・ファイルに直接書き込む
    大量のINSERTをするときに使用する
    CREATE TABLE ... AS SELECT
    INSERT /*+APPEND */ INTO ... SELECT
    Copyright © 2020, Oracle and/or its affiliates

    View full-size slide

  9. 高度な行圧縮
    Advanced Compression
    ダイレクト・パス・ロードだけでなく、通常INSERTでも表データ・ブロックの圧縮を可能にした
    • バッファ・キャッシュ上のデータ・ブロックへの通常INSERTでも圧縮可能になった
    - OLTPアプリケーションでも圧縮可能になった
    • データ・ブロック内の容量がある閾値を超えるとデータ・ブロック内を圧縮する
    - INSERTのたびに圧縮が発動するのではない
    - 圧縮が発動したINSERTの処理時間は増加
    • データ・ブロックに空き容量が増えるのでより多くの行が格納できる
    Copyright © 2020, Oracle and/or its affiliates
    圧縮発動
    容量の閾値 容量の閾値

    View full-size slide

  10. 表圧縮の設定
    高度な表圧縮(ROW STORE COMPRESS ADVANCED)の例
    表作成時に設定
    CREATE TABLE ... ROW STORE COMPRESS ADVANCED ...
    途中で切り替えるとそこから追加で格納される行の圧縮動作が変わる
    ALTER TABLE ... ROW STORE COMPRESS ADVANCED ...
    ALTER TABLE ... NOCOMPRESS ...
    既存のデータの格納状態は変わらない
    既存データの格納状態を変更するには移動させる必要がある
    ALTER TABLE ... MOVE ROW STORE COMPRESS ADVANCED ...
    ALTER TABLE ... MOVE NOCOMPRESS ...
    データ量に比例した時間がかかる
    Copyright © 2020, Oracle and/or its affiliates

    View full-size slide

  11. 索引圧縮
    複合索引のリーフ・ブロックの圧縮
    接頭辞圧縮(キー圧縮)
    複数列で構成される索引(複合索引)の前方の列(プレフィックス)の重複値を置き換える
    圧縮設定時に対象列数を指定
    高度な索引圧縮(12c Release 1~)
    接頭辞圧縮の対象列をリーフ・ブロックごとに自動判断
    Copyright © 2020, Oracle and/or its affiliates
    値1
    値1
    値1
    値1
    値2
    値3
    値4
    値5
    列1 列2
    値1
    値2
    値3
    値4
    値5
    列1
    列2
    圧縮

    View full-size slide

  12. 索引圧縮の設定
    複合索引のリーフ・ブロックの圧縮
    接頭辞圧縮(キー圧縮)
    複数列で構成される索引(複合索引)の前方の列(プレフィックス)の重複値を置き換える
    圧縮設定時に対象列数を指定
    CREATE INDEX idxname ON tabname(col1, col2, col3) COMPRESS 2;
    ALTER INDEX idxname REBUILD COMPRESS 2;
    ANALYZE INDEX idxname VALIDATE STRUCTUREで事前に適切な列数を分析
    高度な索引圧縮(12c Release 1~)
    接頭辞圧縮の対象列をリーフ・ブロックごとに自動判断
    CREATE INDEX idxname ON tabname(col1, col2, col3) COMPRESS ADVANCED LOW;
    ALTER INDEX idxname REBUILD COMPRESS ADVANCED LOW;
    Copyright © 2020, Oracle and/or its affiliates

    View full-size slide

  13. データ・ブロックの圧縮
    同一ブロック内に重複する値があるか
    Oracle Databaseのデータ・ブロック圧縮機能
    データ・ブロックにより多くのデータを格納する機能
    圧縮処理自体はCPU時間を消費する
    データ・ブロックの個数が減ることによるI/O回数減少 → 分析系処理で大きな効果
    表ブロックの圧縮
    同じ値を持つ列があるか
    基本表圧縮 – ダイレクト・パス・ロードのみ
    高度な行圧縮 – 通常INSERTでも可能
    索引ブロックの圧縮
    複合索引のプレフィックスが同じ値を持つか
    接頭辞圧縮 - 圧縮対象のプレフィックス列数を指定
    高度な索引圧縮 - リーフ・ブロックごとにプレフィックス列数を自動判断
    Copyright © 2020, Oracle and/or its affiliates

    View full-size slide

  14. Copyright © 2020, Oracle and/or its affiliates
    14
    圧縮設定はパーティションごとに可能
    あまりアクセスしなくなったパーティションを圧縮設定や低コスト・ストレージに移動することも可能
    アクセス頻度を観測し、それを自動化したのが自動データ最適化(Automatic Data Optimization)
    ヒート・マップ
    アクセスパターンやアクセス頻度の記録 – ADOポリシーのタイミングを自動検出
    自動データ最適化(ADO)
    ADOポリシーに従ったアクションの自動実行
    ADOポリシー =アクション(圧縮や移動)とタイミング(アクションの条件)
    ヒート・マップによるデータ配置の最適化
    データの圧縮と移動を自動化
    ADOポリシー
    ヒートマップ適用
    自動検出 自動実行

    View full-size slide

  15. Copyright © 2020, Oracle and/or its affiliates
    15
    データの参照および更新頻度を自動的に追跡
    自動データ最適化機能との組み合わせによる高度なデータ配置管理を提供
    データの参照や更新の状況を追跡し、情報ライフサイクル管理の基準となるデータを提供
    ヒート・マップ
    古いデータはまれに参照されるが更新
    は一定期間行われていない
    直近の過去データは頻繁ではないが参
    照され、まれに更新も行われている
    頻繁に参照や更新が行われている
    時系列でのパーティション

    View full-size slide

  16. Copyright © 2020, Oracle and/or its affiliates
    16
    表/表領域単位でポリシーを設定し、データの圧縮やレベル変更を自動化
    ヒートマップが取得するデータ操作からの経過時間によりパーティションまたは、表領域のレベルでポリシーの条件を設定
    ヒートマップとの組み合わせによる高度なデータ配置管理を提供
    ポリシーに従って自動でデータ配置を最適化
    自動データ最適化(ADO)
    ADO Policy1:
    作成から90日後経ったら圧縮
    ADO Policy2:
    180日以上変更がなければより高い
    圧縮率で圧縮
    ALTER TABLE sales ILM ADD POLICY
    ROW STORE COMPRESS ADVANCED
    SEGMENT AFTER 90 days of creation;
    ALTER TABLE sales ILM ADD POLICY
    COLUMN STORE COMPRESS FOR
    ARCHIVE HIGH
    SEGMENT AFTER 180 days of no
    modification;
    時系列でのパーティション

    View full-size slide

  17. Copyright © 2020, Oracle and/or its affiliates
    17
    Appendix
    Oracle Advanced Compressionに含まれる機能
    機能 ライセンスに関する備考
    高度な行圧縮
    高度なLOB圧縮
    高度なLOB重複除外
    RMANバックアップ圧縮 RMAN DEFAULTCOMPRESSにはオプションが不要
    データ・ポンプのエクスポート・データ圧縮 COMPRESSION=METADATA_ONLYにはオプションが不要
    ヒート・マップ
    自動データ最適化(ADO)
    Data Guard REDOトランスポート圧縮
    高度なネットワーク圧縮
    フラッシュバック・データ・アーカイブ履歴表の最適化
    記憶域スナップショットの最適化
    オンライン移動パーティション(任意の圧縮形式に対応)
    Exadataフラッシュ・キャッシュ圧縮 この機能はExadataストレージ・サーバーでのみ有効
    アドバンスト索引圧縮
    ハイブリッド列圧縮の行レベル・ロッキング Exadata、Oracle Database Appliance、Supercluster、ZFSSA が必要
    追加費用オプション: EE、EE-ES
    参照: データベース・ライセンス情報ユーザー・マニュアル

    View full-size slide

  18. Copyright © 2020, Oracle and/or its affiliates
    18
    Oracle Advanced Compression(日本語/英語 )
    マニュアル - Release 19c
    • データベース管理者ガイド(日本語)
    • RMAN環境の構成: 高度なトピック(日本語)
    • Oracle LOB記憶域の使用(日本語)
    • VLDBおよびパーティショニング・ガイド(日本語)
    - ヒート・マップおよびADOを使用したILM戦略の実装(日本語)
    • ホワイトペーパー
    - 概念実証(POC)に関する洞察およびベスト・プラクティス(日本語/英語)
    • Oracle Advanced Compressionデータシート(日本語/英語)
    その他技術情報
    - 連載 しばちょう先生の試して納得!DBAへの道 連載ページ
    - Advanced Compression Master Note (Doc ID 1223705.1)
    Appendix

    View full-size slide

  19. Oracle Advanced Security

    View full-size slide

  20. 20
    Data Redaction
    • 問合せ結果データをリダクション(マスク)
    • 権限のないユーザーに対してデータが表示されるリスクを
    軽減
    透過的データ暗号化
    • データベース層でデータを暗号化
    • データベースを迂回して、ストレージから
    直接機密データを読み取ることを阻止
    データベース内の機密データを暗号化、リダクションにより保護
    Oracle Advanced Security
    Redacted
    Applications
    Data Redaction
    XXXX-XXXX-4368
    Disks
    Exports
    Backups
    Transparent
    Data
    Encryption
    Encrypted
    Storage
    d$f8#;!90Wz@Yg#3
    Copyright © 2020, Oracle and/or its affiliates

    View full-size slide

  21. Copyright © 2020, Oracle and/or its affiliates
    21
    透過的データ暗号化
    • データおよびバックアップデータ等の透過的データ暗号化機能
    • Oracle Database内部で暗号/復号処理を行うため、
    アプリケーションの変更なし
    • CPUの持つ暗号化支援命令セットのハードウエア連携により、極めて小
    さなオーバーヘッド(Intel Xeon AES-NI / Oracle SPARC)
    Oracle Data Redaction
    • アプリケーションのコード改修なく、不必要なデータを
    ユーザーに見せなくする事が可能
    • ユーザーに対しポリシーを設定することで、結果の返し方を設定
    • 結果の返し方は伏字/置き換え/ランダム等から選択し、
    Enterprise Managerから設定可能
    クレジットカード番号
    4451-2172-9841-4368
    5106-8395-2095-5938
    ポリシー
    xxxx-xxxx-xxxx-4368 4451-2172-9841-4368
    データ責任者
    業務オペレーター
    1 1.01 1.05
    暗号化:10GB INSERT時間
    暗号化なし TDE(AES-NI) TDE(AES-NIなし)
    1 1.03
    1.19
    復号:10GB SELECT時間
    暗号化なし TDE(AES-NI) TDE(AES-NIなし)
    1% 3%
    バッチ処理のオーバーヘッド
    データベース内の機密データを暗号化、リダクションにより保護
    Oracle Advanced Security

    View full-size slide

  22. ストレージ・データの暗号化
    Transparent Data Encryption

    View full-size slide

  23. Copyright © 2020, Oracle and/or its affiliates
    23
    stringsコマンドで平文ファイルの中身が見えてしまう
    • OracleソフトウェアのOSユーザーはASMデバイス・ファイルのreadパーミッションを持っている
    • ストレージのハードウェア盗難
    Transparent Data EncryptionはOracleインスタンスの階層でデータベースのファイルを暗号化
    • 平文データはメモリの中だけになる
    • ストレージ機能での暗号化ではOSユーザーからのアクセスを阻止できない
    データベースにログインする以外の方法からデータが見えるのを阻止
    透過的データ暗号化(Transparent Data Encryption)
    OS root
    Oracle Grid Infrastructure
    Oracle Database
    Storage ストレージのハードウェアにアクセスできる人
    OSの特権ユーザー(root)
    Oracle Grid Infrastructureのインストール・ユーザー(grid)
    Oracle Databaseのインストール・ユーザー(oracle)
    OSユーザー
    ハードウェア

    View full-size slide

  24. Copyright © 2020, Oracle and/or its affiliates
    24
    TDEあり
    データの読み取り不可
    TDEなし
    平文データの読み取り可能
    データファイルをテキスト・エディタで参照した例
    TDEの有無によるデータの見え方

    View full-size slide

  25. Copyright © 2020, Oracle and/or its affiliates
    25
    推奨は表領域暗号化
    2種類のTransparent Data Encryption
    列暗号化 (10g Release 2~) 表領域暗号化 (11g Release 1~)
    暗号化粒度 表の特定列のみ暗号化 表領域全体を暗号化(データ・ブロック単位)
    暗号化・複合化タイミング 暗号化列にアクセスするたび データ・ブロックにI/Oが発生したとき
    バッファ・キャッシュ内 暗号化 平文(アクセスにオーバーヘッドがない)
    サイズ増加 する しない
    データ型 いくつか制限あり BFILEのみ不可(データベース外部だから)
    データ型サイズ制限 あり なし
    索引アクセス B*Treeの一致検索のみ 制限なし
    CPU暗号化命令アシスト なし あり
    制限事項の少なさおよびSQL実行計画に影響しないのは表領域暗号化であるためこちらが推奨

    View full-size slide

  26. Copyright © 2020, Oracle and/or its affiliates
    26
    Oracle Databaseアーキテクチャ
    REDOログ・バッファ
    (暗号化)
    オンラインREDOログ・ファイル
    LGWR
    oracle oracle
    Oracleサーバー・プロセス
    ログ・ライター・プロセス
    データベース・バッファ・キャッシュ
    (平文)
    DBWn
    データベース・ライター・プロセス
    データファイル
    REDOログ情報はOracleサー
    バー・プロセスによって生成され

    データ・ブロックはOracleサーバー・
    プロセスによってデータファイルから読
    まれてバッファ・キャッシュに配置
    データ・ブロックはキャッシュされている
    間は平文なので暗号化および複合
    化オーバーヘッドはない
    LGWRプロセスがオンライン
    REDOログ・ファイル書き込み
    DBWRプロセスがバッファ・キャッシュ
    からデータ・ファイルに書き戻す

    View full-size slide

  27. Copyright © 2020, Oracle and/or its affiliates
    27
    CPUの暗号化命令のアシストで性能オーバーヘッドは数%程度
    TDE表領域暗号化: どこで暗号化および複合化されるか
    REDOログ・バッファ
    (暗号化)
    オンラインREDOログ・ファイル
    (暗号化)
    LGWR
    oracle oracle
    Oracleサーバー・プロセス
    ログ・ライター・プロセス
    データベース・バッファ・キャッシュ
    (平文)
    DBWn
    データベース・ライター・プロセス
    データファイル
    (暗号化)
    REDOログ情報はOracleサー
    バー・プロセスによって暗号化さ
    れる
    データ・ブロックはOracleサーバー・
    プロセスによってデータファイルから読
    まれるときに複合化される
    データ・ブロックはキャッシュされている
    間は平文なので暗号化および複合
    化オーバーヘッドはない
    直列化ポイントであるLGWRプ
    ロセスは暗号化処理をしない
    DBWRプロセスがデータファイルに書
    くときに暗号化される

    View full-size slide

  28. TDE表領域暗号化のオーバーヘッド
    CPUの暗号化支援命令により処理時間全体に占めるオーバーヘッドは小さい
    オンライン・トランザクション処理
    REDOログ暗号化はSQL処理を行うOracleサーバー・プロセスが行うので複数CPUに分散される
    データ・ブロックをストレージから読んでバッファ・キャッシュに配置するとき複合化される
    バッファ・キャッシュにキャッシュされている間は平文なのでアクセスにオーバーヘッドはない
    DBWRプロセスによるデータ・ブロック書き戻し処理は基本的にSQL実行時間とは関係ない
    ⇒ オーバーヘッドは数%
    バッチ処理(大量更新)
    1つのOracleサーバー・プロセスで大量更新処理するときのREDOログ暗号化のオーバーヘッド
    分析処理(大量読み込み)
    1つのOracleサーバー・プロセスで大量データ・アクセスするときのストレージ読み込み時の複合化オーバーヘッド
    パラレル処理で複数CPUに複合化オーバーヘッドを分散する
    Copyright © 2020, Oracle and/or its affiliates

    View full-size slide

  29. Copyright © 2020, Oracle and/or its affiliates
    29
    マスター暗号鍵設定
    • マスター暗合鍵のファイル・パス設定と作成
    初期化パラメータ ENCRYPT_NEW_TABLESPACE
    • 新規で作成する表領域を暗号化するか
    既存データの暗号化
    • データを別の暗号化表領域に移動
    - Data Pump
    - ALTER TABLE ... MOVE TABLESPACE
    - 表のオンライン再定義
    • Encryption Conversion (12c Release 2~)
    - オフライン暗号化 (11.2.0.4と12.1.0.2にもバックポート)
    - オンライン暗号化
    表領域単位で暗号化
    TDE表領域暗号化の導入

    View full-size slide

  30. Copyright © 2020, Oracle and/or its affiliates
    30
    Encryption Conversion
    Offline Conversion Online Conversion
    使用可能なバージョン
    12.2~
    11.2.0.4, 12.1.0.2にもバックポート
    12.2~
    使用可能なアルゴリズム AES128のみ TDEで使用可能なすべてのアルゴリズム
    いつ実行可能か?
    表領域がオフラインか
    DatabaseがMOUNT時
    表領域がオンラインか
    DatabaseがOPEN READ WRITE時
    追加のディスク領域が必要か? 必要なし
    移行時は、一時的に対象の表領域と同
    等のディスク領域が必要
    Data Guardを使用している場合
    PrimaryとStandbyを手動で
    conversionする必要がある
    Primaryをconversionした後は、自動
    的にStandby側はconversionされる
    SYSTEM,SYSAUX,UNDO表領域の暗
    号化
    12.2~ 12.2~
    TEMP表領域の暗号化 作成は可能 (12.2~) 作成は可能 (12.2~)

    View full-size slide

  31. Copyright © 2020, Oracle and/or its affiliates
    31
    Encryption Conversion
    Offline Conversion Online Conversion
    暗号化された表領域の復号
    可能
    ただしUNDOを復号することは推奨しない
    可能
    ただしUNDOを復号することは推奨しない
    表領域暗号鍵の再作成や
    ローテーション
    不可
    ただし、12.2以降の場合は、Online
    ConversionのREKEYコマンドが使用可能
    可能
    パラレル実行
    データファイルごとに複数の
    ユーザーセッションで実行可能
    表領域ごとに複数の
    ユーザーセッションで実行可能
    Conversionコマンドが途中で
    失敗した場合
    暗号・復号を確実にするため
    再度コマンドを実行する
    Finish句をつけたコマンドで
    再実行する

    View full-size slide

  32. Advanced CompressionとTransparent Data Encryption表領域暗号化
    圧縮が有効なデータ・ブロックをまるごと暗号化するので組み合わせ可能
    Copyright © 2020, Oracle and/or its affiliates
    値1
    1100010010101
    0010010100101
    0101010101010
    0000000111110
    1111111110000
    0111111111000
    0101001010101
    データベース・バッファ・キャッシュ
    平文の圧縮設定データ・ブロック
    データファイル
    暗号化






    View full-size slide

  33. Transparent Data Encryption 表領域暗号化
    表領域暗号化
    表領域単位で暗号化を設定
    データ・ブロックまるごと暗号化するのでデータ・ブロック内の構造に制限がない
    CPUの暗号化支援命令による極めて小さなオーバーヘッド
    Oracle Cloud Infrastructure Database Cloud ServiceではTDE表領域暗号化されている
    Standard Editionでも!(OCI特別仕様)
    Copyright © 2020, Oracle and/or its affiliates

    View full-size slide