个别补丁安装实例
10g(10.1和10.2)版本中,opatch作为一个标准工具,在软件安装时自动安装。(安装在$ORACLE_HOME/OPatch下。)而对于9.2版,需要从metalink下载opatch.无论数据库是哪一个版本,系统中是否已经安装opatch,在使用之前,应从metalink下载最新版本的opatch.很遗憾,由于系统实现的问题,10.2使用的opatch与之前版本(10.1和9.2)使用的opatch不兼容,不能混用,这一点必须注意。[@more@]个别补丁管理工具opatch
如前所述,在发布一个PSR后发现的新BUG,只能把其补丁收入到下一个PSR中。如果对数据库有实质性影响,
则这一补丁以个别补丁的形式向用户提供。个别补丁是与某一个特定的PSR关联,是安装在这一PSR之上的。另外,如同其名字表明的,个别补丁只是单一Bug的补丁,不会包含其他个别补丁,即不是累积型的。
在9.2版之前,安装个别补丁的操作完全是手工的。这种手工方式的缺点不仅在于加重DBA的负担,容易造成操
作失误,更严重的是无法对已安装的个别补丁进行管理。
为解决手工方式的缺陷,从9.2版开始,Oracle公司设计实现了个别补丁安装管理工具opatch.opatch使用一个称
为inventory的系统数据结构(严格说是与oui共享inventory),集中管理所有已安装的个别补丁;个别补丁的安装和卸载都使用opatch命令完成,冲突检测也由opatch在安装时自动完成;提供列表命令可以很方便得到已安装个别补丁的信息。
10g(10.1和10.2)版本中,opatch作为一个标准工具,在软件安装时自动安装。(安装在
$ORACLE_HOME/OPatch下。)而对于9.2版,需要从metalink下载opatch.无论数据库是哪一个版本,系统中是否已经安装opatch,在使用之前,应从metalink下载最新版本的opatch.很遗憾,由于系统实现的问题,10.2使用的opatch与之前版本(10.1和9.2)使用的opatch不兼容,不能混用,这一点必须注意。
opatch是使用perl编写的脚本程序(其中也使用JAVA API)。编程使用的perl版本是5.6版,虽然在5.6之前的版
本中也可运行,但应尽可能安装5.6或以上的版本的perl.对于DBA来说一个好消息是,如果安装9.2版软件时保留了HTTP服务器,则在$ORACLE_HOME/Apache下会自动安装perl.(10g会自动安装配置perl和opatch.)
opatch命令格式为:
opatch
[] [ -h[elp] ]
命令有:apply(安装个别补丁)、rollback(卸载个别补丁)、lsinventory(对inventory进行列表)、query(显示某一个别补丁的详细信息)、version(显示opatch版本信息)。在opatch目录下,有用户使用指南文件(Users_Guide.txt),其中有详细的命令格式和使用示例,读者可以参考。Opatch执行操作时,除在屏幕输出结果外,还生成日志文件。日志文件的路径和文件名格式如下:
$ORACLE_HOME/.patch_storage//-_.log
其中“patch_id”是Oracle技术支持部门为个别补丁分配的编号。
个别补丁安装实例
沿用安装PSR实例中的环境。在安装PSR10.1.0.5后,检索metalink,发现若干在其之上的个别补丁。选择其中之
一安装。
个别补丁Patch 4518443修复BUG4518443,这一BUG的主要问题是TNS LISTENER在注册ONS(Oracle
Notification Services)的同时如果创建子进程,那么LISTENER会挂起(HANGUP)。
安装时,首先,从metalink下载补丁的压缩文件p4518443_10105_LINUX.zip.将此文件解压缩至某一目录中。解
压缩后,这一补丁的所有文件都在子目录4518443下,目录名就是个别补丁的补丁号,opatch依据目录名获得信息,所以一定不要重命名子目录。
然后,在终端窗口中,执行cd命令移动到4518443子目录中,执行以下命令:
$ $ORACLE_HOME/OPatch/opatch apply
对inventory列表,确认安装操作:
$ $ORACLE_HOME/OPatch/opatch lsinventory
执行卸载命令时,也必须使4518443子目录成为当前目录。其中,Rollback命令需要两个参数:-id给出个别补丁号;-ph 给出个别补丁解压缩后的路径。
$ $ORACLE_HOME/OPatch/opatch rollback -id 4518443
随后再对inventory列表,则会看到这一个别补丁已经被移去。
1、先到MetaLink上面下载补丁包p4518443_10103_LINUX.zip
2、关闭数据库、关闭监听
3、修改相应文件的权限
# cd $ORACLE_HOME/lib
# chmod 755 libons.so
# cd $ORACLE_HOME/opmn/lib
# chmod 755 libons.so
4、解压文件、修改补丁包的权限
[root@oracle2 bin]# chmod -R 775 4944973/
[root@oracle2 bin]# chown -R oracle.oinstall 4944973/
5、修改.bash_profile里面的PATH
[oracle@oracle2 ~]$ echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/oracle/bin:/home/oracle/bin:/u01/app/oracle/product/10.1.0/db_1/bin
将opatch的目录和sbin(因为会用到/sbin/fuser命令)目录添加到PATH路径下
[oracle@oracle2 ~]$ echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/oracle/bin:/home/oracle/bin:/u01/app/oracle/product/10.1.0/db_1/bin:/u01/app/oracle/product/10.1.0/db_1/OPatch:/sbin
6、执行应用命令
[oracle@oracle2 ~]$ cd /u01/app/oracle/product/10.1.0/db_1/bin/4944973/
[oracle@oracle2 4944973]$ opatch apply
PERL5LIB=/u01/app/oracle/product/10.1.0/db_1/perl/lib/5.6.1:/u01/app/oracle/product/10.1.0/db_1/OPatch/perl_modules; export PERL5LIB
/u01/app/oracle/product/10.1.0/db_1/perl/bin/perl /u01/app/oracle/product/10.1.0/db_1/OPatch/opatch.pl apply
Oracle Home = /u01/app/oracle/product/10.1.0/db_1
Location of Oracle Inventory = /u01/app/oracle/product/10.1.0/db_1/inventory
Oracle Universal Installer shared library = /u01/app/oracle/product/10.1.0/db_1/oui/lib/linux/liboraInstaller.so
Path to Java = /u01/app/oracle/product/10.1.0/db_1/jre/1.4.2/bin/java
Location of Oracle Inventory Pointer = /etc/oraInst.loc
Location of Oracle Universal Installer components = /u01/app/oracle/product/10.1.0/db_1/oui
Required Jar File under Oracle Universal Installer = jlib/OraInstaller.jar
OPatch Version 1.0.0.0.50
Perl Version 5.006001
Please shut down Oracle instances running out of this ORACLE_HOME
(Oracle Home = /u01/app/oracle/product/10.1.0/db_1)
Is this system ready for updating?
Please respond Y|N >
y
Patching...
Updating inventory...
/u01/app/oracle/product/10.1.0/db_1/OPatch/opatch.pl version: 1.0.0.0.50
Copyright (c) 2001-2004 Oracle Corporation. All Rights Reserved.
OPatch succeeded.
7、查看补丁是否已经被打上
[oracle@oracle2 4944973]$ opatch lsinventory
PERL5LIB=/u01/app/oracle/product/10.1.0/db_1/perl/lib/5.6.1:/u01/app/oracle/product/10.1.0/db_1/OPatch/perl_modules; export PERL5LIB
/u01/app/oracle/product/10.1.0/db_1/perl/bin/perl /u01/app/oracle/product/10.1.0/db_1/OPatch/opatch.pl lsinventory
Using ORACLE_HOME/oui to look up oui libs...
Oracle Home = /u01/app/oracle/product/10.1.0/db_1
Location of Oracle Inventory = /u01/app/oracle/product/10.1.0/db_1/inventory
Oracle Universal Installer shared library = /u01/app/oracle/product/10.1.0/db_1/oui/lib/linux/liboraInstaller.so
Path to Java = /u01/app/oracle/product/10.1.0/db_1/jre/1.4.2/bin/java
Location of Oracle Inventory Pointer = /etc/oraInst.loc
Location of Oracle Universal Installer components = /u01/app/oracle/product/10.1.0/db_1/oui
Required Jar File under Oracle Universal Installer = jlib/OraInstaller.jar
Using ORACLE_HOME/oui to look up oui libs...
Accessing inventory... This may take up to 300 seconds.
(retry 10 times, delay 30 seconds each time)
/u01/app/oracle/product/10.1.0/db_1/jre/1.4.2/bin/java -classpath "/u01/app/oracle/product/10.1.0/db_1/oui/jlib/OraInstaller.jar:/u01/app/oracle/product/10.1.0/db_1/oui/jlib/srvm.jar:/u01/app/oracle/product/10.1.0/db_1/OPatch/jlib/opatch.jar:/u01/app/oracle/product/10.1.0/db_1/oui/jlib/xmlparserv2.jar:/u01/app/oracle/product/10.1.0/db_1/oui/jlib/share.jar:." -Dopatch.retry=10 -Dopatch.delay=30 opatch/LsInventory "/u01/app/oracle/product/10.1.0/db_1/oui" "/u01/app/oracle/product/10.1.0/db_1" opatch.pl 1.0.0.0.50 FALSE
Retrieving inventory.
Installed Patch List:
=====================
1) Patch 4944973 applied on Mon Dec 10 13:34:27 EST 2007
[ Base Bug(s): 4518443 ]
/u01/app/oracle/product/10.1.0/db_1/OPatch/opatch.pl version: 1.0.0.0.50
Copyright (c) 2001-2004 Oracle Corporation. All Rights Reserved.
OPatch succeeded.
8、修改相应文件的权限
# cd $ORACLE_HOME/lib
# chmod 555 libons.so
# cd $ORACLE_HOME/opmn/lib
# chmod 555 libons.so
9、重启数据库,察看警告日志,没有发现异常,启动监听,至此patch打完了。
10、删除补丁
[oracle@oracle2 4944973]$ opatch rollback -id 4944973
PERL5LIB=/u01/app/oracle/product/10.1.0/db_1/perl/lib/5.6.1:/u01/app/oracle/product/10.1.0/db_1/OPatch/perl_modules; export PERL5LIB
/u01/app/oracle/product/10.1.0/db_1/perl/bin/perl /u01/app/oracle/product/10.1.0/db_1/OPatch/opatch.pl rollback -id 4944973
OPatch Version 1.0.0.0.50
Perl Version 5.006001
Oracle Home = /u01/app/oracle/product/10.1.0/db_1
Location of Oracle Inventory = /u01/app/oracle/product/10.1.0/db_1/inventory
Oracle Universal Installer shared library = /u01/app/oracle/product/10.1.0/db_1/oui/lib/linux/liboraInstaller.so
Path to Java = /u01/app/oracle/product/10.1.0/db_1/jre/1.4.2/bin/java
Location of Oracle Inventory Pointer = /etc/oraInst.loc
Location of Oracle Universal Installer components = /u01/app/oracle/product/10.1.0/db_1/oui
Required Jar File under Oracle Universal Installer = jlib/OraInstaller.jar
Please shut down Oracle instances running out of this ORACLE_HOME
(Oracle Home = /u01/app/oracle/product/10.1.0/db_1)
Is this system ready for updating?
Please respond Y|N >
y
Removing Patch...
Updating inventory...
/u01/app/oracle/product/10.1.0/db_1/OPatch/opatch.pl version: 1.0.0.0.50
Copyright (c) 2001-2004 Oracle Corporation. All Rights Reserved.
OPatch succeeded.
11、查看补丁是否已经被删除
[oracle@oracle2 4944973]$ opatch lsinventory
PERL5LIB=/u01/app/oracle/product/10.1.0/db_1/perl/lib/5.6.1:/u01/app/oracle/product/10.1.0/db_1/OPatch/perl_modules; export PERL5LIB
/u01/app/oracle/product/10.1.0/db_1/perl/bin/perl /u01/app/oracle/product/10.1.0/db_1/OPatch/opatch.pl lsinventory
Using ORACLE_HOME/oui to look up oui libs...
Oracle Home = /u01/app/oracle/product/10.1.0/db_1
Location of Oracle Inventory = /u01/app/oracle/product/10.1.0/db_1/inventory
Oracle Universal Installer shared library = /u01/app/oracle/product/10.1.0/db_1/oui/lib/linux/liboraInstaller.so
Path to Java = /u01/app/oracle/product/10.1.0/db_1/jre/1.4.2/bin/java
Location of Oracle Inventory Pointer = /etc/oraInst.loc
Location of Oracle Universal Installer components = /u01/app/oracle/product/10.1.0/db_1/oui
Required Jar File under Oracle Universal Installer = jlib/OraInstaller.jar
Using ORACLE_HOME/oui to look up oui libs...
Accessing inventory... This may take up to 300 seconds.
(retry 10 times, delay 30 seconds each time)
/u01/app/oracle/product/10.1.0/db_1/jre/1.4.2/bin/java -classpath "/u01/app/oracle/product/10.1.0/db_1/oui/jlib/OraInstaller.jar:/u01/app/oracle/product/10.1.0/db_1/oui/jlib/srvm.jar:/u01/app/oracle/product/10.1.0/db_1/OPatch/jlib/opatch.jar:/u01/app/oracle/product/10.1.0/db_1/oui/jlib/xmlparserv2.jar:/u01/app/oracle/product/10.1.0/db_1/oui/jlib/share.jar:." -Dopatch.retry=10 -Dopatch.delay=30 opatch/LsInventory "/u01/app/oracle/product/10.1.0/db_1/oui" "/u01/app/oracle/product/10.1.0/db_1" opatch.pl 1.0.0.0.50 FALSE
Retrieving inventory.
There is no Interim Patch
/u01/app/oracle/product/10.1.0/db_1/OPatch/opatch.pl version: 1.0.0.0.50
Copyright (c) 2001-2004 Oracle Corporation. All Rights Reserved.
OPatch succeeded.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9821375/viewspace-996447/
,如需转载,请注明出处,否则将追究法律责任。