この章では、Oracle SQLJインストールと設定をテストし、簡単なアプリケーションを実行します。
この章では、次の項目について説明します。
ここでは、SQLJを実行するための環境の前提とシステム要件を、次の項目に従って説明します。
Oracle SQLJ実装を実行するシステムでは、次の内容を前提とします。
使用しているシステム上で実行できる標準Java環境があること。通常は、Sun社のJava Development Kit(JDK)を使用しますが、他のJava環境も使用できます。Java(通常はjava
)とJavaコンパイラ(通常はjavac
)を実行できることを確認してください。
Sun JDK上でSQLJアプリケーションを変換して実行するには、JDK 1.5.xまたはJDK 1.6.xを使用する必要があります。SQLJと同じバージョンのJDBCドライバ(ThinドライバまたはOCI8ドライバ)を使用する必要があります。
注意: Java Runtime Environment(JRE)は、Oracle Database 11g にインストールされるものも含めて、単独ではSQLJプログラムを変換できません。ただし、すでに変換およびコンパイルされているSQLJプログラムの実行に関しては、JREで十分です。 |
使用している環境で、JDBCアプリケーションを実行できること。
参照: JDBCドライバの詳細は、『Oracle Database JDBC開発者ガイドおよびリファレンス』を参照してください。 |
Oracle SQLJ実装を使用するには、次のものが必要です。
JDBCドライバを使用してアクセスできるデータベース・システム
SQLJトランスレータ用クラス・ファイル
トランスレータ関連クラスは、次のファイル内で使用可能です。
ORACLE_HOME
/sqlj/lib/translator.jar
SQLJランタイム用クラス・ファイル
ORACLE_HOME
/sqlj/lib/runtime12.jar
注意: Oracle Database 11g リリース1(11.1)以上では、runtime12ee.jar が非推奨になりました。かわりに、runtime12.jar を使用してください。 |
完全な動作環境を確保するために、環境を様々な角度から(SQLJとそのコード生成モード、JDBCおよびJDKなど)考慮する必要があります。
Oracle固有コード生成の一般的な環境設定を次に示します。
SQLJコード生成: -codegen=oracle
(デフォルト)
SQLJ変換ライブラリ: translator.jar
SQLJランタイム・ライブラリ: runtime12.jar
JDBCドライバ: Oracle 11g リリース2(11.2)
JDKバージョン: 1.5.xまたは1.6.x
注意: 異なるバージョンのJDBCに対して実行する場合は、古い方のバージョンに対して変換します。 |
アプリケーションは、コードを変換したバージョン以上のバージョンのJDKに対して実行できます。
Oracle SQLJ実装の下位互換性に関して、次の点に注意する必要があります。
現行より前のリリースのSQLJトランスレータで生成されたコードは、引き続き、現行のランタイム・ライブラリに対して実行およびコンパイルできます。ただし、「環境に関する考慮事項」で説明した相互の互換性の制限事項が適用されます。
Oracle固有のトランスレータ出力(デフォルトの-codegen=oracle
設定で生成されたコード)は、runtime12.jar
ライブラリを使用して、作成および実行する必要があります。また、次のことに注意してください。
前述のコードは、今後のOracle JDBCおよびSQLJ実装で実行できるようになる予定です。
ただし、前述のコードは、Oracle JDBCドライバおよびOracle SQLJランタイムの以前のリリースでは実行できなくなります。この状況では、コードを再変換する必要があります。
前述の前提と要件が満たされていることを確認した後、SQLJインストールを確認します。次の操作を実行する必要があります。
SQLJおよびデモ用アプリケーションの可用性に関するリリース固有の注意事項を次に示します。
SQLJおよびデモ用アプリケーションはOracle Technology Network(OTN)の次の場所で入手できます。
http://www.oracle.com/technetwork/database/focus-areas/application-development/index-099369.html
Oracle Database 11g の場合、インストール時にSQLJおよびデモ・アプリケーションがインストールされます。
次のディレクトリがインストールされ、その中にファイルが格納されていることを確認します。
JDBCのディレクトリ
システムにインストールする必要のあるJDBCファイルの詳細は、『Oracle Database JDBC開発者ガイドおよびリファレンス』を参照してください。
SQLJのディレクトリ
Oracle Database 11g Java環境をインストールすると、sqlj
ディレクトリがORACLE_HOME
ディレクトリの下に作成されます。sqlj
ディレクトリには次のサブディレクトリがあります。
demo
(この章で説明するものを含むデモ用アプリケーション)
lib
(SQLJのクラス・ファイルを含む.jar
ファイル)
これらのディレクトリがすべて作成され、ファイルが格納されたことを確認してください。特に、lib
は重要なディレクトリです。
ORACLE_HOME
/bin
ディレクトリには、SQLJおよびJPublisher実行可能ファイルを含む、すべてのJava製品で使用できるユーティリティが格納されています。
環境変数PATH
およびCLASSPATH
が、Oracle SQLJ実装用に設定されていることを確認します。Oracle SQLJ実装の環境変数PATH
とCLASSPATH
は、次のように設定します。
PATH
の設定
絶対パスを指定せずにsqlj
スクリプト(SQLJトランスレータを起動するスクリプト)を実行する場合には、環境変数PATH
に次のディレクトリが指定してあることを確認してください。
ORACLE_HOME/bin
Microsoft Windowsでは円記号(\)を使用します。ORACLE_HOME
には、実際のOracleホーム・ディレクトリを指定します。
CLASSPATH
の設定
環境変数CLASSPATH
を変更して、カレント・ディレクトリと次の設定を指定します。
ORACLE_HOME/sqlj/lib/translator.jar
Microsoft Windowsでは円記号(\)を使用します。ORACLE_HOME
には、実際のOracleホーム・ディレクトリを指定します。
CLASSPATH
に、次のランタイム・ライブラリを指定します。
ORACLE_HOME/sqlj/lib/runtime12.jar
また、CLASSPATH
の設定に、次のいずれかのJDBC JARを含める必要があります。
ORACLE_HOME/jdbc/lib/ojdbc5*.jar ORACLE_HOME/jdbc/lib/ojdbc6*.jar
注意: SQLJプログラムをJDK 1.5.x環境で変換または実行するにはCLASSPATHにojdbc5.jar を指定し、SQLJプログラムをJDK 1.6.x環境で変換または実行するにはCLASSPATHにojdbc6.jar を指定する必要があります。Oracle Databaseへの接続で実行時に正しいJDBC JARが使用されることを確認してください。 |
注意: ランタイム・ライブラリを追加しない場合は、SQLJトランスレータを実行できません。CLASSPATH にランタイム・ライブラリとトランスレータ・ライブラリを指定する必要があります。
SQLJが適切にインストールされていることと、SQLJ、JDBCおよびJavaのバージョン情報を確認するには、次のコマンドを実行します。 % sqlj -version-long |
sqljutl
パッケージは、Oracle Databaseインスタンスのストアド・プロシージャとストアド・ファンクションのオンライン・チェックを行うために使用します。Oracle8i データベース リリース8.1.5以上では、Java対応データベース用のサーバー側Java Virtual Machine(JVM)のインストール中に、SYS
スキーマの下に自動的にインストールされます。Java対応でないデータベースを使用している場合は、このパッケージを手動でインストールする必要があります。
sqljutl
のインストールを確認するには、SQL*Plusから次のSQLコマンドを実行します。
describe sys.sqljutl
このコマンドを実行すると、パッケージの簡単な説明が出力されます。
パッケージが見つからないというメッセージが表示された場合、またはパッケージの更新版をインストールする場合は、SQL*Plusを使用してsqljutl.sql
スクリプト(Oracle8i データベースの場合はsqljutl8.sql
)を実行します。
ORACLE_HOME/sqlj/lib/sqljutl.sql
データベース、JDBCおよびSQLJセットアップをテストするには、次のソース・ファイルに定義されたデモ用アプリケーションを使用します。
TestInstallCreateTable.java
TestInstallJDBC.java
TestInstallSQLJ.sqlj
TestInstallSQLJChecker.sqlj
データベース接続の設定に役立つJavaプロパティ・ファイル(connect.properties
)もあります。このファイルを編集して、適切なユーザー、パスワードおよびURL値を設定する必要があります。
この項で説明するデモ用アプリケーションは、SQLJインストールによりdemo
ディレクトリ中に格納されます。
ORACLE_HOME/sqlj/demo
必要に応じて一部のソース・ファイルを変更し、変換やコンパイルを行う必要がある場合があります。Oracle SQLJ実装で提供されるデモ用アプリケーションでは、ユーザー名scott
およびパスワードtiger
のOracle Databaseアカウントで表を参照します。このアカウントは、ほとんどのOracle Database環境で使用されています。必要に応じて、scott
とtiger
に別の値を使用します。
注意: デモ用アプリケーションを実行するには、demo ディレクトリをカレント・ディレクトリにし、このカレント・ディレクトリ(「. 」)をCLASSPATH で指定する必要があります。 |
ここでは、次の項目について説明します。
ここでは、connect.properties
ファイルを変更し、Oracleにランタイム接続を設定します。このファイルはdemo
ディレクトリにあり、次のように記述されています。
# Users should uncomment one of the following URLs or add their own. # (If using Thin, edit as appropriate.) #sqlj.url=jdbc:oracle:thin:@localhost:1521/myservice #sqlj.url=jdbc:oracle:oci:@ # # User name and password here sqlj.user=scott sqlj.password=tiger
Oracle JDBCドライバを使用した接続
新しいコードのOracle JDBC OCIドライバでは、接続文字列にoci
を使用します。ただし、下位互換性のために、oci8
も使用できます。したがって、既存のコードを変更する必要はありません。
JDBC Thinドライバを使用する場合は、connect.properties
のthin
URL行のコメントアウトを解除し、Oracle接続に合わせて変更します。URLは、JDBCドライバの設定時に指定したURLを使用してください。
ここでのテストでは、SALES
という表を使用します。次のようにTestInstallCreateTable
をコンパイルおよび実行します。
% javac TestInstallCreateTable.java % java TestInstallCreateTable
データベースおよびJDBCドライバが動作しており、connect.properties
ファイル内の接続設定が適切である場合、表が作成されます。
注意: SALES 表がスキーマにすでにあり、それを変更しない場合は、TestInstallCreateTable.java を編集して表の名前を変更します。または、元の表を削除して、新しい表に置き換えます。 |
TestInstallCreateTable
を使用しない場合は、次のSQL文を使用してSALES
表を作成できます。
CREATE TABLE SALES ( ITEM_NUMBER NUMBER, ITEM_NAME CHAR(30), SALES_DATE DATE, COST NUMBER, SALES_REP_NUMBER NUMBER, SALES_REP_NAME CHAR(20));
Oracle JDBCドライバをさらに詳しく調べる場合は、TestInstallJDBC
デモを使用します。接続がconnect.properties
ファイルに正しく設定されていることを確認します。その後、次のようにTestInstallJDBC
をコンパイルして実行します。
% javac TestInstallJDBC.java % java TestInstallJDBC
次のように出力されます。
Hello, JDBC!
TestInstallJDBC
と似た機能を持つSQLJアプリケーションのTestInstallSQLJ
デモを、変換して実行してみます。次のコマンドを使用して、ソースを変換します。
% sqlj TestInstallSQLJ.sqlj
このコマンドではアプリケーションのコンパイルも行われることに注意してください。
UNIX環境では、sqlj
スクリプトはORACLE_HOME
/bin
にあります(このパスはすでにPATH
に指定されているはずです)。Windowsでは、bin
ディレクトリのsqlj.exe
実行可能ファイルを使用します。SQLJ translator.jar
ファイルには、SQLJトランスレータおよびランタイムのクラス・ファイルが含まれています。これはORACLE_HOME
/sqlj/lib
にあり、このパスはすでにCLASSPATH
に指定されているはずです。
次のコマンドを実行して、アプリケーションを実行します。
% java TestInstallSQLJ
次のように出力されます。
Hello, SQLJ!
SQLJトランスレータをデータベースに接続できる場合、変換時にSQL操作のオンラインのセマンティクス・チェックを実行できます。SQLJトランスレータはJavaで記述されており、JDBCを使用して必要な情報を指定されたデータベース接続から取得します。オンラインのセマンティクス・チェックの接続パラメータを指定するには、sqlj
スクリプト・コマンドラインまたはSQLJプロパティ・ファイル(デフォルトでは、sqlj.properties
)を使用します。
demo
ディレクトリで、sqlj.properties
ファイルを編集し、必要に応じてsqlj.password
行、sqlj.url
行およびsqlj.driver
行に対して更新、コメントアウトまたはコメントアウトの解除を行い、データベース接続情報に反映します。詳細は、sqlj.properties
ファイルのコメントを参照してください。
Oracle JDBC OCIドライバを使用する場合の、ドライバ、URLおよびパスワードの設定例を次に示します。
sqlj.url=jdbc:oracle:oci:@ sqlj.driver=oracle.jdbc.OracleDriver sqlj.password=tiger
オンラインのセマンティクス・チェックは、変換時の接続に対してユーザー名を指定した時点で有効になります。ユーザー名を指定するには、sqlj.properties
ファイルのsqlj.user
行のコメントアウトを解除するか、-user
コマンドライン・オプションを使用します。user
、password
、url
およびdriver
オプションは、コマンドラインまたはプロパティ・ファイルで設定できます。
オンラインのセマンティクス・チェックをテストするには、次のようにTestInstallSQLJChecker.sqlj
ファイル(demo
ディレクトリ)を変換します。(または、別のユーザー名を使用してテストする方法もあります。)
% sqlj -user=scott TestInstallSQLJChecker.sqlj
Oracle JDBCドライバを使用している場合は、次のエラー・メッセージが表示されます。
TestInstallSQLJChecker.sqlj:41: Warning: Unable to check SQL query. Error returned by database is: ORA-00904: invalid column name
TestInstallSQLJChecker.sqlj
を編集して、行41のエラーを修正します。列名は、ITEM_NAMAE
ではなくITEM_NAME
である必要があります。このように変更すると、次のコマンドを使用してエラーなしでアプリケーションを変換および実行できます。
% sqlj -user=scott TestInstallSQLJChecker.sqlj % java TestInstallSQLJChecker
正常に処理されると、次の行が表示されます。
Hello, SQLJ Checker!