Oracle Database

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

テンプレート:Infobox

Oracle Database(オラクル データベース)とは、米国オラクル (Oracle) が開発・販売している、リレーショナルデータベースマネージメントシステム (RDBMS) のことである。Oracle Databaseは世界初の商用RDBMSであり、メインフレームからパーソナルコンピュータまで、幅広いプラットフォームをサポートしている。

現行バージョン (Oracle Database 12c) における特徴

行レベルロック
ページ単位ではなく処理対象の行のみにロックをかけることにより、待ち時間の発生確率を低減している。また、ロックされた行に対する参照は可能であるため処理待ちが発生しない。
読み取り一貫性
SELECTを発行した時点のデータが読み取れることを保障する機能。更新前のデータが格納されているUNDOセグメント(Oracle8iまではロールバックセグメント:一般的にはトランザクションログ、更新前イメージともいう)を参照することで、排他ロックによるブロックを受けずにデータを読み取ることができる。
堅牢性
REDOログ(更新ログ・ジャーナルログ)のアーカイブとその冗長化、Real Application Clusters (RAC) に代表されるノード分散による運用構成の冗長化や、災害対策のためのデータベース遠隔複製機能(スタンバイデータベース・DataGuard)をもち、ダウンタイムの削減やデータ資産消失を防ぐことが可能である。
移植性
データベースエンジン・コアAPI周りはすべてC言語、各種ツール類はほとんどがC言語またはJavaで記述されており、広いプラットフォームでの移植性を誇る。ユーザの開発する応用プログラムも、C言語、C++COBOL、JavaまたWindowsではODBC等の規格に対応し移植性は良い。

他RDBMSとの互換性

RDBMSのデファクトスタンダードとも位置づけられる製品であるが、古くからの仕様を引きずるあまり、標準SQL規格に準拠していない点が多く、他RDBMSとの移行性は良くない場合がある。他RDBMSとの移行の際に問題となりうる主な点には以下のようなものがある。

  • 可変長文字列において空文字列とNULLを区別しない。(正確には空文字列がNULLとして扱われる。例えば、以下の条件式は偽となる。)
''=''
  • 比較演算子が通常の演算子としては認識されず、WHERE句の中でしか利用できない。
  • 表を必要としないSELECT文でも、必ず何らかの表(通常DUAL表が用いられる)を参照するFROM句を書かなければならない。
  • テーブル名や列名、またその別名等に日本語などのマルチバイト文字を使用した場合必ず""で囲む必要があり、そうしないとSQLの動作が保障されず実際に異常な動作をすることが多い。プログラム言語内でSQL文字列をハードコーディングする際に、""で囲むルールを徹底することは非常に困難である。そのためテーブル名、列名、別名等には英数字および一部の記号(_、$、#)のみを使用することが推奨される。

歴史

1977年ラリー・エリソン、ボブ・マイナー、エド・オーツの3名により、Software Development Laboratories (SDL) が設立された。1979年にSDLは、社名を Relational Software, Inc (RSI) に変更し、その際に初期の商用リレーショナルデータベースとして、Oracle V2を発表した。Oracle V2には、トランザクションの概念はなかったが、基本的なデータベース言語であるSQLを使用することができた。

なお、OracleにVersion 1が存在しないのは、購買層に洗練されたデータベースであることを印象付けるための営業戦略であったといわれている。

1983年、RSIが社名を変更し、Oracle Corporationになる。同年、Oracle version 3がリリースされるが、それは、旧バージョンをC言語により再プログラミングしたものであり、コミットロールバックといったトランザクションの概念をサポートしたものであった。このバージョンでは、使用可能なプラットフォームUNIXまで拡張している。

1984年にリリースされた Oracle 4は読み取り一貫性をサポートした。

1985年、徐々にネットワークが進化していく中で、クライアントサーバモデルをサポートする。また、Oracle 5.0は、分散クエリーを搭載した。

1988年、OracleはERPの市場へ参加する。Oracle Financialsと呼ばれた製品は、これまでのOracle Databaseをもとに開発された。また、Oracle 6.0がリリースされ、PL/SQLや行レベルロックなどをサポートした。また、RACの前身であるシェアードエブリシング型のクラスタリングであるパラレルサーバがサポートされた。

1992年、Oracle7 7.0がリリースされる。このバージョンにおいて、パラレルクエリー、完全制約性、ストアドプロシージャデータベーストリガ、データベースリンク、レプリケーションなどがサポートされた。最終バージョンは7.3.4である。

1997年オブジェクト指向マルチメディアに対応したOracle8 8.0がリリースされる。このバージョンにおいて、パーティショニング機能と新しいカラム型LOB (BLOB型,CLOB型) がサポートされた。またROWIDの仕様変更により大容量のデータをサポートするようになった。

1999年には、インターネット上での使用が高まる中、Oracle8i (R8.1.5 ~) をリリースした。このバージョンには、UNIX/LinuxプラットフォームでもインストーラGUI化や、データベースエンジンにJava仮想マシンを組み込んだ。データベースロケール(iInternet の略とされている。)。最終バージョンは8.1.7である。

2001年XMLの入出力など、400もの新しい特徴を有したOracle9i Databaseをリリースする。運用機能の最大の目玉は、パラレルサーバの後継機能として性能と安定性向上を実現したRAC (Real Application Clusters) である。最終バージョンは9.2.0.8となる。

2003年グリッド・コンピューティングを目指し、グリッド技術を応用したOracle Database 10gがリリースされた。(gGrid の略とされている。)

2007年 Oracle Database 11gがリリースされた。

2012年 10月1日、サンフランシスコで開催された「Oracle OpenWorld 2012」にて、米Oracleは2013年にマルチテナントデータベース製品「Oracle Database 12c」をリリース予定と発表した。(cCloud(クラウド) の略とされている。)

2013年 Oracle Database 12cがリリースされた

製品群

2013年6月時点では、最新リリースとして Oracle Database 12c Release 1(12.1.0.1)が提供されている。

  • Oracle RDBMS V6
    • 主要な機能拡張:行レベル・ロック、オンラインバックアップ(アーカイブログ機構)、PL/SQL(無名ブロックのみ)
  • Oracle7 Server (7.0.x, 7.1.x, 7.2.x)
  • Oracle7 Server (7.3.1 - 7.3.4.5)
    • 主要な機能拡張:データウェアハウス向け機能の実装(ハッシュ結合、ビットマップ索引)、パラレルクエリーによる大規模テーブル検索の高速化、レプリケーション、スタンバイデータベース
  • Oracle8 Server (8.0.3 - 8.0.6.3)
    • 主要な機能拡張:パーティショニングテーブル、Parallel Server(シェアードディスク型のハイパフォーマンス型クラスタリング)、マルチメディア対応(ビデオ・空間データ)、全文検索機能 (Oracle*Context)、LOB型カラムの追加、オブジェクトリレーショナルデータベース機能(オブジェクト型)の導入
  • Oracle8i Database (8.1.5 - 8.1.7.4)
  • Oracle9i Database (9.0.1.1 - 9.0.1.4, 9.2.0.1 - 9.2.0.8)
    • 主要な機能拡張:領域管理の自動化、XMLデータベース機能(XMLType型カラム、DBUri)、ANSI/ISO SQL:1999 準拠構文サポート、クラスタの機能強化 (Parallel Server → Real Application Clusters「RAC」)、DataGuard、削除したデータのリカバリができるフラッシュバッククエリー機能
  • Oracle Database 10g (10.1.0.2 - 10.1.0.5, 10.2.0.1 - 10.2.0.5)
    • 主要な機能拡張:RAC構成ノード間での動的負荷分散運用の実現(RACへのGrid技術導入)、ストレージ管理の自動化 (ASM)、情報統合 (EII) 機能の強化 (OTG、OGC)、削除した表のリカバリができるフラッシュバック機能
  • Oracle Database 11g (11.1.0.6 - 11.1.0.7, 11.2.0.1 -)
    • 性能チューニングやバックアップ・リカバリなどの運用管理の自動化、災害対策機能の強化、非構造化データの処理性能向上、グリッド機能の向上
  • Oracle Database 12c (12.1.0.1 - )
    • クラウドで有効な「マルチテナント」機能の搭載。

関連製品

「SCOTT/TIGER」の由来

Oracle Databaseに付属するdemobld.sql(Oracle Database 10g以降ではutlsampl.sql)を実行すると「EMP」「DEPT」というふたつのテーブルと「SCOTT/TIGER」というスキーマよりなる伝統的なデモ環境が構築される。「SCOTT」とはオラクルの前身であるSDLに在籍していたBruce Scottを指し、「Tiger」は彼の愛猫の名前に由来する。Scottは優秀な開発者であり最初期のSQL*Plusも彼の手によるものとされている。Scottはすでにオラクルを後にしているが、この伝統は変わる様子がない。

Oracleは「高価」で「難しい」

Oracleは高機能である反面、システムや操作方法を理解するのが非常に困難であり、ユーザビリティも低い(CUIによる操作がメインである。Oracle Enterprise ManagerでGUIの操作も可能となっているが、CUIによる操作と比較すると限定される)ため、開発・運用がとても難しいと思われている。また、大規模のシステムを構築するには必要不可欠となるOracle Database Enterprise Editionの価格は1プロセッサ(CPU)当たり500万円とかなり高額である。さらに、大規模システムでは各オプション機能(パーティショニング、DataGuard、RAC等)も高価で他社DBの製品自体のライセンス価格に匹敵するものも多い。こうしたことから、Oracleは「高飛車である」「高くて難しい」というイメージを持たれていると、日本オラクルのクロスインダストリー統括本部長が明かしている。特にその導入コストを嫌って、こと中小企業での導入率が芳しくないという。[1]

日本オラクルは、こうしたイメージを払拭し、中小企業にもOracleを売り込むために、「高くて難しい」といったイメージを都市伝説と定義して中小企業向けのアピールを強化している。[2]

サポート契約

サポート契約を結んだユーザー以外に対しては、製品にどれだけ重大なバグセキュリティホールなどの不具合があろうとも、修正パッチの提供はもちろんのことバグ情報の公開も行わない。

また、オラクル社とのサポート契約は基本的に製品購入当時より締結し続けなければならないものとされており、サポート契約を一旦解約した後に再契約しようとする場合は、前回解約時点にまで遡及する形になる。つまり、解約時点までに遡り(解約後から再契約までの間に)サポート契約を締結していた場合に発生していたはずの金額に加えて、プレミアムを加えた額を全額オラクル社に納めなければ再契約できない。そのため場合によっては新規に製品を買い直す方が安価になることが多い。サポートサービス費用が年々値上がりしていくようになっている。

こうしたことから、サポート契約は必須である(解約そのものは可能であるが、解約による弊害が非常に大きく、製品を使い続けるためには解約が不可能に近い)と言える。またサポート契約の締結の有無が原則としてシステム単位でなく企業単位に変更されており、一部のシステムだけ契約を締結することが難しくなっている。

関連項目

外部リンク

脚注

テンプレート:Reflist
  1. 「高い、難しい」イメージの転換を図るオラクル - Enterprise Watch
  2. 中堅企業向け 都市伝説 - 日本オラクル