OMSPatcher命令报错Fail with Error Code 1 and Message: Unsupported major.minor version 51.0
OMSPatcher命令报错Fail with Error Code 1 and Message: Unsupported major.minor version 51.0
前言
最近安装OEM 13c,准备对OMS打补丁的时候,检查OMSPatcher版本的时候,报错如下:
[oracle@oem13c ~]$ omspatcher version Exception in thread "main" java.lang.UnsupportedClassVersionError: oracle/opatch/opatchsdk/OPatchException : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637) at java.lang.ClassLoader.defineClass(ClassLoader.java:621) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) Could not find the main class: oracle/opatchauto/oms/OPatchAuto. Program will exit. OMSPatcher failed with error code 1
反复安装卸载的JDK
随后,我就直接问度娘了。
找到这么一篇文章,报错和我这个比较类似。
里边提到了这么一个对应关系,顿时我就那个高兴啊!
你瞧瞧你瞧瞧,简直都领你到家门口了,只要自己踏进去问题就迎刃而解了啊。
然后我就看了下当前java的版本,
[oracle@oem13c ~]$ java -version OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007fb607c00000, 138412032, 2097152, 0) failed; error='Cannot allocate memory' (errno=12) java version "1.7.0_45" OpenJDK Runtime Environment (rhel-2.4.3.3.0.1.el6-x86_64 u45-b15) OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
??????
这版本符合要求的啊!!!
可能是后边的小版本号不符合吧?正好前段时间公司同事托我用Oracle账号下载了JDK8的版本,我就升下级吧。
于是,
[root@oem13c soft]# rpm -ivh jdk-8u251-linux-x64.rpm warning: jdk-8u251-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY Preparing... ########################################### [100%] 1:jdk1.8 ########################################### [100%] Unpacking JAR files... tools.jar... plugin.jar... javaws.jar... deploy.jar... rt.jar... jsse.jar... charsets.jar... localedata.jar... [root@oem13c soft]# java -version java version "1.8.0_251" Java(TM) SE Runtime Environment (build 1.8.0_251-b08) Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
然鹅,
还是报错。
又想,文章说是说要7以上,兴许是8又太新了。
于是又跑官网下载了jdk-7u80-linux-x64.rpm,回退8的,安装7的。
还是不行!!!
后来又反复试验,甚至升级OMSPatcher版本,也是一样。
转折又转折
还是又mos上搜索一下吧,之前搜过了没搜出啥。
这次我直接把一整行报错拿出来搜。
天呐!!之前搜基本都是不对边的DOC,终于搜出来了。
别急,先看看能不能解决(Doc ID 2175778.1)。
把环境变量ORACLE_HOME的值改成oms的home路径。
[oracle@oem13c ~]$ export ORACLE_HOME=/u01/app/oem13c/middleware [oracle@oem13c ~]$ /u01/app/oem13c/middleware/OMSPatcher/omspatcher version OMSPatcher Version: 13.8.0.0.3 OPlan Version: 12.1.0.2.2 OsysModel build: Mon Dec 21 18:31:52 PST 2015 OMSPatcher succeeded.
终于成功了,果然Oracle自家产品的问题,还是mos靠谱点。
不对!!!那我资料库也是同一台机,ORACLE_HOME环境变量不能改啊!!!
后续
在EM 13c: Upgrading OPatch to 13.9.x in the Enterprise Manager 13c Cloud Control Middleware Home Fails with Error: Unsupported major.minor version 51.0 (Doc ID 2221863.1)中指出,
JDK版本是会导致这个错误的,这个在前边已经明确。不过文中指出,其实安装好OMS后,已经自带了jdk了。
export MIDDLEWARE_HOME=<MIDDLEWARE_HOME>
export JAVA_HOME=<MIDDLEWARE_HOME>/oracle_common/jdk
export PATH=$JAVA_HOME/bin:$PATH
注意,PATH变量中,$JAVA_HOME/bin一定要放在$PATH前边,不然java会优先使用/usr/bin/java。
这几个环境变量配置作为OEM 13c的安装规范吧。