同事反馈报错:
SQL> select dbms_java.longname('1') from dual;
select dbms_java.longname('1') from dual
*
ERROR at line 1:
ORA-29548: Java ϵͳcould not identify release specified in classes.bin
ORA-06512: SYS.DBMS_JAVA", line 139
检查组件正常:
SQL> select comp_id,status from dba_registry;
COMP_ID STATUS
------------------------------ ----------------------
OWB VALID
APEX VALID
EM VALID
AMD VALID
SDO VALID
ORDIM VALID
XDB VALID
CONTEXT VALID
EXF VALID
RUL VALID
OWM VALID
COMP_ID STATUS
------------------------------ ----------------------
CATALOG VALID
CATPROC VALID
JAVAVM VALID
XML VALID
CATJAVA VALID
APS VALID
XOQ VALID
18 rows selected.
SQL> select ACTION_TIME,ID,BUNDLE_SERIES,version from dba_registry_history;
ACTION_TIME ID BUNDLE_SERIES VERSION
--------------------------------------------------------------------------- ---------- ------------------------------ ------------------------------
24-813 12.03.45.119862 0 PSU 11.2.0.4
08-127 11.19.55.854890 170418 PSU 11.2.0.4
21-819 12.36.18.942922 190416 PSU 11.2.0.4
26-101 08.03.53.434500 201020 PSU 11.2.0.4
26-101 08.05.05.775685 0 11.2.0.4.201020OJVMPSU
26-101 08.05.05.781130 31668908
6 rows selected.
重新更新数据字典后发现@postinstall.sql过程中有报错
检查ERROR at line 1:
ORA-01843: ORA-06512: ine 8这个错误,是说月份不对,难道地理位置有问题?
select * from nls_session_parameters where parameter='NLS_DATE_LANGUAGE';
果然发现不对,修改成alter session set nls_date_language='AMERICAN';
再重新postinstall.sql后正常。
最后记得@?/rdbms/admin/utlrp.sql编译失效对象正常。
正常的时间在这会长一些,5分钟左右:
38 -- Add a row in registry$history to indicate this script was run.
39
40 EXECUTE IMMEDIATE 'insert into registry$history
41 (action_time, action, namespace, version, id, comments)
42 values(SYSTIMESTAMP, ''jvmpsu.sql'', ''SERVER'',
43 ''11.2.0.4.201020OJVMPSU'', 0, ''RAN jvmpsu.sql'')';
44
45 END IF;
46
47 EXECUTE IMMEDIATE 'alter system set java_jit_enabled = ' || :jitstate;
48
49 END;
50 /
--持续5分钟
PL/SQL procedure successfully completed.
SQL>
SQL>
SQL> commit;
Commit complete.
SQL>
正确结果如下:
SQL> select dbms_java.longname('1') from dual;
1
1 row selected.