ぱと隊長日誌

ブログ運用もエンジニアとしての生き方も模索中

Oracle JDBC ドライバのバージョンを管理する

手元にあるOracle JDBC ドライバのバージョンはどうやって調べるのか?

Oracle Database JDBC開発者ガイド(12.1)に記載があります。

JDBCドライバのバージョンを確認するには、次のサンプル・コードのように、OracleDatabaseMetaDataクラスのgetDriverVersionメソッドをコールします。

import java.sql.*;
import oracle.jdbc.*;
import oracle.jdbc.pool.OracleDataSource;

class JDBCVersion
{
  public static void main (String args[]) throws SQLException
  {
  OracleDataSource ods = new OracleDataSource();
  ods.setURL("jdbc:oracle:thin:HR/hr@<host>:<port>:<service>");
  Connection conn = ods.getConnection();

  // Create Oracle DatabaseMetaData object
  DatabaseMetaData meta = conn.getMetaData();

  // gets driver info:
  System.out.println("JDBC driver version is " + meta.getDriverVersion());
  }
}

次のコマンドを実行すると、JDBCドライバのバージョンを確認できます。

  • java -jar ojdbc6.jar
  • java -jar ojdbc7.jar
スタート・ガイド

JDBC ドライバのバージョンを調べるだけであれば、コマンド実行のほうが使いやすいと思います。

OTNサイトの Oracle JDBC ドライバのバージョンはどうやって調べるのか?

現時点でOTN (Oracle Technology Network)の Oracle JDBC ドライバダウンロードページは以下の記載となっています。

Oracle Database 12c Release 1 (12.1.0.2) drivers
Oracle Database 12c Release 1 (12.1.0.1) drivers
Oracle Database 11g Release 2 (11.2.0.4), (11.2.0.3), (11.2.0.2.0), (11.2.0.1.0) drivers

一見すると Oracle Database のバージョン毎にドライバが用意されているようも見えますが、実際には Oracle JDBC ドライバのバージョンと一致していました。例えば、"Oracle Database 12c Release 1 (12.1.0.2) drivers "からダウンロードした Oracle JDBC ドライバのバージョンは"12.1.0.2"です。
念のため、複数の Oracle JDBC ドライバをダウンロードし、バージョンが一致していることを確認しています。

商用/本番環境で利用する Oracle JDBC ドライバはどこから入手すべきか?

OTNのダウンロードページ(ソフトウェア・ダウンロード)からダウンロードしたソフトウェアはOTN開発者ライセンスがつきます。OTN開発者ライセンス付きのソフトウェアはアプリケーションの開発・テストなどに利用できますが、商用または本番利用には使用できません。

正規ライセンス付きの製品は以下のサイトからダウンロードしてください。
Oracle Software Delivery Cloud
パッチに関しては以下のサイトを参照ください。
Oracle Configuration Support Manager

詳細についてはOTNのソフトウェア・ダウンロードページを参照ください。
ソフトウェア・ダウンロード

実際の開発では利用するドライバのバージョンを指定もしくは制約されることがあるかと思います。可能な限り早いタイミングでDBAもしくはインフラ担当者と相談し、正規ライセンス付きのドライバを入手することをお勧めします。

Oracle Database と Oracle JDBC ドライバのバージョンの関係

Oracle Database JDBC開発者ガイド(12.1)に互換性についての記載があります。

Oracle JDBCドライバのバージョン互換性
この項では、一般的なJDBCバージョンの互換性について説明します。
下位互換性
Oracle Database 12cリリース1 (12.1) JDBCドライバは、現在サポートされているOracle Databaseリリース(11.x.0.x)で認定されています。ただし、10.2.x、10.1.x、9.2.xおよび9.0.1.xなどの旧リリースですでにサポート期間が終了しているデータベース・リリースへの接続はサポートしません。
上位互換性
既存のサポートされているJDBCドライバは、Oracle Database 12cリリース1 (12.1)で動作することが確認されています。

スタート・ガイド

Oracleのブログでも Oracle JDBC ドライバの互換性について説明しています。

JDBCドライバの最新機能を利用するためには、JDBCドライバのバージョンが使用中のOracleデータベースのバージョンと常に同じか、またはOracleデータベースよりも高いバージョンにすることをお勧めします。

【Oracle JDBC】Oracle Databaseの対応バージョンと最新機能 | Oracle Technology Network Japan Blog

Oracle JDBC ドライバのサポート期間

Oracle JDBC ドライバのサポート期間について、Oracle のライフタイム・サポートの説明には明確な記載がありません。
ライフタイム・サポート
恐らくは Oracle JDBC ドライバのバージョンに対応する Oracle Database のサポート期間に従うものと思われます。

Oracle Lifetime Support Policy の資料から Oracle Database のサポート期間を抜粋します。
http://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf

バージョン GA Premier Support 終了 Extended Support 終了
Enterprise Edition 12.1 2013/06 2018/07 2021/07
11.2 2009/09 2015/01 2020/12
11.1 2007/08 2012/08 2015/08
10.2 2005/07 2010/07 2013/07

Oracle Database JDBC開発者ガイド(12.1)」でサポート対象データベースの完全な最新リストとして以下の表を参照するように記載されています。

Interoperability Matrix Database 12.1.0.x Database 11.2.0.x Database 11.1.0.x
JDBC 12.1.0.x Yes Yes Yes
JDBC 11.2.0.x Yes Yes Yes
JDBC 11.1.0.x Yes Yes Yes
Oracle JDBC Frequently Asked Questions

Database / JDBC 10.2.0.x との組み合わせは記載されておらず、サポート対象外となっています。

なお、Oracleのブログではこのような表が掲載されています。

Interoperability Matrix Database 12.1.0.x Database 11.2.0.x Database 11.1.0.x Database 10.2.0.x
JDBC 12.1.0.x Yes Yes Yes Yes
JDBC 11.2.0.x Yes Yes Yes Yes
JDBC 11.1.0.x Yes Yes Yes Yes
JDBC 10.2.0.x Yes Yes Yes Yes
What's New in Oracle JDBC? | Oracle Technology Network's Blog

このエントリは2014/07/08にアップされており、Oracle Database 10.2 のサポート期間だったわけではありません。ですが、Database / JDBC 10.2.0.x との組み合わせをInteroperability(相互運用性)Yesとして記載しています。

この記載の違いと「Oracle Database JDBC開発者ガイド(12.1)」の互換性についての記載から推測するに、サポート期間内の Oracle Databse / Oracle JDBC ドライバは同じくサポート期間内の別バージョンに対しても接続を保証する方針のようです。ただし、いずれかのサポート期間終了とともにサポート対象外となることに注意が必要です。

Oracle JDBC ドライバのJDKサポート

Oracle 11.1 から JDK 1.4以前のサポートが打ち切られました。今後もどこかのタイミングでサポートするJDKのバージョン引き上げが行われるものと思われます。

Oracle JDBC ドライバはいつリリースされるのか?

Oracle JDBC ドライバ のリリース(出荷)日に関する明確な記載は見つかりませんでした。

ただ、Oracleのブログの Oracle JDBC ドライバの互換性について説明しているエントリで以下の記載がありました。

JDBCドライバの最新機能を利用するためには、JDBCドライバのバージョンが使用中のOracleデータベースのバージョンと常に同じか、またはOracleデータベースよりも高いバージョンにすることをお勧めします。

【Oracle JDBC】Oracle Databaseの対応バージョンと最新機能 | Oracle Technology Network Japan Blog

ということは、Oracle Database がリリースされるタイミングではそれに対応した最新のJDBCドライバが用意されている可能性が高く、おそらくは同時リリースされると思われます。

Oracle JDBC ドライバをアップデートする必要があるのか?

他の多くのライブラリと同様に、バージョンアップすべきかどうかはケースバイケースです。バージョンアップすることによるメリット(機能改善や不具合解消など)とデメリット(検証コストや新たな不具合発生の可能性)を考慮して決めることになります。

まとめ

Oracle JDBC ドライバのサポートやポリシーは今後も変更されるものと思われます。また、環境個別の考慮事項もあるかと思います。開発のなるべく早い段階からインフラもしくはDBAと相談し、適切なドライバ(バージョン)を選択することをお勧めします。

リーダーシップの抵抗勢力はどこにいるのか?

新しいことを始めるとき、必ず抵抗勢力がいます。明確に反対しないまでも、協力に消極的な場合もあります。そんな抵抗勢力に対し、どう向き合うべきでしょうか?
同じ職場で働くコンサルタントに相談してみたところ、相手にとってのメリットをアピールして協力してもらう、との回答でした。これはD・カーネギーの『人を動かす』の人を動かす三原則の一つ、「人の立場に身を置く」に通ずる方法だと思います。

ですが、果たして抵抗勢力は周囲だけなのでしょうか。隠れた、そして最も手強い抵抗勢力は自分自身なのではないでしょうか。

リーダーシップをもって新しい価値観に移行する時、それは人々に何かを失うことを納得させる必要があります。そして、それは自分自身に対してでもあります。
それなのに、他人には痛みに耐えることを求めながら、自分は痛みを避けようとしていないでしょうか。それどころか、他人にも自分にも痛みに耐えて前進するよう求めることを避けていないでしょうか。理想を語って変えられない現実を嘆く。そうやって、リーダーシップのとれない自分をかばっていないでしょうか。そんなとき、自分自身がリーダーシップに対して最大の抵抗勢力となってしまっていると思うのです。

マーティ・リンスキーとロナルド・ハイフェッツの『最前線のリーダーシップ』では自分が属する組織やコミュニティをリードする際、自分自身が問題の一部であったことを認めるべきとしています。組織をリードする時、その中にいる自分もまた痛みを感じることに覚悟しなければなりません。

もしあなたが、組織で責任ある役割を担っており、その組織に問題が起きているとすれば、あなたにも問題が起こった責任の一端があり、問題が手つかずになっている理由の一部があなたにもあることはほぼ明らかである。(中略)あなたがもたらそうとしている変革の障害になり得る部分が、あなたの行動や価値観のなかにもあると知っておく必要がある。
出典:最前線のリーダーシップ

そして、休息も大切です。自分が日々回復できる場所・時間を確保しなければ、消耗してしまうでしょう。

リーダーシップを発揮する過程で、孤独と絶望の日々が訪れるかもしれない。この局面を乗り切るためにもパートナーが必要だ。
また、自分自身に戻れる聖域が必要だ。祈りでも瞑想でも散歩でも、バーでスコッチの氷を眺める事でもいい。とにかく聖域を持つこと。そこで心身をいやし、再び戦いの場への出ていく英気を養うのだ。

NHKリーダーシップ白熱教室第6回(世界が君を待っている)まとめ - ぱと隊長日誌

現状維持というぬるま湯は心地よいです。ですが、気が付いた時には茹で上がっていたり、冷え切っているかもしれません。
そうならないために、自分を含めた全体を見渡し、何をすべきか自分に問いかけること。変革への覚悟を持ち、傷ついた心身を休ませる場所を用意すること。それがリーダーシップのベースになると思うのです。

人を動かす 新装版

人を動かす 新装版

最前線のリーダーシップ

最前線のリーダーシップ

転職面接の面接官が応募者に語ってほしいこと

最近、別々の方から転職面接の面接官として同じ悩みを聞きました。そして、それは私も面接を担当する時に感じていたことでした。悩みとは応募者が教科書通りの回答しかしてくれない、ということです。

例えば、プロジェクトマネージャー候補として考えている方に対し、困難なプロジェクトを成功に導くために何をすべきでしょうか?と聞くと、「コミュニケーションをとることだと思います」と答えが返ってきます。では、具体的にはどのようなアクションを取りますか?と聞くと、ちょっと困った顔をしながら「ミーティングをこまめにするとかですかね…」と続きます。
その度に、どうして質問されることが想定されるのに準備しておいてくれなかったのだろう、ととても残念に感じます。

この質問をするとき、面接官側は応募してくださった方に仕事を任せられるか見極めたいと思っています。実のところ、面接官側だって先の質問に完璧な答えがないことを知っています。面接官側も日々の仕事の中で答えを求めて毎日悩み、挑戦しています。応募者にも仲間として一緒に取り組んでほしいと思っています。その思いに応えてくれる方かを見極めようとしているのです。

そのために話してほしいことは、ご自身のエピソードです。極端な話、失敗談だっていいのです。そこから何を学び、次をどうしたいのか。そのために今、何をしているのか。それが面接官として知りたいことです。
例えば、こんな話ができるかもしれません。要件の提示を遅れがちな担当者がいた。いつもそれが繰り返されるので、担当者へ催促や要件調整の協力を申し出つつ、早めにPMへもアラートをあげた。それでも滞るので自分から担当者の上司へも状況の説明と調整を依頼した。こうしたアプローチを繰り返した結果、毎日夕方に担当者との定例会が開催されるようになり、その後の仕様決定がスピーディになった。メールベースだと担当者に返信の負担がかかるが、対面の打ち合わせにしてこちらが議事のまとめを引き受けることで、担当者の負担も軽減することができた。次回はもっと早い段階から対面での打ち合わせを提案したい…。
このエピソードはPMBOK(いわば教科書)で言えば、コミュニケーション/リスク/ステークホルダー分野のマネジメントです。教科書の知識をベースにどのような具体的なアクションへとつなげたかを説明しています。

今回のエントリは面接を切り口に書き出しましたが、その予定がなくとも、今一度、自身の仕事を振り返り、面接官としての自分だったらどんな質問をするか、そして応募者としての自分はどんな回答をするか、考えてみることは実務につながるのではないかと思います。

例えば、こんなテーマも面白いかもしれません。

これまでずっと専門分野を深掘りしてきた中堅エンジニアが、「全体像を見る」ためには、どうしたら良いだろうか?

わたしがおすすめするのは、二種類の『見方の練習』である。最初の練習はまず、「上司の上司の立場になって仕事のあり方を考えてみる」ことである。あなたが課長だったら、本部長の立場で、どう仕事の仕組みをつくるか、考える。これは簡単ではない。かなり視点を背伸びして、高い位置から関連する仕事の全体を見なければならないからだ。

そしてもう一つの練習は、「顧客の顧客の要求を考えてみる」である。あなたは「顧客が要求して言ってくること」の背後に、顧客自身が悩んでいる「隠れたペイン」を見通すべきなのである。それはいいかえると、「サプライチェーンの中で、自社の位置を理解する」ことにも通じる。そういう視点を獲得できれば、あなたが日々直面している問題に対しても、別の見方、別の解決策が見えてくるかもしれない。

※引用元から一部省略して抜粋しています。

全体像を見るために 〜 インテグレートされた工場の作り方 : タイム・コンサルタントの日誌から

日々の課題に対して日頃から考え抜き、取り組むことが、将来のキャリアパスへとつながると信じています。

【ご参考】

今回のエントリをまとめるにあたり、リクルートエージェントの細井さんの本を読み返しました。応募者が語るべきこと、面接官が問いかけるべきことがまとめられており、双方にとってお互いの思いを十分に伝えるための参考になると考えています。もし、よろしければご一読ください。

「使える人材」を見抜く 採用面接

「使える人材」を見抜く 採用面接

転職面接突破法―10万人が受講した究極メソッド

転職面接突破法―10万人が受講した究極メソッド

カリスマエージェント直伝! 履歴書・職務経歴書の書き方

カリスマエージェント直伝! 履歴書・職務経歴書の書き方