Oracle Database
Oracle Database(オラクル データベース)とは、米国オラクル (Oracle) が開発・販売している、関係データベース管理システム (RDBMS) のことである。Oracle Databaseは世界初の商用RDBMSであり、メインフレームからパーソナルコンピュータまで、幅広いプラットフォームをサポートしている。
Oracleは高機能である反面、システムや操作方法を理解するのが非常に困難であり、ユーザビリティも低い(CUIによる操作がメインである。Oracle Enterprise ManagerでGUIの操作も可能となっているが、CUIによる操作と比較すると限定される)ため、開発・運用がとても難しいと思われている。また、大規模のシステムを構築するには必要不可欠となるOracle Database Enterprise Editionの価格は1プロセッサ(CPU)当たり570万円とかなり高額である。さらに、大規模システムでは各オプション機能(パーティショニング、DataGuard、RAC等)も高価で他社DBの製品自体のライセンス価格に匹敵するものも多い。将来的にライセンスモデルが変更され、従来無かった新たな制限が設けられ、制限の解除に追加料金が発生することもある。 こうしたことから、Oracleは「高飛車である」「高くて難しい」というイメージを持たれていると、日本オラクルのクロスインダストリー統括本部長が明かしている。特にその導入コストを嫌って、こと中小企業での導入率が芳しくないという。 多数の機能を備えるが利用料金が掛かる商用DBから、基本無料のオープンソースDBへの移行も流行している。
過去には日本オラクルは、こうしたイメージを払拭し、中小企業にもOracleを売り込むために、「高くて難しい」といったイメージを都市伝説と定義して中小企業向けのアピールを強化していた。
RDBMSのデファクトスタンダードとも位置づけられる製品であるが、古くからの仕様を引きずるあまり、標準SQL規格に準拠していない点が多く、他RDBMSとの移行性は良くない場合がある。他RDBMSとの移行の際に問題となりうる主な点には以下のようなものがある。
可変長文字列において空文字列とNULLを区別しない。(正確には空文字列がNULLとして扱われる。例えば、以下の条件式は偽となる。)
比較演算子が通常の演算子としては認識されず、WHERE句の中でしか利用できない。
表を必要としないSELECT文でも、必ず何らかの表(通常DUAL表が用いられる)を参照するFROM句を書かなければならない。
テーブル名や列名、またその別名等に日本語などのマルチバイト文字を使用した場合必ず""で囲む必要があり、そうしないとSQLの動作が保障されず実際に異常な動作をすることが多い。プログラム言語内でSQL文字列をハードコーディングする際に、""で囲むルールを徹底することは非常に困難である。そのためテーブル名、列名、別名等には英数字および一部の記号(_、$、#)のみを使用することが推奨される。