さて、2013年7月、満を持して登場したOracle Database 12c。その後は、Oracleやその他のWebメディアなどから、この新製品についてさまざまな情報が発信されている。とはいえ、それらの情報は、現時点ではどちらかと言えばメーカー提供の「カタログチック」なものが多く、12cの実体に迫っているようなものはまだまだ少ない。ならば、DB Onlineでは、新しいOracle Database 12cの真の姿はいったいどんなものなのか、それに肉薄する情報を発信したいと考えた。そこで、Oracle ACEでもありOracle Databaseには精通しているインサイトテクノロジーの新久保浩二さん、さらには話が脱線しないようお目付役に日本オラクル 製品統括本部 テクノロジー製品技術本部 プリンシパルエンジニアの近藤暁太さんを招き、Oracle Database 12cの真の姿について話を伺った。進行役は谷川が務め、原稿起こしと記事執筆は加山恵美さんにお願いした。
プリミティブなところがごっそり変わったという印象ではない

谷川:7月にOracle Database 12cが国内提供開始となりました。12cの新機能や特徴についてざっくばらんに語っていきたいと思います。まずはマルチテナントアーキテクチャから。コンテナデータベース(CDB)やプラガブルデータベース(PDB)がまだよく分かっていません。どう考えればいいのかな。
新久保:中身までは見ることができないので触った印象ですが、PDBはスキーマです。スキーマがあたかもデータベースのように振る舞っているかのように見えます。例えばライブラリのダンプ(*1)を見ると、PDBはスキーマの拡張のようだと感じています。
近藤:PDBがスキーマと違う点はアプリケーションの実行環境であるということです。アプリケーションに必要なデータベース環境をPDBの中に閉じ込めて分けるというコンセプトになっています。PDBにアプリケーションの環境を閉じ込めて、テナントとして分けると移動しやすくなるという利点が生まれます。
新久保:そうそう。Oracle DatabaseからPDBを見たらどう見えているのかな。
谷川:PDBがスキーマの拡張に見えるというあたり、ユーザーはSQLをたたくとか操作すれば片りんを見ることができるの?
新久保:いいえ、SQLやデータベースのレイヤでは見られません。ただメモリのダンプを取るとスキーマっぽく見えます。
谷川:長年データベースをやっていてどうですかね?気持ち的には。
新久保:違和感ないです。
谷川:オラクルのメッセージとしては「マルチテナント」という新しいアーキテクチャを出したのだけど、手をかけて全く新しい機能を実装したというわけではないのか。もちろん手をかけていないとは言わないけど(笑)
新久保:プリミティブなところがごっそり変わったという印象ではないですねえ。
谷川:ひとつ疑問が。CDBでリソースを共有できるというけど、どこまで本当でしょうか?
新久保:悩ましいです。マルチテナントアーキテクチャにおいて、共有か、非共有か。どちらと言うべきか。揺れる想いみたいなものが……。
一同:(笑)

新久保:データファイルは一部を除き非共有です。メモリは完全に共有。CPUも共有。でも、CPUは分ける方法が用意されているのに対して、メモリだと分ける方法はありません。分けたい時もあるんですよね。
これまでの複数インスタンスの運用とマルチテナントの運用とは方向性が違います。そういう意味では設計が難しくなるかもしれません。単純にぼんとCDBを立て、PDBは最大252個まで積めますが、本当に最大限積んだら大変なことになりそう。
谷川:ハードウェア的には「このくらい積まないとマルチテナントにする意味がない」というような目安はありますか?コア数とか、メモリとか。
新久保:絶対値として数字を出すのは難しいですが、リソース的にはジャブジャブにあったほうがいいでしょうね。
谷川:それこそExadataくらいに(笑)
*1)マルチテナント・アーキテクチャがスキーマっぽく見える件の補足
11gR2で、スキーマの異なるオブジェクトに対して、同一SQL文を実行した際のLibrary Cacheのダンプと12cR1で、プラガブル・データベースが異なるオブジェクトに対して、同一SQL文を実行した際のLibrary Cacheのダンプを比較してみると、あたかも12cR1はプラガブル・データベースが11gR2までのスキーマ構造の拡張として扱われているように見える。
11gR2のカーソルのダンプ
親カーソル抜粋
LibraryHandle: Address=0x8f4edb988 Hash=6428dffc LockMode=0 PinMode=0 LoadLockMode=0 Status=VALD
ObjectName: Name=select /* Welcome to JPOUG */ * from test
子カーソルの依存オブジェクト部分の抜粋(KSHINKUBユーザーで実行)
Dependency: num='1'
Reference=0x80e76fc48 Position=37 Flags=DEP[0001]
Handle=0x914e631f8 Type=TABLE(02) Parent=KSHINKUB.TEST
子カーソルの依存オブジェクト部分の抜粋(KSHINKUB2ユーザーで実行)
Dependency: num='1'
Reference=0x80e73dc48 Position=37 Flags=DEP[0001]
Handle=0x90dbdc3e0 Type=TABLE(02) Parent=KSHINKUB2.TEST
* 11gR2以前は、スキーマが異なるオブジェクトは上記の様に"スキーマ"."オブジェクト"として表現される。
12cR1のカーソルのダンプ
親カーソル抜粋
LibraryHandle: Address=0x103b8e0048 Hash=6428dffc LockMode=0 PinMode=0 LoadLockMode=0 Status=VALD
ObjectName: Name=select /* Welcome to JPOUG */ * from test
子カーソルの依存オブジェクト部分の抜粋(プラガブル・データベースIQPDB01のKSHINKUBユーザーで実行)
Dependency: num='1'
Reference=0x103b96a700 Position=37 Flags=DEP[0001]
Handle=0x103bd16850 Type=TABLE(02) Parent=IQPDB01.KSHINKUB.TEST
子カーソルの依存オブジェクト部分の抜粋(プラガブル・データベースIQPDB02のKSHINKUBユーザーで実行)
Dependency: num='1'
Reference=0x103b8de438 Position=37 Flags=DEP[0001]
Handle=0x103b9000c0 Type=TABLE(02) Parent=IQPDB02.KSHINKUB.TEST
* 12gR1のマルチテナント・アーキテクチャでは、プラガブル・データベースが異なるオブジェクトは上記の様に"プラガブル・データベース"."スキーマ"."オブジェクト"として表現が拡張されている。
≪気になったら今すぐトライアル!≫
Oracle Database 12c トライアル・キャンペーン!

Oracle Database 12cは、もうお試しになりましたか?
Oracle Technology Networkでは、Oracle Database 12cのリリースを記念して、トライアル・キャンペーンを実施中です。 Oracle Database 12c 試用版ソフトウエアをお試しいただき、アンケートに回答していただいた方の中から、合計1,212名様にOracle Database 12cロゴ入りのスペシャルグッズをプレゼントします。Oracle Databaseを使用しているデータベースエンジニアの皆様、ぜひ挑戦してみてください!
Oracle Database 12cトライアル・キャンペーンに参加する!
この記事は参考になりましたか?
- Oracle Database 12c メッタ斬り!連載記事一覧
- この記事の著者
-
谷川 耕一(タニカワ コウイチ)
EnterpriseZine/DB Online チーフキュレーターかつてAI、エキスパートシステムが流行っていたころに、開発エンジニアとしてIT業界に。その後UNIXの専門雑誌の編集者を経て、外資系ソフトウェアベンダーの製品マーケティング、広告、広報などの業務を経験。現在はフリーランスのITジャーナリスト...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
加山 恵美(カヤマ エミ)
EnterpriseZine/Security Online キュレーターフリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Online の取材・記事も担当しています。Webサイト:https://emiekayama.net
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア