Tuesday 17 December 2019

Patch 26834480: adgrants.sql execution gives WARNINGS

Patch 26834480: adgrants.sql execution gives WARNINGS

For the patch 26834480, we have to run the adgrants.sql , after comparing the highest version of this file present in $APPL_TOP/admin and the patch directory. 

The highest version of adgrants.sql has to be copied to database home

 $ORACLE_HOME/appsutil/admin directory

The script will give the necessary grants and permissions and in the end, it will show warnings.

SQL> @adgrants.sql apps
Connected.

.
.
.
.
...........

.........



The following ERRORS and WARNINGS have been encountered during this adgrants session:


TIME_STAMP           SESSION_ID LOG_MODULE                                 LOG_LEVEL
-------------------- ---------- ------------------------------------------ ----------
LOG_MESSAGE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2019/12/17 16:07:17          75 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE          WARNING
ORA-04042: procedure, function, package, or package body does not exist, SQL: grant EXECUTE on "DBMS_SCHEMA_COPY" to "SYSTEM" with grant option

2019/12/17 16:07:17          75 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE          WARNING
ORA-04042: procedure, function, package, or package body does not exist, SQL: grant EXECUTE on "DBMS_SCHEMA_COPY" to "APPS"

2019/12/17 16:07:22          75 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE          WARNING
ORA-00942: table or view does not exist, SQL: grant WRITE on "DIRECTORY FND_DIAG_DIR" to "APPS"

2019/12/17 16:07:22          75 ad.plsql.ad_zd_sys.GIVE_PRIVILEGE          WARNING
ORA-00942: table or view does not exist, SQL: grant READ on "DIRECTORY FND_DIAG_DIR" to "APPS"



Grants given by this script have been written to the ad_zd_logs table.
You can run $AD_TOP/sql/ADZDSHOWLOG.sql to produce a report showing these grants.


Commit complete.



SOLUTION:

These warnings can be ignored when running adgrants.sql.  If receiving these warnings system likely does not have dbvault enabled, which is not an EBS requirement. 


Reference:

Tuesday 19 November 2019

How to check OCR keys using OCRDUMP on RAC 12c

How to check OCR keys using OCRDUMP on RAC 12c


To check the OCR keys values using ocrdump utility, please run below command:

/u01/app/12.1.0/grid/bin/ocrdump.bin -stdout -keyname SYSTEM.version.hostnames

[SYSTEM.version.hostnames]
UNDEF :
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_READ, OTHER_PERMISSION : PROCR_READ, USER_NAME : root, GROUP_NAME : root}

[SYSTEM.version.hostnames.rac_node1]
ORATEXT : 12.1.0.2.0
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_READ, OTHER_PERMISSION : PROCR_READ, USER_NAME : root, GROUP_NAME : root}

[SYSTEM.version.hostnames.rac_node1.patchlevel]
UB4 (10) : 0
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_READ, OTHER_PERMISSION : PROCR_READ, USER_NAME : root, GROUP_NAME : root}

[SYSTEM.version.hostnames.rac_node2]
ORATEXT : 12.1.0.2.0
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_READ, OTHER_PERMISSION : PROCR_READ, USER_NAME : root, GROUP_NAME : root}

[SYSTEM.version.hostnames.rac_node2.patchlevel]
UB4 (10) : 0
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_READ, OTHER_PERMISSION : PROCR_READ, USER_NAME : root, GROUP_NAME : root}

[grid@]$

Tuesday 12 November 2019

Health Check Script

Oracle Database Health Check Script

Run this script has sysdba user or any user having DBA Role

Change the spool file patch to correct directory. In this example it is set to 
/export/home/oraprod/

$ cat Health_Check_Script.sql


set pagesize 1100
SET MARKUP HTML ON SPOOL ON
spool /export/home/oraprod/health_check_new.html
set feedback off
set linesize 200;
set pages 50
set lines 1000
set pages 70
set heading on
PROMPT================================================================
prompt
PROMPT

PROMPT Daily_Monitoring Checkup Report
prompt =================================================================================================================================================
PROMPT REPORT DATE
select to_char(sysdate,'DD-MON-YYYY:HH:MI:SS') "Report Run Date" from dual;

prompt DATABASE NAME
PROMPT ==============
select instance_name,host_name,version,status from gv$instance ,v$database a;

PROMPT DATABASE INFO
PROMPT =============
select NAME,
CREATED,
LOG_MODE,
CHECKPOINT_CHANGE#,
ARCHIVE_CHANGE#
from v$database;

select status from v$instance;

prompt TABLESPACE INFO
prompt ===================
set linesize 100
set pagesize 100

select a.tablespace_name,
round(SUM(a.bytes)/(1024*1024*1024)) CURRENT_GB,
round(SUM(decode(b.maxextend, null,A.BYTES/(1024*1024*1024),b.maxextend*8192/(1024*1024*1024)))) MAX_GB,
(SUM(a.bytes)/(1024*1024*1024) - round(c.Free/1024/1024/1024)) USED_GB,round((SUM(decode(b.maxextend,null,A.BYTES/(1024*1024*1024),
b.maxextend*8192/(1024*1024*1024)))-(SUM(a.bytes)/(1024*1024*1024)- round(c.Free/1024/1024/1024))),2)FREE_GB,
round(100*(SUM(a.bytes)/(1024*1024*1024)- round(c.Free/1024/1024/1024))/(SUM(decode(b.maxextend,null, A.BYTES/(1024*1024*1024),
b.maxextend*8192/(1024*1024*1024)))))USED_PCT
from dba_data_files a,sys.filext$ b,
(SELECT
d.tablespace_name ,sum(nvl(c.bytes,0)) Free
FROM dba_tablespaces d,DBA_FREE_SPACE c
WHERE d.tablespace_name = c.tablespace_name(+)
group by d.tablespace_name) c
WHERE
a.file_id = b.file#(+)
and a.tablespace_name = c.tablespace_name
GROUP BY a.tablespace_name, c.Free/1024
ORDER BY tablespace_name;

PROMPT SESSION INFORMATION
PROMPT ========================
select status,count(status) Count from v$session group by status;

PRoMPT HIT RATIOS
PROMPT =============
PROMPT SORT STATISTICS THIS SHOULD BE MORE THAN 95 %
SELECT (1-d.VALUE/m.value)*100 "SORT RATIO " FROM V$SYSsTAT d,v$sysstat m
WHERE d.name ='sorts (disk)' and m.name='sorts (memory)';

PROMPT DICTIONARY HIT RATIO
PROMPT Hit Ratio should be > 90%, else increase SHARED_POOL_SIZE in init.ora
PROMPT ======================
select (1-(sum(getmisses)/sum(gets)))*100 "OVER ALL DICT HIT RATIO" from v$rowcache;

PROMPT THE OVER ALL HITRATIO OF THE LIBRARY CACHE
select sum(gethitratio)/count(*) *100 " LIBRARY CACHE HIT RATIO " from v$librarycache;

PROMPT BUFFER HIT RATIO
PROMPT =================
SELECT (1-PHY.VALUE/(cur.value+con.value))*100 " BUFFER CACHE HIT RATIO " from v$sysstat phy,v$sysstat con,v$sysstat cur
where cur.name='db block gets'
and con.name='consistent gets'
and phy.name='physical reads';

PROMPT INDEX LOOK UP RATIO
PROMPT =====================
SELECT (1-l.VALUE/(l.value+s.value))*100 "INDEX LOOK UP RATIO " FROM V$SYSSTAT l ,v$sysstat s
WHERE s.name ='table scans (short tables)' and l.name= 'table scans (long tables)';

PROMPT DATABASE SIZE
PROMPT ================
PROMPT TOTAL SIZE OF A DATABASE
select sum(bytes)/1024/1024/1024 "Physical Database Size" ,' GB '
from dba_data_files ;

PROMPT ACTUAL SIZE OF DATABASE
select sum(bytes)/1024/1024/1024 "Actual Database Size", ' GB '
from dba_segments ;

PROMPT INVALID OBJECTS
PROMPT =====================
Select count(*) "INVALID OBJECTS",OWNER,object_type from all_objects where status='INVALID' group by owner,object_type order by 2;

PROMPT REDO LOGS AND ARCHIVE STATUS
PROMPT ==================================
COLUMN member_name HEADING 'Member_Name';
COL MEMBER FOR A40;
SELECT vlf.member "member_name",
vl.group# "Group",
vl.status "Status",
vl.archived "Archived",
vl.bytes / 1024 "Size (K)",
vl.sequence# "Sequence"
FROM v$logfile vlf,
v$log vl
WHERE vlf.group# = vl.group#
ORDER BY 1, vl.group#, vlf.member;

PROMPT Session I/O By User
PROMPT ==================================

select nvl(ses.USERNAME,'ORACLE PROC') username,
OSUSER os_user,
PROCESS pid,
ses.SID sid,
SERIAL#,
PHYSICAL_READS,
BLOCK_GETS,
CONSISTENT_GETS,
BLOCK_CHANGES,
CONSISTENT_CHANGES
from v$session ses,
v$sess_io sio
where ses.SID = sio.SID
order by PHYSICAL_READS, ses.USERNAME;

prompt SEGMENTS HAVING LESS THAN 45 FREE EXTENTS
PROMPT ========================================
SELECT owner, segment_name, segment_type, extents, max_extents, next_extent,
initial_extent
FROM dba_segments WHERE max_extents- extents < 45;

PROMPT LOCK INFORMATION
PROMPT ===================
select OS_USER_NAME os_user,
PROCESS os_pid,
ORACLE_USERNAME oracle_user,
l.SID oracle_id,
decode(TYPE,
'MR', 'Media Recovery',
'RT', 'Redo Thread',
'UN', 'User Name',
'TX', 'Transaction',
'TM', 'DML',
'UL', 'PL/SQL User Lock',
'DX', 'Distributed Xaction',
'CF', 'Control File',
'IS', 'Instance State',
'FS', 'File Set',
'IR', 'Instance Recovery',
'ST', 'Disk Space Transaction',
'TS', 'Temp Segment',
'IV', 'Library Cache Invalidation',
'LS', 'Log Start or Switch',
'RW', 'Row Wait',
'SQ', 'Sequence Number',
'TE', 'Extend Table',
'TT', 'Temp Table', type) lock_type,
decode(LMODE,
0, 'None',
1, 'Null',
2, 'Row-S (SS)',
3, 'Row-X (SX)',
4, 'Share',
5, 'S/Row-X (SSX)',
6, 'Exclusive', lmode) lock_held,
decode(REQUEST,
0, 'None',
1, 'Null',
2, 'Row-S (SS)',
3, 'Row-X (SX)',
4, 'Share',
5, 'S/Row-X (SSX)',
6, 'Exclusive', request) lock_requested,
decode(BLOCK,
0, 'Not Blocking',
1, 'Blocking',
2, 'Global', block) status,
OWNER,
OBJECT_NAME
from v$locked_object lo,
dba_objects do,
v$lock l
where lo.OBJECT_ID = do.OBJECT_ID
AND l.SID = lo.SESSION_ID;

PROMPT HIGH RESOURCE CONSUMING SQL
PROMPT ===========================
select sql_text,username,
disk_reads_per_exec,buffer_gets,
disk_reads,parse_calls,
sorts,executions,
rows_processed,
hit_ratio,first_load_time,
sharable_mem,persistent_mem,
runtime_mem,cpu_time,
elapsed_time,address,hash_value
from
(select sql_text ,b.username ,
round((a.disk_reads/decode(a.executions,0,1,
a.executions)),2)
disk_reads_per_exec,
a.disk_reads ,
a.buffer_gets ,
a.parse_calls ,
a.sorts ,
a.executions ,
a.rows_processed ,
100 - round(100 * a.disk_reads/greatest(a.buffer_gets,1),2) hit_ratio,
a.first_load_time ,
sharable_mem ,
persistent_mem ,
runtime_mem,
cpu_time,
elapsed_time,
address,
hash_value
from
sys.v_$sqlarea a,
sys.all_users b
where
a.parsing_user_id=b.user_id and
b.username not in ('sys','system')
order by 3 desc)
where rownum < 21;

PROMPT RMAN BACKUP Status
PROMPT ====================
col STATUS format a9
col hrs format 999.99
select
SESSION_KEY, INPUT_TYPE, STATUS,
to_char(START_TIME,'mm/dd/yy hh24:mi') start_time,
to_char(END_TIME,'mm/dd/yy hh24:mi') end_time,
elapsed_seconds/3600 hrs
from V$RMAN_BACKUP_JOB_DETAILS
where start_time > sysdate-1
order by session_key;

PROMPT TEMP TABLESPACE Status
PROMPT ====================
set feedback off echo off
set linesize 200
set pagesize 200
set colsep |
SET TRIM
SELECT A.tablespace_name tablespace, D.mb_total,
SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_used,
D.mb_total-SUM (A.used_blocks * D.block_size) / 1024 / 1024 mb_free
FROM v$sort_segment A,
(
SELECT B.name, C.block_size, SUM (C.bytes) / 1024 / 1024 mb_total
FROM v$tablespace B, v$tempfile C
WHERE B.ts#= C.ts#
GROUP BY B.name, C.block_size
) D
WHERE A.tablespace_name = D.name
GROUP by A.tablespace_name, D.mb_total;

prompt ******************************************************************************************************
prompt number of tables analyzed in the last 5 days .. we have problem
prompt The below count indicates that tables which had their stats gathered
prompt ******************************************************************************************************
select count(*) from dba_tables where last_analyzed > sysdate-5;

prompt ******************************************************************************************************

prompt ******************************************************************************************************
prompt number of INDEXES analyzed in the last 5 days .. we have problem
prompt The below count indicates that index which had their stats gathered
prompt ******************************************************************************************************
select count(*) from dba_indexes where last_analyzed > sysdate-5;

prompt ******************************************************************************************************

prompt db users who are expired or locked in last 7 days
prompt *************************************************************************************************************
select username , ACCOUNT_STATUS from dba_users where ACCOUNT_STATUS NOT LIKE 'OPEN' and EXPIRY_DATE > sysdate -7;

prompt UNUSABLE INDEXES ON THE DATABASE
prompt *************************************************************************************************************
select index_name,table_owner from DBA_INDEXES where status='UNUSABLE';

prompt CORRUPTED BLOCKS ON THE DATABASE:
prompt *************************************************************************************************************
select count(*) from V$DATABASE_BLOCK_CORRUPTION;
PROMPT Active Incidents:
PROMPT ———————-
set linesize 170
col RECENT_PROBLEMS for a45
select PROBLEM_KEY RECENT_PROBLEMS_1_WEEK_BACK,to_char(FIRSTINC_TIME,'DD-MON-YY HH24:mi:ss') FIRST_OCCURENCE,to_char(LASTINC_TIME,'DD-MON-YY HH24:mi:ss')
LAST_OCCURENCE FROM V$DIAG_PROBLEM WHERE LASTINC_TIME > SYSDATE -1;


PROMPT  ORIGINAL HEALTH CHECK 
prompt *************************************************************************************************************
select dbid,name,instance_name,host_name,version,platform_name,created,log_mode,open_mode,protection_mode,protection_level
,database_role,switchover_status,force_logging,flashback_on from gv\$database, gv\$instance;
prompt *************************************************************************************************************

select host_name
      ,instance_name
      ,to_char(startup_time,'DD-MON-YYYY HH24:MI:SS') stime
      ,floor(sysdate - startup_time) || ' days(s) ' ||
       trunc( 24*((sysdate-startup_time) - 
       trunc(sysdate-startup_time))) || ' hour(s) ' ||
       mod(trunc(1440*((sysdate-startup_time) - 
       trunc(sysdate-startup_time))), 60) ||' minute(s) ' ||
       mod(trunc(86400*((sysdate-startup_time) - 
       trunc(sysdate-startup_time))), 60) ||' seconds' uptime
from gv\$instance
prompt *************************************************************************************************************

select round(sum(used.bytes) / 1024 / 1024 /1024  ) || ' GB' "Total Database Size" ,round(free.p / 1024 / 1024/1024) || ' GB' "Free space" from (select bytes from v\$datafile 
      union all 
      select bytes from v\$tempfile 
      union all 
      select bytes from v\$log) used 
,    (select sum(bytes) as p from dba_free_space) free 
group by free.p ;
prompt *************************************************************************************************************

SELECT lf.INST_ID,l.thread#,
lf.group#,
lf.member,
TRUNC(l.bytes/1024/1024) AS size_mb,
l.status,
l.archived,
lf.type,
lf.is_recovery_dest_file AS rdf,
l.sequence#,
l.first_change#,
l.next_change#   
FROM   gv\$logfile lf
JOIN gv\$log l ON l.group# = lf.group#
ORDER BY l.thread#,lf.group#, lf.member, lf.INST_ID;

prompt *************************************************************************************************************
SELECT owner,
       object_type,
       object_name,
       status
FROM   dba_objects
WHERE  status = 'INVALID'
ORDER BY owner, object_type, object_name;


WITH hours AS (
  SELECT TRUNC(SYSDATE) - 1 + ((level-1)/24) AS hours
  FROM   dual
  CONNECT BY level < = 24
)
SELECT h.hours AS date_hour,
       ROUND(SUM(blocks * block_size)/1024/1024/1024,2) size_gb
FROM   hours h
       LEFT OUTER JOIN v\$archived_log al ON h.hours = TRUNC(al.first_time, 'HH24')
GROUP BY h.hours
ORDER BY h.hours;
prompt *************************************************************************************************************

select SESSION_KEY, INPUT_TYPE, STATUS,
to_char(START_TIME,'mm/dd/yy hh24:mi') start_time,
to_char(END_TIME,'mm/dd/yy hh24:mi')   end_time,
elapsed_seconds/3600 hrs
from V\$RMAN_BACKUP_JOB_DETAILS
order by session_key;

prompt *************************************************************************************************************
 WITH sessions AS 
       (SELECT /*+ materialize*/ username,sid,sql_id, SERIAL#
          FROM GV\$session),
     locks AS 
        (SELECT /*+ materialize */ *
           FROM GV\$lock)
SELECT s1.sql_id, l2.type,s1.username blocking_user , s1.sid blocking_sid, s1.SERIAL# blocking_SERIAL,
        s2.sql_id, s2.username blocked_user, s2.sid blocked_sid, s2.SERIAL# blocked_SERIAL, sq.sql_text
  FROM locks l1
  JOIN locks l2 USING (id1, id2)
  JOIN sessions s1 ON (s1.sid = l1.sid)
  JOIN sessions s2 ON (s2.sid = l2.sid)
  LEFT OUTER JOIN  v\$sql sq
       ON (sq.sql_id = s2.sql_id)
 WHERE l1.BLOCK = 1 AND l2.request > 0;

prompt *************************************************************************************************************
select
  j.session_recid, j.session_stamp,
  to_char(j.start_time, 'yyyy-mm-dd hh24:mi:ss') start_time,
  to_char(j.end_time, 'yyyy-mm-dd hh24:mi:ss') end_time,
  (j.output_bytes/1024/1024) output_mbytes, j.status, j.input_type,
  decode(to_char(j.start_time, 'd'), 1, 'Sunday', 2, 'Monday',
                                     3, 'Tuesday', 4, 'Wednesday',
                                     5, 'Thursday', 6, 'Friday',
                                     7, 'Saturday') dow,
  j.elapsed_seconds, j.time_taken_display,
  x.cf, x.df, x.i0, x.i1, x.l,
  ro.inst_id output_instance
from V\$RMAN_BACKUP_JOB_DETAILS j
  left outer join (select
                     d.session_recid, d.session_stamp,
                     sum(case when d.controlfile_included = 'YES' then d.pieces else 0 end) CF,
                     sum(case when d.controlfile_included = 'NO'
                               and d.backup_type||d.incremental_level = 'D' then d.pieces else 0 end) DF,
                     sum(case when d.backup_type||d.incremental_level = 'D0' then d.pieces else 0 end) I0,
                     sum(case when d.backup_type||d.incremental_level = 'I1' then d.pieces else 0 end) I1,
                     sum(case when d.backup_type = 'L' then d.pieces else 0 end) L
                   from
                     V\$BACKUP_SET_DETAILS d
                     join V\$BACKUP_SET s on s.set_stamp = d.set_stamp and s.set_count = d.set_count
                   where s.input_file_scan_only = 'NO'
                   group by d.session_recid, d.session_stamp) x
    on x.session_recid = j.session_recid and x.session_stamp = j.session_stamp
  left outer join (select o.session_recid, o.session_stamp, min(inst_id) inst_id
                   from GV\$RMAN_OUTPUT o
                   group by o.session_recid, o.session_stamp)
    ro on ro.session_recid = j.session_recid and ro.session_stamp = j.session_stamp
where j.start_time > trunc(sysdate)-7
order by j.start_time;

prompt *************************************************************************************************************
SELECT name, free_mb/1024, total_mb/1024, free_mb/total_mb*100 as percentage 
FROM v\$asm_diskgroup;
prompt *************************************************************************************************************
spool off
exit

Tuesday 5 November 2019

ADOP Fails With Error "PLS-00201: identifier 'AD_JAR.GET_JRIPASSWORDS' must be declared"

While running ADOP / ADPATCH the below error occurs:
The ORACLE username specified below for Application Object Library
uniquely identifies your existing product group: APPLSYS

Enter the ORACLE password of Application Object Library [APPS] : *****

AutoPatch is verifying your username/password.
Connecting to APPS......Connected successfully.

Error: Unable to execute statement <
Begin
ad_jar.get_jripasswords(:l_storepass, :l_keypass);
End;
> len = 63

AutoPatch error:
ORA-06550: line 3, column 1:
PLS-00201: identifier 'AD_JAR.GET_JRIPASSWORDS' must be declared
ORA-06550: line 3, column 1:
PL/SQL: Statement ignored


AutoPatch error:

Unable to get passwords from Vault
CAUSE
The AD_JAR object not available in apps schema.
 
SQL> desc AD_JAR
ERROR:
ORA-04043: object AD_JAR does not exist

SOLUTION

1. Please login as applmgr (Unix user that own application binaries )

2. Source the application environment file . (APPS.env)

3. cd $AD_TOP/patch/115/sql/

4. Login to database as apps database user and run below 2 SQL's

@ADJRIS.pls
@ADJRIB.pls

5. Run the below SQL to see whether objects are valid

select owner,object_type,status from dba_objects where object_name='AD_JAR';

6. If AD_JAR is available under apps schema re-run the failed patch
 

Wednesday 30 October 2019

Patch DN1F is mutually exclusive and cannot coexist with patch(es): CIH8


Patch DN1F is mutually exclusive and cannot coexist with patch(es): CIH8

While applying a patch on WLS, we encounter the error:

Patch DN1F is mutually exclusive and cannot coexist with patch(es): CIH8


Solution:

Remove the conflicting patch using below command:

[applmgr@oel7 bsu]$ ./bsu.sh -prod_dir=/u01/apps/TEST/fs1/FMW_Home/wlserver_10.3 -patchlist=CIH8 -verbose -remove
Checking for conflicts........
No conflict(s) detected

Starting removal of Patch ID: CIH8
Removing /u01/apps/TEST/fs1/FMW_Home/patch_wls1036/patch_jars/AppsAdapter.jar
Removing /u01/apps/TEST/fs1/FMW_Home/patch_wls1036/patch_jars/bpm-infra.jar
Removing /u01/apps/TEST/fs1/FMW_Home/patch_wls1036/patch_jars/DBAdapter.jar
Removing /u01/apps/TEST/fs1/FMW_Home/patch_wls1036/patch_jars/dbws.jar
Removing /u01/apps/TEST/fs1/FMW_Home/patch_wls1036/patch_jars/jca-binding-api.jar
Updating /u01/apps/TEST/fs1/FMW_Home/patch_wls1036/profiles/default/sys_manifest_classpath/weblogic_patch.jar
Old manifest value: Class-Path= ../../../patch_jars/BUG16684205_1036.jar ../../../patch_jars/BUG13964737_1036.jar ../../../patch_jars/BUG13729611_103607.jar ../../../patch_jars/BUG11781879_103607.jar ../../../patch_jars/BUG19687084_103607.jar ../../../patch_jars/BUG20474010_1036.jar ../../../patch_jars/BUG17319481_103607.jar ../../../patch_jars/BUG13337000_103607.jar ../../../patch_jars/BUG17572726_103607.jar ../../../patch_jars/com.bea.core.stax2_2.0.0.0_3-0-3.jar ../../../patch_jars/glassfish.jaxb.xjc_1.2.0.0_2-1-14.jar ../../../patch_jars/glassfish.jaxb_1.2.0.0_2-1-14.jar ../../../patch_jars/glassfish.jaxp_1.4.5.0.jar ../../../patch_jars/glassfish.jaxws.mimepull_1.1.0.0_1-3-8.jar ../../../patch_jars/AppsAdapter.jar ../../../patch_jars/bpm-infra.jar ../../../patch_jars/DBAdapter.jar ../../../patch_jars/dbws.jar ../../../patch_jars/jca-binding-api.jar ../../../patch_jars/com.bea.core.management.core_2.9.0.1.jar ../../../patch_jars/BUG14272383_1036.jar ../../../patch_jars/BUG13845626_1036.jar
New manifest value: Class-Path= ../../../patch_jars/BUG16684205_1036.jar ../../../patch_jars/BUG13964737_1036.jar ../../../patch_jars/BUG13729611_103607.jar ../../../patch_jars/BUG11781879_103607.jar ../../../patch_jars/BUG19687084_103607.jar ../../../patch_jars/BUG20474010_1036.jar ../../../patch_jars/BUG17319481_103607.jar ../../../patch_jars/BUG13337000_103607.jar ../../../patch_jars/BUG17572726_103607.jar ../../../patch_jars/com.bea.core.stax2_2.0.0.0_3-0-3.jar ../../../patch_jars/glassfish.jaxb.xjc_1.2.0.0_2-1-14.jar ../../../patch_jars/glassfish.jaxb_1.2.0.0_2-1-14.jar ../../../patch_jars/glassfish.jaxp_1.4.5.0.jar ../../../patch_jars/glassfish.jaxws.mimepull_1.1.0.0_1-3-8.jar ../../../patch_jars/AppsAdapter.jar ../../../patch_jars/bpm-infra.jar ../../../patch_jars/DBAdapter.jar ../../../patch_jars/dbws.jar ../../../patch_jars/jca-binding-api.jar ../../../patch_jars/com.bea.core.management.core_2.9.0.1.jar ../../../patch_jars/BUG14272383_1036.jar ../../../patch_jars/BUG13845626_1036.jar
Result: Success


Then Apply the patch 

Tuesday 22 October 2019

CLEARING an ADOP patching session

In some case adop prepare phase fails due to some issues and if you wish to apply any patch in hotpatch mode, it will fail with below errors

[STATEMENT] There is already a session which is incomplete. Details are:
[STATEMENT]     Session Id: 2
[STATEMENT]     Prepare phase status: R
[STATEMENT]     Apply phase status: N
[STATEMENT]     Cutover  phase status: N
[STATEMENT]     Abort phase status: N

[STATEMENT]     Session status: F
[ERROR]     Cannot apply hotpatch as another online patching cycle is going on
[ERROR]     Unrecoverable error occured. Exiting the current session.
[STATEMENT] [START 2019/10/22 16:13:00] Unlocking sessions table
[STATEMENT] [END   2019/10/22 16:13:00] Unlocking sessions table
[STATEMENT] Log file: /adop_20191022_161221.log
[STATEMENT] [START 2019/10/22 16:13:02] Unlocking sessions table
[STATEMENT] [END   2019/10/22 16:13:03] Unlocking sessions table
Can't call method "close" on an undefined value at /u01/apps/TEST/fs1/EBSapps/appl/au/12.0.0/perl/ADOP/Phase.pm line 239.


Now, if you try to cleanup the previous session using below

$ adop phase=cleanup

  [ERROR]     Error: Pending session of prepare/apply/cutover exists
  [ERROR]     Hint: Before trying cleanup complete the pending session
  [STATEMENT] [START 2019/10/22 16:18:36] Unlocking sessions table
  [STATEMENT] [END   2019/10/22 16:18:36] Unlocking sessions table
  [STATEMENT] Log file: /u01/apps/TEST/fs_ne/EBSapps/log/adop/2/adop_20191022_161746.log

adop exiting with status = 2 (Fail)


The solution is to abort the patching cycle as shown below:
Type Y when prompted 

$ adop phase=abort

...

[STATEMENT]           one patch is already applied for the session id
The above session would be aborted/rolled back. Do you want to continue [Y/N]? Y



[STATEMENT] adop phase=abort - Completed Successfully


$ adop -status

Node Name       Node Type       Phase       Status          Started                        Finished                       Elapsed
--------------- --------------- ----------- --------------- ------------------------------ ------------------------------ ------------
oel7            master          PREPARE     SESSION ABORTED 22-OCT-19 02:33:06 +03:00      22-OCT-19 02:54:06 +03:00      0:20:00
                                APPLY       SESSION ABORTED
                                CUTOVER     SESSION ABORTED
                                CLEANUP     SESSION ABORTED




File System Synchronization Used in this Patching Cycle: None

For more information, see the full ADOP Status Report.
Generating full ADOP Status Report at location: /u01/apps/TEST/fs_ne/EBSapps/log/status_20191022_162759/adzdshowstatus.out
Please wait...
Done...!

adop exiting with status = 0 (Success)












Monday 21 October 2019

Connecting to Oracle Cloud VM from putty

There is a very nice explanation of how to connect to an Oracle Cloud VM using putty. 



Connect to a Cloud VM on Windows with PuTTY


https://www.oracle.com/webfolder/technetwork/tutorials/obe/cloud/ggcs/Connect_to_a_cloud_VM_on_Windows_with_Putty/connect_to_a_cloud_VM_using_Putty.html#summary




PS: Instead of using the auto-login (oracle) user name use (opc). It worked for me. 



Enjoy ur VM

resyncing from database with DB_UNIQUE_NAME RMAN-03014: implicit resync of recovery catalog failed


There has been a structural changes on the primary DB ( like adding of data files,etc) and during the time, tried to connect from standby database using rman as below

rman target / catalog rman/rman@dbcat

Recovery Manager: Release 11.2.0.4.0 - Production on Mon Oct 21 13:30:38 2019

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database: SPROD (DBID=1981104798)
connected to recovery catalog database


RMAN> show all;
2> ;

ORA-20079: full resync from primary database is not done

doing automatic resync from primary
resyncing from database with DB_UNIQUE_NAME SPROD
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of show command at 10/21/2019 11:00:29
RMAN-03014: implicit resync of recovery catalog failed
RMAN-03009: failure of partial resync command on default channel at 10/21/2019 11:00:29
ORA-17629: Cannot connect to the remote database server
ORA-17627: ORA-01017: invalid username/password; logon denied

ORA-17629: Cannot connect to the remote database server

rman tries to resync the standby from primary using db_unique_name.

However, RMAN is unable to connect to the primary because no connect string was used when connecting to the standby - 

in order to resync from another host in a Data Guard configuration , the connection to target must be made with a username, password and alias.  

This is documentation Bug 13774434: ORA-17629, ORA-17628 DURING RESYNC CATALOG FROM DB_UNIQUE_NAME ALL;


SoLUTION
Use a TNS connect string when connecting to the standby eg

rman target sys/sys123@primary_db catalog rman/rman@dbcat


RMAN> show all;

RMAN configuration parameters for database with db_unique_name SPRODSMU are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;

CONFIGURE CONTROLFILE AUTOBACKUP ON;


XX_XXXXXXX is not a valid responsibility for the current user. Please contact your System Administrator.

  XX_XXXXXXX is not a valid responsibility for the current user. Please contact your System Administrator. Issue : When user logs into EBS, ...