Friday, 11 February 2022

The Oracle Management Server (OMS) host and port specified via OMS_HOST and EM_UPLOAD_PORT is not available

Error :  The Oracle Management Server (OMS) host and port specified via OMS_HOST and EM_UPLOAD_PORT is not available. Pass in a valid hostname and port number for the OMS to successfully deploy the agent.


Solution :


In order to resolve above error, you should add hostnames and ip addresses of OMS Server and Agent Server to the both server's /etc/hosts file.


OMS host # vi /etc/hosts

xx.xx.xx.xx agent_host


AGENT host # vi /etc/hosts

xx.xx.xx.xx oms_host


After that, test it with ping 

OMS host # ping agent_hostname


AGENT host # ping OMS_hostname



Cheers !

Wednesday, 9 February 2022

ORA-29278: SMTP transient error: 421 Service not available

 Getting below errors while sending mail from one of DB using UTL_SMTP.mail


ORA-29278: SMTP transient error: 421 Service not available

ORA-06512: at "SYS.UTL_SMTP", line 57

ORA-06512: at "SYS.UTL_SMTP", line 140

ORA-06512: at "SYS.UTL_SMTP", line 641

ORA-06512: at "SYS.TESTMAIL", line 30

ORA-29278: SMTP transient error: 421 Service not available

ORA-06512: at "SYS.UTL_SMTP", line 57

ORA-06512: at "SYS.UTL_SMTP", line 140

ORA-06512: at "SYS.UTL_SMTP", line 201

ORA-06512: at "SYS.TESTMAIL", line 6

ORA-06512: at line 5




solution :


1. install mailx & postfix and enable the services


rpm -qa | grep mailx

rpm -qa | grep postfix

yum install -y postfix

yum install -y mailx

systemctl status postfix

systemctl start postfix

systemctl enable postfix

systemctl status postfix



2. Try to telnet the email relay server, if you failed reach to network admin and open the relay server port

eg.


db ip - source - 192.xx.xx.35

mail relay ip - 192.xx.xx.25 

mail port - 587



$ telnet 192.xx.xx.35 587


3. Telnet output :


[root@node1 ~]# telnet 192.xx.xx.25 587

Trying 192.xx.xx.25...

Connected to 192.xx.xx.25.

Escape character is '^]'.

Connection closed by foreign host.

[root@node1 ~]#



** if Telnet output is "Connection closed by foreign host." then there is issue, you should reach to email admin and ask to allow source ip in email relay server 


after that, if you telnet then below output should receive


[root@node1 ~]# telnet 192.xx.xx.25 587

Trying 192.xx.xx.25...

Connected to 192.xx.xx.25.

Escape character is '^]'.

220 relay.mydomain Microsoft ESMTP MAIL Service, Version: 8.5.9600.16384 ready at  Thu, 6 Jan 2022 09:56:05 +0300



now, type


helo domain


250 relay.mydomain Hello [192.xx.xx.35]



4. 

REFER : https://stackoverflow.com/questions/41377078/ora-29278-smtp-transient-error-service-not-available-when-running-utl-mail


Create proper ACL :



Give grant to corresponding schema name for utl_tcp,utl_smtp and utl_http.


        grant execute on utl_tcp to myprod_schema;

        grant execute on utl_smtp to myprod_schema;

        grant execute on utl_http to myprod_schema;

   

CREATE_ACL using DBMS_NETWORK_ACL_ADMIN sys package:-


    BEGIN

       DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (

       acl => '/sys/acls/myorg.xml',

       description => 'Allowing SMTP Connection',

       principal => 'myprod_schema

       privilege => 'connect',

       start_date => SYSTIMESTAMP,

       end_date => NULL);


     COMMIT;

     END;

   /


ADD_PRIVILEGE to schema using DBMS_NETWORK_ACL_ADMIN package:-


    BEGIN

     DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(

     acl => '/sys/acls/myorg.xml',

     principal => 'myprod_schema',

     is_grant => true,

     privilege => 'resolve');

    COMMIT;

   END;

  /


ASSIGN_ACL to mail server using DBMS_NETWORK_ACL_ADMIN package:-



     BEGIN

       DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (

        acl => '/sys/acls/myprod_schema.xml',

        host => '*');

       COMMIT;

      END;

     / 



5. CREATE TESTMAIL PROC AND TEST IT


REFER : Check SMTP Server Availability for ORA-29278 or ORA-29279 errors using UTL_SMTP to Send Email. (Doc ID 604763.1)


CREATE OR REPLACE NONEDITIONABLE PROCEDURE TESTMAIL(fromm VARCHAR2,too VARCHAR2,sub VARCHAR2,body VARCHAR2,port NUMBER)

IS

objConnection UTL_SMTP.CONNECTION;

vrData VARCHAR2(32000);

BEGIN

objConnection := UTL_SMTP.OPEN_CONNECTION('192.xx.xx.25',PORT);

UTL_SMTP.HELO(objConnection, '192.xx.xx.25');

UTL_SMTP.MAIL(objConnection, fromm);

UTL_SMTP.RCPT(objConnection, too);

UTL_SMTP.OPEN_DATA(objConnection);


UTL_SMTP.WRITE_DATA(objConnection, 'From: '||fromm || UTL_TCP.CRLF);

UTL_SMTP.WRITE_DATA(objConnection, 'To: '||too || UTL_TCP.CRLF);


UTL_SMTP.WRITE_DATA(objConnection, 'Subject: ' || sub || UTL_tcp.CRLF);

UTL_SMTP.WRITE_DATA(objConnection, 'MIME-Version: ' || '1.0' || UTL_tcp.CRLF);

UTL_SMTP.WRITE_DATA(objConnection, 'Content-Type: ' || 'text/html;');


UTL_SMTP.WRITE_DATA(objConnection, 'Content-Transfer-Encoding: ' || '"8Bit"' || UTL_TCP.CRLF);

UTL_SMTP.WRITE_DATA(objConnection,UTL_TCP.CRLF);

UTL_SMTP.WRITE_DATA(objConnection,UTL_TCP.CRLF||'<HTML>');

UTL_SMTP.WRITE_DATA(objConnection,UTL_TCP.CRLF||'<BODY>');

UTL_SMTP.WRITE_DATA(objConnection,UTL_TCP.CRLF||'<FONT COLOR="red" FACE="Courier New">'||body||'</FONT>');

UTL_SMTP.WRITE_DATA(objConnection,UTL_TCP.CRLF||'</BODY>');

UTL_SMTP.WRITE_DATA(objConnection,UTL_TCP.CRLF||'</HTML>');

UTL_SMTP.CLOSE_DATA(objConnection);

UTL_SMTP.QUIT(objConnection);

EXCEPTION

WHEN UTL_SMTP.TRANSIENT_ERROR OR UTL_SMTP.PERMANENT_ERROR THEN

UTL_SMTP.QUIT(objConnection);

DBMS_OUTPUT.PUT_LINE(SQLERRM);

WHEN OTHERS THEN

UTL_SMTP.QUIT(objconnection);

DBMS_OUTPUT.PUT_LINE(SQLERRM);

END TESTMAIL;

/


Test by executing this ---


SQL> 


DECLARE

Vdate Varchar2(25);

BEGIN

Vdate := to_char(sysdate,'dd-mon-yyyy HH:MI:SS AM');

TESTMAIL('source@mail.com', 'destination@mail.com', 'TESTMAIL','This is a UTL_SMTP-generated email at '|| Vdate,587);

END;

/



--PL/SQL procedure successfully completed



Cheers !!!


Slow Login To Oracle 19c DB

Slow Login To Oracle 19c DB Server Using HPUX Itanium 19c Client (Doc ID 2673496.1)


Simulated ::



node1: /home/oracle $ cat > exit.sql

exit;



node1: /home/oracle $ time sqlplus / as sysdba @exit.sql


SQL*Plus: Release 19.0.0.0.0 - Production on Tue Feb 8 09:05:08 2022

Version 19.3.0.0.0


Copyright (c) 1982, 2019, Oracle.  All rights reserved.



Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0


Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0


real    0m1.543s   <<<--- slow

user    0m0.020s

sys     0m0.025s

node1: /home/oracle $

node1: /home/oracle $

node1: /home/oracle $

node1: /home/oracle $

node1: /home/oracle $

node1: /home/oracle $ sqlplus / as sysdba


SQL*Plus: Release 19.0.0.0.0 - Production on Tue Feb 8 09:05:37 2022

Version 19.3.0.0.0


Copyright (c) 1982, 2019, Oracle.  All rights reserved.



Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0


SQL> show parameter client_statistics_level


NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

client_statistics_level              string      TYPICAL


SQL> alter system set client_statistics_level=OFF scope=spfile;


System altered.


SQL> shut immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0

node1: /home/oracle $

node1: /home/oracle $

node1: /home/oracle $ sqlplus / as sysdba


SQL*Plus: Release 19.0.0.0.0 - Production on Tue Feb 8 09:06:36 2022

Version 19.3.0.0.0


Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to an idle instance.


SQL> startup

ORACLE instance started.


Total System Global Area 6224344544 bytes

Fixed Size                  8910304 bytes

Variable Size            3858759680 bytes

Database Buffers         2348810240 bytes

Redo Buffers                7864320 bytes

Database mounted.

Database opened.

SQL>

SQL>

SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0

node1: /home/oracle $

node1: /home/oracle $

node1: /home/oracle $ time sqlplus / as sysdba @exit.sql


SQL*Plus: Release 19.0.0.0.0 - Production on Tue Feb 8 09:07:26 2022

Version 19.3.0.0.0


Copyright (c) 1982, 2019, Oracle.  All rights reserved.



Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0


Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0


real    0m0.116s    <<<---- improved

user    0m0.012s

sys     0m0.025s

node1: /home/oracle $




Cheers !


ORA-00600: internal error code, arguments: [HO define: Long fetch], [], [], [], [], [], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [HO define: Long fetch], [], [], [], [], [], [], [], [], [], [], []


Hi,

While fetching the data over dblink between Oracle & MS SQL database, got below error:


SQL> select * from "dbo"."ACC_TAB"@mssql;

select * from "dbo"."ACC_TAB"@mssql

ORA-00600: internal error code, arguments: [HO define: Long fetch], [], [], [], [], [], [], [], [], [], [], []

SQL>


Solution:


You can follow below MOS Doc to resolve this.

ORA-600 [HO define: Long fetch] Error Message When Selecting Data Via Oracle Database Gateways (Doc ID 1224783.1)


In my case, found that base table in MS SQL database "ACC_TAB" having columns datatype "varchar(max)", hence got the error.


In order to resolve this, I have modified the column and defined the column length and created index on the same column to fetch the data faster. Bingo! issue has been resolved. I can able to fetch data over dblink.


alter table [dbo].[ACC_TAB] ALTER COLUMN [Account] varchar(30);

create index acc on  [dbname].[d]bo.[ACC_TAB] ([Account]);


SQL> select * from "dbo"."ACC_TAB"@mssql;

--------
901212



Cheers !


Wednesday, 10 March 2021

OPatch failed with error code 1 -- Incompatible usage of java with OUI (32/64 bit).

OPatch failed with error code 1 --  Incompatible usage of java with OUI (32/64 bit).

 
$ ./opatch lsinventory
OPatch cannot continue because it would not be able to load OUI platform dependent library from the directory "/u02/app/oracle/product/19.3.0.0/db_1/oui/lib/linux". The directory does not exist in the Oracle home.
This could be due to the following reasons.
(1) Incompatible usage of java with OUI (32/64 bit).
(2) Wrong 32-bit Oracle Home installation in 64-bit environment (or) vice-versa.
Please contact Oracle support for more details.
OPatch failed with error code 1


Solution: Mistakenly downloaded 32 bit OPatch installer and post this error, we have downloded 64 bit and issue has been resolved.




CATPROC Oracle Database Packages and Types INVALID after upgrade from 12.1.0.2.0 to 19.3.0.0

CATPROC Oracle Database Packages and Types INVALID after upgrade from 12.1.0.2.0 to 19.3.0.0

Scenario:

We have upgraded our db from 12.1.0.2 to 19.3 and SYS objects got INVALID.

Comp ID Component Status Version Org_Version Prv_Version
------- ---------------------------------- --------- -------------- -------------- --------------
CATPROC Oracle Database Packages and Types INVALID 19.0.0.0.0 12.1.0.2.0 12.1.0.2.0


Solution :

1) Below script will tell us which PLSQL code needs to be validated/compiled first for the CATPROC to get validated too. Please apply its recommendation and then repeat it until no more recommendations are there.

sqlplus / as sysdba
set serveroutput on;
declare
start_time date;
end_time date;
object_name varchar(100);
object_id char(10);
begin
SELECT date_loading, date_loaded into start_time, end_time FROM registry$ WHERE cid = 'CATPROC';
SELECT obj#,name into object_id,object_name FROM obj$ WHERE status > 1 AND (ctime BETWEEN start_time AND end_time OR mtime BETWEEN start_time AND end_time OR stime BETWEEN start_time AND end_time) AND ROWNUM <=1;
dbms_output.put_line('Please compile Invalid object '||object_name||' Object_id '||object_id );
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('CATPROC can be validated now' );
end;
/


2) If the above query returns 'CATPROC can be validated now', then please execute the following command to validate the catproc registry component:
$ sqlplus / as sysdba
exec dbms_registry_sys.validate_catproc;


I have followed 1st step,


SQL> declare
start_time date;
end_time date;
object_name varchar(100);
object_id char(10);
begin
SELECT date_loading, date_loaded into start_time, end_time FROM registry$ WHERE cid = 'CATPROC';
SELECT obj#,name into object_id,object_name FROM obj$ WHERE status > 1 AND 2 (ctime BETWEEN start_time AND end_time OR mtime BETWEEN start_time AND end_time OR stime BETWEEN start_time AND end_time) AND ROWNUM <=1;
dbms_output.put_line('Please compile Invalid object '||object_name||' Object_id '||object_id );
EXCEPTION
WHEN NO_D 3 ATA_FOUND THEN
dbms_output.put_line('CATPROC can be validated now' );
end;
/ 4 5 6 7 8 9 10 11 12 13 14
Please compile Invalid object DBMS_AUTO_INDEX_INTERNAL Object_id 904209
PL/SQL procedure successfully completed.




SQL> alter package DBMS_AUTO_INDEX_INTERNAL compile body;
Warning: Package Body altered with compilation errors.
SQL> show error
Errors for PACKAGE BODY DBMS_AUTO_INDEX_INTERNAL:
LINE/COL ERROR
-------- -----------------------------------------------------------------
7256/5 PL/SQL: SQL Statement ignored
7319/14 PLS-00231: function 'DBMS_AUTO_INDEX_INTERNAL.AUTO_INDEX_ALLOW'
may not be used in SQL
7319/39 PL/SQL: ORA-00904: : invalid identifier
7403/9 PL/SQL: Statement ignored
7403/13 PLS-00364: loop index variable 'CUR' use is invalid
7407/9 PL/SQL: Statement ignored
7407/43 PLS-00364: loop index variable 'CUR' use is invalid
7410/9 PL/SQL: Statement ignored
7410/44 PLS-00364: loop index variable 'CUR' use is invalid


Still this package is INVALID, so followed below steps :

1. connect to the database as sysdba:
sqlplus "/ as sysdba"
2. shutdown immediate
3. startup upgrade
4. spool catalog.log
@$ORACLE_HOME/rdbms/admin/catalog.sql
spool off
5. spool catproc.log
@$ORACLE_HOME/rdbms/admin/catproc.sql
spool off
6. spool utlrp.log
@?/rdbms/admin/utlrp
spool off
7. shutdown immediate
8. startup
9. 
Comp ID Component Status Version Org_Version Prv_Version
------- ---------------------------------- --------- -------------- -------------- --------------
CATPROC Oracle Database Packages and Types VALID 19.0.0.0.0 12.1.0.2.0 12.1.0.2.0


Hope this will help you :)

Sunday, 8 March 2020

joxcsys: release mismatch 12.1.0.2.0 1.6 in database (classes.bin) vs 12.1.0.2.191015 1.6 in executable

joxcsys: release mismatch 12.1.0.2.0 1.6 in database (classes.bin) vs 12.1.0.2.191015 1.6 in executable

Observed multiple errors in one of the development database.



Solution :

[oracle@devoracledb ~]$ sqlplus / as sysdba


SQL*Plus: Release 12.1.0.2.0 Production on Sun Mar 8 11:18:02 2020

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SYS on 08-MAR-20 @ db_UAT2 > select dbms_java.get_jdk_version() from dual;

select dbms_java.get_jdk_version() from dual
                                        *
ERROR at line 1:
ORA-29548: Java system class reported: release of Java system classes in the
database (12.1.0.2.0 1.6) does not match that of the oracle executable
(12.1.0.2.191015 1.6)


SYS on 08-MAR-20 @ db_UAT2 > @?/javavm/install/update_javavm_db.sql
SYS on 08-MAR-20 @ db_UAT2 > SET FEEDBACK 1
SYS on 08-MAR-20 @ db_UAT2 > SET NUMWIDTH 10
SYS on 08-MAR-20 @ db_UAT2 > SET LINESIZE 80
SYS on 08-MAR-20 @ db_UAT2 > SET TRIMSPOOL ON
SYS on 08-MAR-20 @ db_UAT2 > SET TAB OFF
SYS on 08-MAR-20 @ db_UAT2 > SET PAGESIZE 100
SYS on 08-MAR-20 @ db_UAT2 >
SYS on 08-MAR-20 @ db_UAT2 > alter session set "_ORACLE_SCRIPT"=true;

Session altered.

SYS on 08-MAR-20 @ db_UAT2 >
SYS on 08-MAR-20 @ db_UAT2 > -- If Java is installed, do CJS.
SYS on 08-MAR-20 @ db_UAT2 >
SYS on 08-MAR-20 @ db_UAT2 > -- If CJS can deal with the SROs inconsistent with the new JDK,
SYS on 08-MAR-20 @ db_UAT2 > -- the drop_sros() call here can be removed.
SYS on 08-MAR-20 @ db_UAT2 > call initjvmaux.drop_sros();

Call completed.

SYS on 08-MAR-20 @ db_UAT2 >
SYS on 08-MAR-20 @ db_UAT2 > create or replace java system;
  2  /



Java created.

SYS on 08-MAR-20 @ db_UAT2 >
SYS on 08-MAR-20 @ db_UAT2 > update dependency$
  2    set p_timestamp=(select stime from obj$ where obj#=p_obj#)
  3    where (select stime from obj$ where obj#=p_obj#)!=p_timestamp and
  4          (select type# from obj$ where obj#=p_obj#)=29  and
  5          (select owner# from obj$ where obj#=p_obj#)=0;

0 rows updated.

SYS on 08-MAR-20 @ db_UAT2 >
SYS on 08-MAR-20 @ db_UAT2 > commit;

Commit complete.

SYS on 08-MAR-20 @ db_UAT2 >
SYS on 08-MAR-20 @ db_UAT2 > alter session set "_ORACLE_SCRIPT"=false;

Session altered.

SYS on 08-MAR-20 @ db_UAT2 >
SYS on 08-MAR-20 @ db_UAT2 > SYS on 08-MAR-20 @ db_UAT2 > SYS on 08-MAR-20 @ db_UAT2 >
SYS on 08-MAR-20 @ db_UAT2 >
SYS on 08-MAR-20 @ db_UAT2 > ---- VERIFIED 

SYS on 08-MAR-20 @ db_UAT2 > select dbms_java.get_jdk_version() from dual;

DBMS_JAVA.GET_JDK_VERSION()
-------------------------------------------------------------
1.6.0_211

1 row selected.

SYS on 08-MAR-20 @ db_UAT2 >