18cでは不揮発性メモリの活用、ExadataのRACの最適化などで性能も大きく向上する
続いて猿田氏は、改めてOracle Database 18cの新機能について解説した。数ある新機能のうち、まず取りあげたのがマルチテナントだ。マルチテナントは12cから搭載された機能、コンテナとテナントで構成されるデータベースの仮想化だ。18cでは、プラガブル・データベース(PDB)のホットクローンの機能が拡張されている。これはデータベースが稼働中にライブで別のコンテナ・データベースにクローンを作る機能だ。
18cではPDBスナップショット・カルーセルという新たな機能が追加されている。カルーセルとは回転木馬の意味だ。カルーセルでは取得したPDBのスナップショットのファイルを最大8つまで格納でき、新たにスナップショットが追加されると時間軸的に旧いものが削除される。インターバルを設定し、自動でスナップショットを取得することも可能だ。格納されているスナップショットを指定し、カルーセルの中から直接PDBを作成できる。
もう1つの機能拡張が、PDBリフレッシュの機能を拡張したリフレッシュ可能なPDBのスイッチオーバーだ。12.2で導入されたPDBリフレッシュは、クローンと似た機能で、クローンはワンタイムである時間のものに対しキャプチャをしコピーを取得する。リフレッシュはクローン化したPDBに対し、本番環境の変更を適用し最新の状態にリフレッシュできる。18cではリフレッシュする際のソースとリフレッシュする側の関係を逆転できるようになった。これは、プライマリーを切り替えられることにもなる。ユースケースとしては、たとえばサーバー1とサーバー2上で稼動するPDBの間でPDBリフレッシュが構成されていれば、サーバー2上であるPDBの負荷が上がったためにサーバー2全体のリソースに影響が出てしまった場合いずれかのPDBをスイッチオーバーしてプライマリーをサーバー1へ切り替えることで負荷分散などに利用できる。これは計画的なスイッチオーバーだが、計画外のスイッチオーバーとしても利用可能だ。
セッションでは、PDBリフレッシュの機能を使い、PDBを使って開発環境を作る様子がデモンストレーションで紹介された。開発途中のスナップショットをカルーセルに取得し、テストを行う際にカルーセルの中から好きなPDBのスナップショットを選択して利用できることが示された。
次の話題は性能だ。Oracle Database 18cでは、低レイテンシ・メモリ・トランザクション、不揮発性メモリのサポートで実現する多階層のデータベース・キャッシュ、アクセス頻度の高いデータを自動的に判断してインメモリ・カラムストアに移動する拡張などがあり、これらが性能の向上に大きく寄与していると説明する。
さらに特定の構成にはなるが、パフォーマンスに大きな影響を与える拡張の一つとしてOracle ExadataのReal Application Clusters(RAC)の最適化を取りあげた。ここではRDMA(Remote Direct Memory Access)の技術が使われており、これを使って他のインスタンスノードにある情報を直接見に行くことができる。「バージョン18.1では、UNDOブロックでRDMA-readが使えるようになります」と猿田氏。これによりコンテキスト・スイッチのオーバーヘッドを大幅に回避できるようになる。
また可用性の向上については、パッチの適用中にデータベース・インスタンスを落とさない「ゼロ・インパクト Grid Infrastructureパッチ適用」も取りあげた。RAC構成の際にローリング方式でパッチを適用することでデータベースを利用し続けることができるが、ローリング適用中のノードではGrid Infrastructureのホームの切り替えに伴ってそのノードのデータベース・インスタンスでも再起動が必要だった。これがGrid Infrastructureへのパッチ適用中もそのノードのデータベース・インスタンスは再起動することなく稼動し続けるのだ。これは「クラウドデータベースの可用性レベル99.995%の実現にも活用されていく機能です」と猿田氏は言う。
当日のセッションでは時間切れとなり、この他にも多数あるOracle Database 18cの新機能については説明しきれなかった。今後は随時「Oracle Database Technology Night」などで、18cの新機能の詳細について紹介していくことになる。猿田氏は18cのどんな機能について話を聞きたいか、是非皆さんリクエストしてほしいと呼びかけた。