Oracle Database

Oracle Database（オラクル データベース）とは、米国オラクル (Oracle) が開発・販売している、関係データベース管理システム (RDBMS) のことである。Oracle Databaseは世界初の商用RDBMSであり、メインフレームからパーソナルコンピュータまで、幅広いプラットフォームをサポートしている。 行レベルロック ページ単位ではなく処理対象の行のみにロックをかけることにより、待ち時間の発生確率を低減している。また、ロックされた行に対する参照は可能であるため処理待ちが発生しない。 読み取り一貫性 SELECTを発行した時点のデータが読み取れることを保障する機能。更新前のデータが格納されているUNDOセグメント（Oracle8iまではロールバックセグメント：一般的にはトランザクションログ、更新前イメージともいう）を参照することで、排他ロックによるブロックを受けずにデータを読み取ることができる。 堅牢性 REDOログ（更新ログ・ジャーナルログ）のアーカイブとその冗長化、Real Application Clusters (RAC) に代表されるノード分散による運用構成の冗長化や、災害対策のためのデータベース遠隔複製機能（スタンバイデータベース・DataGuard）をもち、ダウンタイムの削減やデータ資産消失を防ぐことが可能である。 移植性 データベースエンジン・コアAPI周りはすべてC言語、各種ツール類はほとんどがC言語またはJavaで記述されており、広いプラットフォームでの移植性を誇る。ユーザの開発する応用プログラムも、C言語、C++、COBOL、JavaまたWindowsではODBC等の規格に対応し移植性は良い。 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仮想マシンを組み込んだ。データベースロケール（i は Internet の略とされている。）。最終バージョンは8.1.7である。 2001年、XMLの入出力など、400もの新しい特徴を有したOracle9i Databaseをリリースする。運用機能の最大の目玉は、パラレルサーバの後継機能として性能と安定性向上を実現したRAC (Real Application Clusters) である。最終バージョンは9.2.0.8となる。 2003年、グリッド・コンピューティングを目指し、グリッド技術を応用したOracle Database 10gがリリースされた。（g は Grid の略とされている。） 2007年 Oracle Database 11gがリリースされた。 2012年 10月1日、サンフランシスコで開催された「Oracle OpenWorld 2012」にて、米Oracleは2013年にマルチテナントデータベース製品「Oracle Database 12c」をリリース予定と発表した。（c は Cloud（クラウド） の略とされている。） 2013年 Oracle Database 12cがリリースされた 2015年1月時点では、国内最新リリースとして Oracle Database 12c Release 1(12.1.0.2)が提供されている。 Oracle RDBMS V6 主要な機能拡張：行レベル・ロック、オンラインバックアップ（アーカイブログ機構）、PL/SQL（無名ブロックのみ） Oracle7 Server (7.0.x, 7.1.x, 7.2.x) 主要な機能拡張：クライアント・サーバ対応 (SQL*Net)、ストアドプロシージャ・トリガーの実装、参照整合性制約の実装 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) 主要な機能拡張：JServer/OracleJVM（DBサーバプロセス内で稼動するJava仮想マシン環境）、マテリアライズドビュー、各種グラフィカルユーザインタフェースツール（GUIツール）・インストーラのJavaアプリケーション化、XML対応 (Oracle XDK) 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 - ） クラウドで有効な「マルチテナント」機能の搭載。 Oracleデータベース製品名は、リリース番号および接尾辞による命名規則に従って命名される。現在の最新リリースのOracle Database 18cの 「c」 は、「Cloud」を表わす。 以前のリリース（Oracle Database 10gおよびOracle9i Databaseなど）では、それぞれ「Grid」および「Internet」のを表す「g」および「i」の接尾辞を使用していた。 接尾辞の採用はOracle8i Database以降で、それより前のOracle Databaseの命名規則に接尾辞は存在しない。 オラクル創業者ラリー・エリソンが「バージョン1を購入したい者はいない」と考えたため、Oracle Databaseのv1は存在しない。 OracleのRDBMSリリース番号は、下記のコードを使用している。 Oracle Database Administrators Guideには、Oracle Databaseの各メジャーリリースで導入されたいくつかの主要な革新的技術の簡単な歴史が記載されています。 Oracle Database Lite ： PDA等の極小リソースでも稼動するモバイルデータベース。実際のデータはOracle Databaseに格納されている。 Oracle Application Server ： Java EE に準拠したウェブアプリケーションサーバ。WebサーバについてはApacheをOracleが改良したものである。 中核となる Java EE コンテナのOC4J(Oracle Containers for Java)は、Orion Application Serverをベースとしている。 Oracle Developer ： ウェブに対応したOracle独自の4GLアプリケーション開発・実行環境 (Forms/Reports) Oracle Designer ： リポジトリベースの統合CASE環境 Oracle E-Business Suite (旧名:Oracle Applications) ： Oracle Database実行環境とForms/Reports環境をベースとした、ウェブ対応のERP製品群 Oracle JDeveloper ： Java/ウェブアプリケーション開発のための統合開発環境 (IDE) Oracle Application Express ： ブラウザで作るブラウザウェブアプリケーション開発ツール Oracle Collaboration Suite ： グループウェア、ファイルサーバ Oracle Content Management SDK Oracle Identity Management Oracle OLAP Server ： H-OLAP (R-OLAPとM-OLAPのハイブリッド型OLAP) サーバ。 Oracle BPEL Process Manager　ビジネスプロセスモデリング製品 Oracle Secure Enterprise Search ： 企業内コンテンツを検索する製品。ユーザアクセス権限を制御しながらgoogleのようなことができる。 Oracle TimesTen In-Memory Database インメモリデータベース Navicat for Oracle Oracle Databaseは大企業向けの市場で高いシェアを誇っているが、近年は他ベンダーが提供するRDB製品も多機能化、高速化が進んでおり、競争が激化している。Oracle Databaseの主要な競合製品には以下の製品がある。 Microsoft SQL Server : 米マイクロソフトのRDB製品。価格がOracle Databaseより比較的安価であるため、主に中小企業向けに出荷されてきたが、他のマイクロソフト製品との連動を武器に大手企業での実績も増えている。 SAP HANA : ヨーロッパ最大級のソフトウェア企業SAPのデータベース製品。高速なインメモリーデータベースに分類されるが、基幹系システムや情報系システムのプラットフォームとして、Oracle Databaseをはじめとした従来のRDB製品からSAP HANAにリプレースする企業が急速に増えている。 SAP Sybase Adaptive Server Enterprise : 証券や銀行で多く採用されているRDB製品。Sybase社が提供していたが、SAPがSybaseを買収したことでSAPの製品ラインナップに加わり、金融機関向けでOracle Databaseと熾烈な競争を繰り広げている。 PostgreSQL : 競合ベンダーの製品ではなく、オープンソースデータベースであるが、近年機能が大幅に拡充され、Oracle Databaseの主要な競合製品として台頭している。 Oracle Databaseに付属するdemobld.sql（Oracle Database 10g以降ではutlsampl.sql）を実行すると「EMP」「DEPT」というふたつのテーブルと「SCOTT/TIGER」というスキーマよりなる伝統的なデモ環境が構築される。「SCOTT」とはオラクルの前身であるSDLに在籍していたBruce Scottを指し、「Tiger」は彼の愛猫の名前に由来する。Scottは優秀な開発者であり最初期のSQL*Plus（英語版）も彼の手によるものとされている。Scottはすでにオラクルを後にしているが、この伝統は変わる様子がない。 Oracleは高機能である反面、システムや操作方法を理解するのが非常に困難であり、ユーザビリティも低い（CUIによる操作がメインである。Oracle Enterprise ManagerでGUIの操作も可能となっているが、CUIによる操作と比較すると限定される）ため、開発・運用がとても難しいと思われている。また、大規模のシステムを構築するには必要不可欠となるOracle Database Enterprise Editionの価格は1プロセッサ（CPU）当たり570万円とかなり高額である。さらに、大規模システムでは各オプション機能(パーティショニング、DataGuard、RAC等)も高価で他社DBの製品自体のライセンス価格に匹敵するものも多い。将来的にライセンスモデルが変更され、従来無かった新たな制限が設けられ、制限の解除に追加料金が発生することもある。 こうしたことから、Oracleは「高飛車である」「高くて難しい」というイメージを持たれていると、日本オラクルのクロスインダストリー統括本部長が明かしている。特にその導入コストを嫌って、こと中小企業での導入率が芳しくないという。 多数の機能を備えるが利用料金が掛かる商用DBから、基本無料のオープンソースDBへの移行も流行している。 過去には日本オラクルは、こうしたイメージを払拭し、中小企業にもOracleを売り込むために、「高くて難しい」といったイメージを都市伝説と定義して中小企業向けのアピールを強化していた。 サポート契約を結んだユーザー以外に対しては、製品にどれだけ重大なバグやセキュリティホールなどの不具合があろうとも、修正パッチの提供はもちろんのことバグ情報の公開も行わない。 また、オラクル社とのサポート契約は基本的に製品購入当時より締結し続けなければならないものとされており、サポート契約を一旦解約した後に再契約しようとする場合は、前回解約時点にまで遡及する形になる。つまり、解約時点までに遡り（解約後から再契約までの間に）サポート契約を締結していた場合に発生していたはずの金額に加えて、プレミアムを加えた額を全額オラクル社に納めなければ再契約できない。そのため場合によっては新規に製品を買い直す方が安価になることが多い。サポートサービス費用が年々値上がりしていくようになっている。 こうしたことから、サポート契約は必須である（解約そのものは可能であるが、解約による弊害が非常に大きく、製品を使い続けるためには解約が不可能に近い）と言える。またサポート契約の締結の有無が原則としてシステム単位でなく企業単位に変更されており、一部のシステムだけ契約を締結することができなくなった。