2014年9月23日

[Database] New AQ Background Architecture in Oracle 12c

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

Oracle Advanced Queuingを多様いただいているお客様を知っていますが、Oracle Database 12cでは、AQのバックグラウンドのアーキテクチャが変わりました。ドキュメントに詳細が明確に記述されています。
Oracle® Databaseアドバンスト・キューイング・ユーザーズ・ガイド 12c リリース1 (12.1)
基本的なコンポーネント
AQバックグラウンド・アーキテクチャ
http://docs.oracle.com/cd/E49329_01/server.121/b71332/componet.htm#ADQUE3663
Oracle® Database Advanced Queuing User's Guide 12c Release 1 (12.1)
Basic Components
AQ Background Architecture
http://docs.oracle.com/database/121/ADQUE/componet.htm#ADQUE3663
これまでにわかっている範囲では、後方互換性の問題はないはずですが、(いつものように)皆様からフィードバックをいただけるとうれしいです。

AQの変更点、追加機能、強化機能、新機能は以下からどうぞ。

[WLS] JMS JDBC Store Performance on Oracle RAC

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/jms_jdbc_store_performance_on

JMS周りのパフォーマンステストの多くは、Oracle Real Application Clusters上のJDBCストアを使って行われてきました。この記事の目的は、いくつかの既存のドキュメントを参照しつつ、WebLogic Server 12.1.3の新しい関連機能をご紹介し、さまざまなアプローチをまとめることにあります。

まず、JMSバッキングストアに使っているOracle Databaseの表の最適化に関する提案です。現在のJMSのマニュアルでは”I/Oマルチスレッディング”を有効化する場合にはリバース・インデックスの利用を提案しています。これらは高負荷時にのみ推奨しています。Oracle DatabaseのPartitioningオプションを利用できる場合には、表に対しグローバル・ハッシュ・パーティション・インデックスを利用することができます。これを使うとインデックス競合の削減や、グローバル・キャッシュ・バッファの待機を削減し、アプリケーションの応答時間を劇的に改善することができます。パーティショニングはすべてのケースにおいて有効に働きますが、リバース・インデックスを使った場合には顕著な改善が見られない場合があります。詳しくは以下の記事をご覧ください(この記事にはプールサイズやキャッシュサイズに関して、興味深いコメントも掲載されています)。
Oracle FMW 11g R1 SOA with Oracle Database Real Application Clusters Assessment
Oracle Maximum Availability Architecture White Paper
November 2011
http://www.oracle.com/technetwork/database/availability/maa-fmw-soa-racanalysis-427647.pdf
二つ目におすすめするのは、セキュアファイルを使って性能を改善し、ストレージをより効率的かつ容易に管理する、というものです。これは、一般に、メッセージのサイズが大きい場合や、データベースへのネットワーク接続が遅い場合に、JDBCストアのスループットを改善するために推奨されるものです。セキュアファイルに関する詳細は、以下のホワイトペーパーをご覧ください。
Oracle FMW SOA 11g R1: Using Secure Files
Oracle Maximum Availability Architecture White Paper
September 2012
http://www.oracle.com/technetwork/database/availability/oraclefmw-soa-11gr1-securefiles-1842740.pdf
両者を組み合わせることで、JMSバッキングストアのスキーマは次のようになります。
CREATE TABLE JMS1.JMSWLSTORE (
        ID INT NOT NULL,
        TYPE INT NOT NULL,
        HANDLE INT NOT NULL,
        RECORD BLOB NOT NULL,
        PRIMARY KEY (ID) USING INDEX GLOBAL PARTITION BY HASH (ID) PARTITIONS 8
        TABLESPACE JMSTS
   )
   LOB (RECORD) STORE AS SECUREFILE (TABLESPACE JMSTS ENABLE STORAGE IN ROW); 
パーティションのサイズが一様になるよう、パーティションの個数は2のべき乗である必要があります。パーティションの推奨個数は、予想されるテーブルやインデックスの成長度合いによって変動するため、時間をかけてDBAが分析し、調整する必要があります。関連するパラメータは、以下のOracle Database VLDB and Partitioning Guideをご覧ください。
Oracle® Database VLDBおよびパーティショニング・ガイド
12c リリース1 (12.1)
http://docs.oracle.com/cd/E49329_01/server.121/b71291/toc.htm
Oracle® Database VLDB and Partitioning Guide
12c Release 1 (12.1)
http://docs.oracle.com/database/121/VLDBG/toc.htm
カスタムJMS JDBCストアテーブルを使用する場合には、カスタムDDL機能をご覧ください。
Administering Server Environments for Oracle WebLogic Server
Using the WebLogic Persistent Store
Using Custom File Stores and JDBC Stores
http://docs.oracle.com/middleware/1213/wls/CNFGD/store.htm#i1160628
Real Application Clustersに対してマルチデータソースもしくはActive GridLinkを使っているいずれの場合でもこうした改善の恩恵を受けることができます。
新しいトリックが、WebLogic Server 12.1.3のJMSに性能向上のためののパフォーマンスの飛び道具として追加されました。データベースを使用するすべてのアプリケーションと同様に、アプリケーションからデータベースまでのラウンドトリップすべてにオーバーヘッドがあります。JMS JDBCストアのコードでは、それをサポートするデータベースを用いたバッチ処理を使用しています。設定したバッチサイズ(すなわち、DeletesPerBatchMaximumとInsertsPerBatchMaximum)と、トランザクション内のオペレーションの数に応じて、バッチ実行のための1回以上のラウンドトリップと、1回のコミットのためのラウンドトリップでトランザクションが構成されます。新しい構成オプションであるOraclePiggybackCommitEnabledは、Oracle Thinドライバの場合のみ、バッチ操作にコミットも乗せてしまうというものです。小さなトランザクションでは、1回のラウンドトリップで、バッチを実行し、コミットします。つまり、ラウンドトリップの数の半分にします。
多くの研究が、マルチデータソースとActive GridLinkの両方について、全体的なパフォーマンスをチェックする多くの検証が行われてきました。WebLogic Server 12.1.2での接続アフィニティの強化以後、(ラウンドロビンではなく)フェールオーバーするよう構成されたマルチデータソースのパフォーマンスは、Active GridLinkとほぼ同じです。マルチデータソースのフェイルオーバアルゴリズムでは、接続アフィニティを有しているため、失敗するまで1つのインスタンスですべての接続を保持します。WebLogic Server 12.1.1以前では、Active GridLinkは単一インスタンスへの接続アフィニティを持たないため、フェールオーバを有効にしたマルチデータソースは、Active GridLinkよりもパフォーマンスに優れていました。管理性やフェールオーバを含む多くの領域で、より優れたRACサポートを提供しているため、マルチデータソースでActive GridLinkを使うことをおすすめします。詳細は以下のドキュメントをご覧ください。
Administering JDBC Data Sources for Oracle WebLogic Server
Using Active GridLink Data Sources
Comparing AGL and Multi Data Sources
http://docs.oracle.com/middleware/1212/wls/JDBCA/gridlink_datasources.htm#BABHGDJH
ただし、Active GridLinkの利用にはWebLogic SuiteもしくはExalogic Elastic Cloud Software(EECS)が必要です。最後に、パフォーマンスを出すための鍵は、(想像されている通り)ワークスレッドの個数だけではなく、同時に利用するプロデューサやコンシューマの個数です。10個を下回るプロデューサやコンシューマの場合、前述の通りハッシュ・パーティションを使ったインデックスやLOB用のセキュアファイルを伴う通常の複数RACインスタンス上のサービスを使ってください。(9個以上のプロデューサやコンシューマがいるような)より高い同時実行性を求める場合、シングルトン・データベース・サービスを使うとより効率がよいでしょう。優先インスタンスや高可用性のためのフェールオーバ・インスタンスを使って構成しておくべきです。
JMS JDBCストア用途で利用する場合、WebLogic Serverデータソースをチューニングしておくと、JMSのスループットおよび当該JMSを利用するアプリケーションのパフォーマンスを劇的に改善することができます。パフォーマンス調査にあたっては、ご自身のアプリケーションやデータを使って実施する必要があります。

2014年9月22日

[Java, Cloud, WLS] WebLogic Encrypt Tool Script for Remote and Cloud Servers

原文はこちら。
https://blogs.oracle.com/brunoborges/entry/weblogic_encrypt_tool_script_for

Oracle Java Cloud Serviceでは、クラウドでOracle WebLogic Serverのインスタンスを完全に管理できるようになります。
Oracle Java Cloud Service
https://cloud.oracle.com/java
このサービスを使うと、お客様が完全なWebLogic Serverインスタンスを好きなように管理することができます。しかし、作業を実施するために、お客様はSSHを使ってサーバに接続しなければなりません。セキュリティは弊社にとって重要と考えているので、WebLogic Serverは本番モードで実行している場合、WLSTスクリプトを実行したり、平文の機密情報を含むJDBCリソースのようなアーティファクトをデプロイする際に、開発者や運用管理者はデフォルトでは平文のテキストパスワードを使えなくなっています。

簡単に暗号化できるよう、以下のようなスクリプトを作成しました。クラウド運用管理者や開発者にとってだけでなく、オンプレミス環境で、スクリプトやXMLファイルに平文テキストパスワードを保存してはいけない状況下でデプロイする場合にも、きっと有用だと確信しています。
encrypt-password-on-remote-wls-domain.sh
https://gist.github.com/brunoborges/e0236a55fe42f2d1cb62
#!/bin/sh
# Util script to encrypt a password on a remote WebLogic domain through SSH

REMOTE_DOMAIN_HOME=/home/bruno/Work/tools/oracle/mw1212/user_projects/domains/base_domain

DIR="$( cd "$( dirname "$0" )" && pwd )"

PRIVATE_KEYFILE=~/.ssh/id_rsa

ssh bruno@localhost -i $PRIVATE_KEYFILE DOMAIN_HOME=$REMOTE_DOMAIN_HOME PASSWORD=$1 '/bin/bash -s' <<'ENDSSHSESSION'
  cd $DOMAIN_HOME/bin
  source setDomainEnv.sh
  java weblogic.security.Encrypt $PASSWORD
ENDSSHSESSION
フィードバックをお待ちしています!

2014年9月21日

[Exa*, FMW] Working with SSL Certificates in OTD

原文はこちら。
https://blogs.oracle.com/csoto/entry/working_with_ssl_certificates_in

結構よく見られるOracle Traffic Director (OTD)の問題として、以下のようなSSL証明書の警告が出る、というものがあります。
SSL server certificate Admin-Server-Cert is expired.
管理者のSSL CA証明書の有効期限が切れると、このエラーがよく発生します。このエラーを回避するには、CA/SSL証明書を有効期限までに更新して延長(1年から10年)する必要があり、次の2方法があります。
  1. 人為的に管理サーバのホストの時計を設定する
  2. 新しい管理サーバを作成し、古い管理サーバを置き換える(これにより、古い構成済みSSL鍵を失う可能性があります)
とはいえ、その時点で1年間の証明書を取得し、10年間使いたいとして、以下のコマンドの実行が成功したとしても、有効期限の日付は変わるわけではありません。
./bin/tadm renew-admin-certs --user=<管理サーバのユーザ> --port=<管理サーバのポート> --validity=120
問題は、最新のパッチを当てなければ、現在のところ管理ノードの証明書が1年間だけ有効になって、毎年の更新が必要になる、ということです。毎年管理ノードの証明書を更新しないですませるには、Oracle Traffic Director 11.1.1.7のパッチ 11.1.1.7.2 MLR#2 (2014年4月) 以後の適用が必要です。パッチ適用後、起動バナーには適切な新しい日付が表示されます。管理サーバの証明書を更新すると、管理ノードの証明書もまた同じ年数だけ更新されます。

詳細は以下のMy Oracle Supportのドキュメントをご覧下さい。

2014年9月19日

[Cloud, SOA] Big News: Oracle iPaaS Cloud Integration OpenWorld Sessions

原文はこちら。
https://blogs.oracle.com/SOA/entry/big_news_oracle_integration_cloud

Oracleがintegration Platform as a Service (iPaaS)を出す、という噂を聞いてらっしゃるかもしれませんが、“Introducing Oracle Integration Cloud Service: iPaaS on Oracle Cloud”という独立したセッションとHands-on Labを含む、Oracle Integration Cloud Serviceに関するコマが、Oracle OpenWorld 2014のアジェンダに追加されています。このお知らせができることをうれしく思っています。
Oracle OpenWorld
https://www.oracle.com/openworld/index.html
Oracle Integration Cloud Serviceを使うことで、劇的にクラウド間やクラウドとオンプレミス間の統合を簡素化できます。Oracle SaaSアプリケーションへのネイティブ接続と、作成済みのマップ、フローなどを含む、使いやすい、新しいサードパーティ・アプリケーションの統合機能について知っていただけます。
これらのセッションでOracle Integration Cloud Serviceのお披露目した後、未発表の最高にクールな機能をこのブログでご紹介します。
2個のセッションは以下の通りです。
Oracle Integration Cloud ServiceのデモもMoscone Southでご覧いただけます。
Oracle Integration & SOAセッションに関する詳細は、以下のURLにあるFocus Onドキュメントからどうぞ。
Focus On Service Oriented Architecture
https://oracleus.activeevents.com/2014/connect/focusOnDoc.do?focusID=18207
皆さんもわくわくされることでしょう。まだ信じられないという方はこれらのセッションに参加してください。

2014年9月18日

[Java, WLS, Cloud] Oracle Java Compute Cloud Service Now Available!

原文はこちら。
https://blogs.oracle.com/imc/entry/oracle_java_database_compute_cloud

本日Oracleは新しいサービスをPublic Cloudとして追加しました。

First Things First

まずはOracle Compute Cloudサービスです。これはElastic Compute Capacityを提供します。つまりお客様は自身の仮想マシンインスタンスを管理したり、セルフサービスでプロビジョニングできたりします。Compute Cloudについては、以下のURLからどうぞ。
Oracle Compute Service
https://cloud.oracle.com/compute

What's new in Java Cloud Service

Java Cloud Serviceが利用できるようになってしばらくたちましたが、このサービスはクラウド特有のコンソールに制限されており、お客様は自身の環境を完全に制御・管理することはできません。このサービスはOracle SaaSの機能を拡張するためのサービスを目的としていたからです。
今回の新しいOracle Java Cloud Service—Virtual Imageを使うと、お客様は基盤となっているOracle WebLogic Server(負荷分散機能が必要であればOracle Traffic Director)の組み込みツールを使ってクラウドのご自身の環境のライフサイクルを管理することができます。
現時点では、WebLogic Serverの2種類のバージョン(12.1.2.0と11.1.1.7)がご利用いただけます。両方のバージョンで関連するFusion Middlewareをサポートしています。

What's in the box

以下はこのサービスのアーキテクチャです。ご覧頂くとわかる通り、Oracle Compute Cloud Service上で動作しています。Java Cloud Serviceでは、管理サーバ、管理対象サーバ、そしてTraffic Directorの全てがご利用頂けます。

Available flavors

3種類のオプションを組み合わせて利用できます。
  • 仮想イメージのみ、もしくは仮想イメージ+ツール
  • StandardもしくはHigh Memory
  • WebLogicのエディションはStandard、Enterprise、もしくはSuite

全てのオプションのお値段は下表からどうぞ(全て執筆時点)。


Lear more

Java Cloud Serviceについてもっと知りたい方は、以下のURLに行くか、ドキュメントをご覧下さい。
Oracle Java Cloud Service
https://cloud.oracle.com/java
Oracle Java Cloud Service Documentation
http://docs.oracle.com/cloud/latest/jcs_gs/index.html

2014年9月17日

[Java] Java EE Configuration JSR Deferred

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

ConfigurationはJava EE 8サーベイの中でも人気のあるアイテムの一つでした。
Java EE 8 Survey Final Results
https://blogs.oracle.com/theaquarium/entry/java_ee_8_survey_final
Java EEのconfigurationに関するJSRに含まれる機能は比較的曖昧なままですが、大部分はCredit SuisseのAnatole Treschが先頭に立って、予定されているJSRが出るのを楽しみにしていました。この考えはJSRがJava EEアプリケーションの構成に対する一貫したソリューションを提供し、(仕様をリードする責任を可能な限り共有することを含めて)一定レベルのサポートをOracleから得る、というものでした。残念ながら、configurationのJSRの取り組みは現在、主に、特に関連するリファレンス実装(RI)だけでなく、互換性テストキット(TCK)の開発および維持するための長期的なリソーシング·コミットメントに関連した、予期せぬ、しかしながらやむを得ない事情のために、
これがJava EEとは関係ないベンダー(この場合はCredit Suisse)がJava EEプラットフォームの重要なパートに貢献するという模範例だったので、これは本当に残念なことです。Anatole Treschのイニシアティブ、情熱、献身と勇気に対し称賛することの重要性は変わりません。同様に、Java EEプラットフォームやコミュニティの前進を支援するための多額の投資を真剣に考えて下さっているCredit Suisseに対し、感謝しなければなりません。ITに携わっている全員が知っているように、リソースに関する難しい判断は決してたやすいものではなく、後の作業の段階での判断にくらべ、早期に難しい決断をするほうがずっとよいのです。Anatoleは現在もなおconfiguration JSRの取り組みに関するJavaOne 2014のセッションの内容を詰めています。
A First Draft of Java EE Configuration [CON1696]
https://oracleus.activeevents.com/2014/connect/sessionDetail.ww?SESSION_ID=1696
このセッションは、考えを共有し、コミュニティからのフィードバックを通して基礎となるユースケースを固める絶好の機会です。configure JSRの取り組みは少なくとも今のところ延期が必要ですが、それほどがっかりする理由はありません。例えばJSRが解決するような良く理解された問題のいくつかは、Java EE 8プラットフォームのJSRの一部と見なすことができます。独立したJSRであれば、おそらくプラットフォームレベルでの高度な連携が必要だったことでしょう。別の可能性は、CDIのようなコアのAPIに、Java EEでより簡単に設定・構成するために何をすべきかを検討させることです。最後に、JSRが対処しようとしてきた問題のいくつかは、以下のようなJava EEに含まれているメカニズムや、Java EE開発でよく使われるツールを使って解決可能だ、ということは念頭に置いておいて損はしないでしょう。
コンサルタントとしての私自身の個人的な経験では、Mavenの機能がJava EEプロジェクトの大多数に対する、十分にして使いやすい、しかもエレガントなソリューションでした。それはそれとして、Mavenがビルド時のソリューションであるのに対し、configuration JSRの特質は、おそらくデプロイ時、および実行時に構成の問題を解決する必要があるのだろう、ということです。

どう思われますか?いつも通り、躊躇せずに率直にどうぞ。
(お約束ですが、この内容は個人(Reza Rahman)の見解で、Oracleの見解ではありません)。

[訳注]
Spec LeadのAnatole Treschさんのブログでも、Configuration JSRが延期になることを記載しています。
No Java EE Configuration JSR for EE 8
http://javaeeconfig.blogspot.jp/2014/09/no-java-ee-configuration-for-ee8-dear.html