2015年1月23日

[Database, Support] Non-CDB architecture of Oracle databases is DEPRECATED since Oracle Database 12.1.0.2

原文はこちら。
https://blogs.oracle.com/UPGRADE/entry/non_cdb_architecture_of_oracle

Oracle Database 12.1.0.2から、CDB以外のアーキテクチャは非推奨になりました。
Oracle® Database Upgrade Guide 12c Release 1 (12.1)
Deprecated and Desupported Features for Oracle Database 12c
https://docs.oracle.com/database/121/UPGRD/deprecated.htm#BABDBCJI

(訳注)
日本語版ドキュメントにはまだ反映されていません。

どういうこと?

まず、非推奨とは「サポートの終了」ではなく、今回の場合、以前のリリースからご存知のアーキテクチャである、スタンドアロン構成のOracleデータベースをもちろん利用できるだけでなく、シングルテナント構成での展開(CDB1個にPDB1個の構成。Multitenantオプションライセンスは不要です)や、マルチテナントデータベース構成(CDB1個にPDB最大252個、Multitenantオプションライセンスが必要です)も利用できます。
しかし将来、Oracleがシングルテナントデータベースやマルチテナントデータベースのみをリリースする可能性があります。 現時点ではいつそうなるかといった情報はありません。

現時点でサポートされていない機能は?

  • Database Change Notification
  • Continuous Query Notification (CQN)
  • Client Side Cache
  • Heat Map
  • Automatic Data Optimization
  • Oracle Streams
  • Oracle Fail Safe
  • Flashback Pluggable Database
    • Flashback Databaseは動作しますが、全てのPDBを含むCDB$ROOTをフラッシュバックする予定です。
  • DBVERIFY
  • Data Recovery Advisor (DRA)

2015年1月22日

[Java] Java Updates: SE 8 update 31, SE 7 and SE Embedded

原文はこちら。
https://blogs.oracle.com/java/entry/java_updates_se_8_update

OracleはJava SE 8 Update 31とJava SE 7 Update 75/76をリリースしました。新しいJava SE Embeddedのアップデートもご利用頂けます。開発者の方はJava SEとJava SE EmbeddedのJDKとJREをOTNからダウンロードできます。
Java SE
http://www.oracle.com/technetwork/java/javase/downloads/index.htmlJava SE Embedded
http://www.oracle.com/technetwork/java/embedded/embedded-se/downloads/index.htmlOracle Technology Network
http://www.oracle.com/technetwork/java/index.htmlhttp://www.oracle.com/technetwork/jp/java/index.html

Java SE 8 Update 31

Oracle JDK、JREでSSL v3.0が無効化されました
SSLv3は廃止され、もう利用すべきではありません。
Information about SSL “Poodle” vulnerability CVE-2014-3566
https://blogs.oracle.com/security/entry/information_about_ssl_poodle_vulnerability
JDK 8u31からは、SSL v3プロトコル(Secure Socket Layer)を無効化しており、デフォルトで利用できなくなっています。詳しくはリリースノートをご覧下さい。
Java™ SE Development Kit 8, Update 31 Release Notes
http://www.oracle.com/technetwork/java/javase/8u31-relnotes-2389094.html
Security Fixes
このリリースには、重要なセキュリティフィックスが含まれています。全てのJava SE 8ユーザーがこのリリースにアップグレードすることを、Oracleは強く推奨します。このリリースに含まれている修正されたバグのリストは以下のページからどうぞ。
Java™ SE Development Kit 8 Update 31 Bug Fixes
http://www.oracle.com/technetwork/java/javase/2col/8u31-bugfixes-2389095.html

Java SE 7 Update 75/76

これらのリリースには、重要なセキュリティフィックスが含まれています。全てのJava SE 7ユーザーがこのリリースにアップグレードすることを、Oracleは強く推奨します。このリリースでは、自動アップデート機能を有効にしているユーザーはOracle JRE 7からOracle JRE 8へ移行されます。
注意: 2015年4月のCPUリリースがOracle JDK 7の最後のパブリックアップデートになる予定です。詳細情報や、OracleのJDK7の長期サポートを受けるための詳しいことは、Oracle Java SEサポートロードマップをご覧下さい。
Oracle Java SE Support Roadmap
http://www.oracle.com/technetwork/java/javase/eol-135779.html
Java CPUリリースとPSUリリースの違い
Java SE Critical Patch Updates (CPU)にはセキュリティ脆弱性の修正や重要なバグ修正が含まれており、全てのJava SE 7ユーザーが最新のCPUリリースにアップグレードすることを、Oracleは強く推奨します。ほとんどのユーザーはこのリリースを選択すべきです。
Java SE Patch Set Updates (PSU) には、そのバージョンまでにリリースされたCPUの全てのセキュリティ修正だけでなく、追加の修正も含まれています。Java PSUリリースは、当該バージョンで追加されたバグ修正が必要な方だけが使うべきです。以下のリンクもご覧下さい。
Java CPU and PSU Releases Explained
http://www.oracle.com/technetwork/java/javase/cpu-psu-explained-2331472.html

Java Embedded Updates 

Java SE Embedded 8 Update 33 

Java SE Embedded 8を使うと、開発者がJRECreateツールを使ってカスタマイズしたJREを作成できます。Java SE Embedded 8では、組み込みプラットフォーム向けの個々のJREダウンロードを提供していません。まずターゲットとするプラットフォームに適したeJDKバンドルをダウンロードし、手順に従い、アプリケーションの要件に適うJREを作成します。この変更はJava SE Embedded 7 UpdateリリースのJREダウンロードとは関係ありません。

JDK 8u33 for ARM 

このJDKには、Javaプログラミング言語で記述され、Javaプラットフォーム上で実行するプログラムの開発やテストに役立つツールが含まれています。JDK 8 for ARMはLinuxを実行する32bit ARM v6もしくはARM v7ベースのシステム上での動作をサポートしています。このJDKには、ARMプラットフォーム用のJava runtime environment (JRE) と、アプリケーション開発に必要なコンパイラやデバッガといったツールが含まれています。

Java SE Embedded 7u75 

Java SE Embedded 7u75 Runtime EnvironmentはJava Runtime Environment 7 Update 75 (JRE 7u75)ベースで、特定の機能や組み込みシステムのサポートを提供しています。
全てのJavaユーザーがこれらのリリースにアップグレードすることを、Oracleは強く推奨します。

2015年1月21日

[Database, JavaScript] Introducing node-oracledb - a Node.js driver for Oracle Database

原文はこちら。
https://blogs.oracle.com/opal/entry/introducing_node_oracledb_a_node

Oracle Database用のNode.jsドライバを開発中であると、Oracle OpenWorldの多くの熱狂的な参加者に対して発表しましたが、ようやく、node-oracledbをGitHubにプッシュしたことをご紹介できるようになりました。
Oracle Database driver for Node.js
https://github.com/oracle/node-oracledb
Node.jsは、サーバーサイドのネットワークアプリケーションをJavaScriptで作成するための、オープンソースで提供されているクロスプラットフォーム実行環境です。

What is node-oracledb?

node-oracledbドライバは、Node.jsアプリケーションを高速かつ機能的にするために、Oracle Databaseに接続します。node-oracledb 0.2ドライバのプレビューリリースでは、既に以下の機能をサポートしています。
Node-oracledbはOracleがメンテナンスするオープンソースプロジェクトで、Apache 2.0ライセンスの下でご利用いただけます。The Oracle Contributor Agreementに従ってコントリビュートいただけます。
The Oracle Contributor Agreement
http://www.oracle.com/technetwork/community/oca-486395.html

Where can I get node-oracledb?

To install node-oracledbをインストールするためには、リポジトリを複製し、無償のOracle Instant Clientをインストールします。(もしくは、Oracle Database Express EditionのようなOracle Databaseを利用します)。その後、npmを使って複製したディレクトリからインストールします。
Oracle Database driver for Node.js
https://github.com/oracle/node-oracledb/
Instant Client Downloads
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
Oracle Database Express Edition
http://www.oracle.com/technetwork/database/database-technologies/express-edition/overview/index.html
手順書には、ローカルのNode.jsインスタンスの作成方法やその他の詳細情報が記載されています。ドライバは現在GitHub上にのみあります。
Installing node-oracledb
https://github.com/oracle/node-oracledb/blob/master/INSTALL.md
ドライバはOracle Databaseのクライアントライブラリを使用しています。他のCベースのスクリプティング言語用のOracle Databaseドライバと同様です。つまり、そうしたライブラリに対してこれまで投資してきた重要な機能セット、開発、テストを利用できる、ということです。また、Node.jsアプリケーションが、Oracleの標準クライアントーサーバ間のバージョン互換性に従い、複数の異なるOracle Databaseのバージョンと会話できるのです。
node-oracledbドライバはOracle Linux、OS X、Solarisでビルドします。現在Oracle Linux 6上でのテストに注力しています。Windowsのサポートは難しくないはずですが、まだ対応していません。

How do I use node-oracledb?

簡単なクエリの例をご紹介しましょう。
var oracledb = require('oracledb');

oracledb.getConnection(
  {
    user          : "hr",
    password      : "welcome",
    connectString : "localhost/XE"
  },
  function(err, connection)
  {
    if (err) { console.error(err); return; }
    connection.execute(
      "SELECT department_id, department_name "
    + "FROM departments "
    + "WHERE department_id < 70 "
    + "ORDER BY department_id",
      function(err, result)
      {
        if (err) { console.error(err); return; }
        console.log(result.rows);
      });
  });
Oracle DatabaseのHRスキーマを使った出力結果は以下の通りです。
$ node select.js
[ [ 10, 'Administration' ],
  [ 20, 'Marketing' ],
  [ 30, 'Purchasing' ],
  [ 40, 'Human Resources' ],
  [ 50, 'Shipping' ],
  [ 60, 'IT' ] ]
examplesディレクトリやAPI Documentationにはたくさんのサンプルがあります。
examples
https://github.com/oracle/node-oracledb/tree/master/examples
node-oracledb: API Documentation for the Oracle Database Node.js Driver
https://github.com/oracle/node-oracledb/blob/master/doc/api.md

What is the future for node-oracledb?

Windowsプラットフォームのサポート、LOBのサポート、大規模な問い合わせ結果セットのバッチフェッチンングやストリーミングのサポート、DRCPのサポートを含め、node-oracledbへの機能追加を積極的に実施しています。
データベース常駐接続プール(Database Resident Connection Pool / DRCP)
(英語)
http://docs.oracle.com/database/121/ADFNS/adfns_perf_scale.htm#ADFNS228
(日本語)
http://docs.oracle.com/cd/E57425_01/121/ADFNS/adfns_perf_scale.htm#ADFNS228
また、標準のnpmインストールコンポーネントとしてnpmjs.comで利用できるよう、またテストスィートを公開できるように現在作業中です。
みなさまからの建設的なフィードバックをお待ちしています。Release 1.0にすべての修正と、「必須アイテム」を組み込むことができるようにしたいと考えています。
ドライバの開発が進むにつれ、詳細をお伝えできると思っています。同僚のDan McGhanも、jsao.ioでJavaScriptとOracle Databaseについて情報提供していきますのでお楽しみに。
JavaScript and Oracle
https://jsao.io/

node-oracledb Links

2015年1月20日

[Java] Reactive Jersey Client

原文はこちら。
https://blogs.oracle.com/theaquarium/entry/reactive_jersey_client

一般的に、同期アプリケーションには効率的にリソースを使わない、という問題があります。同期アプリケーションでは、例えばスレッドが何かが起こることを待つためにブロックされていることが多々あり、明らかに非効率です。一方、非同期アプリケーションを使うと、スレッドをより効率良く利用できますが、その引き替えとして、(複雑な)非同期アプリケーションを作成することが容易ではありません。非同期アプリケーションの作成にあたっては、ネストされたコールバック、つまり有名な「コールバック地獄(callback hell)」に対処する必要があります。ネストされたコールバックのレベルが深すぎる場合、適切にアプリケーションなどでエラーを処理する上で細心の注意が必要です。

リアクティブプログラミングとは、より簡単に非同期アプリケーションを開発するために使われる一般的なパラダイムで、データフローや変更の伝播に基づいています。このリアクティブアプローチを使うと、コードが書きやすく、理解しやすくため、メンテナンス性も向上します。

JerseyチームのMichal Gajdosが、Reactive Jersey Client APIの概要を説明する一連のエントリを書きました。この新たな汎用APを使うと、エンドユーザーがJerseyクライアントを使って、人気のあるリアクティブプログラミングモデルを利用できます。

2015年1月17日

[Java] File Uploads Using JSF 2.2 and Java EE 7

原文はこちら。
https://blogs.oracle.com/theaquarium/entry/file_uploads_using_jsf_2

ファイルのアップロードは、これまでのJSFでも可能でしたが、たいていの場合、PrimeFacesやRihFacesといった3rdパーティー製のプラグインを使っていました。JSF 2.2ではついにファイルアップロードコンポーネントが標準でサポートされるようになりました。このように遅れて導入された実際の理由は、JSF仕様は、常にServletの最新バージョンから一つ前のものを選択してきたためで、これにより、古いランタイム、特にTomcatのようなServletコンテナで、JSFの新しいバージョンを使用できるようにするためです。その結果として、JSF 2.2は、マルチパートファイルの処理をサポートするようになったServlet 3.0に依存することができるため、新たなファイルアップロード機能をサポートするようになりました。Hantsy Baiは、すばらしいコード主体のエントリの中で、JSF 2.2/Java EE 7でのファイルアップロード機能のサポートについて説明しています。
JSF 2.2: File Upload (Forward Everyday)
http://hantsy.blogspot.com/2013/08/jsf-22-file-upload.html
ファイルアップロード機能に関するRama KrishnnanのYouTube動画もチェックしてみてください。

興味深いことにRamaはTomcatと古いNetBeansを使っていますが、それでもなおこの機能を十分にデモできるのです(また、手動でのヘッダ解析を自身で実施することを選択しています)。代わりに、Hantsy Baiが使っているGlassFishのようなJava EE 7サーバのほうがずっと簡単だというのは明白です。

2015年1月15日

[Database] New MOS Notes on Database Upgrades for 12c with or without Oracle Multitenant

原文はこちら。
https://blogs.oracle.com/UPGRADE/entry/new_mos_notes_on_database

Oracle Database 12c(Multitenantの利用を問いません)へのアップグレードに関する新たな MyOracle Support (MOS) Notes がご覧頂けますので、是非ご一読ください。
CDB/PDBに関するNoteは、同僚のKrishnakumar Kunkaがまとめてくれました。

2015年1月14日

[Nashorn] Using Nashorn with IntelliJ

原文はこちら。
https://blogs.oracle.com/nashorn/entry/using_nashorn_with_intellij

Nashornリポジトリには既にNetBeansプロジェクトが含まれていますので、Nashornを利用する場合にはNetBeansをIDEとして使うとシームレスに作業できます。
例えば、IDE事前生成済みの、ビルトインのJavaScriptオブジェクト(Array、Date、Number、Stringなど)を持つNasgenクラスをビルドし、アクセスするためにはいささかトリッキーな部分がありますが、これらはビルド手順の中で、コマンドラインから"ant clean jar"を実行するだけで生成されます。さらに、Nashornは現在、JDKモジュール化プロセスの一環で、Java 9のjimageであるため、透過的にNashornをビルドし開発するためには、いささかトリッキーなIDEの構成が必要です。とはいえ、NetBeansを全ての人が使うわけではないため、3rdパーティーコントリビュータのDmitry Alexandrovがすばらしい貢献をしてくれました。IntelliJとNashornを連携する方法の詳細をまとめ上げてくれたのです。
Dmitry、どうもありがとう!本当かっこいい!

ブログエントリはこちらからどうぞ。
Nashorn IntelliJ Idea development environment setup
http://blog.dmitryalexandrov.net/?p=4

誰かEclipseで同じことやってくれません? :)