
これからプログラミングを始めようという方で、
まずオラクルエンジニアを目指そうという方はあまりいないでしょう。
けれどもデータベースやSQL言語の知識は
IT技術者にとって必須と言っても過言ではありません。
またSQL言語のオラクル独自の拡張であるPL/SQL言語も
初心者にとって敷居の低い、覚えやすい言語です。
一つの選択肢として、視野に入れてみてはどうですか?

まずオラクルを理解しましょう

そもそもオラクルとは
オラクルとは米国のオラクル社が開発・販売している
リレーショナル・データベースです。
20年近く、商用データベースの世界でのトップシェアの位置にあり、
現在もそれを維持し続けています(2019.12時点)。
リレーショナル・データベース
リレーショナル・データベースとはデータの保存・照会・更新といった処理において、
ユーザーの負荷を低くすることを目的とするソフトウェアです。
データベースに格納されたデータはユーザからは表の形式の整理されているように見え、
操作が簡単に行えます。
これはコンマ区切りファイルの編集を
テキストエディターを使って手作業でする代わりに、
EXSELを使うようなものだと思えばイメージしやすいと思います。
リアルタイムで実データの操作ができるようなサイト(たとえばこのブログも)
はたいていデータベースの技術を使っています。
オラクルを支える2つの言語

SQL
国際標準
SQLはオラクル独自のものではなく、
規格が標準化された全てのデータベースで共通の言語です。
ただしベンダーごとに独自の拡張はあります。
対話型
SQLはコードに埋め込まれる場合もありますが、基本的には対話型です。
また初歩の構文もきわめて簡単です。
多くの言語での「Hello world!」にあたるようなSQLの一番簡単なコード
(たとえば任意の表から全てのデータを取り出す)は実際実務で使えるものです。
パフォーマンス
にもかかわらずSQLは奥の深い言語です。
言語の性格からして、考えにくいほど複雑な処理を実行することも可能です。
けれど技術者のレベルに直結するのはパフォーマンスです。
同じ処理を行うSQL文でも、書き方次第でパフォーマンスは天と地です。
すくなくともオラクルエンジニアを名乗るなら、
動けばいいというレベルで書いてはいけないと言うことです。

PL/SQL
PL/SQLはSQL言語のオラクル独自の拡張です。
SQL言語は極めて強力ですが、
たとえば条件分岐や繰り返し処理の機能はありません。
こうした手続き型の機能をSQL言語に付加したのがPL/SQLです。
たとえば条件分岐は[IF……THEN……ELSE……END IF]です。
C言語系の簡潔な表現くらべるといかにも垢ぬけない感じですが、
その分取っつきやすさがあります。
また多くの初心者の、躓きの元になるオブジェクト指向への対応は貧弱です。
これはいいことなのか、微妙ですが。

オラクルエンジニアはなにをするのですか?
バッチプログラム
バッチというのはデータの一括処理というような意味で、
ユーザーの入力が実データにそのまま反映されるリアルタイム処理とは対照的に、
変更点だけを一時データとして記録しておいて、
実データには後刻まとめて反映すると言った処理を言います。
データの更新にタイムラグが出る欠点はありますが、
コンピュータのリソースに無駄が出にくいと言ったメリットもあります。
ですから最新のデータにこだわらない日報・月報などの出力や、
外部データの取り込みなどは主にバッチで処理されます。
データベースがオラクルだと、画面などはJavaで開発してもバッチはPL/SQLというケースは多くなります。
データ構造のデザイン
データベースではデータは表の形で保管されています。
こうした表というより表群をどうデザインするかで
パフォーマンスに大きな差が出たり、業務そのものに支障が出たりします。
いくつか大きなルールはあるのですが、
それを実データに当てはめて、データのデザインをすることは
大変ですがやりがいのある仕事です。
さいごに
かつては王者まで言われたオラクルも、
最近はオープン系のデータベースに押されて、
未だ首位は保っているものの、そのシェアをかなり減らしているそうです。
オラクルに特化するのはどうか、という感じなのでしょうか。
それでも、データベースエンジニアの需要が途絶えることはないでしょう。
これ一本に絞ることは私もお勧めしませんが、
取っつきやすいくせに、奥が深いデータベース技術は
身につけておいて損はしません。