13.7 dropjavaツール

dropjavaツールは、loadjavaツールと逆の処理を実行します。コマンドラインでのファイル名およびJARファイルまたはZIPファイルの内容をスキーマ・オブジェクト名に変換してから、スキーマ・オブジェクトとそれに対応するダイジェスト表の行を削除します。.java.class.sqlj.ser.zip.jarおよびリソース・ファイル名をコマンドラインに任意の順序で入力できます。

また、スキーマ・オブジェクト名を、直接dropjavaツールに指定できます。.jar.zip.class.javaまたは.sqljで終わらないコマンドライン引数は、スキーマ・オブジェクト名とみなされます。複数のスキーマ・オブジェクトに該当するスキーマ・オブジェクト名を指定すると、該当するすべてのスキーマ・オブジェクトが削除されます。

クラスを削除すると、そのクラスに依存しているクラス群が無効になり、これは、上方に再帰的に連鎖します。ソースを削除すると、それから導出されたクラスが削除されます。

注意:

Javaスキーマ・オブジェクトは、最初にロードしたときと同じ方法で削除する必要があります。.sqljソース・ファイルをロードしてサーバーで変換する場合は、同じソース・ファイルでdropjavaツールを実行する必要があります。クライアントで変換してからクラスおよびリソースを直接ロードする場合は、同じクラスおよびリソースでdropjavaツールを実行します。

dropjavaツールは、コマンドラインから実行するか、またはDBMS_JAVAクラスのdropjavaメソッドを使用して実行できます。使用しているJavaアプリケーション内からdropjavaツールを実行するには、次のコマンドを使用します。

call dbms_java.dropjava('... options...');

オプションは、コマンドラインで指定する内容と同じです。各オプションは空白で区切ります。オプションをカンマで区切らないでください。ただし、-resolverオプションは例外です。接続は常にカレント・セッションに対して確立されます。したがって、-userオプションを使用して別のユーザー名を指定することはできません。

-resolverの場合は、他のすべてのオプションを最初に指定してカンマ(,)で区切り、次に-resolverオプションとその定義を指定してください。-thin-oci-userおよび-passwordの各オプションは、loadjavaツールのデータベース接続に関連しているため、指定しないでください。出力はstderrに送信されます。serveroutputをオンに設定し、必要に応じてdbms_java.set_outputをコールします。

この項の内容は次のとおりです。

13.7.1 dropjavaツールの構文

dropjavaツールのコマンド構文は次のとおりです。

dropjava [options] {file.java | file.class | file.sqlj | 
file.jar | file.zip | resourcefile} ...
  -u | -user user/[password][@database]
  [-genmissingjar JARfile]
  [-jarasresource]
  [-o | -oci | -oci8]
  [-optionfile file]
  [-optiontable table_name]
  [-S | -schema schema]
  [-stdout]
  [-s | -synonym]
  [-t | -thin]
  [-v | -verbose]
 [-list]
[-listfile]

13.7.2 dropjavaツールの引数の概要

表13-3は、dropjavaツールの引数の一覧です。

表13-3 dropjavaの引数の概要

引数 説明

-user

ユーザー名、パスワードおよびデータベース接続文字列(オプション)を指定します。ファイルはこのデータベース・インスタンスから削除されます。

filenames

.java.class.sqlj.ser.jar.zipおよびリソース・ファイル名を、必要な数だけ組み合せて指定します。

-genmissingjar JARfile

このオプションのオペランドを処理対象のファイルとして扱います。

-jarasresource

以前にリソースとしてロードされたJARファイル全体を削除します。

-oci | -oci8

dropjavaツールに対して、OCI JDBCドライバを使用してデータベースに接続するように指示します。-ociオプションと-thinオプションは相互に排他的です。いずれも指定しない場合は、デフォルトで-ociオプションが使用されます。-ociオプションを選択すると、-user値の形式が暗黙的に使用されます。

-optionfile file

使用方法はloadjavaツールと同じです。

-optiontable table_name

使用方法はloadjavaの場合と同じです。

-schema schema

スキーマ・オブジェクトを削除するスキーマを指定します。このオプションを指定しないと、ログイン・スキーマが使用されます。他のユーザーのスキーマからスキーマ・オブジェクトを削除するには、DROP ANY PROCEDURE権限およびUPDATE ANY TABLE権限が必要です。

-stdout

stderrではなく、stdoutに出力を送信します。

-synonym

loadjavaツールを使用して作成されたPUBLICシノニムを削除します。

-thin

dropjavaツールに対して、JDBC Thinドライバを使用してデータベースと通信するように指示します。-thinオプションを選択すると、-user値の形式が暗黙的に使用されます。

-verbose

dropjavaツールに対して、実行中に詳細なステータス・メッセージを出力するように指示します。

–list

コマンドラインにリストされたクラス、Javaソースまたはリソースがクライアント・マシンまたはサーバー・マシン上に存在しない場合、これらを削除します。

-listfile

ファイルを読み取り、そのファイルにリストされたクラス、Javaソースまたはリソースがクライアント・マシンまたはサーバー・マシン上に存在しない場合はこれらを削除します。ファイルには、行ごとに完全なクラス名、Javaソース名またはリソース名の内部表現が含まれます。

13.7.3 dropjavaツールの引数の詳細

この項では、dropjavaツールの一部の複雑な引数について説明します。

ファイル名

dropjavaツールは、ほとんどのファイル名をloadjavaツールと同じ方法で解析します。

  • .classファイル

    ファイル内のクラス名を検索して、対応するスキーマ・オブジェクトを削除します。

  • .javaおよび.sqljファイル

    ファイル内の最初のクラス名を検索して、対応するスキーマ・オブジェクトを削除します。

  • .jarおよび.zipファイル

    アーカイブ・ファイル名を、コマンドラインに入力された場合と同様に処理します。

dropjavaツールは、これ以外の拡張子が付いているファイル名、または拡張子が付いていないファイル名をスキーマ・オブジェクト名として解析し、その名前に一致するすべてのソース・オブジェクト、クラス・オブジェクトおよびリソース・オブジェクトを削除します。

dropjavaツールは、スキーマ・オブジェクトに一致しないファイル名を検出すると、メッセージを表示し、残りのファイル名を処理します。

user

{-user | -u} user/password[@database]

@databaseの使用可能な形式は、-ociを指定するか、または-thinを指定するかによって異なります。

  • -oci:@databaseはオプションです。指定しない場合、dropjavaツールはユーザーのデフォルト・データベースを使用します。指定した場合、databaseはTNS名またはOracle Net Servicesの名前/値リストのいずれかになります。

  • -thin:@databaseは必須です。形式はhost:lport:SIDです。

    説明:

    • hostは、データベースが動作しているコンピュータの名前です。

    • lportは、Oracle Net Services接続のリスニング用に構成されたリスナー・ポートです。デフォルト・インストールでは5521です。

    • SIDは、データベース・インスタンスの識別子です。デフォルト・インストールではORCLです。

次に、dropjavaツールのコマンド例を示します。

  • ServerObjects.jarからロードしたデフォルト・データベース内のTESTスキーマにある、すべてのスキーマ・オブジェクトを削除する場合

    dropjava -u HR -schema TEST ServerObjects.jar
    Password: password
    
  • JDBC Thinドライバで接続してから、クラス・ファイルとリソース・ファイルをユーザーのスキーマから削除する場合

    dropjava -thin -u HR@dbhost:5521:orcl alpha.class beta.props
    Password: password
    

リスト・ベースの削除

以前のバージョンのdropjavaツールでは、クライアント側またはサーバー側のユーティリティを実行するマシンにクラス、JAR、ソースおよびリソースが存在する必要がありました。現行バージョンのdropjavaには、クラスのリストに基づき、クライアント・マシンまたはサーバー・マシンに存在しない場合があるクラス、リソースまたはソースを削除できるオプションが用意されています。このリストは、コマンドライン上またはテキスト・ファイル内にある場合があります。次に例を示します。

dropjava –list –u HR –v this.is.my.class this.is.your.class
Password: password

このコマンドは、コマンドラインにリストされたクラスthis.is.my.classおよびthis.is.your.classがクライアント・マシンまたはサーバー・マシン上に存在しない場合、これらを削除します。

dropjava –listfile my.list –u HR –s –v
Password: password

このコマンドは、my.listにリストされたクラスのリストに基づき、クラス、リソースまたはソースおよびそのシノニムを削除し、冗長形式で表示します。

注意:

'-install'フラグは、変更不可のシステムが所有するスキーマ・オブジェクトのロードおよび削除を無視します。

これらのスキーマ・オブジェクトはCREATE JAVA COMMANDで指定されたランタイム・クラスおよびリソースです。

13.7.4 dropjavaツールを使用したリソースの削除について

サーバーに直接ロードされたリソースを削除する場合は注意が必要です。-ser2classオプションを使用せずにクライアントで変換した場合、このリソースにはプロファイルが含まれています。ソースやクラス・スキーマ・オブジェクト、またはサーバー側SQLJトランスレータで生成されたリソース・スキーマ・オブジェクトを削除する場合は、該当する.sqlj ソース・ファイルのパッケージ仕様に従ってスキーマ・オブジェクトが検索されます。ただし、クライアントで生成されてサーバーに直接ロードされたリソースのスキーマ・オブジェクトの完全修飾名は、.jarファイルのパス情報またはロード時にコマンドラインに指定したパス情報によって異なります。.jarファイルを使用してリソースをロードし、同じ.jarファイルを使用してリソースを削除する場合は問題ありません。ただし、コマンドラインを使用してリソースをロードする場合は、dropjavaツールを実行してリソースを削除するときに同じパス情報を指定するように注意してください。