| Oracle Universal InstallerおよびOpatchユーザーズ・ガイド 10gリリース2(10.2) for Microsoft Windows and UNIX Systems B19264-06 |
|
![]() 戻る |
![]() 次へ |
OPatchユーティリティは、Oracle製品への個別パッチの適用およびロールバックを可能にするツールです。この章では、OPatchを使用したパッチの適用に関する情報を示します。この章の内容は次のとおりです。
パッチは、既存のインストールにコピーされるファイルの小さな集合です。パッチはOracle製品の特定のバージョンに関連付けられています。インストール済の対応バージョンの製品にパッチを適用すると、製品のバージョンがアップグレードされます。個別パッチは、特定のバグに対して顧客が使用可能なバグ修正です。個別パッチを適用するには、特定のベース・リリースまたはパッチ・セットがインストールされている必要があります。これらは一般に、特定の顧客の特定のバグに対処します。これらのパッチはバージョン管理されず、一般に将来のパッチ・セットおよび次の製品リリースで使用可能になります。
個別パッチは一般にZIP形式で提供されます。パッチを適用する前に解凍する必要があります。次の図に、個別パッチの構造を示します。
個別パッチの内容は次のとおりです。
パッチ・メタデータ: パッチID、修正されたバグ、影響を受けるファイルおよび実行するアクションに関する情報が含まれます。
ペイロード: OPatchで修正されるファイルが含まれます。
カスタム・スクリプト: パッチの適用前と適用後に実行する必要のある前処理および後処理スクリプト。
OPatch 10.2では、パッチのバージョン管理がサポートされます。(同じパッチIDを持つ)同じパッチに2つ以上の異なるバージョンを使用できます。このバージョン情報は、OPatchメタデータに格納されます。メタデータには、パッチのバージョン情報を格納するタグdate_of_patchがあります。タグのサンプルを次に示します。
<date_of_patch year="YYYY" month="mmm" day="Day" time="Time" zone="TimeZone"/>: Date on which the patch was created
このタグは、Oracleによりパッチが作成された時刻を記録します。後で同じパッチが作成された場合は、このタグにその時刻が記録されます。
|
注意: このバージョン情報は、Oracleによるパッチの作成時刻であり、ホストにパッチが適用された時刻ではありません。 |
たとえば、IDが300200で、パッチ・メタデータのdate_of_patchタグが次のようなパッチについて考えます。
<date_of_patch year="2008" month="Dec" day="23" time="04:57:13 hrs" zone="US/Eastern"/>
OPatchでは、このバージョンのパッチが2008年12月23日の04:57:13に作成されたとみなします。個別パッチをOracleホームに適用した場合、OPatchは情報を$ORACLE_HOME/.patch_storageディレクトリに格納します。このディレクトリ内には、Oracleホームに適用されたパッチごとに別々のディレクトリが作成されます。システムでは一度に1バージョンのパッチのみを適用できます。
opatch lsinventory -detailコマンドを実行し、出力でパッチの場所の記憶領域情報を探すことで、パッチ情報ディレクトリの場所を特定できます。次に例を示します。
Patch Location in Storage area: /home1/HOMEtoiir571/.patch_storage/300200_Dec_23_2008_04_57_13
次の場所に、解凍したバージョンのパッチもあります。
$ORACLE_HOME/.patch_storage/<patch_id_timestamp>/original_patch
オラクル社では、バグまたは一連のバグを修正するために個別パッチを頻繁にリリースします。個別パッチは、My Oracle Support(以前のMetalink)の次の場所でパッチIDを指定して入手できます。
http://www.oracle.com/support/metalink/index.html
OPatchはOracleが提供するユーティリティであり、Oracleのソフトウェアに個別パッチを適用するプロセスを支援します。OPatchは、Oracle Universal Installerのインストールを必要とするJavaベースのユーティリティです。プラットフォームに依存しないこのユーティリティは、サポートされるすべてのオペレーティング・システムで機能します。
OPatchでは次の処理がサポートされます。
個別パッチの適用。
個別パッチの適用のロールバック。
前の個別パッチが適用された後で個別パッチを適用する場合の競合の検出。競合を解決するための最適なオプションも提示されます。
インストールされている製品および個別パッチのレポート。
OPatchユーティリティには次のことが必要です。
Oracleホーム環境変数(ORACLE_HOME)が有効なOracleホーム・ディレクトリを示し、Oracleホーム・ディレクトリのインストール時に使用された値と一致していること。
Java SDK 1.4以上、WindowsのJavaコマンド、およびUNIXのar、cp、fuserおよびmakeコマンドを使用可能であること。
Oracle Real Application Clusters環境に対してライブラリ・パスが正しく設定されていること。OPatchは、システムがReal Application Clustersであるかどうかの検出にAPIを使用します。ライブラリ・パスが次のように正しく設定されていることを確認してください。
For Solaris LD_LIBRARY_PATH = $ORACLE_HOME/lib32:$ORACLE_HOME/lib For HP-UX - SHLIB_PATH=$ORACLE_HOME/lib32:/usr/lib
|
関連項目: OPatchユーティリティの最新情報の確認、更新のチェック、および最新バージョンの入手については、次のURLのMy Oracle Support(以前のMetaLink)を参照してください。http://www.oracle.com/support/metalink/index.html |
OPatch 10.2ユーティリティには次の特長があります。
スケーラビリティ: OPatchは、スケーラブルに多数のパッチをサポートします。
信頼性: OPatchは信頼性が高く、Oracleホームおよびインベントリを保護します。パッチの適用に失敗しても、Oracleホームを安定した状態に戻すことができます。パッチの競合も簡単に検出できます。
移植性: OPatchは、Oracleがソフトウェアをリリースするすべてのオペレーティング・システムと互換性があります。
堅牢性: OPatchは堅牢です。パッチの適用と削除が非常に簡単です。
容易なメンテナンス: OPatchはメンテナンスが簡単であり、拡張も可能です。
サイレント操作のサポート: OPatchでは、サイレント操作がサポートされます。このモードでは、ユーザーと対話せずにソフトウェアを実行できます。
Real Application Clustersのサポート: OPatchはReal Application Clustersをサポートし、その設定でも正常に動作します。Grid Controlに簡単に拡張できます。
容易なデバッグ: OPatchには様々なレベルのロギングおよびトレース・メカニズムがあります。ソフトウェアの問題を簡単に診断できるようにするデバッグ・オプションもあります。
OPatchを起動する前に、次の前提条件チェックを実行します。
OPatchは、Oracleホームが存在するかどうかを確認します。環境変数ORACLE_HOMEが、パッチを適用しようとしている製品のOracleホームに設定されていることを確認する必要があります。環境変数の設定の詳細は、それぞれのベンダーのドキュメントを確認してください。
OPatchが正しく動作するにはJDK 1.4以上が必要です。JREはJDKの一部として提供されます。
OPatch 10.2は、jar、warおよびear操作についてJDKに付属のjarユーティリティを使用します。OPatchは、指定されたOracleホーム内でJDKを検索します。OracleホームにJDKがない場合、ユーザーはOPatchで-jdkオプションを使用して別の場所を指定する必要があります。jar/war/ear操作があり、Java SDKの場所を特定できない場合、OPatchはエラーを表示します。
インストールされているJDKのバージョンを探すには、次のコマンドを実行します。
JDK/bin/java -version
|
注意: 適用しているパッチにjarアクションがない場合、JDKは不要であり、OPatchはJREのみで正常に動作します。 |
OPatchは、パッチのインストール用スクリプトを処理すると同時に、ロールバック・スクリプトを生成し、パッチの適用時に編集または削除されたすべてのファイルのコピーを保存します。OPatchは、インベントリ情報もバックアップします。このため、パッチおよびバックアップ情報を十分に収容できるシステム領域を確保することをお薦めします。
OPatch 10.2が正しく動作するにはOracle Universal Installer 10.2以上が必要です。Oracle Universal Installerのバージョンが、OPatchで必要とされるより前のバージョン場合、OPatchはエラーになります。
OPatchは、特定のパッチがオペレーティング・システムに適用可能かどうかを検出します。適用可能でない場合は、適切なエラー・メッセージを生成します。
OPatchでは、ソフトウェアの様々な操作に使用されるプロパティのセットがサポートされています。これらのプロパティを使用して、OPatchの内部動作を制御できます。デフォルトでは、OPatchは標準のJavaプロパティ形式を指定してプロパティを指定します。デフォルト・プロパティおよびその値の完全なリストを次に示します。
fuser=/sbin:/usr/sbin ar=/usr/ccs/bin/ make=/usr/bin
OPatchのプロパティは次の方法で指定できます。
デフォルトのOPatchプロパティを使用します。
ユーザー定義プロパティ・ファイルの場所を指定します。
コマンドラインを使用します。構文は次のとおりです。
PROPERTY_NAME=VALUE
例: fuser=/sbin:/usr/sbin
Real Application Clustersの場合は、上の項でリストしたチェックに加えて、次の前提条件チェックを実行してください。
クラスタ・マシンに、Oracleクラスタウェア/Real Application Clustersをインストールしているユーザーのユーザー等価が設定されていることを確認する必要があります。UNIXでは、クラスタ・マシンにrshまたはsh、あるいはその両方が設定されている必要があります。Windowsでは、同じ<domain>\<user>がすべてのクラスタ・マシンに対する管理権限を持つ必要があり、マシンが<domain>のメンバーである必要があります。
ユーザー等価が正しく設定されている場合は、次のコマンドが正常に動作します。
$ rsh <nodename> date
ユーザー等価の設定の詳細は、「すべてのクラスタ・ノードでのSSHの構成」を参照してください。
opatch lsinventory -detailコマンドを起動でき、出力されるノード情報を参照できることを確認してください。コマンドの出力のサンプル・リスティングを次に示します。
Oracle interim Patch Installer version 10.2.0.4.6
Copyright (c) 2009, Oracle Corporation. All rights reserved..
Oracle Home : /home/racqa/102_twork/toii/toiir/toiir571/HOMEtoiir571
Central Inventory : /home/racqa/102_twork/toii/toiir/toiir571/inventory
from : /home/racqa/102_
twork/toii/toiir/toiir571/HOMEtoiir571/oraInst.loc
OPatch version : 10.2.0.4.6
OUI version : 10.2.0.4.6
OUI location : /home/racqa/102_twork/toii/toiir/toiir571/HOMEtoiir571/oui
Log file location : /home/racqa/102_
twork/toii/toiir/toiir571/HOMEtoiir571/cfgtoollogs/opatch/opatch-2008_May_30_
01-04-52-PDT_Mon.log
Lsinventory Output file location : /home1/racqa/102_
twork/toii/toiir/toiir571/HOMEtoiir571/cfgtoollogs/opatch/lsinv/lsinventory-2008_
May_30_01-04-52-PDT_Mon.txt
--------------------------------------------------------------------------------
Installed Top-level Products (1):
Oracle Database 10g 10.2.0.4.6
There are 1 products installed in this Oracle Home.
Installed Products (151):
Advanced Queueing (AQ) API 10.2.0.4.6
Advanced Replication 10.2.0.4.6
Agent Required Support Files 10.2.0.4.6
Assistant Common Files 10.2.0.4.6
Authentication and Encryption 10.2.0.4.6
Bali Share 1.1.18.0.0
Character Set Migration Utility 10.2.0.4.6
CSS Single-instance Common Files 10.2.0.4.6
Data Management Services Common Files 10.2.0.4.6
Database Configuration Assistant 10.2.0.4.6
Database SQL Scripts 10.2.0.4.6
Database Upgrade Assistant 10.2.0.4.6
Database Verify Utility 10.2.0.4.6
Database Workspace Manager 10.2.0.4.6
DBJAVA Required Support Files 10.2.0.4.6
Documentation Required Support Files 10.2.0.4.6
Enterprise Edition Options 10.2.0.4.6
Enterprise Manager Agent 10.2.0.4.6
Enterprise Manager Common Files 10.2.0.4.6
Enterprise Manager Minimal Integration 10.2.0.4.6
Enterprise Manager plugin Common Files 10.2.0.4.6
Enterprise Manager Repository 10.2.0.4.6
Export/Import 10.2.0.4.6
Extended Windowing Toolkit 3.3.18.0.0
Generic Connectivity Common Files 10.2.0.4.6
Generic Connectivity Using ODBC 10.2.0.4.6
Installation Common Files 10.2.0.4.6
Installer SDK Component 10.2.0.1.0
iSQL*Plus 10.2.0.4.6
Java Naming and Directory Interface Libraries 10.2.0.4.6
Java Runtime Environment 1.4.2.0.0
JDBC Common Files 10.2.0.4.6
JDBC/OCI Common Files 10.2.0.4.6
JDBC/OCI Common Files for Instant Client 10.2.0.4.6
LDAP Required Support Files 10.2.0.4.6
New Database ID 10.2.0.4.6
Object Type Translator 10.2.0.4.6
Oracle Advanced Security 10.2.0.4.6
Oracle C++ Call Interface 10.2.0.4.6
Oracle C++ Call Interface for Instant Client 10.2.0.4.6
Oracle Call Interface (OCI) 10.2.0.4.6
Oracle Client Required Support Files 10.2.0.4.6
Oracle Code Editor 1.2.1.0.0I
Oracle Containers for Java 10.2.0.4.6
Oracle Core Required Support Files 10.2.0.4.6
Oracle Data Mining 10.2.0.4.6
Oracle Database 10g 10.2.0.4.6
Oracle Database 10g 10.2.0.4.6
Oracle Database User Interface 2.2.13.0.0
Oracle Database Utilities 10.2.0.4.6
Oracle Development Kit 10.2.0.4.6
Oracle Display Fonts 9.0.2.0.0
Oracle Enterprise Manager 10g Database Control 10.2.0.4.6
Oracle Enterprise Manager Console DB 10.2.0.4.6
Oracle Extended Windowing Toolkit 3.4.28.0.0
Oracle Globalization Support 10.2.0.4.6
Oracle Help For Java 4.2.5.0.0a
Oracle Help for the Web 1.1.7.0.0a
Oracle Ice Browser 5.2.3.3.0
Oracle interMedia 10.2.0.4.6
Oracle interMedia Annotator 10.2.0.4.6
Oracle interMedia Audio 10.2.0.4.6
Oracle interMedia Client Compatibility Files 10.2.0.4.6
Oracle interMedia Client Demos 10.2.0.4.6
Oracle interMedia Client Option 10.2.0.4.6
Oracle interMedia Common Files 10.2.0.4.6
Oracle interMedia Image 10.2.0.4.6
Oracle interMedia Java Advanced Imaging 10.2.0.4.6
Oracle interMedia Java Client 10.2.0.4.6
Oracle interMedia Locator 10.2.0.4.6
Oracle interMedia Video 10.2.0.4.6
Oracle interMedia Web Client 10.2.0.4.6
Oracle Internet Directory Client 10.2.0.4.6
Oracle Internet Directory Client Common Files 10.2.0.4.6
Oracle Internet Directory Tools 10.2.0.4.6
Oracle Java Tools 10.2.0.4.6
Oracle JDBC Thin Driver for JDK 1.2 10.2.0.4.6
Oracle JDBC Thin Driver for JDK 1.4 10.2.0.4.6
Oracle JDBC Thin Driver for JDK 1.4 for Instant Client 10.2.0.4.6
Oracle JDBC/OCI Driver for JDK 1.4 10.2.0.4.6
Oracle JFC Extended Windowing Toolkit 4.2.18.0.0
Oracle JVM 10.2.0.4.6
Oracle Locale Builder 10.2.0.4.6
Oracle Message Gateway Common Files 10.2.0.4.6
Oracle Net 10.2.0.4.6
Oracle Net Configuration Assistant 10.2.0.4.6
Oracle Net Listener 10.2.0.4.6
Oracle Net Manager 10.2.0.4.6
Oracle Net Required Support Files 10.2.0.4.6
Oracle Net Services 10.2.0.4.6
Oracle Notification Service 9.0.4.0.0
Oracle OLAP 10.2.0.4.6
Oracle OLAP API 10.2.0.4.6
Oracle OLAP Catalog 10.2.0.4.6
Oracle One-Off Patch Installer 10.2.0.1.0
Oracle Partitioning 10.2.0.4.6
Oracle Programmer 10.2.0.4.6
Oracle RAC Required Support Files 10.2.0.4.6
Oracle RAC Required Support Files-HAS 10.2.0.4.6
Oracle Real Application Clusters 10.2.0.4.6
Oracle Spatial 10.2.0.4.6
Oracle Starter Database 10.2.0.4.6
Oracle Text 10.2.0.4.6
Oracle UIX 2.1.21.0.0a
Oracle Ultra Search Common Files 10.2.0.4.6
Oracle Ultra Search Middle-Tier 10.2.0.4.6
Oracle Ultra Search Server 10.2.0.4.6
Oracle Universal Installer 10.2.0.1.0
Oracle Wallet Manager 10.2.0.4.6
Oracle XML Developer's Kit 10.2.0.4.6
Oracle XML Runtime Components 10.2.0.4.6
Oracle XML SQL Utility 10.2.0.4.6
Oracle10g Real Application Clusters Common Files 10.2.0.4.6
Parser Generator Required Support Files 10.2.0.4.6
Perl Interpreter 5.6.1.0.2d
PL/SQL 10.2.0.4.6
PL/SQL Embedded Gateway 10.2.0.4.6
PL/SQL Required Support Files 10.2.0.4.6
Platform Required Support Files 10.2.0.4.6
Precompiler Common Files 10.2.0.4.6
Precompiler Required Support Files 10.2.0.4.6
Pro*C/C++ 10.2.0.4.6
RDBMS Required Support Files 10.2.0.4.6
Recovery Manager 10.2.0.4.6
regexp 2.1.9.0.0
Required Support Files 10.2.0.4.6
Sample Schema 10.2.0.4.6
Secure Socket Layer 10.2.0.4.6
Secure Socket Layer 10.2.0.4.6
SQL*Loader 10.2.0.4.6
SQL*Plus 10.2.0.4.6
SQL*Plus Required Support Files 10.2.0.4.6
SQLJ Runtime 10.2.0.4.6
SSL Required Support Files 10.2.0.4.6
SSL Required Support Files for InstantClient 10.2.0.4.6
Sun JDK 1.4.2.0.0
Sun JDK extensions 9.0.4.0.0
Utilities Common Files 10.2.0.4.6
Visigenics ORB 3.4.0.0.0
XDK Required Support Files 10.2.0.4.6
XML 10.2.0.4.6
XML Class Generator for C++ 10.2.0.4.6
XML Class Generator for Java 10.2.0.4.6
XML Parser for C 10.2.0.4.6
XML Parser for C++ 10.2.0.4.6
XML Parser for Java 10.2.0.4.6
XML Parser for Oracle JVM 10.2.0.4.6
XML Parser for PL/SQL 10.2.0.4.6
XML Transviewer Beans 10.2.0.4.6
XML Transx 10.2.0.4.6
XSQL Servlet 10.2.0.4.6
There are 151 products installed in this Oracle Home.
Intermin patches (1) :
Patch 3811942 : applied on Mon May 30 00:59:33 PDT 2008
Created on 31 Aug 2007, 12:06:28 hrs US/Pacific
Bugs fixed:
3811942
Files Touched:
/hosp.o --> ORACLE_HOME/lib/libagent10.a
/pesblt.o --> ORACLE_HOME/lib/libpls10.a
/kgl.o --> ORACLE_HOME/lib/libgeneric10.a
/qcpi6.o --> ORACLE_HOME/lib/libgeneric10.a
ins_rdbms.mk --> ORACLE_HOME/rdbms/lib/iextjob
ins_rdbms.mk --> ORACLE_HOME/rdbms/lib/iextjobo
ins_rdbms.mk --> ORACLE_HOME/rdbms/lib/client_sharedlib
/hosp.o --> ORACLE_HOME/lib/libserver10.a
/prse.o --> ORACLE_HOME/lib/libserver10.a
/prsa.o --> ORACLE_HOME/lib/libserver10.a
/prsf.o --> ORACLE_HOME/lib/libserver10.a
/prssz.o --> ORACLE_HOME/lib/libserver10.a
/kprc.o --> ORACLE_HOME/lib/libserver10.a
/qmhdr.o --> ORACLE_HOME/lib/libserver10.a
/pesblt.o --> ORACLE_HOME/lib/libpls10.a
/qcpi6.o --> ORACLE_HOME/lib/libgeneric10.a
prvtpexp.plb --> ORACLE_HOME/rdbms/admin/prvtpexp.plb
sjsex.o --> ORACLE_HOME/rdbms/lib/sjsex.o
ins_rdbms.mk --> ORACLE_HOME/rdbms/lib/iextjob
ins_rdbms.mk --> ORACLE_HOME/rdbms/lib/iextjobo
ins_rdbms.mk --> ORACLE_HOME/rdbms/lib/ioracle
ins_rdbms.mk --> ORACLE_HOME/rdbms/lib/client_sharedlib
driload.pkh --> ORACLE_HOME/ctx/admin/driload.pkh
/oracle/sysman/assistants/util/em/EMConfigStep.class --> ORACLE_
HOME/assistants/jlib/assistantsCommon.jar
/oracle/sysman/assistants/util/sqlEngine/SQLEngine.class --> ORACLE_
HOME/assistants/jlib/assistantsCommon.jar
/oracle/sysman/assistants/dbca/backend/DBEntryStep.class --> ORACLE_
HOME/assistants/dbca/jlib/dbca.jar
/oracle/sysman/assistants/dbca/backend/EMConfigStep.class --> ORACLE_
HOME/assistants/dbca/jlib/dbca.jar
/oracle/sysman/assistants/dbca/backend/PostDBCreationStep.class --> ORACLE_
HOME/assistants/dbca/jlib/dbca.jar
/oracle/sysman/emcp/EMConfig.class --> ORACLE_HOME/jlib/emca.jar
/oracle/sysman/emcp/IEMCAConstants.class --> ORACLE_HOME/jlib/emca.jar
/oracle/sysman/emcp/EMConfig.class --> ORACLE_HOME/sysman/jlib/emCORE.jar
/oracle/sysman/emcp/IEMCAConstants.class --> ORACLE_
HOME/sysman/jlib/emCORE.jar
/oracle/sysman/emSDK/conf/ConfigManager.class --> ORACLE_
HOME/sysman/jlib/emCORE.jar
/oracle/sysman/emSDK/eml/EmlConstants.class --> ORACLE_
HOME/sysman/jlib/emCORE.jar
/oracle/sysman/util/pref/PrefUtil.class --> ORACLE_
HOME/sysman/jlib/emCORE.jar
emctl.pl --> ORACLE_HOME/emdw/bin/emctl.pl
/ncrfipm.o --> ORACLE_HOME/lib/libnro10.a
libsqlplus.a --> ORACLE_HOME/lib/libsqlplus.a
libsqlplus.so --> ORACLE_HOME/lib/libsqlplus.so
libisqlplus.a --> ORACLE_HOME/lib/libisqlplus.a
libisqlplus.so --> ORACLE_HOME/lib/libisqlplus.so
mdprivs.sql --> ORACLE_HOME/md/admin/mdprivs.sql
prvtgmd.plb --> ORACLE_HOME/md/admin/prvtgmd.plb
sdolrsmd.sql --> ORACLE_HOME/md/admin/sdolrsmd.sql
prvtccbk.plb --> ORACLE_HOME/md/admin/prvtccbk.plb
wk0acl.pkh --> ORACLE_HOME/ultrasearch/admin/wk0acl.pkh
wk0acl.plb --> ORACLE_HOME/ultrasearch/admin/wk0acl.plb
wk0adm.pkh --> ORACLE_HOME/ultrasearch/admin/wk0adm.pkh
wk0adm.plb --> ORACLE_HOME/ultrasearch/admin/wk0adm.plb
wk0snapshot.plb --> ORACLE_HOME/ultrasearch/admin/wk0snapshot.plb
wk0util.pkh --> ORACLE_HOME/ultrasearch/admin/wk0util.pkh
wk0util.plb --> ORACLE_HOME/ultrasearch/admin/wk0util.plb
Patch Location in Inventory:
/home1/racqa/102_
twork/toii/toiir/toiir571/HOMEtoiir571/inventory/oneoffs/3811942
Patch Location in Storage area:
/home1/racqa/102_twork/toii/toiir/toiir571/HOMEtoiir571/.patch_
storage/3811942_Aug_31_2007_12_06_28
Rac system comprising of multiple nodes
Local node = stadu56
Remote node = stacg16
--------------------------------------------------------------------------------
OPatch succeeded.
ノード情報が正しく出力されない場合は、ノード・リストを更新する必要があります。ノード・リストの更新の詳細は、「クラスタのノードの更新」を参照してください。
ORACLE_HOMEは、任意の方法でバックアップできます。ORACLE_HOMEは、zip、cp -r、tar、cpioなどの任意の形式を使用して圧縮できます。
opatch lsinventory -detailの実行時にORACLE_HOMEが表示されない場合は、セントラル・インベントリにORACLE_HOMEがないか、セントラル・インベントリ自体が失われたか破損している可能性があります。
opatch lsinventory -detailコマンドの実行時にORACLE_HOMEがリストされても、ORACLE_HOME内の製品およびコンポーネントがリストされない場合は、ORACLE_HOME内のインベントリ(ローカル・インベントリ)が失われたか破損している可能性があります。
ローカル・インベントリがなんらかの理由で破損または消失した場合は、ORACLE_HOME/inventoryをリストアできます(バックアップされている場合)。バックアップが存在しない場合は、ソフトウェアを再インストールする必要があります。
パッチ操作を実行する前に、ORACLE_HOMEをバックアップすることを強くお薦めします。
OPatchユーティリティは、<Path_to_Oracle_Home>/OPatchディレクトリにあります。様々なオプションおよびコマンドライン引数を指定して実行されます。次のコマンドは、OPatchユーティリティの構文を示しています。
<Path_to_OPatch>/opatch<option>[-command_line_arguments]
上のコマンドでは、次の変数が使用されています。
command_line_arguments: オプションに対するコマンドライン引数。これについては次の各項で説明します。
option: OPatchオプション。これについては次の表で説明します。
表8-1 OPatchオプション
| オプション | 説明 |
|---|---|
|
apply |
個別パッチをインストールします。詳細は、「applyオプション」を参照してください。 |
|
lsinventory |
システムに現在何がインストールされているかをリストします。詳細は、「lsinventoryオプション」を参照してください。 |
|
query |
特定のパッチの詳細を問い合せます。詳細は、「queryオプション」を参照してください。 |
|
rollback |
個別パッチを削除します。詳細は、「rollbackオプション」を参照してください。 |
|
version |
パッチ・ツールの現在のバージョンを出力します。詳細は、「versionオプション」を参照してください。 |
任意のオプションの追加情報を表示するには、次のコマンドを使用します。
<Path_to_OPatch>/opatchoption-help
Perlを使用している場合は、次のコマンドを使用します。
perl opatch.pl option -help
applyオプションは、指定されたOracleホームに個別パッチを適用します。環境変数ORACLE_HOMEは、パッチを適用するOracleホームに設定する必要があります。このオプションには次の構文を使用します。
<Path_to_OPatch>/opatch apply [-delay (value)] [-force] \
[-invPtrLoc (path)] [-jdk (location)] [-jre (location)] [-local] \
[-minimize_downtime] [-no_bug_superset] [-no_inventory] \
[-oh (Oracle Home location)] \
[-post (options to be passed into post) [-opatch_post_end]]\
[-pre (options to be passed into pre) [-opatch_pre_end]] \
[-retry (value)] [-silent] [-verbose] [-no_relink] \ [-no_sysmod (patch
location)][-remote_nodes (comma separated node names)][-local_node (node
_name)][patch_location]
次の表に、applyオプションで使用できるコマンドライン引数をリストします。
表8-2 applyオプションのコマンドライン引数
| コマンドライン引数 | 説明 |
|---|---|
|
delay |
インベントリのロックに失敗した場合に、次のインベントリ・ロックを試行する前に待機する秒数を指定します。このオプションは、 |
|
force |
競合するパッチをシステムから削除します。パッチの適用を妨げる競合が存在する場合、 |
|
invPtrLoc |
|
|
jdk |
Oracleホーム・ディレクトリの下のデフォルトの場所のかわりに使用する特定のJDK(jar)の場所を指定します。-jdkオプションと-jreオプションは同時に使用できません。 |
|
jre |
Oracleホーム・ディレクトリの下のデフォルトの場所のかわりに使用する特定のJRE(Java)の場所を指定します。-jdkオプションと-jreオプションは同時に使用できません。 |
|
local |
OPatchユーティリティがローカル・ノードにパッチを適用し、ローカル・ノードのインベントリを更新することを指定します。パッチまたはインベントリ更新は他のノードに伝播されません。 このコマンドライン引数は、Oracle Real Application Clusters環境および非クラスタ化環境で使用できます。パッチを適用する前にクラスタ全体が停止している場合は、非ローリング・パッチにこの引数を使用できます。 |
|
local_node |
OPatchユーティリティにこのクラスタのローカル・ノードを指定します。 このコマンドライン引数は、Oracle Real Application Clusters環境で使用できます。 |
|
minimize_downtime |
OPatchユーティリティによりパッチが適用されるノードの順序を指定します。 このコマンドライン引数は、Oracle Real Application Clusters環境にのみ適用できます。 |
|
no_bug_superset |
現在のパッチで修正するバグが、Oracleホーム・ディレクトリにインストールされているパッチで修正済のバグのスーパーセットであるか同一の場合は、エラーにすることを指定します。 |
|
no_inventory |
インベントリの読取りおよび更新を省略します。このコマンドライン引数を |
|
no_sysmod |
OPatchユーティリティでシステム内のファイルを更新する必要がないことを指定します。インベントリのみを更新します。 |
|
no_relink |
このオプションは、make操作を実行しません。複数パッチの適用中に、リンク手順を1回のみ実行するために使用できます。OPatchは、実行しなかったmake操作を追跡しません。コンパイルの最後に、このオプションを使用せずにOPatchを実行する必要があります。 |
|
oh |
デフォルトのかわりに使用するOracleホーム・ディレクトリを指定します。 |
|
opatch_post_end |
|
|
opatch_pre_end |
|
|
post |
標準パラメータの他に |
|
pre |
標準パラメータの他に |
|
remote_nodes |
OPatchユーティリティにリモート・ノードのリストを指定します。 このコマンドライン引数は、Oracle Real Application Clusters環境で使用できます。 |
|
report |
アクションを実行せずに画面に出力します。 |
|
retry |
インベントリのロックに失敗した場合にOPatchユーティリティが試行する必要のある回数を指定します。 |
|
silent |
ユーザーとの対話を抑止し、回答をデフォルトでyesに設定します。 |
|
verbose |
画面およびログ・ファイルに出力します。 |
|
注意: パッチがSQL変更から構成される場合は、SQLスクリプトを適用するパッチに含まれているパッチのREADMEの手順に従ってください。 |
lsinventoryオプションは、特定のOracleホーム・ディレクトリまたはすべてのインストールについて、システムに何がインストールされているかをレポートします。このオプションには次の構文を使用します。
次の表に、lsinventoryオプションで使用できるコマンドライン引数をリストします。
<Path_to_OPatch>/opatch lsinventory [-all] [-bugs_fixed asc|desc] [-delay (value)]
[-detail] [-invPrtLoc (path)] \
[-jre (location)] [-patch asc|desc] [-oh (Oracle Home location)] [-retry (value)]
コマンド・オプションの説明は、表8-3を参照してください。
-detailオプションの例
次の例では、opatch lsinventory -detailの出力を示します。
Oracle interim Patch Installer version 10.2.0.4.6 Copyright (c) 2009, Oracle Corporation. All rights reserved.. Oracle Home : /home/oracle_TEST/product/10.2.0/db_1 Central Inventory : /home/OUIHome_Opatch from : /home/oracle_TEST/product/10.2.0/db_1/oraInst.loc OPatch version : 10.2.0.4.6 OUI version : 10.2.0.4.6 OUI location : /home/oracle_TEST/product/10.2.0/db_1/oui Log file location : /home/oracle_ TEST/product/10.2.0/db1/cfgtoollogs/opatch/opatch-2008_May_25_11-09-34-IST_Wed.log Patch history file: /scratch/userid/newDB/cfgtoollogs/opatch/opatch_history.txt Lsinventory Output file location : /home/oracle_TEST/product/10.2.0/db_ 1/cfgtoollogs/opatch/lsinv/lsinventory-2008_May_25_11-09-34-IST_Wed.txt -------------------------------------------------------------------------------- Installed Top-level Products (1): Oracle Database 10g 10.2.0.4.6 There are 1 products installed in this Oracle Home. Installed Products (10): Agent Required Support Files 10.2.0.4.6 Assistant Common Files 10.2.0.4.6 Bali Share 1.1.18.0.0 Buildtools Common Files 10.2.0.4.6 Character Set Migration Utility 10.2.0.4.6 Database Configuration and Upgrade Assistants 10.2.0.4.6 Database SQL Scripts 10.2.0.4.6 Database Workspace Manager 10.2.0.4.6 DBJAVA Required Support Files 10.2.0.4.6 Enterprise Edition Options 10.2.0.4.6 There are 10 products installed in this Oracle Home. Intermin patches (1) : Patch 111000 : applied on Mon May 23 19:44:08 IST 2008 Created on 27 Jul 2007, 05:43:46 hrs PST8PDT Bugs fixed: 111000 Files Touched: /qmtest.o --> ORACLE_HOME/lib/libserver11.a libmapsym.so --> ORACLE_HOME/lib/libmapsym.so ins_rdbms.mk --> ORACLE_HOME/rdbms/lib/ioracle /oracle/xml/jaxb/orajaxb.class --> ORACLE_HOME/lib/xml.jar Patch Location in Inventory: /home/oracle_TEST/product/10.2.0/db_1/inventory/oneoffs/111000 Patch Location in Storage area: /home/oracle_TEST/product/10.2.0/db_1/.patch_storage/111000_Jul_27_2007_05_43_46 -------------------------------------------------------------------------------- OPatch succeeded.
-bugs_fixedオプションの例
次の例では、opatch lsinventory -bugs_fixed ascの出力を示します。
Oracle interim Patch Installer version 10.2.0.4.6
Copyright (c) 2009, Oracle Corporation. All rights reserved..
Oracle Home : /home/oracle_TEST/product/10.2.0/db_1
Central Inventory : /home/OUIHome_Opatch
from : /home/oracle_TEST/product/10.2.0/db_1/oraInst.loc
OPatch version : 10.2.0.4.6
OUI version : 10.2.0.4.6
OUI location : /home/oracle_TEST/product/10.2.0/db_1/oui
Log file location : /home/oracle_
TEST/product/10.2.0/db1/cfgtoollogs/opatch/opatch-2008_May_25_11-09-34-IST_Wed.log
Patch history file: /scratch/userid/newDB/cfgtoollogs/opatch/opatch_history.txt
Lsinventory Output file location : /home/oracle_TEST/product/10.2.0/db_
1/cfgtoollogs/opatch/lsinv/lsinventory-2008_May_25_11-09-34-IST_Wed.txt
--------------------------------------------------------------------------------
Installed Top-level Products (2):
Oracle Database 10g 10.2.0.4.6
Oracle Database 10g Release 2 Patch Set 2 10.2.0.4.6
There are 2 products installed in this Oracle Home.
List of Bugs fixed by Installed Patches:
Bug Fixed by Installed at Description
Patch
--- -------- ------------ -----------
1000000 6079591 Mon Oct 13 02:03:42 PDT 2008 test bug
6079591 6079591 Mon Oct 13 02:03:42 PDT 2008 MLR BUG FOR 10.2.0:.3 FOR CPU:JUL2:007
300500 300500 Fri Sep 05 02:25:34 PDT 2008 Demo bug for patching files
300501 300500 Fri Sep 05 02:25:34 PDT 2008 Demo bug for patching files
300502 300500 Fri Sep 05 02:25:34 PDT 2008 Demo bug for patching files
6121268 6121268 Tue Aug 19 23:32:33 PDT 2008 DB-10.2.0.3-MOLECULE-007-CPUJUL2007
6121266 6121266 Tue Aug 19 23:32:27 PDT 2008 DB-10.2.0.3-MOLECULE-018-CPUJUL2007
6121264 6121264 Tue Aug 19 23:32:22 PDT 2008 DB-10.2.0.3-MOLECULE-017-CPUJUL2007
6121263 6121263 Tue Aug 19 23:32:14 PDT 2008 DB-10.2.0.3-MOLECULE-016-CPUJUL2007
.....
.....
(Middle section of report is intentionally excluded.)
.....
.....
6121248 6650096 Tue Feb 12 05:50:48 PST 2008 DB-10.2.0.3-MOLECULE-015-CPUJUL2007
6650096 6650096 Tue Feb 12 05:50:48 PST 2008 DB-10.2.0.3-MOLECULE-036-CPUJAN2008
6121247 6650095 Tue Feb 12 05:50:41 PST 2008 DB-10.2.0.3-MOLECULE-006-CPUAPR2007
6397946 6650095 Tue Feb 12 05:50:41 PST 2008 DB-10.2.0.3-MOLECULE-031-CPUOCT2007
6650095 6650095 Tue Feb 12 05:50:41 PST 2008 DB-10.2.0.3-MOLECULE-035-CPUJAN2008
6650081 6650081 Tue Feb 12 05:50:35 PST 2008 DB-10.2.0.3-MOLECULE-034-CPUJAN2008
6646853 6646853 Tue Feb 12 05:50:28 PST 2008 MLR BUG FOR 10.2.0.3 FOR CPUJAN2008
6452863 6452863 Tue Feb 12 05:50:12 PST 2008 TRACKING BUG FOR CPUJUL2007
--------------------------------------------------------------------------------
OPatch succeeded.
-patch descオプションの例
次の例では、opatch lsinventory -patch descの出力を示します。
Oracle interim Patch Installer version 10.2.0.4.6
Copyright (c) 2009, Oracle Corporation. All rights reserved..
Oracle Home : /home/oracle_TEST/product/10.2.0/db_1
Central Inventory : /home/OUIHome_Opatch
from : /home/oracle_TEST/product/10.2.0/db_1/oraInst.loc
OPatch version : 10.2.0.4.6
OUI version : 10.2.0.4.6
OUI location : /home/oracle_TEST/product/10.2.0/db_1/oui
Log file location : /home/oracle_
TEST/product/10.2.0/db1/cfgtoollogs/opatch/opatch-2008_May_25_11-09-34-IST_Wed.log
Patch history file: /scratch/userid/newDB/cfgtoollogs/opatch/opatch_history.txt
Lsinventory Output file location : /home/oracle_TEST/product/10.2.0/db_
1/cfgtoollogs/opatch/lsinv/lsinventory-2008_May_25_11-09-34-IST_Wed.txt
--------------------------------------------------------------------------------
Interim patches (39) :
Patch 6079591 : applied on Mon Oct 13 02:03:42 PDT 2008
Created on 21 Jun 2007, 03:42:18 hrs PST8PDT
Bugs fixed:
6079591, 1000000
Patch 300500 : applied on Fri Sep 05 02:25:34 PDT 2008
Created on 07 Nov 2005, 04:57:14 hrs US/Eastern
Bugs fixed:
300500, 300501, 300502
--------------------------------------------------------------------------------
OPatch succeeded.
表8-3 lsinventoryオプションのコマンドライン引数
| コマンドライン引数 | 説明 |
|---|---|
|
all |
Oracleホーム・ディレクトリで見つかったそれぞれの名前およびインストール・ディレクトリをレポートします。 |
|
bugs_fixed |
インストール済のパッチで修正された不具合を表形式でレポートします。レポートには、修正された不具合に加えて、インストール済のパッチ、インストール時刻および不具合の説明も表示されます。修正済の不具合は、インストールされているパッチ別にソートされます。デフォルトでは、パッチはインストールされた時間に従って降順で表示され、各パッチ内の不具合は昇順で表示されます。このオプションで「asc」または「desc」を使用すると、各パッチの不具合のソート順序を強制できます。 patchまたはpatch_idオプションとともにこのオプションを使用すると、インストール済のパッチのソート順序に従うことができます。 |
|
delay |
インベントリのロックに失敗した場合に、次のインベントリ・ロックを試行する前に待機する秒数を指定します。このオプションは、-retryオプションが指定されている場合にのみ使用できます。 |
|
detail |
インストールされている製品およびその他の詳細をレポートします。このコマンドライン引数を |
|
invPtrLoc |
|
|
jre |
Oracleホーム・ディレクトリの下のデフォルトの場所のかわりに使用する特定のJRE(Java)の場所を指定します。 |
|
oh |
デフォルト・ディレクトリのかわりに使用するOracleホーム・ディレクトリを指定します。 |
|
patch |
OracleホームにインストールされているパッチIDをインストール時刻に基づいて昇順(asc)または降順(desc)にリストします。デフォルトは降順です。 |
|
retry |
インベントリのロックに失敗した場合にOPatchユーティリティが試行する必要のある回数を指定します。 |
次に、opatch lsinventory -detailのサンプル出力を示します。
Oracle interim Patch Installer version 10.2.0.4.6 Copyright (c) 2009, Oracle Corporation. All rights reserved.. Oracle Home : /home/oracle_TEST/product/10.2.0/db_1 Central Inventory : /home/OUIHome_Opatch from : /home/oracle_TEST/product/10.2.0/db_1/oraInst.loc OPatch version : 10.2.0.4.6 OUI version : 10.2.0.4.6 OUI location : /home/oracle_TEST/product/10.2.0/db_1/oui Log file location : /home/oracle_ TEST/product/10.2.0/db1/cfgtoollogs/opatch/opatch-2008_May_25_11-09-34-IST_Wed.log Lsinventory Output file location : /home/oracle_TEST/product/10.2.0/db_ 1/cfgtoollogs/opatch/lsinv/lsinventory-2008_May_25_11-09-34-IST_Wed.txt -------------------------------------------------------------------------------- Installed Top-level Products (1): Oracle Database 10g 10.2.0.4.6 There are 1 products installed in this Oracle Home. Installed Products (10): Agent Required Support Files 10.2.0.4.6 Assistant Common Files 10.2.0.4.6 Bali Share 1.1.18.0.0 Buildtools Common Files 10.2.0.4.6 Character Set Migration Utility 10.2.0.4.6 Database Configuration and Upgrade Assistants 10.2.0.4.6 Database SQL Scripts 10.2.0.4.6 Database Workspace Manager 10.2.0.4.6 DBJAVA Required Support Files 10.2.0.4.6 Enterprise Edition Options 10.2.0.4.6 There are 10 products installed in this Oracle Home. Intermin patches (1) : Patch 102000 : applied on Mon May 23 19:44:08 IST 2008 Created on 27 Jul 2007, 05:43:46 hrs PST8PDT Bugs fixed: 102000 Files Touched: /qmtest.o --> ORACLE_HOME/lib/libserver10.a libmapsym.so --> ORACLE_HOME/lib/libmapsym.so ins_rdbms.mk --> ORACLE_HOME/rdbms/lib/ioracle /oracle/xml/jaxb/orajaxb.class --> ORACLE_HOME/lib/xml.jar Patch Location in Inventory: /home/oracle_TEST/product/10.2.0/db_1/inventory/oneoffs/102000 Patch Location in Storage area: /home/oracle_TEST/product/10.2.0/db_1/.patch_storage/102000_Jul_27_2007_05_43_46 -------------------------------------------------------------------------------- OPatch succeeded.
queryオプションは、特定のパッチの詳細を問い合せます。パッチおよびパッチが適用されるシステムに関する情報を提供します。このオプションには次の構文を使用します。
<Path_to_OPatch>/opatch query [-all] [-jre (Location)] [-jdk (Location)]\
[-oh (Location)] [patch_location]
次の表に、queryオプションで使用できるコマンドライン引数をリストします。
表8-4 queryオプションのコマンドライン引数
| コマンドライン引数 | 説明 |
|---|---|
|
all |
パッチに関するすべての情報を取得します。すべてのコマンドライン引数を設定することと同じです。 |
|
jdk |
Oracleホーム・ディレクトリの下のデフォルトの場所のかわりに使用する特定のJDK(jar)の場所を指定します。-jdkオプションと-jreオプションは同時に使用できません。 |
|
jre |
Oracleホーム・ディレクトリの下のデフォルトの場所のかわりに使用する特定のJRE(Java)の場所を指定します。-jdkオプションと-jreオプションは同時に使用できません。 |
|
oh |
デフォルト・ディレクトリのかわりに使用するOracleホーム・ディレクトリを指定します。 |
rollbackオプションは、適切なOracleホーム・ディレクトリから特定の個別パッチを削除します。このオプションには次の構文を使用します。
<Path_to_OPatch>/opatch rollback -id(patch_id)[-ph (patch directory)] \ [-delay] (value) [-invPtrLoc (path)] [-jdk (location)] [-jre (location)]\ [-local] [-oh (Oracle Home location)] \ [-post (options to be passed into post) [-opatch_post_end]] \ [-pre (options to be passed into pre) [-opatch_pre_end]] [-retry (value)] \ [-silent] [-verbose] [-no_relink] [-no_sysmod][-remote_nodes (node1,node2)][-local_node (node_name)]
次の表に、rollbackオプションで使用できるコマンドライン引数をリストします。
表8-5 rollbackオプションのコマンドライン引数
| コマンドライン引数 | 説明 |
|---|---|
|
delay |
|
|
id |
ロールバックするパッチを指定します。すべてのパッチ識別子を表示するには |
|
invPtrLoc |
|
|
jdk |
Oracleホーム・ディレクトリの下のデフォルトの場所のかわりに使用する特定のJDK(jar)の場所を指定します。 |
|
jre |
Oracleホーム・ディレクトリの下のデフォルトの場所のかわりに使用する特定のJRE(Java)の場所を指定します。 |
|
local |
OPatchユーティリティがローカル・ノードをロールバックおよび更新し、ローカル・ノードのインベントリを更新することを指定します。パッチまたはインベントリ更新は他のノードに伝播されません。 このコマンドライン引数は、Oracle Real Application Clusters環境および非クラスタ化環境で使用できます。パッチを適用する前にクラスタ全体が停止している場合は、非ローリング・パッチにこの引数を使用できます。 |
|
local_node |
OPatchユーティリティに、このノードがクラスタのローカル・ノードであることを指定します。 このコマンドライン引数は、Oracle Real Application Clusters環境で使用できます。 |
|
no_sysmod |
OPatchユーティリティでシステム内のファイルを更新する必要がないことを指定します。インベントリのみを更新します。 |
|
no_relink |
このオプションは、パッチでmake操作を実行しません。複数パッチの削除中に、コンパイル手順を1回のみ実行するために使用できます。 |
|
oh |
デフォルト・ディレクトリのかわりに使用するOracleホーム・ディレクトリを指定します。 |
|
opatch_post_end |
|
|
opatch_pre_end |
|
|
ph |
有効なパッチ・ディレクトリ領域を指定します。ユーティリティは、パッチ・ディレクトリに見つかったコマンド・タイプを使用して、現在のオペレーティング・システムに使用されているコマンドを識別します。 |
|
post |
標準パラメータの他に |
|
pre |
標準パラメータの他に |
|
remote_nodes |
OPatchユーティリティにリモート・ノードのリストを指定します。 このコマンドライン引数は、Oracle Real Application Clusters環境で使用できます。 |
|
report |
アクションを実行せずに画面に出力します。 |
|
retry |
インベントリのロックに失敗した場合にOPatchユーティリティが試行する必要のある回数を指定します。 |
|
silent |
ユーザーとの対話を抑止し、回答をデフォルトでyesに設定します。Real Application Clusters設定では、このオプションはサポートされません。 |
|
verbose |
画面およびログ・ファイルに出力します。 |
Real Application Clusters環境は、アクティブなインスタンスが共有データベースでトランザクションを同時に実行する環境です。Real Application Clusters環境でのパッチの適用は、単一ノードのパッチの適用とはわずかに異なります。
OPatchを使用した個別パッチの適用では、Oracle Universal InstallerがクラスタのOracleホームおよびノードを検出する場合と同じ方法が使用されます。OPatchは、Oracle Universal Installer Java SDKを通じてOracle Universal Installerインベントリと対話します。OPatchは、クラスタを検出した場合に、Oracle Universal Installerを通じてインベントリに問い合せて、ローカル・ノード名およびノード・リストを探します。ノード・リストが更新されていない場合は、Oracle Universal Installerの-updateNodeListフラグを使用して更新できます。-localフラグを使用してリモート・アクションを省略できます。
$ORACLE_HOME/oui/bin/<runInstaller or setup.exe> -updateNodeList ORACLE_
HOME=<oracle home location> "CLUSTER_NODES={<node1,node2,node3>}"
-noClusterEnabled
OPatchにReal Application Clusters設定のローカル・ノードまたはリモート・ノードを指定する場合は、LOCAL_NODEまたはREMOTE_NODESセッション変数を使用してノード名を指定できます。
$ORACLE_HOME/oui/bin/<runInstaller or setup.exe> ORACLE_HOME=<oracle home location>
"REMOTE_NODES {<node1,node2,node3>}" LOCAL_NODE=<nodelist
for example:node1>
OPatchがReal Application Clustersまたはそのノードを自動的に検出しない場合は、インベントリの内容を調べて、それらが完全であることを確認する必要があります。
Real Application Clustersには、3通りの方法でパッチを適用できます。
全ノードへのパッチの適用では、最初にReal Application Clustersのすべてのノードが停止され、パッチがすべてのノードに適用されます。その後、すべてのノードが再び起動されます。このモードは、通常は非常にクリティカルなパッチに使用され、停止時間が最大になります。OPatchは、他に指定されていないかぎり、このモードをパッチ適用のデフォルトとして使用します。全ノードへのパッチの適用について、次の例で説明します。
図8-2「全ノードへのパッチの適用」に示したReal Application Clusters設定について考えます。システムA、BおよびCは、このReal Application Clustersのノードです。このクラスタで全ノードへのパッチの適用を実行した場合、システムA、BおよびCが停止され、これらすべてのノードにパッチが適用されます。その後、システムA、BおよびCが再び起動されます。
ローリング方式のパッチの適用では、各ノードが停止され、パッチが適用された後、再び起動されます。Real Application Clusters内のすべてのノードにパッチが適用されるまで、この処理がノードごとに別々に実行されます。このモードは、停止時間がゼロになるため、Real Application Clusters設定に個別パッチを適用する場合の最も効率的なモードです。このモードで適用できるのは、一部のパッチのみです。このタイプは、一般にパッチ・メタデータで指定されます。ローリング方式のパッチの適用について、次の例で説明します。
図8-3「ローリング方式のパッチの適用」に示したReal Application Clusters設定について考えます。システムA、BおよびCは、このReal Application Clustersのノードです。このクラスタでローリング方式のパッチの適用を実行した場合、システムAが最初に停止され、パッチが適用されます。次に、このシステムが再び起動されます。続いて、システムBが停止され、パッチが適用され、再び起動されます。この手順がシステムCについても繰り返されます。パッチはローリング方式で適用されます。このタイプのパッチ適用の主な利点は、一度に1つのシステムしか停止されないため、パッチの適用中にまったく停止時間がないことです。
最小停止時間のパッチの適用では、ノードがセットに分割されます。まず、最初のセットが停止され、パッチが適用されます。その後で、2番目のセットが停止されます。最初のセットが起動し、パッチが2番目のセットに適用されます。2番目のセットもここで起動します。この時点で、Real Application Clustersのすべてのノードにパッチが適用されています。このモードでは、両方のセットが停止している場合のReal Application Clustersの停止時間が短くなります。このモードは、-minimize_downtimeコマンドライン・オプションを使用して実行されます。レスポンス・ファイルからこのオプションをアクティブにすることもできます。最小停止時間のパッチの適用について、次の例で説明します。
図8-4「最小停止時間のパッチの適用」に示したReal Application Clusters設定について考えます。システムA、BおよびCは、このReal Application Clustersのノードです。これらは2つのセットに分割されています。セット1にはシステムAおよびBが含まれ、セット2にはシステムCが含まれます。このクラスタで最小停止時間のパッチの適用を実行した場合は、セット1が停止し、パッチが適用されます。ここで、セット2が停止されます。セット1が起動し、パッチがセット2に適用されます。パッチの適用後、セット2が再び起動します。これで、セット1と2の両方にパッチが適用されます。
すべてのパッチが相互に互換性があるとはかぎりません。たとえば、パッチが適用され、そのパッチで修正されたすべてのバグが、別のパッチを適用した後に再び出現する場合があります。これを競合状況といいます。OPatchはこのような状況を検出し、競合が検出された場合にエラーを生成します。
OPatchは、次のタイプの競合を検出できます。
バグ・スーパーセット: あるパッチで修正されたシステム内のすべてのバグが、これから適用するパッチによっても修正される場合、このパッチ(適用するパッチ)はすでに適用されているパッチのスーパーセットとみなされます。バグ・スーパーセット条件が検出された場合は、エラー状況とみなされません。すべてのサブセット・パッチがシステムから削除され、新しいパッチが適用されます。
たとえば、4つのパッチA、B、CおよびDがシステムに適用されているシナリオについて考えます。図8-5に示すように、各パッチはそれぞれ2つのバグを修正します。ここにバグ5、6、7、8、9および10を修正するパッチEを適用する場合、パッチEはパッチCおよびDのスーパーセットになります。
現在のパッチで修正するバグが、Oracleホーム・ディレクトリにインストールされているパッチで修正済のバグのスーパーセットであるか同一の場合にOPatchをエラーにするには、-no_bug_supersetフラグを使用します。
$ OPatch/opatch apply -no_bug_superset <Path_To_Patch>
次に、-no_bug_supersetフラグを使用した場合に表示されるメッセージのサンプル出力を示します。
Oracle interim Patch Installer version 10.2.0.4.6 Copyright (c) 2009, Oracle Corporation. All rights reserved.. Oracle Home : /home/oracle_TEST/product/10.2.0/db_1 Central Inventory : /home/OUIHome_Opatch from : /home/oracle_TEST/product/10.2.0/db_1/oraInst.loc OPatch version : 10.2.0.4.6 OUI version : 10.2.0.4.6 OUI location : /home/oracle_TEST/product/10.2.0/db_1/oui Log file location : /home/oracle_TEST/product/10.2.0/db _1/cfgtoollogs/opatch/opatch-2008_May_25_14-03-33-IST_Wed.log ApplySession applying interim patch '102000' to OH '/home/oracle _TEST/product/10.2.0/db_1' Apply Session failed: ApplySession failed to prepare the system. Interim patch 102000 is a superset of the patch(es) [ 102000 ] in OH /home/oracle _TEST/product/10.2.0/db_1 System intact, OPatch will not attempt to restore the system OPatch failed with error code 73
バグ競合: 現在の個別パッチで修正されるバグのセットが、以前にインストールした個別パッチの1つ以上ですでに修正されているバグの一部のみを含み、すべてのバグは含まない場合は、バグ競合と呼ばれます。新しいパッチを適用する前に、競合パッチをロールバックする-forceフラグを指定したapplyコマンドを使用して、パッチの適用を続行する前にバグ競合を除去する必要があります。
たとえば、4つのパッチA、B、CおよびDがシステムに適用されているシナリオについて考えます。図8-6に示すように、各パッチはそれぞれ2つのバグを修正します。ここにバグ1、3、5、7、9および10を修正するパッチEを適用する場合、パッチEには修正済のバグ1、3、5、7、9および10が含まれますが、バグ2、4、6および8は未解決です。これは競合状況です。
ファイル競合: 現在の個別パッチでパッチが適用されるファイルのセットが、以前にインストールした個別パッチの1つ以上ですでにパッチを適用済のファイルを含み、それがバグ・スーパーセットでない場合は、ファイル競合と呼ばれます。新しいパッチを適用する前に、競合パッチをロールバックする-forceフラグを指定したapplyコマンドを使用して、パッチの適用を続行する前にファイル競合を除去する必要があります。
組合せ競合: パッチのセットにバグ・スーパーセットの組合せがあり、バグまたはファイルが競合している場合、組合せ競合と呼びます。これはエラー状況です。この場合、OPatchはすべての競合パッチおよびサブセット・パッチを削除し、新規パッチを再適用します。
たとえば、4つのパッチA、B、CおよびDがシステムに適用されているシナリオについて考えます。図8-7に示すように、各パッチは2つのバグを修正します。パッチCはパッチDのサブセットです。パッチAおよびパッチBはパッチDの競合パッチです。ここにバグ1、3、5、6、7および8を修正するパッチDを-forceフラグを指定して適用する場合、OPatchはパッチA、BおよびCをロールバックし、パッチDを適用します。
Real Application Clustersでは-silent、-forceおよび-no_bug_supersetオプションを使用できます。次の表は、予想される動作を真理値表形式でリストしたものです。
表8-6 真理値表
| -silent | -force | -no_bug_superset | 予想される動作 |
|---|---|---|---|
|
N |
N |
N |
OPatchがプロンプトで問いを発し、それに対する回答に応じてパッチを適用します。 |
|
N |
N |
Y |
現在のパッチで修正するバグが、Oracleホーム・ディレクトリにインストールされているパッチで修正済のバグのスーパーセットであるか同一の場合、OPatchはエラーになります。競合している場合は、OPatchがプロンプトで問いを発し、それに対する回答に応じてパッチを適用します。 |
|
N |
Y |
N |
OPatchがプロンプトで問いを発し、それに対する回答に応じてパッチを適用します。 |
|
N |
Y |
Y |
現在のパッチで修正するバグが、Oracleホーム・ディレクトリにインストールされているパッチで修正済のバグのスーパーセットであるか同一の場合、OPatchはエラーになります。競合している場合は、OPatchがプロンプトで問いを発し、それに対する回答に応じてパッチを適用します。 |
|
Y |
N |
N |
現在のパッチで修正するバグが、Oracleホーム・ディレクトリにインストールされているパッチで修正済のバグのスーパーセットであるか同一の場合、OPatchはロールバックしてパッチを適用します。競合している場合、OPatchはエラーになります。 |
|
Y |
N |
Y |
現在のパッチで修正するバグが、Oracleホーム・ディレクトリにインストールされているパッチで修正済のバグのスーパーセットであるか同一の場合、OPatchはエラーになります。競合している場合も、OPatchはエラーになります。 |
|
Y |
Y |
N |
現在のパッチで修正するバグが、Oracleホーム・ディレクトリにインストールされているパッチで修正済のバグのスーパーセット、競合または同一の場合でも、OPatchは警告せずにすべてのパッチをロールバックし、再適用します。 |
|
Y |
Y |
Y |
現在のパッチで修正するバグが、Oracleホーム・ディレクトリにインストールされているパッチで修正済のバグのスーパーセットであるか同一の場合、OPatchはエラーになります。競合している場合、OPatchはロールバックして新しいパッチを適用します。 |
OPatchは、個別パッチを適用する場合に、以前に適用したパッチとの競合を検出およびレポートします。競合がある場合、パッチの適用は失敗します。OPatchの-forceオプションを使用して、このエラーをオーバーライドできます。-forceが指定されている場合、インストーラは最初に競合パッチをロールバックしてから、目的の個別パッチのインストールに進みます。
バグ競合が発生し、競合するパッチの削除が必要になる場合があります。このプロセスは、パッチのロールバックと呼ばれます。パッチのインストール時、OPatchは、新規パッチで置換されるすべてのファイルのコピーを保存してから、これらのファイルの新規バージョンをロードし、$ORACLE_HOME/.patch_storageに格納します。これらの保存されたファイルはロールバック・ファイルと呼ばれ、パッチのロールバックを可能にするためのキーとなります。パッチをロールバックする場合、これらのロールバック・ファイルがシステムにリストアされます。-forceフラグを使用してデフォルトの動作を変更するのは、パッチのロールバック・プロセスについて完全に理解している場合のみにしてください。パッチをロールバックするには、次のコマンドを実行します。
$ OPatch/opatch rollback -id <Patch_ID>
パッチを適用するたびに、インベントリに変更が加えられます。この変更によりインベントリが破損することがあります。OPatchに付属のrestore.shまたはrestore.batスクリプトを使用して、パッチの適用後にインベントリに対して行われた変更を削除できます。パッチを適用する場合、OPatchはインベントリのスナップショットを作成し、$ORACLE_HOME/.patch_storage/<patch-id_timestamp>ディレクトリに格納します。詳細は、「個別パッチのバージョン」を参照してください。
インベントリが破損した場合は、次の手順を実行して、アプリケーションを最後の既知の正常な状態に戻す必要があります。
環境変数ORACLE_HOMEが正しく設定されていることを確認します。
$ORACLE_HOME/.patch_storage/<patch-id_timestamp>ディレクトリに移動し、restoreコマンドを実行します。
For UNIX: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.sh For Windows: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.bat
UNIXでは、次のように$ORACLE_HOME/.patch_storage/<patch-id_timestamp>/make.txtファイルをソースにします(使用可能な場合)。
/bin/sh make.txt
ロギングとトレースは、デバッグのための一般的な支援機能です。OPatchは、すべての適用、ロールバックおよびlsInventory操作のログを保持します。ログ・ファイルは、<ORACLE_HOME>/cfgtoollogs/opatchディレクトリにあります。各ログ・ファイルには、操作のタイムスタンプのタグが付けられています。ログ・ファイルにはopatch_<date mm-dd-yyyy>_<time hh-mm-ss>.logのような名前が付けられます。OPatchが実行されるたびに、新しいログ・ファイルが作成されます。
たとえば、ログ・ファイルが2008年5月17日の11.55 PMに作成された場合、名前は次のようになります。
opatch_05-17-2008_23-55-00.log
|
注意: 環境変数OPATCH_DEBUGをTRUEに設定することにより、OPatchをデバッグ・モードに設定できます。 |
またOPatchは、OPatchで実行されたコマンドの索引およびそれに関連付けられているログ・ファイルを、<ORACLE_HOME>/cfgtoollogs/opatchディレクトリにあるhistory.txtファイルに保持します。history.txtファイルのサンプルを次に示します。
Date & Time : Tue Apr 26 23:00:55 PDT 2008 Oracle Home : /private/oracle/product/10.2.0/db_1/ OPatch Ver. : 10.2.0.4.6 Current Dir : /scratch/oui/OPatch Command : lsinventory Log File : /private/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch-2008_Apr_26_23-00-55-PDT_Tue.log
パッチの適用時に、更新は2つのフェーズで行われることがあります。
システム更新: このフェーズでは、Oracleホーム内でファイルが置換されます。
インベントリ更新: このフェーズでは、適用されたパッチの詳細がインベントリに記録されます。
次に、様々なシナリオを一覧し、失敗したパッチの適用セッションからリカバリする方法を示します。
環境変数ORACLE_HOMEが正しく設定されていることを確認します。
$ORACLE_HOME/.patch_storage/<patch-id_timestamp>ディレクトリに移動し、restoreコマンドを実行します。
For UNIX: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.sh For Windows: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.bat
UNIXでは、次のように$ORACLE_HOME/.patch_storage/<patch-id_timestamp>/make.txtファイルをソースにします(使用可能な場合)。
/bin/sh make.txt
環境変数ORACLE_HOMEが正しく設定されていることを確認します。
$ORACLE_HOME/.patch_storage/<patch-id_timestamp>ディレクトリに移動し、restoreコマンドを実行します。
For UNIX: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.sh For Windows: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.bat
UNIXでは、次のように$ORACLE_HOME/.patch_storage/<patch-id_timestamp>/make.txtファイルをソースにします(使用可能な場合)。
/bin/sh make.txt
$ORACLE_HOME/.patch_storage/<patch-id_timestamp>ディレクトリに移動し、restoreコマンドを実行します。
For UNIX: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.sh For Windows: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.bat
UNIXでは、次のように$ORACLE_HOME/.patch_storage/<patch-id_timestamp>/make.txtファイルをソースにします(使用可能な場合)。
/bin/sh make.txt
ファイルにパッチが正しく適用されていても、インベントリ内の情報が更新されていない場合は、次のコマンドを実行します。
$ORACLE_HOME/OPatch/opatch apply -no_sysmod <Path_To_Patch>
次のコマンドを実行して、パッチが適用され、インベントリに正しく記録されていることを確認します。
$ORACLE_HOME/OPatch/opatch lsinventory -detail
ファイルにパッチがまだ正しく適用されていないが、lsinventoryフラグでそのパッチが表示される場合は、no_inventoryフラグを使用してパッチを再適用する必要があります。
$ORACLE_HOME/OPatch/opatch apply -no_inventory <Path_To_Patch>
$ORACLE_HOME/.patch_storage/<patch-id_timestamp>ディレクトリに移動し、restoreコマンドを実行します。
For UNIX: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.sh For Windows: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.bat
UNIXでは、次のように$ORACLE_HOME/.patch_storage/<patch-id_timestamp>/make.txtファイルをソースにします(使用可能な場合)。
/bin/sh make.txt
ファイルにパッチが正しく適用されていても、インベントリ内の情報が更新されていない場合は、次のコマンドを実行します。
$ORACLE_HOME/OPatch/opatch apply -no_sysmod <Path_To_Patch>
次のコマンドを実行して、パッチが適用され、インベントリに正しく記録されていることを確認します。
$ORACLE_HOME/OPatch/opatch lsinventory -detail
環境変数ORACLE_HOMEが正しく設定されていることを確認します。
$ORACLE_HOME/.patch_storage/<patch-id_timestamp>ディレクトリに移動し、restoreコマンドを実行します(使用可能な場合)。
For UNIX: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.sh For Windows: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.bat
UNIXでは、次のように$ORACLE_HOME/.patch_storage/<patch-id_timestamp>/make.txtファイルをソースにします(使用可能な場合)。
/bin/sh make.txt
環境変数ORACLE_HOMEが正しく設定されていることを確認します。
$ORACLE_HOME/.patch_storage/<patch-id_timestamp>ディレクトリに移動し、restoreコマンドを実行します。
For UNIX: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.sh For Windows: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.bat
UNIXシェルでmakeを手動で起動できることを確認して、再リンク・エラーの問題を解決します。その後で、パッチを再度適用します。
クラスタ内のすべてのノードで環境変数ORACLE_HOMEが正しく設定されていることを確認します。
クラスタ内の各ノードの$ORACLE_HOME/.patch_storage/<patch-id_timestamp>ディレクトリに移動し、次のようにrestoreコマンドを実行します。
For UNIX: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.sh For Windows: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.bat
UNIXでは、次のようにクラスタの各ノードで$ORACLE_HOME/.patch_storage/<patch-id_timestamp>/make.txtファイルをソースにします(使用可能な場合)。
/bin/sh make.txt
localフラグを使用して、クラスタ内の各ノードでパッチを適用します。
$ORACLE_HOME/OPatch/opatch apply -local <Path_To_Patch>
|
注意: すべてのノードで同じOPatchバージョンを使用していることを確認してください。 |
クラスタ内の各ノードで環境変数ORACLE_HOMEが正しく設定されていることを確認します。
クラスタ内の各ノードで、$ORACLE_HOME/.patch_storage/<patch-id_timestamp>ディレクトリに移動し、restoreコマンドを実行します。
For UNIX: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.sh For Windows: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.bat
UNIXでは、次のように各ノードで$ORACLE_HOME/.patch_storage/<patch-id_timestamp>/make.txtファイルをソースにします(使用可能な場合)。
/bin/sh make.txt
localフラグを使用して、各ノードでパッチを適用します。
$ORACLE_HOME/OPatch/opatch apply -local <Path_To_Patch>
|
注意: すべてのノードで同じOPatchバージョンを使用していることを確認してください。 |
クラスタ内の各ノードで環境変数ORACLE_HOMEが正しく設定されていることを確認します。
クラスタ内の各ノードで$ORACLE_HOME/.patch_storage/<patch-id_timestamp>ディレクトリに移動し、次のようにrestoreコマンドを実行します。
For UNIX: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.sh For Windows: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.bat
UNIXでは、次のようにクラスタの各ノードで$ORACLE_HOME/.patch_storage/<patch-id_timestamp>/make.txtファイルをソースにします(使用可能な場合)。
/bin/sh make.txt
localフラグを使用して、クラスタ内のすべてのノードでパッチをロールバックします。
$ORACLE_HOME/OPatch/opatch rollback -local -id <Patch_ID>
|
注意: すべてのノードで同じOPatchバージョンを使用していることを確認してください。 |
クラスタ内の各ノードで環境変数ORACLE_HOMEが正しく設定されていることを確認します。
クラスタ内の各ノードで、$ORACLE_HOME/.patch_storage/<patch-id_timestamp>ディレクトリに移動し、restoreコマンドを実行します。
For UNIX: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.sh For Windows: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.bat
UNIXでは、次のように$ORACLE_HOME/.patch_storage/<patch-id_timestamp>/make.txtファイルをソースにします(使用可能な場合)。
/bin/sh make.txt
localフラグを使用して、ローカル・ノードでパッチをロールバックします。
$ORACLE_HOME/OPatch/opatch rollback -local -id <Patch_ID>
localフラグを使用して、他のノードでもパッチをロールバックします。
|
注意: すべてのノードで同じOPatchバージョンを使用していることを確認してください。 |
正常なノードから他のノードにOracleホームをコピーします。
Oracleホームをコピーした後で、ORACLE_HOME/inventory/ContentsXML/comps.xmlファイルに最新のタイムスタンプがあることを確認します。
|
注意: UNIXでは、touchを使用してタイムスタンプを変更します。 |
クラスタのノードを更新します。クラスタ・ノードの更新の詳細は、「クラスタのノードの更新」を参照してください。
「OPatchの前提条件チェック」にリストされているすべての前提条件チェックにパスしていることを確認してください。
正常なノードから他のノードにORACLE_HOME /inventoryディレクトリをコピーします。
ORACLE_HOME /inventoryディレクトリをコピーした後で、ORACLE_HOME/inventory/ContentsXML/comps.xmlファイルに最新のタイムスタンプがあることを確認します。
|
注意: UNIXでは、touchを使用してタイムスタンプを変更します。 |
クラスタのノードを更新します。クラスタ・ノードの更新の詳細は、「クラスタのノードの更新」を参照してください。
「OPatchの前提条件チェック」にリストされているすべての前提条件チェックにパスしていることを確認してください。
クラスタ内のすべてのノードが最新であることを確認します。最新でない場合は、クラスタのノードを更新します。クラスタ・ノードの更新の詳細は、「クラスタのノードの更新」を参照してください。
クラスタのすべてのノードで適切なコマンドを次のように実行します。
opatch apply -local [patch_location] opatch rollback -local [patch_location]
クラスタのローカル・ノードで適切なコマンドを次のように実行します。
opatch apply [-local_node (node_name)] [-remote_nodes (comma-separated node_names)] opatch rollback [-local_node (node_name)] [-remote_nodes (comma-separated node_names)]
OPatchでは、次のようないくつかの環境変数を使用します。
ORACLE_HOME: Oracleホームの場所です。
OPATCH_DEBUG: OPatchが実行する必要のあるロギングの量を指定するログ・レベルです。
OPATCH_PLATFORM_ID: 一意のプラットフォームIDです。
PATH: パッチ情報です。
この項では、パッチの適用中に発生する可能性のあるエラーの解決方法を示します。
メタデータ・ファイルを格納する/etcディレクトリ
ペイロード・ファイルを格納する/filesディレクトリ
同じディレクトリ下の/etc/config/inventoryファイルおよびアクション・ファイル
OPatchユーティリティをpatch_idディレクトリから起動していない場合は、次のコマンドを使用できます。
opatch apply /<Patch_Shiphome>
fuserを使用してアクティブなOracleインスタンスをチェックしています。特定のhp-uxシステムでは、スーパーユーザーのみがfuserを実行できます。PATHに/tmpを設定します。
詳細は、「システム・コマンドのチェック」を参照してください。
fuserという名前の空のファイルを作成します。
Oracleインスタンスを停止します。
OPatchユーティリティを実行します。
|
注意: この問題を解決する方法として、他のユーザーにfuserに対する実行可能権限を付与することもできます。ただし、この方法ではシステムにセキュリティ・ホールが作成される可能性があるため、推奨されません。 |
環境変数ORACLE_HOMEが正しく設定されていることを確認します。
$ORACLE_HOME/.patch_storage/<patch-id_timestamp>ディレクトリに移動し、次のようにrestoreコマンドを実行します。
For UNIX: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.sh For Windows: $ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.bat
UNIXでは、次のように$ORACLE_HOME/.patch_storage/<patch-id_timestamp>/make.txtファイルをソースにします(使用可能な場合)。
/bin/sh make.txt