他のRDB製品はなんとなく知っているけど、Oracle Database 19cについてひとまず(素人ながら)知らないことが多々あると感じたので勉強している。そんな前提をふまえて、ひとまず知ってっておきたいことをまとめました。
Oracleの資格体系も変わってきており、世の中はクラウド化の流れであまりOracleそのものを重視しない世の中になってきている気がしますが…オープンソース化の流れの中で、無料の情報源も充実してはいるのでしょうが、ググり方がけっこう難しいと感じています。
結局、Oracleと名のつく書籍とWebで見られるPDFと誰かが書いたブログを片っ端から眺めていますが情報が断片的で点と点が線につながりにくい。ようやく繋がり始めてはきていますが、もうちょっと最初の段階で知りたかった、ということが多々ある。
…そんな情報をピックアップしてみました。
Oracle12cとOracle19cの違いはあまりない。
Oracel10g~Oracle11g…gはgridの略でハードウェアを組み合わせたグリッドコンピューティングの機能を盛り込んで進化してきた。
それから、Oracle12cとなりcはcloudを意味する。クラウドコンピューティングの機能が充実してきたことを意味するが、オンプレミスで使う分には19cと大差はないと言われている。(その機能差を意識した運用をしないならば無視していい)てか「Oracle 10gと11gの違い」とか「Oracle 11gと12cの違い」とか検索するとOracle社のページがひっとするが読んでもちんぷんかんぷん(苦笑)そんな孤独なユーザはJPOUGというユーザグループの会に参加するといいらしい。
ちなみに12cの次は18cでその次が19cである。18cからはバージョンではなくリリースされた西暦の下二桁を付与するように変更された。18cは2018年に、19cは2019年にリリースしたという意味。
Oracleが他のDBとの差別化される点:データベースエスカレーションが発生しない。
DBは更新時などにレコード、ページ(表の一部)、テーブル(表)の単位でロックをする。Oracleの場合はレコードレベルでのロックを行う機能が優れていると聞いている。ただし、昨今のRDBのロック機構がどれぐらい違いがあるか、調べる必要はあると思う。
※データベースエスカレーション…ロック処理の範囲が広く発生すること。例えば、複数の行ロックで済むところ、ページ単位でのロックがかかることがある。
オールJava化:異なるプラットフォームでも同じ操作が可能。
インストーラーやDB操作のツール(SQL Developer)などがすべてJavaで動作するので異なるプラットフォームでも同じ操作が可能である。
デメリットとしてはJavaゆえ動作が重いが、最近のハードウェア性能の向上により不都合は感じない事が多い。
実際に私も過去に使っていたツールからOracleを触る時はSQL Developerを使っており、起動時は遅いが基本操作でイライラするような重さはそこまで感じていない。ただしベストなツールではない気はする。
表=テーブル
なんか知らんけど、テーブルのことをOracle界では表と言う。
RDBの世界ではテーブルよりも表の方が一般用語かもしれないが、個人的にテーブルと言ったほうがエクセルなどのスプレッドシートとは区別しておきたい(ユーザと話をしていて区別したいと思っているのは私だけかもしれないが)。
ユーザ名≒スキーマ
ユーザを作成するとユーザ名と同名のスキーマが作られる。≒で繋いでいるのは、ちょっと違うものと認識しておかないといけないという意味です。
TAROというユーザを作るとTAROスキーマが作成される。TAROユーザで表Aを作成するとTAROが所有するスキーマとして表Aが保存されて、誰の所有物であるか明確になる。ユーザと紐づいた表(オブジェクト)をいれることができる容器をイメージするといいかもしれません。
なお、TARO.Aが表の完全修飾名(フルネーム)になります。
インスタンス≒データベース
通常というか1台のコンピュータ(シングル構成とか単一インスタンス構成と表現することもある)に試験的にインストールをするとインスタンスとデータベースは同じ名前がつけられて扱われるため、物理的には別の実体である。
データベースはその名の通りデータの実体。
では、インスタンスとはなんだろうか?…インスタンスとは、SGA(システム・グローバル・エリア)=メモリ構造とプロセス類から構成される。Webアプリでいうところのアプリケーションサーバみたいなものだと捉えてもいいかもしれない。
1台のコンピュータ・インスタンスにインストールしていると意識しないが、RAC構成(Oracle Real Applications Clusters)と言って、データベースとは独立させて複数のインスタンスをもたせることもできる。※RACはクラスタ構成と捉えておけばよさそう。
なお、データベースも1つの実体としながらも複数のコンピュータに分散させて耐障害性を高めることができるようになっている…とはいえ、データベースが1に対してインスタンスは1~nの関係になる。
インスタンスとデータベースが同じモノと扱っても差し支えない場合は、同じモノとして文脈で使われることもあるが、本来は別物である。クラスタ構成にしない時も、厳密には違うものと捉えておかないといけない。インストールの時などで構成を選択しなければならない時に迷うので知っておく必要がある。
コメント