0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OracleDatabaseClient19cのサイレントインストールbat&コマンドまとめ

Last updated at Posted at 2022-06-13

この記事について

OracleDatabaseClient19cをサイレントインストールを用いて配布する方法のまとめです。
OracleDatabaseはサーバー上にあり、中身が同じクライアント環境を複数箇所で作成することを想定しています。
普通にやると詰まる箇所があったので、その回避方法も紹介しています。

①Oracleのファイルを配布先へコピー

Oracle公式などから取得したOracleClientのファイルを配布元サーバーに配置し、配布先へコピーします。
USBなどに入れて直接コピーしてもいいですが、以下のように配布用batファイルを作成すると手間が省けます。

FileCopy.bat
@echo off
xcopy "配布元フォルダディレクトリ" "配布先フォルダディレクトリ" /S /C /E /Q /H /R /Y

rem 配布元ディレクトリでは、以下の配布ファイルイメージが格納されているフォルダを指定すればおkです。
rem 例:"\\servername\c$\Database_Client"

rem 配布先ディレクトリでは、存在していないフォルダを指定すると自動生成してくれるxcopyの性質を利用してフォルダ作成とコピーを同時に行います。
rem 例:"C:\Oracle\product\19.3.0\client_1\"

※配布ファイルイメージ(59項目くらい)
image.png

②レジストリに値を格納

19cからの変更点なのかは不明ですが、このままサイレントインストールを実行すると、、

cmd.exe
[FATAL] java.lang.NullPointerException

が出てしまい、インストールが失敗します。
このエラーの解決の為にはレジストリエディターなどから事前に特定の値を設定しておく必要があります。
手動で追加する場合とBatファイルを配布して自動で行い場合の2パターンを紹介します。

Batファイルでレジストリを追加する場合

以下のBatファイルでレジストリの値をチェックし、レジストリに指定の値が存在していない場合に追加、既に存在している場合は何も実行せず終了出来ます。

AddRegedit.bat
@echo off
echo レジストリの設定を開始します。
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE" > nul 2>&1
if ERRORLEVEL 1 ( REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE" ) 
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE" /v "inst_loc" > nul 2>&1 
if ERRORLEVEL 1 ( REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE" /V "inst_loc" /d "C:\Program Files\Oracle\Inventory" 
echo レジストリの設定が完了しました。何かキーを押すとプログラムが終了します。 
pause > nul) else ( echo 既にレジストリが設定されているため、Batファイルの起動は不要です。何かキーを押すとプログラムが終了します。 
pause > nul
exit /b 
)

rem 32bit版の場合は(86)を追加して"C:\Program Files (x86)\Oracle\Inventory"としてください。

手動でレジストリを追加する場合

①Windowsキーを押しながらRを押下
image.png

②regeditと入力し、OKを押下
image.png

③指定の位置にORACLEキーを追加
場所:HKEY_LOCAL_MASHINE\SOFTWARE\WOW6432Node
WOW6432Nodeを右クリック→新規→キー→Oracleと入力→Enter
image.png

④追加したORACLEキーにInventoryの値を格納
ORACLEを右クリック→新規→文字列値→inst_locと入力→Enter→Inst_locを右クリック→修正→C:\Program Files\Oracle\Inventoryと入力(32bit版の場合はC:\Program Files (x86)\Oracle\Inventory)→Enter
image.png

③レスポンスファイルの作成

サイレントインストールで必要になる、Oracle_BASEやOracle_HOMEなどの設定情報を格納したレスポンスファイルの作成をします。
レスポンスファイルはsetup.exeをGUIで起動して基本情報を入力して進めた後、以下の画面で「レスポンス・ファイルの保存」を選択することによって簡単に作成出来ます。
image.png

しかし、19cではなぜかレスポンスファイルの情報が抜け落ちている場合があるので、メモ帳などで開いて値を追加する必要があります。
以下の例では、ORACLE_BASEしか情報がないので、その下にORACLE_HOME=C:\Oracle\product\19.3.0\client_1を追加して上書き保存
image.png

④サイレントインストール用Batファイルの作成

以下のようにBatファイルを作成するとサイレントインストールが実行出来ます。

bat.OracleInst.bat
@echo off
"C:\Oracle\product\19.3.0\client_1\setup.exe" -silent -responseFile "C:\Users\hoge\Desktop\client.rsp"
pause

rem pause入れないと実行後にエラーが出ていても画面が閉じてしまうので一応入れています。

-silent -responseFileの指定は必須で、次に紹介するコマンドを追加して様々な動きを加える事も可能です。(-debugはエラーが出たときに原因を追えるので便利)

サイレントインストール時に指定出来るコマンド一覧

ヘルプを表示する

-help 

サイレントモードで実行する

-silent 

レスポンスファイルの指定

-responseFile -レスポンスファイルの完全パス(C:\Users\hoge\Desktop\client.rspとか)

表示するメッセージログの指定(指定した優先度レベルまでのメッセージログを有効に出来る)

-logLevel -優先度の指定
 
【指定出来る優先度】
severe,warning,info,config,fine,finer,finest

インストールされたホームに構成ツールを実行

-executePrereqs

デバッグモードで実行

-debug

ディスクの使用状況に関するデバッグ情報をログに記録

-printdiskusage

メモリー使用量に関するデバッグ情報をログに記録

-printmemory

時間の使用状況に関するデバッグ情報をログに記録

-printtime

完了するまでプロンプトが返ってこないようにする

-waitForCompletion

構成ツールを実行しない

-noconfig

メッセージをコンソールに表示しない

-noconsole

内部ドライバエラーを無視して実行

ignoreInternalDriverError

Oracleホームにリリース更新を適用

-applyRU

個別パッチをOracleホームに適用

-applyOneOffs -個別パッチを指定(カンマ区切りで複数指定可能)

⑤まとめ

これまでのBatは一つのファイルに合体させて使うと便利です。
実際使う際にはsqlnet.oraとtnsnames.oraも必要になると思うので、それらのコピーも兼ねて作ると以下のようになります。

OracleClientSilent.bat
@echo off

rem Oracleファイルのコピー
xcopy "配布元フォルダディレクトリ" "配布先フォルダディレクトリ" /S /C /E /Q /H /R /Y

rem ディレクトリの設定
echo レジストリの設定を開始します。
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE" > nul 2>&1
if ERRORLEVEL 1 ( REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE" ) 
REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE" /v "inst_loc" > nul 2>&1 
if ERRORLEVEL 1 ( REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE" /V "inst_loc" /d "C:\Program Files\Oracle\Inventory" 
echo レジストリの設定が完了しました。 
) else ( echo 既にレジストリが設定されています。)

rem OracleClientのサイレントインストール
"C:\Oracle\product\19.3.0\client_1\setup.exe" -silent -responseFile "C:\Users\hoge\Desktop\client.rsp"
pause
rem エラーが出た場合に確認する必要がなく、一切操作したくない場合はpauseを消してもいい

rem sqlnet.oraとtnsnames.oraのコピー
xcopy "コピー元\sqlnet.ora" "C:\Oracle\product\19.3.0\client_1\network\admin\" /C /Q /H /R /Y
xcopy "コピー元\tnsnames.ora" "C:\Oracle\product\19.3.0\client_1\network\admin\" /C /Q /H /R /Y

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?