Oracle Databaseのオプション機能を中心に、各機能の概要をまとめています。
Oracle Database機能概要Oracle Database 19c日本オラクル株式会社2021/02/05
View Slide
• Introduction• Parallel Query• Oracle Partitioning• Advanced Compression• Database In-Memory• Diagnostics Pack & Oracle TuningPack• Recovery Manager• Database Lifecycle ManagementPack• Multitenant• Real Application Clusters• Automatic Storage Management• Data Guard & Oracle Active DataGuard• GoldenGate• Advanced Security• Database Vault• Audit Vault and Database Firewall• Real Application Testing• Data Masking and Subsetting Pack• Machine Learning• Spatial• Big Data SQL• Oracle Net Services• External Table• Database Link• Materialized View• Automatic Indexing• Optimizer Statistics• Server Result Cache• Memoptimized Rowstore• Flashback Technology資料内容Copyright © 2021, Oracle and/or its affiliates2
DB-Engines RankingOracle Database is #1 DatabaseCopyright © 2021, Oracle and/or its affiliates3https://db-engines.com/en/ranking_trend
私たちのミッションは、人々が新たな方法でデータを理解し、本質を見極め、無限の可能性を解き放てるよう支援していくことです。
設立前 AMPEX社に勤務していたLarry Ellisonが、CIAのプロジェクトOracleに参画1977年 Software Development Labs設立1978年 CIAが最初の顧客1979年 世界で初めてリレーショナル・データベースを商用化(Oracle Version 2)Wright-Patterson空軍基地が採用1982年 企業名をOracle Systems Corporationに改名1995年 企業名をOracle Corporationに改名Oracle Databaseの生い立ちCopyright © 2021, Oracle and/or its affiliates5Ed Oats Bruce Scott Bob Miner Larry Ellison
時代の要望に応じた継続的なイノベーションOracle Databaseの歴史Copyright © 2021, Oracle and/or its affiliates6メインフレームとミニコンの時代クライアント/サーバーの時代 インターネット・コンピューティングの時代クラウドとビッグデータの時代●Oracle v2世界初商用RDBMS●Oracle v4読み取り一貫性●Oracle v5クライアント/サーバー● ●Oracle v6行レベルロックPL/SQLOracle7パラレルクエリーストアドプロシージャ●Oracle8パーティショニングオブジェクト指向●Java/XMLマテリアライズド・ビュー●Real Application ClustersData Guard●自動データベース診断ASM●ExadataActive Data Guard● ●MultitenantDatabase In-MemoryAutonomous Database Cloud●Automatic Indexing
リレーショナルデータベース登場から40年。何度か単機能データベースが注目される時期もあるが、その後淘汰されてコンバージド・データベースが選択されるトレンド繰り返されるデータベースのトレンドCopyright © 2021, Oracle and/or its affiliates71970sRelationalDB1980sObject DBsConverged DBXML DBsConverged DBJSON DBsConverged DB1990s 2000s 2010s 2020sCobolISAMNext DB?Solution Complexity注目された製品のその後は…
かつては、携帯電話、音楽プレイヤー、手帳、時計、カメラなど、異なる製品が必要だった→ 今ではその機能の多くがスマートフォンに包含されているかつては、OLTP、Analytics、XML、In-Memory、JSONなど、異なるデータベースが必要だった→ 今ではその機能の多くがコンバージド・データベースに包含されている時代はコンバージド・データベースCopyright © 2021, Oracle and/or its affiliates8
マルチモデル• リレーショナル、JSON、XML、グラフ、地理空間データ、OLAPマルチワークロード• OLTP、分析処理、インメモリー、IoT、Streaming、Blockchainマルチテナント• データベースのためのコンテナ仮想化とオーケストレーション• テナントデータベースに対して、分離、スケールアウト、トランザクションの一貫性を提供Oracle Databaseはコンバージド・データベースCopyright © 2021, Oracle and/or its affiliates9アナリストや開発者、運用者にとっての主なメリット• すべてのデータを網羅するオープンスタンダードなSQLに加えて、RESTなどの一般的なAPIも利用可能• トランザクションをすべてのデータでサポート• すべてのデータの一貫性のある、クエリ可能なビュー• 信頼性、スケーラビリティ、セキュリティ
主要プラットフォーム上で動作し、お客様の投資を保護他のデータベース• 各データベースは、独自のハードウェアやプラットフォーム上でのみ動作する= ベンダー・ロックイン• 他のプラットフォームに移行するには既存資産を改修する必要有りOracle Database• どのプラットフォームでも全く同じデータベースが動作= ロックインなし• Exadata、Autonomous Databaseも同様• アプリケーションを変更せず、他のプラットフォーム上へ容易に移行可能Oracle Databaseの特長 - マルチプラットフォーム対応DB2for z/OSzOSIBM MFSQLServerWindowsx86 HWAuroraAWSSQLAzureMSAzureOracle DatabaseUNIX Linux WindowsAWSMSAzureOracleCloudHPE IBM Oracle x86 HWCopyright © 2021, Oracle and/or its affiliates10
Oracle Databaseは、異なる特性の処理であっても最適化機能を同一データベースで提供• オンライン・トランザクション処理• トレーディング・システムやショッピング・サイトなど• 同時、大量ユーザー、低レイテンシ• 分析処理• ペタバイト級のデータ・ウェアハウスなど• 大量データ、大量処理コンピュート・ノードとストレージのそれぞれをスケールアウトさせることが可能Oracle Databaseの特長 - パフォーマンスとスケーラビリティストレージコンピュート・ノードCopyright © 2021, Oracle and/or its affiliates11
数十年にわたって、世界中のミッション・クリティカル・システムを支え続けてきた実績• 最大のデータ保護を実現• アプリケーションの停止を極小化• Oracle Databaseに組み込まれ、自動化された機能• 高いROI (投資回収率)実績をもとに作成されたベスト・プラクティスOracle Maximum Availability Architecture (MAA)• データベース・サーバーに関わる全階層を考慮• コンピュート、ストレージ、サイトを冗長化可能• システムの可用性要件に応じて最適なリファレンス・アーキテクチャを選択Oracle Databaseの特長 - 高可用性Copyright © 2021, Oracle and/or its affiliates12サイト・レプリケーションOracleクライアントコンピュート・ノードストレージ接続フェイルオーバー
Oracle Databaseは機密データを保護するあらゆる機能を提供• データベースを評価し、セキュリティ・リスク軽減や改善の対象となる箇所を特定• ポリシーに違反するデータ・アクセスの試みを検知• アクセス制御や暗号化等により、データへの不適切あるいはポリシーに違反するアクセスを防止世界中の政府/国防機関で使われ続けてきた実績• CIAのプロジェクトから始まったOracle Database• 軍事用に開発された技術を民生転用• Oracle Databaseのエンジンに組み込まれた機能• 既存のアプリケーションに修正を加えずセキュリティ実装が可能• システムのセキュリティ要件に応じて最適なソリューションを選択可能• 実績をもとに作成されたリファレンス・アーキテクチャOracle Maximum Security Architecture (MSA)Oracle Databaseの特長 - 堅牢なセキュリティCopyright © 2021, Oracle and/or its affiliates13
Copyright © 2021, Oracle and/or its affiliates14Oracle Databaseのパラレル実行
大量データの処理を分割し、複数のハードウェア(CPU/ストレージ)に割り当てて同時に実行することで、全体の処理時間を短縮する技法パラレル実行Copyright © 2021, Oracle and/or its affiliates15並列度処理時間並列度1 並列度2 並列度4
Exadata X8M-2に使用されているデータベース・サーバーは1RUサイズのIntel Xeon 2ソケット・マシンCPU• Intel Xeon 8260 Cascade Lake (24コア)• 24コア × 2ソケット = 48コアDRAM (DDR4)• 32GB DIMM × 12スロット = 384GB• 32GB DIMM × 24スロット = 768GB• 64GB DIMM × 24スロット = 1536GB最近のサーバー・ハードウェアCopyright © 2021, Oracle and/or its affiliates16CPUコア数の高密度化は1RUサイズのサーバーでも2桁の並列度を可能にした
大量データ処理の並列化Oracle Databaseのパラレル実行アプリケーションのデータ操作• SELECT• DML (INSERT/UPDATE/DELETE/MERGE)• PL/SQLオブジェクトのメンテナンス• 表/索引統計収集• DDL (CREATE TABLE AS SELECT)• CREATE/ALTER INDEX物理/論理バックアップ• RMAN BACKUP/RESTORE (ファイル・コピー)• Data Pump高可用性• インスタンス・リカバリ (インスタンス障害)• RMAN RECOVER (REDOログ適用)• Data Guard REDO ApplyCopyright © 2021, Oracle and/or its affiliates17
1つのSQL処理を並列に処理分析/集計処理や大量一括更新に対応• SELECT• DML (INSERT/UPDATE/DELETE/MERGE)• PL/SQL複数のパラレル実行サーバー・プロセス(PX)が処理対象の表/索引に対してアクセスする範囲を自動分割して同時に処理パーティション化されていない通常の表/索引でもパラレル処理が可能アプリケーションのデータ操作Copyright © 2021, Oracle and/or its affiliates18PXPXPXパラレル実行サーバー・プロセス表/索引PX
オブジェクトに対するフルスキャンやソート等を並列に処理表/索引統計収集• オプティマイザがSQLの実行計画を決定するのに使われる• オブジェクトの値の分布を事前に調べるDDL• CREATE TABLE AS SELECTB-Tree索引のメンテナンス• 表の特定列の値をソートして行へのアドレスを持つ• CREATE INDEX• ALTER INDEX REBUILDオブジェクトのメンテナンスCopyright © 2021, Oracle and/or its affiliates19B-Tree索引 表
サイズの大きなファイルが複数あるコピー等を並列に処理RMANによる物理バックアップ• ファイル・コピーの並列化• BACKUP• RESTOREData Pumpによる論理バックアップ• エクスポート/インポートの並列化• 論理バックアップにはREDOログ適用はできない物理/論理バックアップCopyright © 2021, Oracle and/or its affiliates20BACKUPデータファイルアーカイブREDOログバックアップ
リカバリ(REDOログ適用)操作を並列に処理インスタンス・リカバリ• Oracleインスタンス異常終了後のデータ一貫性の復元の並列化• ロールフォワード(REDOログ適用)• ロールバックRMANによるリカバリ• REDOログ適用の並列化Data Guard REDO Apply• プライマリ・データベースから受け取ったREDOデータの適用(リカバリ)処理の並列化高可用性Copyright © 2021, Oracle and/or its affiliates21REDOログデータファイルRECOVER
Copyright © 2021, Oracle and/or its affiliates22Oracle Partitioning
パーティショニングのメリット大量データを扱うシステムにおいてパフォーマンス・メンテナンスの課題を解決• 検索パフォーマンスの向上• 表全体に影響を与えずにパーティション毎にメンテナンス可能エンタープライズ・エディションにおけるオプション機能Oracle PartitioningCopyright © 2021, Oracle and/or its affiliates23表ブロックパーティション1表パーティション2パーティション3表1 表2
アクセスするデータ・ブロックを減らすSELECT * FROM t1WHERE primary_key = value1B-Tree索引は表の特定の列の全行の値をソートして行へのアドレスを持っているトランザクション系アプリケーションのようにアクセス対象の行数が少ない場合は表ブロックのフル・スキャンよりも索引ブロック → 表ブロックをたどった方がアクセスするデータ・ブロックの個数が圧倒的に少ないSQLチューニングの基本的な考え方B-Tree索引ブロック 表 表ブロックCopyright © 2021, Oracle and/or its affiliates24
分析および集計処理SELECT * FROM t1WHERE column1BETWEEN value1 AND value2分析および集計処理では、表の中の多くの行へアクセスすることが必要になるケースが多いアクセスする行数の割合が大きくなると、索引ブロックから表ブロックへのランダム・アクセスを繰り返すよりも、表ブロックをフル・スキャンした方が高速になるさらにデータが増えるほど索引ブロックの階層も増えるため、索引アクセスよりもフル・スキャンの方が高速になるSQLチューニングの基本的な考え方Copyright © 2021, Oracle and/or its affiliates25B-Tree索引ブロック 表 表ブロック
列の値が特定の条件を満たすグループに表を分割するSELECT * FROM t1WHERE column1BETWEEN value1 AND value2列の値が特定の条件を満たすグループ(パーティション)に表を分割するSQLのWHERE句の絞り込み条件がパーティションの条件に合致すると、該当するパーティションのみにアクセスする(パーティション・プルーニング)分析および集計処理の表フル・スキャンが特定のパーティションのフル・スキャンに限定できるパーティション表Copyright © 2021, Oracle and/or its affiliates26パーティション1表 表ブロックパーティション2パーティション3
アクセス対象の行数が多くなるとフル・スキャンのほうが高速索引アクセス索引ブロック→表ブロックのランダム・アクセスを繰り返すパーティション・プルーニング列の値が条件を満たすパーティションにだけアクセス多数の行にアクセスするSQLのアクセス範囲の限定Copyright © 2021, Oracle and/or its affiliates27パーティション1表 表ブロックパーティション2パーティション3B-Tree索引ブロック 表 表ブロック
アクセス範囲が表全体のサイズに影響されないパーティション・プルーニングCopyright © 2021, Oracle and/or its affiliates282020/01/012020/02/012020/03/012020/02/012020/01/01 2020/01/01時間の経過パーティション追加 パーティション追加1か月単位で集計するのでパーティションを1か月単位で分割する想定例表全体のサイズは増加していくが、SQLがアクセスする範囲は1か月分のパーティションに限定される
大量の行にアクセスする分析および集計処理の高速化パーティション・プルーニングSQLのWHERE句の絞り込み条件でアクセスする範囲を特定のパーティションに限定しIO時間の削減、高速化処理量が表全体のサイズに影響されないパーティション・ワイズ結合表の結合(ジョイン)がアクセスする範囲を特定のパーティションに限定するパラレル実行と組み合わせることでさらに高速化が可能パーティション化によるSQL処理の高速化Copyright © 2021, Oracle and/or its affiliates29表1 表2
パーティション表をさらにサブ・パーティションで分割可能2段階のパーティション化が可能• パーティションキーとサブ・パーティションキーはそれぞれ異なる列を指定できる• 2段階のパーティション・プルーニング、もしくはパーティション・プルーニングとパーティション・ワイズ結合が異なる列で可能コンポジット・パーティションCopyright © 2021, Oracle and/or its affiliates30表1 表2パーティション・ワイズ結合パーティション・プルーニング
大量データのメンテナンスに関わる処理時間を削減データ削除• DROP PARTITION• TRUNCATEパーティション追加• 空パーティション• 別の表を取り込む索引リビルド圧縮読み取り専用パーティション単位のメンテナンス操作Copyright © 2021, Oracle and/or its affiliates31表1 表2列定義が同じ表をパーティションとして取り込む
Copyright © 2021, Oracle and/or its affiliates32Advanced Compression
データを圧縮して格納し、容量の節約と検索性能向上を実現• データを圧縮することで、格納データ量を約1/2から1/4に抑えることが可能• データを圧縮することにより、ストレージ容量を節約• さらに、I/O量が減ることにより検索パフォーマンスの性能向上にもつながる• ヒート・マップと自動データ最適化機能(ADO)による高度なデータ配置管理• 既存のアプリケーションの変更は一切必要なしOracle Advanced CompressionCopyright © 2021, Oracle and/or its affiliates33処理時間の検証非圧縮環境圧縮環境検索の処理時間が大幅に短縮CPU時間I/O時間非圧縮環境圧縮環境CPU時間I/O時間更新のオーバーヘッドもほとんどない検索処理における処理時間の内訳イメージOLTP処理における処理時間の内訳イメージ
Oracle Databaseの圧縮機能Copyright © 2021, Oracle and/or its affiliates34機能名 対象および用途基本表圧縮 データの変更が少ない表やパーティション高度な行圧縮 データの変更が頻繁にある表やパーティション高度なLOB圧縮と重複削除 DWH環境やOLTP環境における非構造化データ高度な索引圧縮 索引高度なネットワーク圧縮 クライアントとサーバーの間の通信データREDO転送の圧縮 Data Guard環境RMANバックアップ圧縮 物理バックアップデータ・ポンプ データの圧縮 論理バックアップ自動データ最適化(ADO)/ヒートマップ データ配置の最適化ハイブリッド列圧縮 – ウェアハウス用データ変更が少ない表やパーティション、より高い圧縮で分析クエリを高速化したい場合ハイブリッド列圧縮 – アーカイブ用データの変更が少なく、データの検索も少ない表やパーティション、最も高い圧縮率が実現されるAdvanced CompressionOptionOracleStorage,Exadata
データの変更が頻繁にある表やパーティションに最適• DML操作を含めた、あらゆるタイプのデータ操作の処理中に、表データを圧縮することが可能• コールドデータまたは非アクティブデータにも使用可能• OLTPおよびデータウェアハウスアプリケーションの両方に使用可能• 非圧縮時のデータ量と比較して2倍から4倍の圧縮率最良な圧縮率とパフォーマンスを提供• すべてのDML操作とバルクロード操作で圧縮を維持• ほとんどのクエリでは、データは圧縮されたままバッファキャッシュに格納• バッファキャッシュに格納される圧縮データが多いため、総I/O回数が少なくなり、クエリの高速化を期待できる高度な行圧縮Copyright © 2021, Oracle and/or its affiliates35
非構造化データの圧縮と重複排除によるパフォーマンス向上高度なLOB圧縮• 非構造化データを扱う SecureFiles LOBでの圧縮機能を提供• 圧縮の恩恵を受けないデータは自動的に対象外• 圧縮済みLOBをさらに圧縮対象から除外• コンテンツ管理、メールアプリケーション、ビデオなどのデータアーカイブなどに効果的• 圧縮アドバイザーがSecureFiles LOBに関するアドバイスを提供• オーバーヘッドのない読み取り操作• キャッシュされたデータによる読み取りパフォーマンスの向上重複排除• SecureFilesデータの重複コピーを排除• データに消費されるストレージ容量を大幅に削減• 書き込みおよびコピー操作を大幅に改善高度なLOB圧縮と重複排除Copyright © 2021, Oracle and/or its affiliates36
索引の圧縮によるストレージ領域の削減と問い合わせパフォーマンスの向上索引ブロックごとに最適な圧縮アルゴリズムを自動選択し、可能な限り最高の圧縮率を適用• 異なる索引リーフブロックを異なる方法で圧縮することも、まったく圧縮しないことも可能高度な索引圧縮(Low)• 最小のCPUオーバーヘッドで低い圧縮率を提供• 非圧縮時のデータ量と比較して2倍以上の圧縮率高度な索引圧縮(HIGH)• わずかなCPUオーバーヘッドでより高い圧縮率を提供• 非圧縮時のデータ量と比較して4から5倍高度な索引圧縮により領域が大幅に節約される一方で、索引を使って実行される問合せのパフォーマンスも向上高度な索引圧縮Copyright © 2021, Oracle and/or its affiliates37
バックアップ領域の節約とバックアップ所要時間の短縮バックアップデータのストレージ要件を大幅に削減• Oracle Recovery Manager (RMAN)で利用可能なバックアップデータ圧縮機能• 要件にあわせた圧縮レベルを指定可能• バックアップデータは圧縮されてからストレージまたはテープに書き込まれるRMANバックアップによる圧縮Copyright © 2021, Oracle and/or its affiliates38圧縮レベル AdvancedCompressionパフォーマンスのメリットとデメリットBASIC 不要基本機能として利用可能なデフォルトの圧縮アルゴリズム(SE2でも利用可能)圧縮率はMEDIUMと同等だがCPU使用率が高いLOW 必要 バックアップ・スループットへの影響が最小MEDIUM 必要ほとんどの環境で推奨され、圧縮率と速度の優れた組合せCPU使用率と圧縮率に優れているHIGH 必要ネットワーク速度が制限事項となる、速度の遅いネットワークでのバックアップに最適高い CPU使用率と最高の圧縮率
ヒート・マップによるデータ配置の最適化ヒート・マップ• アクセスパターンやアクセス頻度の記録自動データ最適化(ADO)• ADOポリシーには、アクション(圧縮や移動)とタイミング(アクションの条件)を定義• ADOポリシーに従ったアクションの自動実行データの圧縮と移動を自動化Copyright © 2021, Oracle and/or its affiliates39ADOポリシーヒート・マップ適用自動検出 自動実行
データの参照や更新の状況を追跡し、情報ライフサイクル管理の基準となるデータを提供データの参照および更新頻度を自動的に追跡自動データ最適化機能との組み合わせによる高度なデータ配置管理を提供ヒート・マップCopyright © 2021, Oracle and/or its affiliates40古いデータはまれに参照されるが更新は一定期間行われていない直近の過去データは頻繁ではないが参照され、まれに更新も行われている頻繁に参照や更新が行われている時系列でのパーティション
ポリシーに従って自動でデータ配置を最適化表/表領域単位でポリシーを設定し、データの圧縮やレベル変更を自動化ヒート・マップが取得するデータ操作からの経過時間によりパーティションまたは、表領域のレベルでポリシーの条件を設定ヒート・マップとの組み合わせによる高度なデータ配置管理を提供自動データ最適化(ADO)Copyright © 2021, Oracle and/or its affiliates41ADOポリシー1:作成から90日後経ったら圧縮ADOポリシー2:180日以上変更がなければより高い圧縮率で圧縮ALTER TABLE Sales ILM ADD POLICYROW STORE COMPRESS ADVANCEDSEGMENT AFTER 90 days of creation;ALTER TABLE Sales ILM ADD POLICYCOLUMN STORE COMPRESS FOR ARCHIVEHIGHSEGMENT AFTER 180 days of nomodification;時系列でのパーティション
ストレージ容量の削減にとどまらず、I/Oパフォーマンス性能も向上透過的: アプリケーションの改修は必要なし高速: トランザクション処理、分析処理、データウェアハウス• インメモリオプションと組み合わせる事で、より多くのデータがバッファキャッシュとフラッシュキャッシュに収まる• クエリの高速化、バックアップと復元の高速化自動化されたデータストレージの最適化• データのライフサイクル全体でストレージの使用量とコストを削減する手法を自動化削減: フットプリントをより小さく• データベースのサーバーおよびストレージコストを削減• 重複排除圧縮は、データベースのサイズが大きくなるにつれて、継続的な節約を提供データベースストレージ最適化の利点Copyright © 2021, Oracle and/or its affiliates42
Copyright © 2021, Oracle and/or its affiliates43Oracle Database In-Memory
トランザクション処理と分析処理の性能向上はトレードオフ行型データベース vs. 列型データベースCopyright © 2021, Oracle and/or its affiliates44行型 トランザクション処理を高速化する行型– 例: 注文データの挿入と検索– 少数の行(ロー)と多数の列(カラム)を高速処理列型 分析処理を高速化する列型– 例: 都道府県毎の売上合計のレポート– 少数の列(カラム)と多数の行(ロー)を高速処理SALESSALES従来は、どちらかを性能向上させると、どちらかにオーバーヘッドが発生するため、トランザクション処理と分析処理を単一のデータベースで共存することは難しかった
同一データをメモリー上に2種類のフォーマットで保持し、全ての処理を高速化データベースのメモリー空間内で、同一データを行型、列型両方のフォーマットで保持• 行型: バッファキャッシュ• 列型: インメモリー列ストア(IM列ストア)両方のフォーマットを使い分けることで、全てのデータベース処理の高速化を実現• 分析、集計処理は列型フォーマットに対して実行• トランザクション処理は行型フォーマットに対して実行トランザクションの一貫性保証Database In-Memory (DBIM)機能概要Copyright © 2021, Oracle and/or its affiliates45バッファキャッシュIM列ストアSALES SALES行型フォーマット列型フォーマットSALES1つのSALES表に対して2つのフォーマットストレージ上には行型のみ
DBIMの特徴Copyright © 2021, Oracle and/or its affiliates46リアルタイム分析 実装が簡単アプリケーションの変更なし混合ワークロードの高速化AnalyticsTransactionsOLTPシステムで分析を実行するリアルタイムのビジネス決定を可能にする100X100X100%の互換性実証済みのスケールアウト、可用性、セキュリティ
導入の容易性DBIMの特徴Copyright © 2021, Oracle and/or its affiliates471. IM列ストアのサイズを設定inmemory_size = XXX GB2. IM列ストア上に格納する表、パーティションを選択alter table | partition … inmemory;3. 自動的にポピュレート設定の基本3ステップインメモリー導入事前調査(IMアドバイザ、圧縮アドバイザ)IM列ストア上に列型データのポピュレートが完了するまで、行型データを利用し処理が可能ですこれによりIM列ストアへのポピュレートを待つことなく素早く処理を開始する事が可能ですシステム・グローバル領域 (SGA)ストレージ上には行型フォーマットのみ保存行型フォーマット行型→列型変換SALES SALES行型フォーマット列型フォーマットバックグランド・プロセス(ポピュレート)SALES
デュアルフォーマットを透過的に選択データベースのオプティマイザがSQLにあわせて最適なフォーマットを選択DBIMの特徴Copyright © 2021, Oracle and/or its affiliates48表毎に処理するデータフォーマットが決まるのではなく、SQL毎に処理するデータフォーマットが透過的に選択されるため、同一の表をトランザクション処理にも、分析処理にも利用することが可能行型列型select * from SALESwhere order_id = ‘ABC123’;select region, sum(amount) from SALESgroup by region;Oracle DatabaseオプティマイザSALES表デュアルフォーマットBツリー索引を使用した処理インメモリー検索を使用した処理少数の行の全列のデータ取得一部の列を使った大量行の集計処理
インメモリーのデータ更新IM列ストア利用時においても、更新処理は基本的に従来と同じ仕組みで処理される① 行ストア (バッファ・キャッシュ)における更新② IM列ストアの該当IMCUエントリを失効させる③ 無効なデータの再ポピュレーション(自動/手動)無効なデータの再ポピュレーションは、表単位ではなくIMCU単位で非同期に実行される• In-Memory Compression Unit (IMCU)は、インメモリー上の圧縮された記憶域単位IM列ストアを利用しても、DML実行時に追加のI/Oは発生しないためオーバヘッドはほぼないDBIMの特徴Copyright © 2021, Oracle and/or its affiliates49システム・グローバル領域 (SGA)バッファキャッシュIM列ストアSALES SALES行型フォーマット列型フォーマット更新失効①②③
ご参考DBIM単一ユーザーの性能テスト(平均Elapsed Time)Copyright © 2021, Oracle and/or its affiliates50検証シナリオ• スター・スキーマ• 100個のランダムに生成された分析スタイル問合せ• 複数テーブル結合、集計、その他• 単一DBユーザーが100個の問合せを順番に実行• パラレル度 = 4備考)スター・スキーマに対する問合せ性能向上には、基本的にはビットマップ索引を作成します。本テストシナリオでは、他クエリーも流れていることを想定し、パラレル度は 4 に設定してあります。つまり、最大性能を示す検証結果ではありません。Elapse Time (秒)0.01.02.03.04.05.06.07.08.09.010.0ビットマップ索引 Exadata In-Memory on Exadata問合せあたりの実行時間(秒)
代表的なユースケースCopyright © 2021, Oracle and/or its affiliates51データマートOLTPDWH分析用DB基幹系OLTP① 既存DWHを統合、インメモリ化し高速化② データマートをインメモリ化し、さらに高速化③ OLTPシステムを直接インメモリ化し、分析用途に利用• 分析、レポーティングの高速化• ダッシュボード画面の高速化(経営/業務系)• リアルタイム分析の促進④ 基幹系OLTPシステムとの分離構成既存システムを極力変更しない 分析処理を負荷分散レプリケーション
オプションを購入することなく、最大16GBのIM列ストアを利用可能にEnterprise Editionの19c RU (19.8)から利用可能INMEMORY_FORCEパラメータで有効化• BASE_LEVELに設定INMEMORY_SIZEは1インスタンス辺り最大16GB• RACでは、各インスタンスで最大16GBに使用可能• マルチテナントはCDBの各インスタンスあたり16GBに制限特記事項• 圧縮アルゴリズムの指定不可、自動インメモリー(AIM)は無効など一部制約あり• 認定クラウド環境では、Oracle Cloud Infrastructureで利用可能Database In-Memory Base Level機能Copyright © 2021, Oracle and/or its affiliates52System Global Area (SGA)BufferCacheLargePoolLogBufferSharedPoolIn-MemoryArea(Max 16GB)Other
Copyright © 2021, Oracle and/or its affiliates53Oracle Diagnostics PackおよびOracle Tuning Pack
性能の定常的な監視と自動チューニング機能データベースの性能問題の発見・分析・解決をシームレスに実現• データベースの稼働に必要な情報を自動的に収集し、分析• 性能問題が発生した場合に、メール等で管理者に通知• チューニング・アドバイザ機能を使うことで、高度な知識がなくても、簡単にチューニングを実施することが可能Oracle Diagnostics PackおよびOracle Tuning PackCopyright © 2021, Oracle and/or its affiliates54特定の時間の処理を確認この時間帯に行われていた処理の内訳を確認実行計画と各種統計を確認時間と待機の概要 I/Oの概要SQLの概要
データベースのパフォーマンス情報を簡単に収集して分析自動ワークロード・リポジトリ(AWR)• パフォーマンス統計を自動収集• パフォーマンス履歴の表示および分析• レポートやビューを簡単に生成アクティブ・セッション履歴(ASH)• アクティブ・セッションの情報を自動収集• レポートやビューを簡単に生成自動パフォーマンス診断(ADDM)• AWRデータを自動で素早く分析• 具体性、一貫性、実行可能性を備えたパフォーマンス提案Oracle Diagnostics PackCopyright © 2021, Oracle and/or its affiliates55
過去に遡ってデータベースのパフォーマンスを分析• データベース統計を自動的に収集し、スナップショットとして保存• スナップショットからAWRレポートを生成自動ワークロード・リポジトリ(AWR)Copyright © 2021, Oracle and/or its affiliates561時間毎に収集*SGAAWRスナップショット8日間保存*データベース統計時間スナップショットIDデータベース統計id=100 id=101 id=102100-101間のAWRレポート101-102間のAWRレポートAWRレポートから得られる情報例• スナップショット詳細• ロード・プロファイル• サーバー・プロセスのイベントトップ10• インスタンス効率(%)• SQL統計• 共有プール統計• IO統計• セグメント統計• SQL文*変更可能
短期間のパフォーマンス問題の分析• アクティブ・セッションの情報を毎秒メモリー(SGA)に格納• SGA上から、サンプリングして定期的に表へ書き出す• 期間を指定し、ASHレポートを生成可能アクティブ・セッション履歴(ASH)Copyright © 2021, Oracle and/or its affiliates57CPU時間 待機時間時間SessionがACTIVEセッション1セッション2 1秒ごとにすべてのアクティブ・セッションの状態をサンプリングして積み上げ1/10にサンプリングしストレージへ格納
AWRのデータを定期的に分析し、データベースのパフォーマンスを監視および診断• AWRに収集されたデータを定期的に分析し、データベースのパフォーマンスを監視 / 診断• 問題を発見すると、解決方法とともに画面に表示自動パフォーマンス診断(ADDM)Copyright © 2021, Oracle and/or its affiliates58チューニングアドバイザの実施を指示
複雑で時間のかかるチューニング・タスクを自動化データベースのアプリケーション・チューニング・プロセスを自動化データベースの管理コストが大幅に抑制され、パフォーマンスと信頼性が向上SQLチューニング・アドバイザ• 問題のあるSQL文を特定し、文のパフォーマンスの改善方法を提示• 自動化メンテナンス・タスクとして実行することも可能(自動SQLチューニング・アドバイザ)リアルタイムSQL監視• 実行中のSQLに対して実行計画や処理の進捗状況を確認可能• パフォーマンス・メトリックなどを含むSQL監視レポートを生成および表示Oracle Tuning PackCopyright © 2021, Oracle and/or its affiliates59
SQLを調査し、SQLチューニングの推奨事項を取得特定のSQLに包括的な分析を実施し特定されたさまざまな問題に対する推奨事項を提供リアルタイムおよび過去のパフォーマンスデータを利用して、代替実行計画を特定自動メンテナンス・タスクとしてデータベース・メンテナンス・ウィンドウで実行も可能(自動SQLチューニング・アドバイザ)SQLチューニング・アドバイザCopyright © 2021, Oracle and/or its affiliates60SQLプロファイル(*)統計情報分析アクセス・パス分析SQL文分析実行計画分析パラレル・クエリー分析自動チューニング・オプティマイザDBASQLチューニングの推奨事項例欠落または失効した統計の収集SQLプロファイルの作成不足しているアクセスパスの追加SQL文の変更代替実行計画の利用(*) SQL文に関する補足的な統計情報例: SQL文で実際に戻された行数
性能状況をグラフィカルに表示し、実行中のSQL処理を特定、チューニングまで自動化SQLチューニング・アドバイザCopyright © 2021, Oracle and/or its affiliates61グラフからリアルタイムで負荷状況を確認(過去にさかのぼって確認することも可能)負荷の高いSQLを選択しアドバイザ実行実装したい項目を選択
時間のかかるSQLを監視し、進捗状況や内部的な実行ステップを確認、チューニングに活用SQLが自動的に表示(*)され、処理の進捗状況や処理時間の内訳を確認パーティショニングやパラレル処理がどのように使われているかを簡単に確認チューニングに必要な情報をレポートとして保存し、ファイルとして共有することが可能リアルタイムSQL監視Copyright © 2021, Oracle and/or its affiliates62(*)下記の条件を満たす SQLを自動取得・5秒以上のCPU時間またはI/O時間を消費しているSQL・パラレル実行されているSQLStatus: Executing (実行中)終了したものはDONESQL文、実行開始時間、パラレル度、待機イベント、I/O統計が確認可能実行計画の各ステップや待機時間などが確認可能
Copyright © 2021, Oracle and/or its affiliates63Oracle Recovery Manager (RMAN)
用途が異なるOracle Databaseの物理バックアップと論理バックアップ物理バックアップ 論理バックアップツール Recovery Manager (RMAN) Data Pump Export機能 データファイル(データ・ブロック)をコピーする データベースの一部のデータもしくは全体をエクスポートするいつのデータを復旧できるかデータ・ブロックに破損が生じてもリストア(データ・ブロックの変更の起点)とリカバリ(データ・ブロックにREDOログの変更の差分を適用)で障害直前の状態に復旧できるエクスポートしたデータをインポートしてもREDOログの適用はできないエクスポートした時点のデータしか復旧できない用途 障害に備える仕組み データを移し替える仕組みCopyright © 2021, Oracle and/or its affiliates64
Oracleインスタンス管理下で行われるデータベースのバックアップ、リストアおよびリカバリデータベース無停止でのオンライン・バックアップ• アプリケーションはバックアップの実行を関知しないデータ・ブロック破損の検査• 破損ブロックのバックアップの防止• バックアップ・ファイルの検査どのファイルをどこにバックアップしたかを自動管理• どのバックアップ・ファイルからリストアするかを自動判別バックアップおよびリストア時間の短縮• 並列化• 高速増分バックアップ• 増分更新バックアップ• データ・ブロック単位のリストアOracle Recovery Manager (RMAN)Copyright © 2021, Oracle and/or its affiliates65oraclermanデータファイル(コピー元)バックアップ(コピー先)RMANクライアントOracleサーバー・プロセス
推奨はRMAN• Oracle付属のバックアップ・ツール• Oracleサーバー・プロセスがデータベースのファイルにアクセスする仕組みを使ってファイルをコピー• Oracleインスタンス管理下で行われる操作• RMAN以外の方法でコピーするすべての手法• Oracleインスタンスがコピーを関知しない• OSのファイル・コピー・コマンド• ストレージ機能のスナップショットやスプリット・ミラーOracle Databaseの2種類の物理バックアップ手法Copyright © 2021, Oracle and/or its affiliates66oraclermanデータファイル(コピー元)バックアップ(コピー先)スナップショットスプリット・ミラーRecovery Manager (RMAN) ユーザー管理バックアップRMANクライアントOracleサーバー・プロセスコピー元ボリューム バックアップ・ボリューム
RMANはSQL実行のストレージI/Oをブロックしない• バックアップのファイル・アクセスの仕組みがSQL実行のファイル・アクセスと同じなのでSQL実行のストレージI/Oをブロックしない• ストレージ機能のスナップショットやスプリット実行時に短時間でもI/Oをフリーズさせるものがあるオンライン・バックアップCopyright © 2021, Oracle and/or its affiliates67oraclermanデータファイル(コピー元)バックアップ(コピー先)スナップショットスプリット・ミラーRecovery Manager (RMAN) ユーザー管理バックアップRMANクライアントOracleサーバー・プロセスコピー元ボリューム バックアップ・ボリューム
確実にリカバリするための"Recovery" Manager• コピー時に破損検査が行われる• バックアップしたファイルの破損検査も可能• 破損領域がそのままコピーされる• 誤った単位でボリュームをコピーしているとリカバリ時になってはじめてリカバリ不能に気付くデータ・ブロックの破損検査Copyright © 2021, Oracle and/or its affiliates68oraclermanデータファイル(コピー元)バックアップ(コピー先)スナップショットスプリット・ミラーRecovery Manager (RMAN) ユーザー管理バックアップRMANクライアントOracleサーバー・プロセスコピー元ボリューム バックアップ・ボリューム
確実にリカバリするための"Recovery" Manager• どのファイルをいつどこにコピーしたかをOracle自身が管理する(制御ファイルおよびリカバリ・カタログ)• それに基づきリストアおよびリカバリ操作が自動化できる• どのファイルをリストアすべきかを人が判断する• 誤った単位でボリュームをコピーしているとリカバリ不能になるバックアップの自動管理Copyright © 2021, Oracle and/or its affiliates69oraclermanデータファイル(コピー元)バックアップ(コピー先) コピー元ボリューム バックアップ・ボリュームスナップショットスプリット・ミラーRecovery Manager (RMAN) ユーザー管理バックアップ管理情報RMANクライアントOracleサーバー・プロセス
RMANでのバックアップ、リストアおよびリカバリ時間の短縮Copyright © 2021, Oracle and/or its affiliates70並列化複数あるコピー対象を並列化高速増分バックアップ前回のバックアップ時点から更新されたデータ・ブロックのみにアクセス増分更新バックアップフル・バックアップにあらかじめ増分バックアップを適用ブロック・メディア・リカバリ1ブロック単位のリストアおよびリカバリBACKUPRESTOREデータファイル バックアップフル・バックアップ増分バックアップデータファイル バックアップRECOVERデータファイル
Oracle Databaseの2種類の物理バックアップ手法Copyright © 2021, Oracle and/or its affiliates71Recovery Manager (RMAN) ユーザー管理バックアップ破損検査 される されないリストアおよびリカバリ操作自動化できる 破損個所の特定からどのファイルをリストアするかまですべて管理者の判断最小リストア粒度 データ・ブロック ファイルまたはボリュームバックアップおよびリストア時間の短縮• 高速増分バックアップ• 増分更新バックアップ• ブロック・メディア・リカバリ• 並列化ストレージ機能との組み合わせストレージ機能(スナップショットなど)はバックアップ構成を誤ると容易にリカバリ不能になるので注意
Database Lifecycle Management PackCopyright © 2021, Oracle and/or its affiliates72
データベース、システムおよびアプリケーションの管理者が、Oracle Databaseのライフサイクル管理に必要なプロセスを自動化するのに役立つ、包括的なソリューションDatabase Lifecycle Management Pack概要期待される効果• 構成の「ずれ」によるトラブルの防止• リリース時のヘルスチェックや障害時の情報収集の高速化• データベースとデータのセキュリティ強化• プロアクティブなセキュリティ強化と障害予防• 開発・テストサイクルの高速化ライフサイクル管理ソリューション• 検出• DBのプロビジョニング• パッチ適用• DBオブジェクトの変更管理• DBやOSの構成管理• コンプライアンス管理• Enterprise Data Governance• 変更アクティビティ・プランナCopyright © 2021, Oracle and/or its affiliates73
検出• ホストとそのソフトウェアデプロイメントの識別、管理可能なターゲットとしてのホストの追加、およびホストの状態の監視と管理DBのプロビジョニング• DBソフトウェアのインストール、DBの作成やクローニングを自動化することで、構成の標準化、開発およびテストの迅速化を実現パッチ適用• セキュリティパッチなど定期パッチの適用作業を自動化することにより、低コストでセキュリティ対策の最新化、障害の未然予防を実現DBオブジェクトの変更管理• 複数DBのオブジェクト定義情報を一元管理、履歴管理、比較、同期することで、多数あるオブジェクトの開発およびリリースにおけるリスクと工数を削減DBやOSの構成管理• 初期化パラメーターやパッチレベル、カーネルパラメーター等を一元的に履歴管理し、テスト時やリリース時に発生しがちな環境間差異等のリスクを低減コンプライアンス管理• データベースの構成を定期的に自動チェックし、組織の定めた標準や業界標準(PCIDSS等)から逸脱していないか、脆弱性にさらされていないかを評価Enterprise Data Governance• 複数のデータベースから機密データの格納された表や列を検出、マスキング等のセキュリティ対策漏れを防止変更アクティビティ・プランナ• 四半期ごとのセキュリティ・パッチのロールアウト、ビジネス要求に合せた新しいサーバーの構築、データ・センターの移行または統合、および環境全体へのコンプライアンス標準の導入など様々なオペレーションの計画、管理および監視Database Lifecycle Management Pack主な機能Copyright © 2021, Oracle and/or its affiliates74
DBソフトウェアのインストール、DBの作成やクローニングを自動化することで、構成の標準化、開発およびテストの迅速化を実現主なユースケース• Oracle Databaseのプロビジョニング• Oracle Real Application Clustersのプロビジョニング• Oracle Real Application Clustersの拡張および縮小• Oracle Databaseの作成• プラガブル・データベースのプロビジョニング• Oracle Database ClientのプロビジョニングデータベースのプロビジョニングCopyright © 2021, Oracle and/or its affiliates75基本となる環境 検証環境 ①検証環境 ②検証環境 ③既存構成をプロファイル化し、迅速に構成を配布
セキュリティパッチなど定期パッチの適用作業を自動化することにより、低コストでセキュリティ対策の最新化、障害の未然予防を実現• パッチ推奨• 構成情報をもとに、未適用の推奨パッチを提示• パッチ計画• 複数のパッチを「パッチ計画」に追加、一斉適用可能• パッチ情報、および構成情報をもとに競合の事前チェック• パッチ適用• 手動操作によるオペレーション・ミスを防止• 検証済みのパッチ計画をテンプレート化することで適用を標準化パッチ適用Copyright © 2021, Oracle and/or its affiliates76未適用の推奨パッチ
複数DBのオブジェクト定義情報を一元管理、履歴管理、比較、同期することで、多数あるオブジェクトの開発およびリリースにおけるリスクと工数を削減データベース・オブジェクトの変更管理Copyright © 2021, Oracle and/or its affiliates77開発DB本番DBVer 0.1Ver 0.2Ver 1.0異なるバージョン間でオブジェクト定義の差分比較リリースに必要なDDLを作成、実行し、オブジェクト定義を安全かつ確実に同期EMPLOYEES表のEMAIL列の長さが25から30に増えている
初期化パラメーターやパッチレベル、カーネルパラメーター等を一元的に履歴管理し、テスト時やリリース時に発生しがちな環境間差異等のリスクを低減データベースやOSの構成管理Copyright © 2021, Oracle and/or its affiliates78本番環境と検証環境で差分が無いかチェック
データベースの構成を定期的に自動チェックし、組織の定めた標準や業界標準(PCIDSS等)から逸脱していないか、脆弱性にさらされていないかを評価• オラクル提供の豊富なコンテンツによる自動評価• セキュリティ上の推奨やベストプラクティス• ルール等はセルフアップデート機能を通じて更新可能• 評価結果は「スコア」として自動算出• スコアの過去履歴も保存• ルール違反の詳細情報• 違反の詳細• 推奨される解決方法• My Oracle Supportのナレッジとのリンクコンプライアンス管理Copyright © 2021, Oracle and/or its affiliates79
複数のデータベースから機密データの格納された表や列を検出、マスキング等のセキュリティ対策漏れを防止• メタデータ検出: スキーマ、表および列名のパターンでのみ検索• データ検出: 実際のデータをドリル・ダウンして、ユーザー指定の機密タイプおよびオブジェクト・レベルの保護の詳細に一致するものを検索Enterprise Data GovernanceCopyright © 2021, Oracle and/or its affiliates80
Copyright © 2021, Oracle and/or its affiliates81Oracle Multitenant
データベースの統合とシンプルな運用のための新しいアーキテクチャOracle Multitenantの背景Copyright © 2021, Oracle and/or its affiliates82サーバー仮想化 インスタンス分割 スキーマ分割 PDB分割構成DBApp App Appスキーマ スキーマ スキーマOSCDBPDB PDB PDBApp App AppOSOSDBDBDBApp App AppOSDBDBDBApp App AppOS OSHypervisorMultitenant
データベースの統合とシンプルな運用のための新しいアーキテクチャアプリケーションごとにPDB (プラガブル・データベース)を提供• アプリケーションの変更は不要• 高速なプロビジョニング(クローン)• ポータビリティ/可搬性CDB (コンテナ・データベース)で共通オペレーションの実施• 一元管理(アップグレード、バックアップ、HA構成)• 必要に応じて個別の管理も可能メモリーとバックグラウンド・プロセスの共有• より多くのアプリケーションを稼働できるOracle Multitenantの特徴Copyright © 2021, Oracle and/or its affiliates83PDBRootCDBOS
MultitenantのメリットCopyright © 2021, Oracle and/or its affiliates84• 設備投資の低減• サーバー台数の削減• サーバーのメモリ、コア数の削減、それに伴うライセンス数の削減• 運用コストの低減• 複数データベースをまとめて管理• 運用手順の標準化• 俊敏性の向上• 迅速なプロビジョニング• セルフサービスによるプロビジョニング• 容易な移行• アプリケーションの変更なしの移行メリット サーバー仮想化 インスタンス分割 スキーマ分割 Multitenant設備投資の低減 × △ 〇 〇運用コストの低減 × △ 〇 〇俊敏性の向上 〇 〇 × 〇容易な移行 〇 〇 × 〇
Multitenantの高集約により、設備投資の低減データベースの高密度集約(ITリソース有効活用)Copyright © 2021, Oracle and/or its affiliates85統合できるDBの数 メモリ容量*25050200MB1600MB87.5%カット5倍同環境なら、5倍の数のデータベースを統合可能同じ性能を出すために必要なメモリサイズを87.5%カット(1/8に縮小)ライセンス/ハードウェアコストの節約5倍の利用効率による高い費用対効果同じ環境だったら 同じ性能を出すには*DBを動かすために必要なメモリサイズシングルインスタンスMultitenant構成
ファイル構造MultitenantアーキテクチャCopyright © 2021, Oracle and/or its affiliates86non-CDB構成オンラインREDOログファイル制御ファイルデータファイルDBCDB構成オンラインREDOログファイル制御ファイルデータファイルデータファイルデータファイルCDB Root PDB PDBCDB RootPDB• CDB Rootが、REDOログと制御ファイルを持つ• PDBごとにデータファイルが独立している
簡単かつ高速なデータベースの移動と複製Multitenant機能と活用Copyright © 2021, Oracle and/or its affiliates87同一CDB内でのPDBの複製• 全データ• 指定表領域のみ• メタデータ(表定義)のみ別CDBへのPDBの移動• Unplug & Plug別CDBへのPDBの複製
簡単かつ効率的なデータベースのアップグレードA) 一括でアップグレード B) Unplug & Plugの活用Multitenant機能と活用Copyright © 2021, Oracle and/or its affiliates88Oracle 12.1.0.2Oracle 19.8.0.0アップグレードOracle 12.1.0.2Oracle 19.8.0.0Unplug& PlugアップグレードOracle 19.8.0.0
アプリケーション・テナントの中央集中管理• アプリケーション・コンテナ• PDB間でアプリケーションのオブジェクト共有• プロキシPDB• 異なるCDB間でのアプリケーション・ルートの同期• コンテナ・マップ• PDBを使ったロジカル・パーティション大規模環境にも対応可能な統合と分離• 1 CDBあたり最大4,096PDB• PDB毎にキャラクタセット変更可• PDB毎にフラッシュバック可• メモリー、I/O、CPUのリソース制御• ロックダウン・プロファイル• より細かい権限の制御プロビジョニングの容易さとテナントの移動しやすさ• 再配置• PDBの再配置をしてもアプリケーションは継続利用可能• 最小限のダウンタイムでサーバー側のロードバランスを実施• リフレッシュ可能なクローン• 参照用途で手動もしくは定期的に同期をとるPDBを設定可能• ホット・クローン• オンラインでPDBの複製が可能Multitenant機能と活用Copyright © 2021, Oracle and/or its affiliates89
PDBスナップショット・カルーセル• PDBスナップショットを複数世代取得し、テストなどで利用することが可能• ホット・クローンの仕組みを利用して取得• 最大8つまでのスナップショットを保存• 9つ目のPDBスナップショットが取得されると古いものを削除• カルーセル内のPDBスナップショットからread/write可能なPDBをオープンPDB単位でのReal Application Testing• 特定のPDBに接続してワークロードのキャプチャ、リプレイが可能• PDB管理者が、管理するPDBに対して実施• 接続しているPDBのワークロードのキャプチャを実施。同様に、接続しているPDBでワークロードのリプレイを実施。Multitenant機能と活用Copyright © 2021, Oracle and/or its affiliates9016th15th14th13th12th11th10th9thT0T1 T2T3T4T5T6T7CREATE PLUGGABLE DATABASE.. USING SNAPSHOT …本番ALTER PLUGGABLE DATABASESNAPSHOT …開発APDBSQL/ワークロードを取得取得したSQL/ワークロード本番環境 テスト環境Client ReplayClientDB
1. 既存システムの統合基盤 2. 開発・検証環境のアジリティ向上 3. SaaS/ASPサービスの基盤としての活用Multitenantの代表的なユースケースCopyright © 2021, Oracle and/or its affiliates91既存環境を統合しMultitenant化統合(本番)開発マスター (開発2)(開発1)スナップショット開発 本番オンプレミスオンプレミス or Oracle Cloud異なる環境への複製 独立性、セキュリティ、運用コスト削減と運用効率化A社 B社 C社SaaS/ASPサービス展開
Oracle Real Application ClustersCopyright © 2021, Oracle and/or its affiliates92
共有ストレージ・共有キャッシュ型で全ノードがアクティブスケーラビリティ• 全ノードがアクティブで対等に更新可能• ノード数(CPU数)増加による性能向上• トランザクション系: 同時ユーザー数の向上• 分析系: 並列度向上可用性• Oracleインスタンスに障害が発生しても正常ノードによって自動的にリカバリされる• 最低1つのOracleインスタンスが稼働していれば全データにアクセス可能• ノードごとのローリング・メンテナンス可能透過性• Oracleクライアントから見た挙動がシングル・インスタンスと同じOracle Real Application Clusters (RAC)Copyright © 2021, Oracle and/or its affiliates93共有ストレージデータ・ベース・サーバー
トランザクション系も分析系も同じアーキテクチャで対応トランザクション系• 多数のセッションからの同時並行リクエスト• より多くの同時リクエストを処理集計/分析系• 1つのSQL処理を並列化• より高い並列度で1つのSQLを処理スケーラビリティCopyright © 2021, Oracle and/or its affiliates94OracleクライアントQCPX PX PX PX PX PX PX PXOracleクライアント
RACノード数(CPU数)の増加とトランザクション処理量の例Copyright © 2021, Oracle and/or its affiliates95トランザクション系処理のRACノード数と相対スループット検証例https://jpn.nec.com/soft/oracle/files/gc_1SSDB-MAT-03-09002_NEC_GRIDCenter_16nodeRAC_external_ver2.pdf
データベース・サーバーに障害が発生すると正常ノードが自動リカバリOracleインスタンス障害• 一瞬でOracle Grid Infrastructureに検出される• Oracleインスタンス障害が検出されると正常ノードのOracleインスタンスによって自動的にリカバリされる• 最低1つのOracleインスタンスが正常動作していれば全データにアクセス可能(アプリケーションが動作する)OSより下の階層の障害• OS以下の障害は正常ノードのOracle GridInfrastructureがタイムアウトで検出可用性: データベース・サーバー障害Copyright © 2021, Oracle and/or its affiliates96GI GI GI GIGI: Oracle Grid Infrastructure
一部のノードを停止させてもデータベースは稼働を継続可能1. 停止2. パッチ適用3. 起動ローリング・パッチ適用• RACは最低1つのOracleインスタンスが正常動作していれば全データにアクセス可能(アプリケーションが動作する)• Oracleインスタンス停止 → パッチ適用 → 起動をノードごとに繰り返すことでデータベース全体としては稼働させたままパッチ適用が可能可用性: ローリング・メンテナンスCopyright © 2021, Oracle and/or its affiliates97GI GI GIGI: Oracle Grid Infrastructure
Oracleクライアントから見た挙動がシングル・インスタンスと同じOracleインスタンスからのデータの見え方が同じ• ストレージを共有しており1つのOracleインスタンスから全データにアクセス可能• 複数ノード間でのメモリーの一貫性を全自動で維持(Cache Fusion)スキーマ構造が同じ• 表/索引を格納するデータ・ファイルが同じ• 表/索引のパーティショニングは不要トランザクション分離レベルの挙動が同じ• 複数のセッションがノード内/ノード間で同じデータにアクセスしたときの挙動が同じ透過性Copyright © 2021, Oracle and/or its affiliates98シングル・インスタンスで開発したアプリケーションがそのまま動作するOracleクライアント
Oracle接続ドライバは標準機能でRACのことが考慮されているロード・バランシング• 接続数や負荷に応じて適切に振り分けフェイルオーバー• 接続リクエストを自動再試行• 接続時フェイルオーバー• 更新トランザクションを自動再実行可能• アプリケーション・コンティニュイティRACへの接続Copyright © 2021, Oracle and/or its affiliates99Oracleクライアント
Oracle Real Application Clustersノード数(CPU数)増加による性能向上• トランザクション系処理はより多くの同時リクエストに対応• 集計/分析系処理はより高い並列度で実行時間短縮可用性• Oracleインスタンス障害/ノード障害からの自動リカバリ• 最低1つのOracleインスタンスが正常動作していれば全データにアクセス可能• ノードごとのローリング・メンテナンス可能アプリケーションからはシングル・インスタンスと同じに見える• スキーマ構造とトランザクション分離レベルが同じ• シングル・インスタンスで開発したアプリケーションがそのまま動作するまとめCopyright © 2021, Oracle and/or its affiliates100
Oracle Automatic Storage ManagementCopyright © 2021, Oracle and/or its affiliates101
高性能、高可用性、管理容易性を提供するデータベースとして理想的なストレージ管理機能Oracle Databaseのストレージ仮想化機能• Oracle Databaseに対するボリューム・マネージャ兼ファイルシステム• エディションに関係なく、シングルまたはクラスタ環境ともに利用可能• ASMによるファイルシステム機能も提供I/O性能を最大限引き出しつつ、ストレージ管理工数を大幅削減• すべてのストレージ・デバイスにまたがったディスクの仮想化とストライピングを自動で行い、アクセスを均一化• ストレージ・デバイスの増減にあわせた自動リバランスストレージ筐体をまたがる高可用性と拡張性• ミラーリング(二重化/三重化)可能• 冗長構成でファイル破損を検出すると自動修復• ストレージ・デバイス異常を検出すると自動切り離し• ストレージ・デバイスの増減にあわせた自動リバランスOracle Automatic Storage Management (ASM)1 2 3 41 2 3 44 3 1 2追加自動リバランス削除高性能の維持高可用性の担保管理容易性 ミラーリングストライピングCopyright © 2021, Oracle and/or its affiliates102
アーキテクチャASMインスタンス• ASMディスク・グループ内の構成情報(メタデータ)の管理を行うためのインスタンスASMディスク• ASM用に定義されたLUNやストレージ・デバイスASMディスク・グループ• ディスクの論理的な単位• ディスク・グループごとに冗長化レベルを設定可能障害グループ• 同一コントローラ配下のディスクをまとめた単位• 異なる障害グループ間でミラーリングし、データ損失を回避ASMファイル• ASMディスク・グループ内に格納されるファイル• データベース・ファイルなども含まれるAU(アロケーション・ユニット)• 分割したASMファイルをASMディスクに割り当て配置する単位Oracle Automatic Storage Management (ASM)Copyright © 2021, Oracle and/or its affiliates103データベースインスタンスASMインスタンスASMディスクASMディスク・グループASMファイル AU(アロケーション・ユニット)障害グループ
「ディスク追加をする際の作業が大変」例) ディスクや表領域が非常に細かく分割されている• 空き領域がディスクや表領域毎に独立しているため、無駄な空き領域が増大• 監視対象(ディスクや表領域)が多く、頻繁に領域不足に陥り、運用工数が増大• データ・ファイル数が多く、SQLの性能劣化やミス・オペレーションを誘発• 管理レイヤー数が多い為、運用オペレーションの複雑化• 変更する際のデータベース管理者とストレージ管理者の間での調整作業の難しさ例) ディスク追加時に、既存データをリバランスしていない• 空き領域が新規ボリュームにのみ存在する為、新たにINSERTされるレコードがそのボリュームに集中することで、ボトルネックが発生し易い• 既存レコードは既存ボリューム内に格納されている為、性能改善効果は無しデータベースのストレージ ~よくある課題 その1: 性能と運用の複雑化Copyright © 2021, Oracle and/or its affiliates104ディスク追加のみだと新規レコードが一点集中対策として、一度データを退避し、全ディスクへ再投入データロード後、データやアクセスが均等化
Stripe And Mirror Everything (S. A. M. E)「全てのストレージ・デバイスの均等利用を目的に、データをストライプして全てのストレージ・デバイス上に分散配置し、ミラーリングも行う」という設計手法• I/O性能の確保:全てのストレージ・デバイスのI/O帯域をフル活用• 可用性を確保:ミラーリングの採用• 設計の簡素化:物理的なストレージ構成を隠蔽し、特別な設計は不要ASMの基本思想Copyright © 2021, Oracle and/or its affiliates1051 2 3 43 6 1 75 6 7 84 2 8 5異なるデバイスにミラーリングすべてのデバイスにストライピング
高性能、高可用性、管理容易性を提供するデータベースとして理想的なストレージ管理機能ストライピング• 全ディスクでファイルを自動均等分散の形でストライピングし、高性能を維持ミラーリング• ミラーリング(2重化/3重化)により、ストレージ・デバイス障害に対する可用性の担保• ストレージ筺体を区別し、筐体間でミラーを保持動的リバランシング• ストレージ・デバイスの追加/削除時に既存データを動的に自動再配置し、容易な管理が可能• 容量やIOPS不足時に、ストレージ・デバイスを追加するだけでストレージ拡張を実現• データベース無停止でのリバランスが可能Oracle Automatic Storage ManagementCopyright © 2021, Oracle and/or its affiliates1061 2 3 4 1 2 3 44 3 1 2筺体#1PrimarySecondary筺体#2追加自動リバランス
ストレージ管理を圧倒的に効率化ASMによるデータベースの物理設計の簡易化キャパシティプランニングデータ位置の検討論理ボリュームの作成ファイルシステムの作成Oracleインストール DB作成キャパシティプランニングディスクグループの作成Oracleインストール DB作成ホットポットを見つけるデータファイル移動ディスクグループ内での自動均等分散により管理作業なしH/Wへのディスク追加論理ボリュームの作成ファイルシステムの作成移動データの検討新規ディスクにファイルを移動 DBファイルの改名H/Wへのディスク追加ディスクグループへの追加自動リバランスDB作成チューニングディスク追加工数と所要時間を大幅に削減ASMASMASM一般的なストレージ一般的なストレージ一般的なストレージCopyright © 2021, Oracle and/or its affiliates107
「耐障害性のためにミラーリングなど対処していたがデータにアクセスできない」ストレージ・データの障害の例• ソフトウェアから永続化デバイスまでのどこかの階層がデータを破損させた• それを「検出」するのはデータを読み取って中身を解釈するOracleのプロセス• 破損させた階層は「自分が壊した」というログを残さないため多くの場合根本原因は迷宮入りするストレージ・ハードウェアの障害の例• 破損データの書き込みリクエストは「そのまま」格納される• 主に永続化層であるHDDおよびフラッシュ・メモリのハードウェア故障への対処• エンタープライズ向けストレージはコントローラーやインターフェースのハードウェアもひととおり冗長構成になっている• ハードウェアの故障を検出したら切り替える、または切り離すという対処データベースのストレージ ~よくある課題 その2: 可用性Copyright © 2021, Oracle and/or its affiliates108Oracle DatabaseOSmultipath driverdevice driverHost Bus Adapterstorage controllernetworkCPU/memory
Oracle Clientに透過的かつ自動的な切り離し、再配置、ブロック修復ストレージ・デバイス障害時に自動切り離し• OSシステム・コールがエラーになるストレージ・デバイスをオフライン化、復旧できない場合は切り離す• 冗長化されていれば処理は継続• ストレージ・パス障害の切り替えはOSのI/Oタイムアウトに依存(60秒程度)• Exadataならば数秒でノード障害を切り離せる• ストレージ・デバイスの増減にあわせてリバランスして冗長性を回復ファイル破損時の自動修復• 読み取ったファイルの破損を「検出」するのはOracleのプロセスであるが...• ストレージ・デバイス以外の階層の異常でもストレージのデータを破損させる場合がある• ASMで冗長化している場合ファイル破損を検出すると自動的にミラーから読み取り処理継続し、破損個所を自動修復ASMのストレージ障害への対処Copyright © 2021, Oracle and/or its affiliates109データベースインスタンスASMインスタンス1 2 32 3 1自動切り離し処理継続自動修復自動リバランス
Copyright © 2021, Oracle and/or its affiliates110Oracle Data Guard / Active Data Guard
システム停止による影響Copyright © 2021, Oracle and/or its affiliates111計画外のデータセンターの停止や災害の影響による平均コスト年間の合計停止時間の平均 24ヶ月間で計画外停止を経験したUSデータセンターの割合91%$10M$350KSource: Gartner, Data Center Knowledge, IT Process Institute, Forrester Research87時間停止時間による1時間当たりの平均コスト→
Oracle Database自身が持つレプリケーション機能でデータ保護・可用性の提供 + 適切なROIを実現Oracle Data Guard / Oracle Active Data Guardプライマリ・データベーススタンバイ・データベース同期・非同期破損ブロックの自動修復※レポーティング※バックアップ※データ保護 迅速な切り替え リソースの有効活用スイッチオーバーフェイルオーバーREDO転送によって同期をとることで、データーベースを障害およびデータ破損から保護計画/計画外停止時に迅速に切り替えることでダウンタイムを縮小し、業務を継続レポーティング、テストやバックアップ用途でスタンバイ・データベースを活用可能※Active Data Guardオプションが必要Copyright © 2021, Oracle and/or its affiliates112
「必要な時に切り替えようとしたら壊れていて切り替えられなかった」ストレージ・ミラー方式• ストレージのコピー機能を利用して、ソースとレプリカの間でデータの同期をとる方式• ストレージ・ミラーなどのレプリケーション方式の場合、ソースでのデータ破損がレプリカにもコピーされ、いざ切り替えようとしても切り替えられないレプリカになる可能性があるOracle Databaseのレプリケーション機能では• REDO (差分)を用いて同期をとる方式• 受信したREDO情報を検査した上で、スタンバイに適用するため、破損が伝搬しない• Oracle Active Data Guardは、ブロック破損やロスト・ライトなどを防ぎ、普段から利用して、いざという時に使えるレプリカを保持データベースのレプリケーション ~よくある課題 その1: データ保護Copyright © 2021, Oracle and/or its affiliates113ストレージ ストレージストレージ ストレージインスタンス(メモリ)インスタンス(メモリ)インスタンス(メモリ)REDOログ REDOログREDOログ REDOログ
データ保護・災害時の業務継続に適したレプリケーション• 要件・用途に合わせたレプリケーション• 2種類の適用方法を提供• フィジカル・スタンバイ・データベース (データブロックレベルでプライマリと等しい)• ロジカル・スタンバイ・データベース(論理的にプライマリと等しい)• 2種類の転送方法を提供• 同期転送(データ保護を優先)• 非同期転送(システム性能を優先)• データ差分/整合性を担保する仕組み• スタンバイへの書き込み(データ変更)は不可• 適用プロセスの並列化で差分を削減• 自動でギャップ解決• ロスト・ライトを自動で検知• 破損ブロックを自動で修復し、正しい結果を返す(自動ブロックメディアリカバリ)*Data Guardによるデータ保護Copyright © 2021, Oracle and/or its affiliates114*Active Data Guardオプションが必要プライマリ・データベース スタンバイ・データベース同期・非同期
Data GuardアーキテクチャData Guardにおける同期の仕組みCopyright © 2021, Oracle and/or its affiliates115ログバッファプライマリ・データベーススタンバイ・データベースNSS/TTLGWRRFSデータファイルデータファイルアーカイブログアーカイブログオンラインREDOログスタンバイREDOログREDO転送REDOを転送、スタンバイ側で受信REDO適用リカバリの仕組みでREDOを適用ロール変換スイッチオーバー(計画的)フェイルオーバー(計画外)でロールを変更MRP※各バックグラウンド・プロセスの名称RFS: リモート・ファイル・サーバー・プロセスMRP: 管理スタンバイ・リカバリ・プロセス※各バックグラウンド・プロセスの名称LGWR: ログ・ライター・プロセスNSS: ネットワーク・サーバーSYNCプロセスTT: REDO転送スレーブ・プロセス
同期転送(SYNC)データ保護• プライマリでコミットが発行されるとスタンバイへ転送完了後にコミット確定パフォーマンス影響• スタンバイへの転送時間に依存してプライマリのコミット処理が待機非同期転送(ASYNC)データ保護• プライマリでコミットが発行されてもスタンバイへの転送をまたずにコミット確定パフォーマンス影響• プライマリへのコミット処理はスタンバイへの転送を待機しないData Guardによるデータ保護Copyright © 2021, Oracle and/or its affiliates116転送方式3.応答2.転送4.確定1.コミット 1.コミット 2.確定2.転送
「切り替え手順が複雑、アプリ側との連携に時間がかかるので切り替えるのを諦めた」ストレージ・コピーの課題• 切り替え手順が煩雑で「切り替えることができなかった」、「時間を要した」結果、サービス停止時間が長期化• ストレージの切り離しやマウントなどOS上での操作などOracle Data Guardでは• 計画停止と計画外停止などケースにあわせた2種類の切り替え• 障害時に自動切換も可能• 少ないステップで数秒~数分で切り替えが可能のため、サービス停止を縮小可能データベースのレプリケーション ~よくある課題 その2: 運用の煩雑化Copyright © 2021, Oracle and/or its affiliates117スタンバイ→プライマリプライマリ迅速に切り変えられず、長期停止迅速に切り替え、停止時間を抑えるレプリカマスター
切り替えや切り戻しが容易• 少ないステップでの切り替えが可能• SQLでの切り替え• Data Guard Broker (Data Guard管理機能)を利用して1コマンドでの切り替え• 切り替え実施時に高速アプリケーション通知(FAN)を発行可能• Enterprise Manger Cloud Controlを利用して1クリックでの切り替え• ケースごとの切り替え方法• スイッチオーバー: メンテナンスなど計画停止で行うロール変換• 差分がない状態(データが完全に同期)での切り替え• スイッチ後の同期も自動で実施され、スイッチバックも可能• フェイルオーバー: 障害発生時など、計画外停止で行うロール変換• 同期転送(最大保護モード)以外はデータ損失の可能性あり• フェイルオーバー後に、旧プライマリをフラッシュバック機能を使って簡単に新スタンバイにすることが可能• 自動切り替えも可能(Fast Start Failover)Data Guardの切り替えCopyright © 2021, Oracle and/or its affiliates118プライマリ スタンバイスタンバイ→プライマリプライマリ→スタンバイスタンバイ→プライマリ旧プライマリフェイルオーバースイッチオーバー
「災対環境の必要性は理解しているけれども普段使わない環境へ投資するのは難しい」ストレージコピーの課題• 通常時はレプリカ側が利用されず、有事しか活用されないリソースへ投資することへの費用対効果が見合わない• 普段使ってないことから、実際に切り替えようとしたら使えない状態で切り替えられなかった• レプリカ側のデータ破損やロストライト等、レプリカ側のデータ障害に気付けず、データ差分があったOracle Data Guardでは• スタンバイを参照用として利用可能(DMLも対応)なので、参照系の別システムや参照系処理のオフロードで有効活用• 日々のバックアップ処理をオフロードしてメインの負荷を削減• 一時的に書き込み可能モードに切り替えて、テスト環境として利用可能• 普段から利用し、有事の際にきちんと使えるスタンバイを保持データベースのレプリケーション ~よくある課題 その3: 費用対効果Copyright © 2021, Oracle and/or its affiliates119ソース レプリカプライマリ スタンバイ
適切なROIを実現• 参照可能モード(READ ONLY)で平常時の利活用• Active Data Guardオプションが必要• DMLも実行可能(頻繁な更新がないようなケースを想定)• バックアップをスタンバイで取得することで、プライマリでのバックアップ処理の負荷を削減し業務影響をなくすことが可能• 一時的に書き込み可能モードに変換してテスト環境として利用• フィジカル・スタンバイから一時的に書き込み可能なスナップショット・スタンバイに切り替え• フラッシュバック機能でテスト前の状態に戻し、フィジカル・スタンバイに戻したら自動で差分適用• 普段から利用することでデータの整合性、正常性を自動確認• 参照用として動かすことでデータベースとしての利用可否を確認• ロストライトなど同期されていないブロックを自動検知Data Guardのスタンバイ有効活用Copyright © 2021, Oracle and/or its affiliates120レポーティング*バックアップ*テスト環境*Active Data Guardオプションが必要
Data Guardのユース・ケースCopyright © 2021, Oracle and/or its affiliates121DR構成やHA構成クエリ・オフロードテスト環境メンテナンスバックアップ処理のオフロードデータベースの複製▶ 可用性レベルを向上したデータ保護▶ 分析などの参照系のオフロード▶ プライマリのバックアップ負荷削減▶ データベース複製時のプライマリへの負荷削減▶ 一時的に書き込み可能モードに変換してテスト▶ メンテナンスなどの計画停止をローリングで実施することでダウンタイムを短縮
最小構成ローカル・スタンバイ瞬時の切り替えや同期転送が可能な近距離のスタンバイリモート・スタンバイ大規模障害を見据えた災対環境マルチ・スタンバイマルチ・スタンバイローカル・リモートともにスタンバイを持ち、状況に応じて切り替え。スタンバイごとに、同期・非同期を設定可カスケードカスケード・スタンバイテスト用途などスタンバイとは別にレプリカを持ちたい場合FarSync(遠隔同期)スタンバイ遠隔地スタンバイとの同期転送の中継構成パターンCopyright © 2021, Oracle and/or its affiliates122同期 非同期
Oracle Data Guard/Active Data Guardは、データ保護のための最善策データ保護• REDO転送によって複製データベースに同期をとることで、データーベースを障害及びデータ破損から保護迅速な切り替え• 計画/計画外停止時に切り替えることでダウンタイムを縮小し、業務を継続リソースの有効活用• レポーティング、テストやバックアップ用途でスタンバイ・データベースを活用可能まとめCopyright © 2021, Oracle and/or its affiliates123
Copyright © 2021, Oracle and/or its affiliates124Oracle GoldenGate
リアルタイムなデータ統合およびレプリケーション• データベースに行われた変更を、Trailファイルという汎用的なフォーマットに変換して転送し、他のデータベースへリアルタイムに反映• データベースやOSの種類やバージョンが異なるシステム間での連携が可能• 稼働中のデータベース同士で双方向に連携が可能• データベース全体だけではなく、表や列など必要な部分に絞った柔軟な連携が可能• 既存のデータベースやネットワークへの負荷は最小限Oracle GoldenGate 概要Copyright © 2021, Oracle and/or its affiliates125ソース ターゲット抽出 転送 受信 適用Trailファイル Trailファイル
Classic ArchitectureとMicroservices Architectureの違いOracle GoldenGateアーキテクチャ概要Copyright © 2021, Oracle and/or its affiliates126• REST対応サービスを提供する新しいアーキテクチャ• Oracle Databaseのみサポート対象• WebUIベースの設定・管理• 今後Oracle Databaseが接続対象の場合の推奨ビルド• 従来から提供されているアーキテクチャで継続的に提供• Certification matrix記載のすべてがサポート対象• コマンドラインベースの設定・管理※補足※• それぞれ、別々のビルドイメージとして提供されています。• ExtractおよびReplicatは、どちらのArchitectureでも同じものが提供されます• Oracleでは、ExtractはIntegrated Mode、ReplicatはParallel Modeの利用を推奨していますMicroservices ArchitectureClassic ArchitectureReplicat (Apply)- NonIntegrated Mode- Integrated Mode- Parallel ModeExtract (Capture)- Classic Mode- Integrated Mode Service ManagerAdmin ServerDistribution ServerMetrics ServerService ManagerReceiver ServerMetrics Server Admin ServerExtract (Capture)- Classic Mode- Integrated ModeData Pump CollectorManagerManagerReplicat (Apply)- NonIntegrated Mode- Integrated Mode- Parallel Mode
主なユースケースOracle GoldenGateCopyright © 2021, Oracle and/or its affiliates127Data Lakeあらゆるデータレイクへのストリーミングデータ供給Stream Analytics機械学習、地理空間および高度なルールの適用Data Pipelinesストリーム上で受け取ったデータの変換処理Database HA/DRアクティブ-アクティブ, マルチマスター,ゼロダウンタイムDB移行OLTP ReplicationOLTPデータベース間でのトランザクション伝搬Data Warehouseデータウェアハウスへの最新トランザクションデータ供給
多種多様な製品やサービスに対応Oracle GoldenGateCopyright © 2021, Oracle and/or its affiliates128リアルタイムなトランザクションデータ伝搬Oracle Stream AnalyticsKafkaETL&MLSparkDBMSCloudBig DataNoSQLStreamsMySQL Database ServerOracle DatabaseIBM Db2Microsoft SQL ServerCassandraJava Message ServiceHPE NonStop (Guardian)SAP Sybase ASEIBM InformixSAP Sybase ASENetezzaTERADATAIBM Db2HPE NonStop(Guardian)OracleDatabaseMySQLDatabaseServerMicrosoftSQL ServerIBM Informix GreenplumSAP HANAElasticsearchMongoDBJDBCJDBCCloudera HortonworksCassandra Oracle NoSQLJava MessageServiceOracle CloudObject StorageMapRGoogle BigQueryAmazonS3AmazonAuroraAmazonKinesisAmazonRedshiftOracleDatabaseCloudOracleAutonomousDatabaseConfluentOracleAutonomousDatabaseKafkaKafkaKafkaHBaseHDFSSnowflakeMicrosoftAzure EcosystemHIVEFlinkETL&ML
多種多様な製品やサービスに対応Oracle GoldenGate – Data GuardやActive Data Guardとの違いCopyright © 2021, Oracle and/or its affiliates129• DB全体を複製• REDO適用を利用した物理的なレプリケーション(※1) 一部制限あり異なるOSやDB間でのレプリケーションが可能(※1)同一のバージョンやエンディアン間でのレプリケーションが可能(※2)(※2)同じData Guard構成内の異機種のプライマリとスタンバイのData Guardサポート(Doc ID 2201589.1)• 必要な表のみをレプリケーションできる• 論理的なレプリケーションData GuardActive Data GuardOracle GoldenGate【堅牢】【柔軟】
ライセンスの違いによる使用可否Oracle GoldenGate – Data GuardやActive Data Guardとの違いCopyright © 2021, Oracle and/or its affiliates130 REDOログを転送、適用 計画停止、ディザスタ・リカバリ 様々なデータ破損からの保護 同期および非同期構成のサポート スタンバイDBの活用(Active Data Guard) 破損データブロックの自動修復(Active Data Guard) REDOログから抽出したTrailを転送し、SQLを実行 計画停止、移行やアップグレード、リアルタイム・データ連携 異なるOSやDB間でのレプリケーション オブジェクト単位の柔軟なレプリケーション Active – Active 構成REDOを転送スイッチオーバーTrailを転送Trailを転送Oracle Active Data Guard (ADG)Oracle GoldenGate (GG)※Oracle GoldenGateのライセンスには、Oracle Active Data Guardのライセンスが含まれます
Copyright © 2021, Oracle and/or its affiliates131Oracle Advanced Security
データベース内の機密データを暗号化、リダクションにより保護透過的データ暗号化• データベース層でデータを暗号化• データベースを迂回して、ストレージから直接機密データを読み取ることを阻止Data Redaction• 問合せ結果データをリダクション(マスク)• 権限のないユーザーに対してデータが表示されるリスクを軽減Oracle Advanced SecurityCopyright © 2021, Oracle and/or its affiliates132RedactedApplicationsData RedactionXXXX-XXXX-4368DisksExportsBackupsTransparentData EncryptionEncryptedStoraged$f8#;!90Wz@Yg#3
Copyright © 2021, Oracle and/or its affiliates133アプリケーションの変更なしに機密データを暗号化透過的データ暗号化(TDE)DisksExportsBackupsTransparentData EncryptionEncryptedStoraged$f8#;!90Wz@Yg#3データ・ファイルに格納されているデータを保護• データ・ファイルに格納されている機密データを暗号化• 記憶域メディアやデータ・ファイルが盗まれた場合、格納されているデータの情報流出を防止• セキュリティに関連した規制コンプライアンスの問題への対応アプリケーションを変更することなく、機密データへのアクセスが可能• 許可されているユーザーやアプリケーションでは、自動的にデータの暗号化および復号を実施• 暗号化、復号のためにアプリケーション変更は不要
Copyright © 2021, Oracle and/or its affiliates134データベース暗号化のイメージ例透過的データ暗号化(TDE)正当な権限を持つユーザーがDBに接続してデータを参照ID Name Salary1 John $100,0002 Bill $200,0003 Kevin $50,0004 Susan $300,000ID Name SalaryKo W(KS -7j_Nu u/eED l=.d9A9 k7<: “gxjmF) Lc<= ‘a}41暗号化によって、ストレージから直接データの参照は不可アプリケーションは変更不要で暗号化データの参照が可能ストレージ上のファイルから直接データを参照
Copyright © 2021, Oracle and/or its affiliates135• ユーザーの権限に応じてリアルタイムにデータをマスクし、アクセスコントロールを実現• 職責に応じて閲覧させるべき情報をデータベース側で制御• アプリケーションの変更なしに、情報漏洩リスクを最小化することが可能通常業務で不必要な機密データへのアクセスを抑制Data Redaction業務上、参照が必要なユーザー テーブルDBサーバーポリシー設定APサーバー2172-9841-4368XXXX-XXXX-4368アプリDBはポリシー設定に基づいて、利用者権限に応じたマスクを実施アプリケーションは伏字化を意識する必要がない2172-9841-4368XXXX-XXXX-4368業務上、参照が不必要なユーザー2172-9841-43686342-4881-52113311-0090-5055マスキングとは異なり、DB上のデータはマスクされない
Copyright © 2021, Oracle and/or its affiliates136Oracle Database Vault
特権ユーザーの職務分掌にも対応したアクセス制御Oracle Database VaultCopyright © 2021, Oracle and/or its affiliates137職務分掌 特権ユーザー (SYS, DBA権限)であっても情報にはアクセスさせない透過的 既存アプリケーションの変更不要、Multitenant Architecture対応厳密 ユーザー、クライアント情報 (IPアドレスなど)、時間を組み合わせポリシー設定アプリケーションSELECT *FROM customers管理者(特権ユーザー)人事情報顧客情報財務情報
特権ユーザーの職務分掌特権ユーザーの無制限のアクセスを禁止し、ユーザーごとのアクセス権限を分離するOracle Database VaultCopyright © 2021, Oracle and/or its affiliates138機密データの取り扱い者DB管理者セキュリティ管理者機密データデータ・ディクショナリ業務データユーザ・アカウント時刻=8:00~19:00曜日 = 月~金IPアドレス=xxxxx• 許可された範囲で機密データにアクセス可能• DBの運用管理業務• 業務データと機密データへのアクセスは不可• アカウントと鍵の管理業務• 業務データと機密データへのアクセスは不可必要に応じてルールを適用し、時間帯やIPアドレスでアクセスを制限する一般利用者• 許可された範囲で業務データにアクセス可能ルールセット
Multitenant Architecture環境でのDatabase VaultCopyright © 2021, Oracle and/or its affiliates139SYS給与SYS在庫PDB2PDB1SYSSYSTEMCDBDatabase Vaultで保護されているPDBの表に対して、CDBのSYSユーザーはアクセスできないDatabaseVault ONDatabaseVault OFFCDB管理者PDB管理者それぞれのPDB管理者が自分のPDBのみを管理するインフラ管理として必要な業務のみアクセスを許可顧客 人事 CDBのSYSユーザーはPDBの表にアクセスできてしまう
テストフェーズにおけるポリシーの妥当性評価Database Vaultポリシーをシミュレーション• ポリシー違反があった場合、アクセスをブロックするのではなく、ログとして記録単体テストからシステムテストのフェーズでポリシーの妥当性評価に最適シミュレーション・モードCopyright © 2021, Oracle and/or its affiliates140シミュレーション・ログ(DBA_DV_SIMULATION_LOGビュー)HR スキーマHR AppBI Toolシミュレーション・モード
Copyright © 2021, Oracle and/or its affiliates141Oracle Audit Vault and Database Firewall
漏れのない監査と不正なSQLからの防御を実現Oracle Audit Vault and Database FirewallCopyright © 2021, Oracle and/or its affiliates142• Oracle Solaris• Oracle Linux• Red Hat Enterprise Linux• IBM AIX on Power Systems• Microsoft Windows ServerユーザーネットワークイベントDatabase Firewall監査情報、イベントログOperating SystemsDatabasesポリシーレポートアラートAudit Vault Server• Oracle Database• MySQL• IBM DB2• Microsoft SQL Server• SAP Sybase ASEアプリケーション透過的 既存アプリケーション、データベースの変更不要正確な検知 SQL文を正確に理解し検知するSQL文法解析エンジンを搭載漏れのない監査 データベースへのローカル接続等、ネットワークを経由しないSQLも監視
監査情報の収集、分析、およびレポート• OSと一体化したソフトウェア・アプライアンス• データベース、OS、ディレクトリから監査レコードを収集し、安全に保存• 容易なログの絞込み&分析• アラート通知• 調査とコンプライアンスのためのカスタムおよび事前定義されたレポート• 収集したログはリテンションポリシーで管理Audit Vault ServerCopyright © 2021, Oracle and/or its affiliates143監査情報、イベントログOperatingSystemsDatabasesポリシーレポートアラートAudit Vault Server
ネットワークのモニタリングによるデータベース監視とSQLインジェクション対策• OSと一体化したソフトウェア・アプライアンス• ネットワーク・トラフィックからデータベースのアクティビティを監視• 典型的なアクティビティのプロファイルを作成し、アクセスパターンの変化をすばやく特定• これまでにないSQLがデータベースに到達するのを検出またはブロック• ホワイトリスト/ブラックリストベースのポリシーを使用した異常検出と脅威のブロックDatabase Firewall ServerCopyright © 2021, Oracle and/or its affiliates144ユーザーネットワークイベントDatabase Firewall Server DatabasesポリシーレポートアラートAudit Vault Serverアプリケーション
ネットワークのモニタリングによるデータベース監視とSQLインジェクション対策いずれかの方法でデータベースに接続可能• プロキシ• ネットワークを介したデータベースへの不正アクセスの検出と防止• ホスト監視• データベースのネットワーク・トラフィックをアクティブに監視• Out-of-band• ネットワーク・エージェントを使用せずにデータベース・トラフィックをアクティブに監視Database Firewall ServerCopyright © 2021, Oracle and/or its affiliates145ユーザーアプリケーションDatabaseFirewallServerホスト監視Out-of-bandプロキシ
Oracle Real Application TestingCopyright © 2021, Oracle and/or its affiliates146
システムおよびパフォーマンス・テストは、ミッション・クリティカルなシステムで必須• 実プロジェクトにおいてシステムの開発期間がますます短くなり、テスト期間も短い• スケジュール通りに進捗せず、要件定義や設計フェーズで遅れが生じることも多く、システム・カットオーバの日付を後ろ倒しにもできず、結果としてテスト期間が削られる求められる「テストの自動化・効率化」• 自動化できる項目の見極めを行う必要がある• 適切なテスト計画・テスト項目策定のスキル、テストツールの操作スキルが必要• 高品質のテストを行うためには、単純に「ツールで自動化」すればよいというものでもないテスト・ソリューションの必要性Copyright © 2021, Oracle and/or its affiliates147
データベース性能を担保するための、プロアクティブな管理ツール• アプリケーションのサービス品質の向上• 迅速なアップグレードを可能にし、リスクを軽減• リスクの無いアップグレードと新しいテクノロジーの採用によりビジネスの俊敏性が向上• DBAの生産性を大幅に向上Real Application Testing (RAT)とはCopyright © 2021, Oracle and/or its affiliates148サービス品質の管理低リスクのアップグレードテクノロジーの迅速な採用DBAの生産性向上
Real Application Testing (RAT)の機能Copyright © 2021, Oracle and/or its affiliates149リスクの最小化自動化コスト削減データベース・リプレイデータベース統合リプレイSPASPAクイックチェックSPA = SQL Performance Analyzer 負荷テストのソリューション 問題を検出して修正• SQL応答時間のテスト・ソリューション• 性能に問題のあるSQLを識別し、調整• オンプレミス、あるいはOracle Cloudのためのデータベース統合のキャパシティ・プランニング• データベースの性能に対する定期的なDBAタスクを事前に特定
本番環境のSQLワークロードをテスト環境で再現し、SQL単位のパフォーマンス比較が可能• システム変更前後などで実行計画を比較• 実行計画が変動するSQLが特定でき、性能劣化が予測されるSQLに関しては事前に対策、運用後のトラブルを軽減劣化が予測されるSQLのチューニングが容易に• パフォーマンスを比較するだけではなく、SQLチューニング・アドバイザやSQL計画管理を併用することでSQLチューニングも実施可能• Oracle Enterprise Managerで自動的にグラフィカルなレポーティングを出力、チューニング後の確認も画面上から可能SQLパフォーマンス・アナライザ(SPA)Copyright © 2021, Oracle and/or its affiliates150
SQLパフォーマンス・アナライザ: 処理の流れCopyright © 2021, Oracle and/or its affiliates151クライアントAPサーバーDBサーバー /ストレージ①SQLワークロード取得②変更前のSQL実行③変更後のSQL実行④分析実行計画(変更後)実行計画(変更前)比較分析SQL Tuning Set:指定期間に実行されたSQL群の情報実行計画(変更後)実行計画(変更前)STS STSテスト環境本番環境
システム変更後にコストを抑えながら高い信頼度で検証を実行し、確実な改善を達成• 分析可能なシステム変更例• DBアップグレード、パッチ、初期化パラメータの変更• OS、HW、DBの構成変更• 索引の追加、パーティション化、マテリアライズド・ビューなどの変更• オプティマイザ統計情報の収集および更新• SQLプロファイルの作成などのSQLチューニング操作• プラガブル・データベース(PDB)またはスキーマ統合手法を使用したデータベース統合テストSQLパフォーマンス・アナライザ: ユースケースCopyright © 2021, Oracle and/or its affiliates152
SPAクイック・チェック• 本番データベース上でシステム変更を簡単に、素早く検証• ボタン1つをクリックするだけで初期化パラメータ変更の影響、オプティマイザ統計収集の影響、キーSQLプロファイル実装の影響といったDBAタスクを検証• Oracle Enterprise Manager Cloud Controlに含まれる機能SPAクイック・チェックCopyright © 2021, Oracle and/or its affiliates153DBAテスト環境 本番環境SPAを実行したい…実行するには、安全だけど…しかし• 別途HWが必要• テストデータは本番データと同等であるべき• 変更により、タスクに時間がかかったり、エラーが発生しやすい実行するには簡単だけど…しかし• リソースを大量に消費し、本番パフォーマンスに影響を与える可能性がある• 変更は手動でプライベートセッションにスコープする必要がある• 完了するのに長時間がかかるかもしれない• デフォルトでリソース制御がない
初期化パラメータ変更の影響検証• 変更する前に、データベース・ワークロードへの影響を検証• alter session文で変更できる値オプティマイザ統計の影響検証• オプティマイザ統計を収集する前に、データベース・ワークロードへの影響を検証キーSQLプロファイル実装の影響検証• 自動SQLチューニング・アドバイザで自動実装で作成されるプロファイル(キーSQLプロファイル)を実装前に、プロファイル実装の影響を検証自動SQLチューニング・アドバイザの統計結果の検証SPAクイック・チェック: ユースケースCopyright © 2021, Oracle and/or its affiliates154
実稼働ワークロードによるデータベースの負荷とパフォーマンスのテスト• タイミング、トランザクション依存性などの作業負荷特性を完全維持トランザクションのスループットをテストおよび測定• 本番展開前にテスト・システムのアプリケーション・スケーラビリティと同時実行性の問題を特定使用シナリオ• プラットフォームの移行 (例えば Exadata)、アップグレード、パッチ適用、新しいデータベース機能またはオプションの実装などデータベース・リプレイCopyright © 2021, Oracle and/or its affiliates155
データベース・リプレイ: 処理の流れCopyright © 2021, Oracle and/or its affiliates156分析レポートキャプチャファイルキャプチャファイルリプレイ・クライアント①ワークロードをキャプチャキャプチャ時のCPU使用率3 ~ 5%程度②前処理 ③リプレイ ④分析DBサーバー /ストレージクライアントAPサーバーDBサーバー /ストレージ本番環境 テスト環境
リプレイ実行後、比較レポートを生成• ワークロード・リプレイレポート• AWR比較レポート• ASHレポートキャプチャ時とリプレイ時の違い• パフォーマンスの違い• エラーの内容• リプレイ時に発生した新規エラー• キャプチャ時に発生しリプレイ時に発生しなかったエラー• キャプチャ時に発生しリプレイ時に発生したエラー• データの違い• キャプチャ時と異なる行数が変更されたDML• キャプチャ時と異なる行数が返されたSELECTデータベース・リプレイ: 分析結果Copyright © 2021, Oracle and/or its affiliates157
データベース・リプレイ 一般的な負荷ツールテストシナリオ 不要。本番ワークロードをキャプチャし、リプレイするだけで本番負荷を再現。必要。本番相当のワークロードを擬似的に作成し、広範囲に及ぶテストシナリオの作成が必要となり、時間とコストがかかる。「テストシナリオが不十分 = テスト品質が不十分」作成者のスキルに依存。テスト担当 データベース管理者 アプリケーション担当者負荷テスト環境 DBサーバー環境APサーバーが使用できない状況でも負荷テストが可能APサーバーとDBサーバー環境が必要テスト データベース・レイヤに限定し負荷をかけるため DB担当者が本番のワークロードをキャプチャすることで繰り返しリプレイすることが可能負荷ツールとテスト対象アプリケーション両方に精通している必要がある分析 データベース管理者だけで負荷テストが実施でき、理解しやすい分析結果のレポートが出力される。アプリケーションがデータベース全体に与える影響を検証するには、DB 担当者のデータベース性能結果分析スキルが必要。アプリケーション担当者だけでは、負荷テストの実施から分析までを完結することができない。データベース・リプレイ: 一般的な負荷ツールとの比較Copyright © 2021, Oracle and/or its affiliates158
データベース統合を管理するための包括的なエンド・ツーエンド・ソリューション推測による作業や人的ミスを排除することにより正確な統合アプローチを提供• 過去のワークロードに基づく分析(データベースおよびホストのメトリック)• 計画から展開までの統合のすべての段階における自動化さまざまなシナリオに柔軟なアプローチを提供• ExadataまたはOracle Cloudへの統合をサポート計画• 統合候補データベースのAWRを利用した統合に関するアドバイスを提供移行• EMプロビジョニング機能 を使用しデータベースを新しい統合プラットフォームに移行することで統合計画を実装検証• 統合データベースでテスト・ワークロードを実行することで統合計画を検証データベース統合リプレイCopyright © 2021, Oracle and/or its affiliates159
複数の環境を組み合わせてテストを実施データベース統合リプレイCopyright © 2021, Oracle and/or its affiliates160本番環境CRMDB1HCMDB2DWHDB3WindowsDB 11gR2AIXDB 11gR2HP-UXDB 12cR2Capture 1 Capture 2 Capture 35月31日月末処理6月15日ピーク時6月18日ETL処理テスト環境統合リプレイ・ディレクトリリプレイCapture 1 Capture 2 Capture 3
Copyright © 2021, Oracle and/or its affiliates161Oracle Data Masking and Subsetting
非本番環境へ安全にデータを共有Oracle Data Masking and Subsetting PackCopyright © 2021, Oracle and/or its affiliates162利点• テスト環境、開発環境から機密データの漏洩防止• データのサブセット化によるストレージコストの最小化• テストデータが監査の対象外となるコンプライアンス・コストを削減機能• 機密性の高い列、表の親子関係を自動検出• 包括的で拡張可能なマスキング変換• 統合型のデータ・サブセット化0100101100101010010010010010010010010010010010001001010100100100100111001001001001001001000010010010111001001010100100101010100110101001010100100000011111111000SSN463-62-9832クレジット・カード3715-4691-3277-8399SSN463-62-9832576-40-7056518-12-6157281-50-3106クレジット・カード3715-4691-3277-83995136-6247-3878-32013599-4570-2897-44525331-3219-2331-9437本番テスト/開発555-12-12345555-5555-5555-4444機密性の高い情報を不可逆な形式にマスキング
機密性の高い列と表の親子関係を自動で検出Data MaskingCopyright © 2021, Oracle and/or its affiliates163• あらかじめ組み込まれた検出パターンによって、Oracle Databaseの表から自動的に機密情報(例: クレジットカード番号、メールアドレス)、個人情報を含んだカラムを検出• データベース・オブジェクトの参照関係、親子関係も自動で検出
拡張可能なマスキング・フォーマット・ライブラリ事前定義済みのマスキング・フォーマットを提供マスキング・フォーマットはカスタム可能• ランダムな数字、文字列、日付• 置換• ユーザ定義のPL/SQL関数マスクされた値のサンプルを生成E-Business SuiteとFusion Applicationsのテンプレートを提供Data MaskingCopyright © 2021, Oracle and/or its affiliates164事前定義されているフォーマット定義したフォーマットによるサンプル生成様々なマスキング形式
マスキングの例Data MaskingCopyright © 2021, Oracle and/or its affiliates165Country IdentifierCA 226-956-324US 610-02-9191UK JX 75 67 44 CCountry IdentifierCA 368-132-576US 829-37-4729UK AI 80 56 31 D Emp ID First Name324 Albert986 HussainEmp ID First Name324 Charlie986 MuraliEmp ID First Name324 Charlie986 Murali経理Company Closing PriceIBFG $36.92XKJU ¥789.8Company Closing PriceIBFG $89.57XKJU ¥341.9フォーマットを維持してランダム値へ変換一貫性を持ったアウトプットの生成人事条件に沿ったマスクBLOB31789734566509876745Search : [0-9]{10}Replace : *BLOB********************BLOB として格納されたファイルのマスクシャッフルID COUNTRY1 US2 JP3 US4 UK5 FRID COUNTRY1 US2 FR3 UK4 JP5 USCountry カラムの値に応じたフォーマットを作成(Country が UK なら [英字][英字][6桁の数字][英字])通貨、桁数を変えずに、ランダム数値でマスク
表と表の関連性を維持したままデータのサブセットを生成サブセットの生成前に不要な行を削除することで、セキュリティ・リスクを軽減テスト環境のストレージ・コストを削減2つのサブセット化方式を提供• 目標ベース: 相対的なデータベース・サイズ(本番1TB、テスト用100GBなど)、相対的な表サイズ• 条件ベース: Where句により、以前の日付のデータ破棄やある地域のデータの抽出など可能Data SubsettingCopyright © 2021, Oracle and/or its affiliates166100%100M Rows 20%20M Rows2%2M Rows目標ベース相対的なサブセット条件:DepartmentID=10条件ベースWhere句条件によるサブセット
Copyright © 2021, Oracle and/or its affiliates167Oracle Machine Learning
高度な分析をデータベース内で実行できる機械学習プラットフォームデータ分析にかかる変換コスト、データ移動コストの削減• Oracle Database標準機能としてDB内で処理完結• データの移動コストを最小化• データ前処理 (変換/補完)、モデル生成が高速• RやPythonのスクリプトをDB内で実行• 分析サーバーを別途用意する必要なしシステム化、実装のコストの削減• MLモデルをDB内に生成• そのままDBのデータに適用可能• 高性能、スケーラブルでセキュアなプラットフォーム機械学習をすべての人に• 機械学習ベースのソリューションを活用するすべての人をサポート• オープンソースパッケージを活用して、機能を拡張可能Oracle Machine Learningの概要Oracle Machine LearningOML Microservices*Supporting Oracle ApplicationsImage, Text, Scoring, Deployment,Model Management * Coming soonOML4SQLOracle Advanced AnalyticsSQL APIOML4Py*Python APIOML4ROracle R EnterpriseR APIOML Notebookswith Apache Zeppelin onAutonomous DatabaseOML4SparkOracle R Advanced Analyticsfor HadoopOracle Data MinerOracle SQL Developer extensionCopyright © 2021, Oracle and/or its affiliates168
オラクルの取り組み従来の分析環境RDBMSなどオリジナル・データのある場所からデータをツール内に移動して分析を実行データが存在する場所で分析を実行分析• モデリングのデータの準備・移動に時間や手間がかかる• データの絞り・サンプリングでモデル作成• シングルスレッドが主流(マルチスレッドには工夫が必要)• ファイル等の持ち出しによるセキュリティの問題• アドホックな運用環境のスキルが必要• 本番環境へのモデルのデプロイには様々な作業が必要• データの移動が不要でモデリングに手間要らず• 全量分析が可能• 手軽にマルチスレッドが可能• DB内から外へデータを出さずに分析• 分析や機械学習のスキルセットで運用• DB内のモデルはSQLで簡単に本番環境へ適応・更新データ分析をデータベース内で実行Copyright © 2021, Oracle and/or its affiliates169データ移動分析?データ移動Flat File
回帰(Regression)線形モデル(LM)一般化線形モデル(GLM)サポート・ベクター・マシーン(SVM)ステップワイズ線形回帰ニューラル・ネットワーク異常検出(Abnormally Detection)1クラスSVM相関(Association Rules)Apriori/バスケット分析属性評価(Attribute Importance)最小記述長(Minimum DescriptionLength)CUR行列分解教師なしペアワイズKLダイバージェンスA1 A2 A3 A4 A5 A6分類(Classification)決定木(Decision Tree)(2項分類)一般化線形モデル(GLM)単純ベイズ(Naïve Bayes)ランダム・フォレスト(Random Forest)サポート・ベクター・マシン(SVM)明示的セマンティック分析(ESA)ニューラル・ネットワーククラスタリング(Clustering)期待値最大化法(EM)k平均法(k-means)直交パーティショニング・クラスタリング(O-Cluster)時系列(Time Series)指数平滑法 等(単純,、2重、Holt-Winters法、Regular & Irregular,with and w/o trends & seasonal 含む)特徴抽出(Feature Extraction)明示的セマンティック分析 (ESA)Non-Negative Matrix Factorization(NMF)特異解分析 (SVD)主成分分析 (PCA)教師無し Pair-wise KL Div予測問合せ(Predictive Queries)クラスタリング問合せ特徴抽出問合せ異常検出問合せ統計関数(Statistical Functions)基本関数:最小、最大、メジアン、標準偏差、t検定、F検定、ピアソン分布、カイ二乗検定、 分散分布(ANOVA)等SQL関数:行列の選択、条件式、結合、等Oracle Machine Learning Algorithms and AnalyticsCopyright © 2021, Oracle and/or its affiliates170
データベースに統合された機械学習エンジン• Oracle Database, Autonomous Databaseの機械学習機能への迅速なアクセスでSQLユーザを支援データベース内で完結した並行・分散アルゴリズム• 別の機械学習エンジンへのデータ抽出の必要無し• 高速性と拡張性を兼ね備える• 実時間バッチスコアリング• 予測に対して根拠を示すデータベースオブジェクトとしての機械学習モデル• パーミッションに基づいたアクセスコントロール• ユーザの行動を監視• 異なるデータベース間でモデルのエクスポート/インポートOracle Machine Learning for SQL (OML4SQL)Copyright © 2021, Oracle and/or its affiliates171SQL InterfacesSQL*PlusSQL Developer…OracleAutonomousDatabaseOML NotebooksOracle Database
シンプルなSQL文を用いた分類モデルの活用例OML4SQL: モデルの作成とリアルタイム予測BEGINDBMS_DATA_MINING.CREATE_MODEL(model_name => 'BUY_INSUR1',mining_function => dbms_data_mining.classification,data_table_name => 'CUST_INSUR_LTV',case_id_column_name => 'CUST_ID',target_column_name => 'BUY_INSURANCE',settings_table_name => 'CUST_INSUR_LTV_SET');END;SELECT prediction_probability(BUY_INSUR1, 'Yes'USING 3500 as bank_funds, 825 as checking_amount, 400 as credit_balance, 22 as age,'Married' as marital_status, 93 as MONEY_MONTLY_OVERDRAWN, 1 as house_ownership)FROM dual;モデル作成(PL/SQL)リアルタイムスコアリング(SQLクエリ) ※クエリ内で予測され結果が取得できますCopyright © 2021, Oracle and/or its affiliates172
Autonomous Database上でデータサイエンティストが協力し合うためのUI• Autonomous Data Warehouse Cloudの標準機能機械学習ソリューションをビルド、評価、デプロイ可能• Apache ZeppelinベースのNotebook型SQLインターフェイス複数のデータソースや複数のAutonomous Databaseサーバーにアクセス可能• 複数のユーザが1つのノートブックを開くことが可能でユーザによる変更は他のユーザに即座に反映• SQLやPL/SQLスクリプト言語を分析し値を抽出、機械学習アルゴリズムがインサイトや予測を提供Oracle Machine Learning NotebooksCopyright © 2021, Oracle and/or its affiliates173
データベースの機能としてRの実行環境を提供• Rの処理をデータベース・サーバーへオフロード• データ・フレーム上またはOracle Databaseの表でRを実行可能• DB内統計エンジンとの連携• R関数の透過的な実装• コマンド、コンソール、ワークスペースは通常のRと同じものを利用可能企業のデータベースをRで利用• データベース内のデータに対してダイレクトかつ透過的に処理• 大規模データセットをRで扱うことが可能高いパフォーマンス• 自動で並列処理をデータベース内にて実行• クライアントのパフォーマンスに頼ることのなくRを実行Oracle Machine Learning for R (OML4R)Copyright © 2021, Oracle and/or its affiliates174OML4RSQL InterfacesSQL*PlusSQL Developer…
R言語を使用した機械学習機能R言語の処理を透過的にOracle Database内の処理に変換することで、大規模、かつ複雑な分析を実現します。Database内処理に変換できない部分もDatabaseサーバー上でRプロセスを実行しますOML4RのアーキテクチャCopyright © 2021, Oracle and/or its affiliates175R EngineR EngineR Engine Other RpackagesRの処理をDatabase内の処理に変換・オフロードOML4RR EngineOML4RSQL/R R結果 結果Databaseサーバー内で外部プロセスとしてRを実行することも可能Other RpackagesRクライアント• RスクリプトをOracle Databaseで実行するようにスクリプトを発行します。• グラフの描画や処理フローの制御は、通常のRの機能を利用し、クライアント側で実行します。Oracle Database内部での実行• Rの関数をSQLに変換して実行します。• Oracle Databaseの並列実行の仕組みを活用し、大量のデータに対応します。• Oracle Databaseの持つ統計関数、データマイニング機能を内部的に活用します。Oracle DatabaseサーバーでのR実行• データベースが複数のRのプロセスをデータベースサーバー上に外部プロセスとして起動します。• SQLやPL/SQLからRのスクリプトを呼び出し可能です。分析者Oracle Databaseサーバー外部プロセス(旧称Oracle R Enterprise (ORE))
Oracle SQL Developer*で手軽に分析ワークフローを作成可能データサイエンティストの生産性を向上• 典型的なデータサイエンスの作業を自動化• 簡単にドラッグ&ドロップが可能なインターフェイス• 手軽に分析ワークフローを定義・共有• 多様なアルゴリズムとデータ変換• SQL文を生成することで速やかなデプロイが可能に*Oracle DatabaseのためのSQL開発ツールOracle Data MinerCopyright © 2021, Oracle and/or its affiliates176
大規模分析に向けて更なる高速化のためにORE透過層を利用した検証事例• データの加工、モデルの作成、スコアリングなどの各種処理を透過層にて処理できる場合は、さらなる高速化が期待できます• 一例として、新日鉄住金ソリューションズ様による検証では、透過層の利用により、OSS Rと比べ、処理時間を約40分の1に短縮可能なことを確認できましたご参考情報• 検証結果の特集記事 (左の画像)https://blogs.oracle.com/dbjp/oracle-advanced-analytics-v2Oracle Machine Learning (旧: Oracle Advanced Analytics) 事例Copyright © 2021, Oracle and/or its affiliates177
Oracle SpatialCopyright © 2021, Oracle and/or its affiliates178
空間データ、地理データの高度な活用を実現する空間データベースプラットフォームOracle SpatialCopyright © 2021, Oracle and/or its affiliates179Oracle DB上で空間データを検索、分析• 空間データを扱うためのデータ型、関数、プロシージャを提供• SQLで空間演算子による空間データの検索、分析が可能• Partition、パラレルクエリなどOracle DB機能も併用し、分析処理を高速化高度な空間情報活用を実現する各機能• 最短経路など、最適なルートを探索するルーティングシステム• 動線上の位置情報に様々な情報を付随させる線形参照システム• 空間データの高速な検索を実現する空間索引機能• 異なる座標系の空間データを自動的に変換する座標系変換機能継続的に品質向上、機能拡張に注力• Rasterデータや3Dデータへの対応、KMLのサポート• Oracle 12cでは更なる高速化のパラメータを追加他社GISソフトウェアとの高い親和性• Autodesk社 : MapGuide/OnSite• ESRI社:ArcGIS/ArcView• GE社:Smallworld
空間データを豊富な関数とSQLで扱える多様な機能性• 変換、分析~バリデーションや修正まで• 測地系の明示的/暗黙的変換• 空間分析、集計関数、線形参照システム..パフォーマンスおよびスケーラビリティ• R-Tree型空間索引による高速な空間検索• Oracleの並列化/高速化技術を享受• Spatial Vector Acceleration(SVA)組み込み容易性• ほとんどの機能はSQLベースでのアクセスが可能• 空間関連処理をDBへオフロードOracle SpatialCopyright © 2021, Oracle and/or its affiliates180ベクトルデータ関連の実装関数 約250種• 豊富な空間位相判定• 空間データの変換、分析関数、測地系変換• ラスター、3Dデータ、点群、TINにも対応一般的なGeoDatabaseの限界を突破• 検索範囲を範囲階層で絞り込む索引構造• パーティションによるパラレルクエリ対応• 索引のパーティション化にも対応• SVAにより更なる高速化SQLで空間データを自在に扱える• 上述の空間判定、変換、分析関数も• アプリケーションは結果の取り扱いに注力ラスターデータ関連の実装関数 約190種• オルソ補正、光学補正、モザイク化、ピラミッド化• 演算(ラスター代数)
種々のデータにSQLでアクセス可能Oracle SpatialCopyright © 2021, Oracle and/or its affiliates181Topologies3D / LiDARRasterNetworksPolygonsLinesPointsLocationTracking(Geofencing)SELECT a.customer_name, a.phone_numberFROM policy_holders aWHERE sdo_within_distance( a.geom, hurricane_path_geom,‘distance = 10 unit = mile’) = ‘TRUE’;Spatial Analysis Through SQL
Big Data SQLCopyright © 2021, Oracle and/or its affiliates182
Oracle SQLを利用して、すべてのデータへ効率的にアクセスOracle Big Data SQLCopyright © 2021, Oracle and/or its affiliates183Oracle DatabaseKafka NoSQLHadoop Object StorageOracle Big Data SQLAny SQL Client様々なデータストアに簡単アクセスHDFS、NoSQL、Kafka、Object Storage全てのデータストアに一貫したセキュリティを提供OracleのSQLで全量データを分析Smart Scanによる高パフォーマンスクエリの実現
外部表として、HDFSなどのデータへアクセスOracle Databaseの外部表• SQLやJavaなどのアプリケーションからは普通の外部表としてアクセス• Oracle Databaseのセキュリティ機能も有効分散環境におけるスケーラブルなデータ処理• HDFS、NoSQLなど様々なストレージから効率的なRead処理を実施• Oracle型にデータを変換し、SQL処理を実施• 選択、射影、結合• 関数処理• 集計Big Data SQLアーキテクチャCopyright © 2021, Oracle and/or its affiliates184Hadoop ClusterDataNodeBDSQLDataNodeBDSQLDataNodeBDSQLDataNodeBDSQLHiveMetadataObjectStoresKafka NoSQLPython GraphRnode.js JavaREST SQLOracle Database+ Big Data SQL
Oracle Databaseのセキュリティモデルを適用Big Data SQLセキュリティ機能Copyright © 2021, Oracle and/or its affiliates185Hadoop SecurityACL’s | Sentry | HDFS Encryption | Encryption in Motion• Oracle Databaseと同様のセキュリティモデルをより広範なデータストアに適用• データリダクションなど高度な機能が適用でき、異なるソリューション間で結合が可能
Oracle Databaseを介せずにHDFS等のデータにSQLでアクセスQuery Server• Oracle Database不要(ライセンス含む)• エッジサーバー上にデプロイされるクエリエンジン• HDFSやKafka、Object Storage、NoSQLに従来のBDSと同じようにSQLアクセス可能• メンテナンス不要• Cloudera Manager、Ambariから管理Query ServerCopyright © 2021, Oracle and/or its affiliates186Hadoop ClusterDataNodeBDSQLDataNodeBDSQLDataNodeBDSQLDataNodeBDSQLHiveMetadata Edge NodeBDSQL QueryServerObjectStoresKafka NoSQLPython GraphRnode.js JavaREST SQL
標準構成とQuery Server構成の比較Copyright © 2021, Oracle and/or its affiliates187標準構成Oracle Database + Big Data SQLQuery ServerSQL Support Oracle SQL Oracle SQLサポートされるOracle Database4.1.1: 19.94.1: 19.6, 19.84.0: 18c3.2.x: 12.1, 12.2N/A (database included)Oracle Databaseとしての利用 Supported Not supportedHive Metadata連携 手動(+ tooling) 自動同期セキュリティ HDFS + Sentry + Oracle Database AdvancedPoliciesHDFS + Sentryデプロイメント Data Nodes + Oracle Database 19c Data Nodes + Edge Nodeインストール作業 Hadoop側でのセットアップOracle Database側でのセットアップHadoop側セットアップ時にDB (Query Server)を自動構築
Oracle Databaseへのネットワーク接続Oracle Net ServicesCopyright © 2021, Oracle and/or its affiliates188
Oracle Databaseのネットワーク接続に関係するコンポーネントの総称Oracle Databaseのネットワーク接続に関わるOracleNetプロトコルやOracleリスナー・プロセスなどのコンポーネントの総称をOracle Net Servicesという。OracleクライアントからOracleサーバーへの接続だけでなく、 Oracleサーバー同士を接続するDatabase LinkやData GuardなどもOracle Net Servicesの役割。Oracle Net ServicestnslsnrOracleクライアントOracle Net ServicesDatabase LinkData GuardOracle NetプロトコルOracleインスタンス• 共有メモリー• バックグラウンド・プロセスOracleリスナー・プロセス• 接続リクエスト受信データベース• ファイルの集合Copyright © 2021, Oracle and/or its affiliates189
メジャーな言語をカバー マルチ・プラットフォーム 接続可能なバージョン組み合わせOracleクライアントからの接続Copyright © 2021, Oracle and/or its affiliates190言語 APIC OCI, ODBC, ODPI-CC++ OCCIJava JDBC.NET ODP.NETNode.js node-oracledbPython cx_OraclePHP OCI8, PDO_OCIR ROracleErlang erlociPerl DBD::OracleRuby ruby-oci8Rust rust-oracleGo goracle, go-oci8Julia Oracle.jiクライアント サーバーWindows x64Linux x86-64Solaris SPARCSolaris x86HP-UXAIXzLinuxWindows x64Linux x86-64Solaris SPARCSolaris x86HP-UXAIXzLinuxクライアント サーバー12c Release 211g Release 212c Release 112c Release 218c19cある程度バージョンに幅がある詳細はAppendix
tnslsnrOracleインスタンスとネットワーク接続リクエストを受けるOracleリスナー・プロセスが独立している(1) OracleクライアントはOracleリスナー・プロセスの保持するTCPサーバー・ソケットに対して接続リクエストを発行する。(2) Oracleリスナー・プロセスがOracleサーバー・プロセスを生成し、Oracleリスナー・プロセスが確立したTCPコネクションをOracleサーバー・プロセスに引き継ぐ。(3) OracleクライアントのプロセスはOracleサーバー・プロセスとTCP接続する。この接続形態を専用サーバー(Dedicated Server)接続という。これが最も基本的な接続形態。Oracle DatabaseアーキテクチャOracleクライアントOracleインスタンス• 共有メモリー• バックグラウンド・プロセスOracleリスナー・プロセス• 接続リクエスト受信データベース• ファイルの集合oracle Oracleサーバー・プロセス• SQL処理の主体(1)(2)(3)Copyright © 2021, Oracle and/or its affiliates191
Oracle Databaseサーバーの接続先を指定する記法「サービス」に接続するという概念接続記述子(Connect Descriptor)• Oracle Netの全パラメータを指定することが可能な記法• これをあらかじめ定義して別名をつけておくファイルがtnsnames.ora簡易接続(EZCONNECT)• Layer 4以下のプロトコルをTCP/IPに決め打ちし簡略化した記法• 本番システムの高可用性構成(RACやData Guard)では使用しない簡易接続プラス(EZCONNECT Plus) 19c以降• EZCONNECTに接続記述子のパラメータを指定できるように拡張した記法(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP) (HOST = hostname) (PORT = port))(CONNECT_DATA = (SERVICE_NAME = service) ))hostname:port/servicetnslsnrserviceTCP/IPサーバー・ソケットデータベースのワークロードの抽象概念Copyright © 2021, Oracle and/or its affiliates192
Oracleクライアントは「サービス」に接続するデータベースのワークロードを抽象化した概念サービスservice1ノード1 ノード2Oracleインスタンスの名前• INSTANCE_NAME• SID (ORACLE_SID)データベースの名前• PDB_NAME• DB_UNIQUE_NAME• DB_NAME「サービス」とはデータベースのワークロードを抽象化した概念であり、Oracleインスタンスの名前でもなくデータベースの名前とも異なる抽象概念である。クラスタ・ノードの仮想化共有ストレージ・共有キャッシュ型クラスタ・データベースであるOracle Real Application Clustersは複数のOracleインスタンスが同じサービスを担当できるので、Oracleクライアントからは「サービスに接続する」という概念で複数ノード構成であることを仮想化している。マルチ・テナント・アーキテクチャ1つのOracleインスタンスが複数のプラガブル・データベース(PDB)をホストしているが、PDBごとに異なるサービス名があるので、Oracleクライアントは「サービスに接続する」という概念で接続するPDBを区別している。PDB1 PDB2 PDB3service2service3Copyright © 2021, Oracle and/or its affiliates193
「サービス」で接続するデータベースを区別するプラガブル・データベース(PDB)ごとに一意なサービス名を持っている各Oracleインスタンスはデータベースのワークロードを抽象化した「サービス」という属性を持っている。コンテナ・データベース(CDB)構成の場合はプラガブル・データベース(PDB)ごとに一意なサービス名を持っている。1つのOracleリスナー・プロセスが同一のTCP/IPポートで複数のOracleインスタンスへの接続リクエストを担当できる。Oracleリスナー・プロセスはどのサービスをどのOracleインスタンスが担当しているかを把握している。Oracleクライアントはサービス名を指定して接続リクエストを発行し、Oracleリスナー・プロセスはそのサービスを担当する適切なOracleインスタンスにリクエストをルーティングする。tnslsnrOracleクライアントNon-CDB1Oracleインスタンス1Oracleインスタンス2service1 service2Oracleリスナー・プロセスPDB2 PDB3service3CDB2host:port/service1 host:port/service2Copyright © 2021, Oracle and/or its affiliates194
標準機能で高可用性構成に対応Oracle Net Servicesが持つ付加機能Copyright © 2021, Oracle and/or its affiliates195接続ロード・バランスRACの複数ノードに対して負荷分散クライアント接続フェイルオーバー接続に失敗したら別の接続先を試行クライアントコネクション・プール接続確立処理の省略クライアント サーバーoraclepool高速アプリケーション通知クラスタウェアとコネクション・プールが連携クライアントpool
RACにはクラスタを代表するSingle Client AccessName (SCAN)リスナーがあり、どのサービスをどのOracleインスタンスが担当しているかを認識している。サービスがアクティブになっているOracleインスタンスに接続リクエストをリダイレクトして負荷分散する。接続確立後はクライアント・プログラムとOracleサーバー・プロセスはTCPコネクションで直結される。RACの複数ノードに負荷分散接続ロード・バランスtnslsnrOracleinstance1Oracleinstance2tnslsnrノード 1 ノード 2tnslsnrservice1 service1tnslsnrservice1instance1instance2(1)接続リクエスト発行SCANリスナーOracleクライアント(2)リダイレクトCopyright © 2021, Oracle and/or its affiliates196
データベース・サーバー側の高可用性構成に接続ドライバが対応新規コネクション確立失敗時のフェイルオーバー• 接続時フェイルオーバー確立済みコネクション切断時の自動再接続と再実行• 透過的アプリケーション・フェイルオーバー• アプリケーション・コンティニュイティ(※)接続フェイルオーバーCopyright © 2021, Oracle and/or its affiliates197tnslsnrOracleinstance1Oracleinstance2tnslsnrノード 1 ノード 2service1 service1OracleクライアントtnslsnrOracleinstance1Oracleinstance2oracleノード 1 ノード 2service1 service1Oracleクライアント※Enterprise Edition RACもしくはActive Data Guard
接続確立処理の省略クライアント側コネクション・プールOracle接続ドライバ側のコネクション・プール• Universal Connection Pool for Java (UCP)• OCI Session Pool• ODP.NETサーバー側コネクション・プールOracleクライアント側でプールできない場合の次善策• Database Resilient Connection Pool(DRCP)• Oracleサーバー・プロセスをあらかじめ生成しておくコネクション・プールCopyright © 2021, Oracle and/or its affiliates198Oracleinstance1OracleクライアントPooloracle oracleOracleinstance1OracleクライアントApporacle oracle
Oracle Clusterwareとコネクション・プールの連係Oracle ClusterwareとOracleクライアントのコネクション・プール間に、SQL実行用コネクションとは別にイベント通知用のコネクションを持つ。高速接続フェイルオーバー(Fast Connection Failover: FCF)• サービスの起動及び停止、ノード停止イベントの通知• クライアントは停止したノードとのコネクションをTCPタイムアウトを待たずに切断できるランタイム接続ロード・バランス(Runtime Connection Load Balance: RCLB)• サーバー側で最適な負荷配分を算出して通知• プールされたコネクションから負荷配分を考慮してSQLを実行するインスタンスを決める高速アプリケーション通知(Fast Application Notification: FAN)Copyright © 2021, Oracle and/or its affiliates199Oracleinstance1Oracleinstance2ノード 1 ノード 2service1 service1OracleクライアントClusterware ClusterwarePoolFANイベント FANイベントSQL実行用コネクションFAN用コネクション
Copyright © 2021, Oracle and/or its affiliates200外部表
データベース内の表にあるデータと同様に、外部ソースのデータにアクセス可能CREATE TABLE で宣言するだけで外部ソースをテーブルとしてアクセス可能• 通常のテーブルと異なり実データをデータベース内に持たない• データにアクセスするために表にデータを事前にロードしておく必要がない• 外部ソースの変更は表の検索結果に即座に反映外部表の概要Copyright © 2021, Oracle and/or its affiliates201外部ソースOracle Database外部表SELECT * FROMCUSTOMER_LIST問合せHiveHDFSバイナリファイルテキストファイルCUSTOMER_LIST
外部ソースにアクセスするためのインターフェイスとして外部ソースをデータベース外から読み込むデータをロードするためのインターフェイスとして外部ソースからCREATE TABLE AS SELECTやINSERT文でデータを高速にロードすることが可能複数のノードでパラレル処理を実行可能外部表のユースケースCopyright © 2021, Oracle and/or its affiliates202Oracle Database外部表Oracle Database外部表外部ソース 実表ロード外部ソース
外部ソースもハイブリッド・パーティションに利用可能外部表の例①:ハイブリッド・パーティションCopyright © 2021, Oracle and/or its affiliates203Oracle DatabasePartition_2018Partition_2019Partition_2020Partition_2021データファイルデータファイルHybrid Partition表テキストファイルテキストファイル
HDFSやApache Hiveに格納された外部ソースもハイブリッド・パーティションに利用可能外部表の例②:ハイブリッド・パーティションとBig DataCopyright © 2021, Oracle and/or its affiliates204Oracle DatabaseHybrid Partition表HDFSHiveデータファイルデータファイルPartition 1Partition 2Partition 3Partition 4
外部ソースを実表にロードするユーティリティ• データベースとは異なるシステム上の外部ソースをネットワーク経由でロード可能• 排除されたデータやエラーとなったデータは、OSファイルとして出力SQL*LoaderCopyright © 2021, Oracle and/or its affiliates205外部ソースSQL*LoaderOracle Database実表ロードBad FilesDiscardFiles
Copyright © 2021, Oracle and/or its affiliates206データベース・リンク
Oracle Databaseから他のデータベース上にあるスキーマ・オブジェクトへのアクセスを可能にする機能クライアントが接続しているOracle Database (ローカル・データベース)上のオブジェクト(表など)と同様にネットワーク経由で他のデータベース(リモート・データベース)上の表に対して操作が可能データベース・リンク(Database Link)Copyright © 2021, Oracle and/or its affiliates207ローカル・データベース リモート・データベースSELECT ~FROM DEPT@RemoteWHERE ~DEPTクライアントデータベース・リンク
分散トランザクションの実施リモート表に対しても、ローカル表と同様に参照・更新を同一トランザクションとして、処理可能マテリアライズド・ビューとの連携リモート・データベース(マスター・サイト)のデータをもとにマテリアライズド・ビューでデータをローカル・データベース(マテリアライズド・ビュー・サイト)に複製可能ローカル・データベース リモート・データベースユースケースCopyright © 2021, Oracle and/or its affiliates208リフレッシュにより、マスター・サイトのデータを反映ローカル・データベースUPDATE SALES@Remote ~;INSERT INTO EMP ~;COMMIT;リモート・データベースクライアントデータベース・リンク SALESEMP同一トランザクションとして処理データベース・リンク
Copyright © 2021, Oracle and/or its affiliates209マテリアライズド・ビュー
概要• サマリーとして集計結果を格納しておくスキーマ・オブジェクト• 事前に集計処理した結果セットを保持しておくことで検索処理時間の短縮を図る• 特徴• 参照先をマテリアライズド・ビューに透過的に変換するクエリー・リライト• 最新データを迅速に反映する高速リフレッシュマテリアライズド・ビュー(Materialized View: MVIEW)Copyright © 2021, Oracle and/or its affiliates210事前集計済みのデータをSELECT都度SELECT遅い高速!!SELECT結果を事前に格納売上集計(マテリアライズド・ビュー)都道府県支店 製品日時売上明細CREATE MATERIALIZED VIEW 売上集計ASSELECT ~FROM 売上, 製品, 支店, 日時WHERE ~
売上集計(マテリアライズド・ビュー)都道府県支店 製品日時売上明細• 発行されたSELECT文がマテリアライズド・ビューの定義と同義である場合に、該当するマテリアライズド・ビューを参照させる機能• アプリケーションの書き換えなしに検索処理を高速化クエリー・リライト機能Copyright © 2021, Oracle and/or its affiliates211オプティマイザ クエリー・リライトSELECT ~FROM 売上、製品、支店、日時WHERE ~SELECT ~FROM 売上集計WHERE ~マテリアライズド・ビューを参照するよう自動変換(クエリー・リライト)
更新差分のみを適用することで迅速なリフレッシュが可能• マテリアライズド・ビューをリフレッシュ(データ更新)することで、元表の変更(データロード、挿入、更新、削除)を反映• リフレッシュ・オプション• リフレッシュのタイミング• 元表に対するCOMMIT発行時• 元表に対するDML実行時• 手動実行(DBMS_MVIEWパッケージを利用)• リフレッシュ方法• 完全リフレッシュ(データを再集計)• 高速リフレッシュ(差分更新、右図)高速リフレッシュCopyright © 2021, Oracle and/or its affiliates212売上集計(マテリアライズド・ビュー)売上明細高速リフレッシュ挿入更新マテリアライズド・ビュー・ログ変更差分
Copyright © 2021, Oracle and/or its affiliates214Automatic Indexing
パフォーマンスに対するアプローチ性能に関する機能はDBのエキスパートの存在を前提としている• エキスパート(DBA、開発者)が機能の使い方や使い時を理解していることが前提• 担当者のスキルセットに大きく依存• アドバイザリ機能を「いつ」、「どのように」活用し、「どのタイミング」でアドバイスを検証・実装するかはDBA任せAutomatic Indexingは自動でDBのエキスパートと同等の索引チューニングが可能• 自動で高度な索引チューニングを行うことで最高のパフォーマンスを低コストで実現Automatic IndexingCopyright © 2021, Oracle and/or its affiliates215従来の索引チューニング Automatic Indexing*Autonomous Databaseを含むExadata上でのみ利用可能
自動で絶え間なく索引チューニングを実行手間のかかる索引チューニングをDBA不在でも実現アプリケーション・ワークロードを監視して、自動的に索引の作成や削除などの管理を行う候補索引の識別、利用前の検証を行う• 全プロセスが完全自動• アプリケーション、DB設計を変更する必要なし• 全てのチューニング・アクティビティがリポートより監査可能15分おきに左図のオペレーションが自動で実行され、アプリケーション・ワークロードの性能向上に役立つ索引を作成・検証・有効化・監視するこの機能により、単一索引、結合索引、ファンクション索引、圧縮索引を作成するAutomatic IndexingCopyright © 2021, Oracle and/or its affiliates216CaptureIdentifyVerifyDecideOnlineValidationMonitor
Capture, Identify Candidates, Verify1. Capture (取得)• 定期的にアプリケーションのSQL履歴をSQLリポジトリに取得する(SQL、実行計画、バインド変数、実行統計など)2. Identify Candidates (候補索引の特定)• アプリケーション・ワークロードに役立つ(性能向上する)候補索引を特定する• 候補索引をunusableおよびinvisible状態にて作成(メタデータの変更のみ)• 新たに作成された索引により不必要となった索引を削除(論理統合)3. Verify (検証)• オプティマイザに新たに作成した候補索引を使用するか確認• 索引を作成し、SQLを実際に実行、新しい索引により性能向上がみられるか検証を行う• 全ての検証はアプリケーション・ワークロードの外で行われるAutomatic Indexingの動作Copyright © 2021, Oracle and/or its affiliates217CaptureIdentifyVerifyDecideOnlineValidationMonitor
Decide, Online Validation, Monitor4. Decide (索引の決定)• 全てのSQLの性能が向上した場合、索引はvisibleとなる• 全てのSQLの性能が低下した場合、索引はunusableになり、後に自動で削除される• 一部のSQLの性能が低下するが、全体的に性能が向上する場合、索引はvisibleとなる5. Online Validation (オンライン検証)• 他のSQLに対する新たな索引の有効性検証はオンラインで継続• 1セッションだけが新たな索引を利用することが許される6. Monitor (監視)• 索引の利用状況は継続的に監視• 自動的に作成された索引は長期間利用されないと削除されるAutomatic Indexingの動作Copyright © 2021, Oracle and/or its affiliates218CaptureIdentifyVerifyDecideOnlineValidationMonitor
制御可能な範囲Automatic Indexingの利用Copyright © 2021, Oracle and/or its affiliates219有効、無効の設定自動索引削除の期間指定 索引を作成する表領域の指定利用可能な表領域のサイズ指定スキーマ単位での有効/無効
Copyright © 2021, Oracle and/or its affiliates220オプティマイザ統計
オプティマイザとは• 目的地へのルート探索と同じように、データにアクセスするためのルートを選択する機能• ルート探索の際に道路や交通の状況を考慮するのと同様に、Oracle Databaseでは表の情報、データのばらつき、システムの情報といった統計情報をインプットとして最も処理時間の短い(コストの低い)実行計画を選択するオプティマイザの概念Copyright © 2021, Oracle and/or its affiliates221AB1時間12分58分45分①②③ルート 距離 予想所要時間 渋滞有無① 21km 45分 無② 16km 58分 有③ 22km 1時間12分 有
データ変動に応じて適切な実行計画を選択するための情報表、索引、データの種類、データ分布などのデータ特性を表す情報オプティマイザはインプットの一部として統計情報を使用してコストを見積もり、最もコストの低い実行計画を選択するデータベースを運用する中で日々変化していくデータに対して、適切な実行計画に基づいてデータへアクセスするために適切な統計をタイムリーに収集することが重要オプティマイザ統計Copyright © 2021, Oracle and/or its affiliates222SQLテキストオブジェクト構造初期化パラメータオプティマイザ統計Oracle Databaseオプティマイザ実行計画
オプティマイザ統計の種類Copyright © 2021, Oracle and/or its affiliates223種類 主な構成内容 オプティマイザによる利用のされかた表統計 行数、平均行長、データ・ブロック数 表スキャンおよび表結合のコストを判断する列統計個別値の数、NULLの数、最小値/最大値、ヒストグラム関連情報、拡張統計正確なカーディナリティの見積もりを生成し、索引の使用、結合順序、結合方法などについての決定を行う索引統計索引内の個別値数、リーフ・ブロックの平均数、データ・ブロックの平均数、階層数索引スキャンのコストを判断するシステム統計 CPUパフォーマンスと使用率、I/Oパフォーマンスと使用率実行計画を選択する際に、I/OおよびCPUコストをより正確に見積る
オプティマイザ統計の収集方法Copyright © 2021, Oracle and/or its affiliates224収集方法 概要自動オプティマイザ統計収集実データの変動をOracle Databaseが適切に認識するために、定期的にオプティマイザ統計を新しい情報に自動更新する収集方法高頻度自動オプティマイザ統計収集デフォルトで15分ごとにオプティマイザ統計を収集することで、自動オプティマイザ統計収集を補完するExadata専用機能データが頻繁に更新されるデータベースでも適切な統計を収集することが可能オンライン統計収集 DDLおよびDML操作によって自動的にトリガーされる統計収集方法処理をきっかけとして統計収集を行うため、データが頻繁に更新されるデータベースでも適切な統計を収集可能オプティマイザ統計の手動収集 DBMS_STATSパッケージを使用することで、自動統計収集の代替または補足として、オブジェクト、スキーマ、データベースなどの様々なレベルに細分化してオプティマイザ統計を手動収集することが可能
統計がない、または統計が古いデータベース・オブジェクトのオプティマイザ統計を、事前定義されたメンテナンス時間枠で自動収集デフォルトでは、各曜日に対応するメンテナンス時間枠が設定されている• 月曜日~金曜日:22時から翌2時まで• 土曜日・日曜日:6時から翌2時まで必要に応じて自動メンテナンス・タスクを無効にしたり、メンテナンス時間枠を変更することが可能自動オプティマイザ統計収集Copyright © 2021, Oracle and/or its affiliates22522:00 02:00実行イメージ:自動統計オプティマイザ統計収集の実行時間
• オプティマイザ統計を高頻度に収集(デフォルトで15分毎)するExadata専用機能• 古い統計(10%を超える変更)のみを収集する軽量タスク• データが頻繁に更新されるデータベースでも適切な統計を収集することが可能• 制御可能な範囲は以下の通り• 有効、無効の設定(デフォルトは無効)• 最大実行時間• 実行間隔高頻度自動オプティマイザ統計収集Copyright © 2021, Oracle and/or its affiliates22622:00 02:00:自動統計オプティマイザ統計収集の実行時間:高頻度オプティマイザ統計収集の実行時間実行イメージ
DDLおよびDML実行時にオプティマイザ統計を収集する表への更新をきっかけとして統計収集を行うため、データが頻繁に更新されるデータベースでも適切な統計を収集可能• バルク・ロードのためのオンライン統計収集• バルク・ロード中に統計を収集する(デフォルト無効)• パーティション・メンテナンス操作のオンライン統計収集• 以下のパーティション操作中に統計を収集するMOVE, MERGE, COALESCE• リアルタイム統計(Exadata専用)• DML (INSERT/UPDATE/MERGE)操作の一部として統計を収集する• 行数、最小値、最大値といった最も重要な統計のみが収集されるオンライン統計収集Copyright © 2021, Oracle and/or its affiliates227
DBMS_STATSパッケージを使用することで、自動統計収集の代替または補足として、オブジェクト、スキーマ、データベースなどの様々なレベルに細分化してオプティマイザ統計を手動収集することが可能手動で統計を収集する必要がある例• 自動メンテナンスタスクの実行まで待機することができない場合に、任意のタイミングで統計を収集したい• CPUの高速化、メモリーの増設、ディスク記憶域の交換など、環境に物理的な変化が生じたときにシステム統計を収集したいオプティマイザ統計の手動収集Copyright © 2021, Oracle and/or its affiliates228プロシージャ 収集対象GATHER_INDEX_STATS 索引統計GATHER_TABLE_STATS 表、列および索引の各統計GATHER_SCHEMA_STATS スキーマのすべてのオブジェクトの統計GATHER_DICTIONARY_STATSSYSやSYSTEMなどのすべてのシステム・スキーマのほか、CTXSYSやDRSYSなどのオプション・スキーマの統計GATHER_DATABASE_STATS データベース内ですべてのオブジェクトの統計GATHER_SYSTEM_STATS システム統計
Copyright © 2021, Oracle and/or its affiliates229サーバー結果キャッシュ
Oracle Databaseインスタンス繰り返し実行される問合せのレスポンスを向上SQL問合せ結果キャッシュ• SQL問合せの結果セットを共有プールに格納• ブロックの再読取りおよび結果の再計算という多くのリソースを消費する操作を行う必要がなくなる• 結果の構成に使用されているデータの更新が行われた場合、そのキャッシュは自動的に無効化されるPL/SQLファンクション結果キャッシュ• ファンクションの結果セットを共有プールに格納サーバー結果キャッシュCopyright © 2021, Oracle and/or its affiliates230ORDERSORDER_ITEMSPRODUCT_INFORMATIONCUSTOMERSSQL問合せ結果キャッシュキャッシュ済みの結果が返され、高速レスポンス1. SELECT 2. SELECT初回アクセス時にSQL問合せの結果セットをキャッシュ
SQL問合せ結果キャッシュ 使用方法RESULT_CACHEヒントを使用して問合せまたは問合せ断片にヒントを付け、結果をSQL問合せ結果キャッシュに保存することを指定※ RESULT_CACHE_MODE初期化パラメータを変更することによって、ヒントを付けなくてもSQL問合せ結果がキャッシュされるように変更可能です。しかしながら、すべての問合せをキャッシュするためメモリーの枯渇にご注意ください。サーバー結果キャッシュCopyright © 2021, Oracle and/or its affiliates231SELECT /*+ RESULT_CACHE */ department_id, AVG(salary)FROM hr.employeesGROUP BY department_id;
Copyright © 2021, Oracle and/or its affiliates232Memoptimized Rowstore
高頻度な単一行挿入処理を最適化例: 測定温度の書込み 遅延挿入による高速収集• ラージ・プールに一時的にバッファリング• 非同期のストレージ書き込み• ストレージに書き込むときに変更を自動的にコミット使用方法• 表に対してMEMOPTIMIZE FOR WRITEを宣言し、INSERT文でMEMOPTIMIZE_WRITEヒントを指定• 特殊な列や索引などがある表では使用できない• 圧縮、列デフォルト値、列暗号化、ファンクション索引、ビットマップ索引、未使用列、仮想列、LOB、トリガー、外部キー、ネストした表、索引構成表、外部表などMemoptimized Rowstore – 高速収集Copyright © 2021, Oracle and/or its affiliates233ラージ・プールIoT Client非同期のストレージ書き込みバッファに書き込み収集バッファ時刻 温度05:50 52o05:55 54o06:00 54o06:05 55oINSERT into tempVALUES(‘6:05’, 55)
高頻度な問合せのパフォーマンスを高速化例: Joeの残高照会 ハッシュ索引による高速な主キー参照• Memoptimizeプールにデータとハッシュ索引を格納使用方法• Memoptimizeプールを有効化し、表に対してMEMOPTIMIZE FOR READを宣言• 制限事項• 表は圧縮できない• 主キー制約を有効にする必要があるMemoptimized Rowstore – 高速参照Copyright © 2021, Oracle and/or its affiliates234Memoptimizeプール50Hash Index BuffersCUST ID NAME BAL5 Jack 121 Ying 7631 Joe 3212 Maria 31SELECT bal FROM balanceWHERE cust_id = 31Client
Flashback TechnologyCopyright © 2021, Oracle and/or its affiliates235
過去のデータにアクセスする機能Flashback DatabaseFlashback Logを利用し、データベースをリストアポイントや時間/SCN指定で巻き戻す機能物理的なリストア、リカバリ操作無しにデータベースを過去の状態に戻す事が可能• 通常のリストアポイントの利用• 保証付きリストアポイントの利用Logical Flashback表・トランザクションなどを対象に過去データの参照だけでなく、トランザクションの巻き戻しなども可能な機能Flashback TechnologyCopyright © 2021, Oracle and/or its affiliates236機能名 解説Flashback Query 過去データの検索が可能Flashback Version Query 過去データの各バージョン(データ)を取得可能Flashback Transaction Query トランザクションおよびメタデータ・履歴データを取得可能Flashback Transaction オンラインでのトランザクションロールバックが可能Flashback Data Archive 表に対する全トランザクションを追跡および格納可能Tx
概要の理解Flashback DatabaseCopyright © 2021, Oracle and/or its affiliates238ミス! 30分前に戻りたい …Flashback Database TO TIME “戻したい時間” リストアポイント(戻したい地点の設定) SCN(戻したい変更点へ) 時間(戻したい時間へ)例えば30分前に巻き戻し(Flashback Logの適用)FlashbackFlashback 未設定の場合は、従来のリストア、リカバリを実施するFlashback Logの取得
リストアポイントについてFlashback DatabaseCopyright © 2021, Oracle and/or its affiliates239種類 解説リストアポイント無し Flashback Database Windowと呼ばれる巻き戻し可能範囲内で戻る通常のリストアポイント 制御ファイル内に記録された巻き戻す時点(SCN)情報(自動的にエージアウトされる)保証付きリストアポイント 制御ファイル内に記録されたエージアウトされない巻き戻す場所(SCN)情報これ以降であれば任意の時点へFlashbackが可能ただし、高速リカバリ領域が枯渇すると、エラーとなるので注意(ORA-19809、ORA-19804)Flashback Log変更される前の状態を保持(高速リカバリエリア内)Flashback Database Windowリストアポイントまたは保証付きリストアポイント
Flashback Databaseの使用について• Flashback Databaseの有効化• 高速リカバリ領域の設定とFlashback Databaseの有効化が必要Flashback DatabaseCopyright © 2021, Oracle and/or its affiliates240高速リカバリ領域関連パラメータ初期化パラメータ 必須 説明DB_RECOVERY_FILE_DEST_SIZE Yes ディスク割当て制限を指定します。ディスク割当て制限は、このデータベースのリカバリ領域で使用されるデータの最大格納量をバイト単位で示したものDB_RECOVERY_FILE_DEST Yes リカバリ領域の場所を指定します。ファイル・システム上のディレクトリまたはASMディスク・グループを指定DB_FLASHBACK_RETENTION_TARGET No データベースをFlashbackできる時点の上限(分)を指定します。このパラメータは、Flashback Databaseでのみ必要SQL>ALTER DATABASE FLASHBACK ON; ALTER DATABASE FLASHBACK OFF;
Flashback Databaseと性能について• 最適なFlashback Databaseのパフォーマンスのための環境の構成• 高速リカバリ領域のI/O性能に大きく影響されるので、可能な限り高性能な環境を準備する• 十分なディスク・スピンドルを準備する、または非揮発性RAMなどを採用するなど• Flashback Databaseのパフォーマンスに対する影響の監視• AWRレポート/スナップショットの情報 (flashback buf free by RVWR)のチェック• V$FLASHBACK_DATABASE_STATビュー• V$SYSSTATビューFlashback DatabaseCopyright © 2021, Oracle and/or its affiliates241列名 列の意味physical write I/O request データ・ブロックの書込みのために発行された書込み操作の数Physical read I/O request データ・ブロックの読取りのために発行された読取り操作の数Redo writes REDOログへの書込みのために発行された書込み操作の数Flashback log writes Flashback Logへの書込みのために発行された書込み操作の数Flashback log write bytes このインスタンスから書き込まれたFlashback Databaseデータの合計バイト・サイズ
制約および留意点• メディア障害の修復またはデータファイルの誤った削除からのリカバリには使用できません• データファイルの縮小操作を元に戻すことはできません• Flashback Databaseのみを使用して、削除されたデータファイルを回復することはできません• 制御ファイルがバックアップからリストアされるか、または再作成されると、すべての累積Flashback Log情報が破棄されます• Flashback Databaseを使用して、制御ファイルのリストアまたは再作成が行われたときより前に戻すことはできません• NOLOGGING操作が行われていたターゲット時刻を指定してFlashback Databaseを使用すると、NOLOGGING操作の影響を受けたデータベース・オブジェクトとデータファイルのブロックが破損している可能性があります• NOLOGGING操作と同時の目標時点またはSCNでFlashback Databaseを使用することを避けてくださいFlashback DatabaseCopyright © 2021, Oracle and/or its affiliates242https://docs.oracle.com/cd/F19136_01/bradv/using-flasback-database-restore-points.html#GUID-28EB12CA-6E98-4ED4-A798-1326E4A938AB
Multitenant ArchitectureとFlashback DatabaseCDB単位でのFlashback Database PDB単位でのFlashback DatabaseFlashback DatabaseCopyright © 2021, Oracle and/or its affiliates243CDB 全体をFlashbackプラグされているPDBもFlashbackされる(CDB ROOTでリカバリポイントを持つ)特定のPDBのみをFlashback(PDBごとにリストアポイントを持つ)
Flashback機能概要• 自動UNDO管理により格納されたトランザクションに関するメタデータおよび履歴データが利用される• Flashback 機能の利用範囲(期間)はUNDO表領域のサイズに依存するLogical FlashbackCopyright © 2021, Oracle and/or its affiliates244※ 参考PDB個別にUNDO表領域を構成可能
自動UNDO管理についてDatabase Configuration Assistant(DBCA)を使用してデータベースを作成すると、自動拡張可能なUNDO表領域が自動的に作成される• UNDO管理用の初期化パラメータの概要• 動的パフォーマンス・ビュー: V$UNDOSTATFlashback機能Copyright © 2021, Oracle and/or its affiliates245初期化パラメータUNDO_MANAGEMENT AUTOまたはNULLの場合は、自動UNDO管理が使用可能MANUALの場合は、手動UNDO管理モードとなる (デフォルトはAUTO)UNDO_TABLESPACE 自動UNDO管理モードの場合のみ有効(オプション)でUNDO表領域の名前を指定するデータベースに複数のUNDO表領域があり、データベース・インスタンスで特定のUNDO表領域を使用するように指定する場合にのみ使用UNDO_RETENTION 最小UNDO保存期間(秒単位)を指定現行のUNDO表領域に十分な領域がある場合にのみ有効
Flashback機能(アプリケーション開発機能あるいは管理者向け機能)Flashback機能Copyright © 2021, Oracle and/or its affiliates246機能名 解説 特記事項Flashback Query 過去のある時点で存在していたデータを取得可能 本資料内で解説Flashback Version Query 特定の時間間隔に存在した、特定の行の各バージョン(データ)を取得可能Flashback Transaction Query 特定の時間間隔内における特定のトランザクションまたはすべてのトランザクションのメタデータおよび履歴データを取得可能Flashback Transaction データベースがオンラインである間にトランザクションおよびその依存トランザクションをロールバック可能DDL操作、LOBデータなど一部で制約ありFlashback Data Archive 存続期間中、表に対する全トランザクションの変更を追跡および格納可能 本資料内で解説一部の表構成で制約あり
Flashback Queryの使用例Flashback機能Copyright © 2021, Oracle and/or its affiliates247現在のデータ2020-12-04 14:30:06 のデータ過去のデータTx
Flashback Data ArchiveとはFlashback Data Archiver プロセス(FBDA)は、存続期間にわたって表に対するトランザクションの変更を追跡し、格納できる機能を提供するこれにより、表をいつでもFlashbackして、元の状態にリストア可能オブジェクトと維持条件を指定し有効化する事で、意識的に過去データを利活用できる使用例:デフォルトのFlashback Data Archive fla1を作成(最大10GBの表領域tbs1を使用し、データは5年間保持)CREATE FLASHBACK ARCHIVE DEFAULT fla1 TABLESPACE tbs1QUOTA 10G RETENTION 5 YEAR;表inventoryおよびstock_dataのFlashback Data Archiveを有効にして、デフォルトのFlashback Data Archiveに履歴データを格納ALTER TABLE inventory FLASHBACK ARCHIVE;ALTER TABLE stock_data FLASHBACK ARCHIVE;2007年の年初にすべての品目の在庫を取得する問合せSELECT product_number, product_name, countFROM inventoryAS OF TIMESTAMP TO_TIMESTAMP ('2007-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS');Flashback機能Copyright © 2021, Oracle and/or its affiliates248
Flashback機能(データベース管理機能)Flashback機能Copyright © 2021, Oracle and/or its affiliates249機能名 解説 特記事項Flashback Table 表を以前の状態にリストアできるTO SCN句、TO TIMESTAMP句、TO RESTORE POINT句などが利用可能だが、システム内のUNDOデータ量に依存するDDL操作済みのものは対応不可Flashback Table処理はロールバックできないFlashback Drop Flashback TableにTO BEFORE DROP句を使用し、Drop Table文を無効化できるFlashback Database 前述のとおり
Copyright © 2021, Oracle and/or its affiliates250