Tuesday, July 5, 2022

Oracle E-business suite logs clean up

 Oracle E-business suite logs clean up




#!/bin/bash

cd $EBS_DOMAIN_HOME

find $EBS_DOMAIN_HOME -type f -path "*/logs/*.log?*" -mtime +10 -exec rm {} \;

find $EBS_DOMAIN_HOME -type f -path "*/logs/*.out?*" -mtime +10 -exec rm {} \;

#add validation code to check if env is set, 

cd $IAS_ORACLE_HOME/instances

find $IAS_ORACLE_HOME/instances -type f -path "*diagnostics/logs*log.*" -mtime +10 -exec rm {} \;

Monday, July 19, 2021

 Concurrent Request Analytics. 


Find number of concurrent requests submitted month wise. 


select to_char(a.requested_start_date,'yymon'), count(*) from 

fnd_concurrent_requests a

--where concurrent_program_id in ('20428','20821') use to find for a particular program

GROUP BY to_char(a.requested_start_date,'yymon')  order by to_char(a.requested_start_date,'yymon') desc;


Find size of files per extension

Note: change grep to include month year file or file extension 

cd $APPLCSF

Size of files per month and per type 

ls -ltr | grep Jul |grep RTF | awk '{SUM+=$5}END{print SUM/1024/1024/1024}'

ls -ltr | grep Jun |grep RTF | awk '{SUM+=$5}END{print SUM/1024/1024/1024}'

ls -ltr | grep Jun |grep xml | awk '{SUM+=$5}END{print SUM/1024/1024/1024}'

ls -ltr | grep Jun |grep txt | awk '{SUM+=$5}END{print SUM/1024/1024/1024}'

ls -ltr | grep Jun |grep xls | awk '{SUM+=$5}END{print SUM/1024/1024/1024}'

size of file per day

ls -ltr | grep Aug |grep xls |awk '{a[$6 $7]+=$5;}END{for(i in a)print i", "a[i];}'

Find concurrent requests older than 60 days with completion duration 

SELECT

      f.request_id ,

      pt.user_concurrent_program_name user_conc_program_name,

      f.actual_start_date start_on,

      f.actual_completion_date end_on,

      floor(((f.actual_completion_date-f.actual_start_date)

        *24*60*60)/3600)

        || ' HOURS ' ||

        floor((((f.actual_completion_date-f.actual_start_date)

        *24*60*60) -

        floor(((f.actual_completion_date-f.actual_start_date)

        *24*60*60)/3600)*3600)/60)

        || ' MINUTES ' ||

        round((((f.actual_completion_date-f.actual_start_date)

        *24*60*60) -

        floor(((f.actual_completion_date-f.actual_start_date)

        *24*60*60)/3600)*3600 -

        (floor((((f.actual_completion_date-f.actual_start_date)

        *24*60*60) -

        floor(((f.actual_completion_date-f.actual_start_date)

        *24*60*60)/3600)*3600)/60)*60) ))

        || ' SECS ' time_difference,

      p.concurrent_program_name concurrent_program_name,

      decode(f.phase_code,'R','Running','C','Complete',f.phase_code) Phase,

      f.status_code

from  apps.fnd_concurrent_programs p,

      apps.fnd_concurrent_programs_tl pt,

      apps.fnd_concurrent_requests f

where f.concurrent_program_id = p.concurrent_program_id

      and f.program_application_id = p.application_id

      and f.concurrent_program_id = pt.concurrent_program_id

      and f.program_application_id = pt.application_id

      AND pt.language = USERENV('Lang')

      and f.actual_start_date is not null

      and f.actual_start_date > sysdate - 60

      and (floor((((f.actual_completion_date-f.actual_start_date)*24*60*60)/3600)*3600)/60) > 60

order by

      f.actual_start_date desc; 


Find average, min, max for concurrent program in last 60 days

SELECT

      pt.user_concurrent_program_name user_conc_program_name,

      decode(f.phase_code,'R','Running','C','Complete',f.phase_code) Phase,

      count(*),

  

      TRUNC (AVG (ACTUAL_COMPLETION_DATE - ACTUAL_START_DATE))

         || ' Days'

         || ' + '

         || TO_CHAR (

               TRUNC (SYSDATE)

               + NUMTODSINTERVAL (

                    AVG ( (ACTUAL_COMPLETION_DATE - ACTUAL_START_DATE))

                    * 86400,

                    'second'),

               'HH24:MI:SS')

            "AVERAGE",

            

        TRUNC (MIN (ACTUAL_COMPLETION_DATE - ACTUAL_START_DATE))

         || ' Days'

         || ' + '

         || TO_CHAR (

               TRUNC (SYSDATE)

               + NUMTODSINTERVAL (

                    MIN ( (ACTUAL_COMPLETION_DATE - ACTUAL_START_DATE))

                    * 86400,

                    'second'),

               'HH24:MI:SS')

            "Min",

            

            TRUNC (MAX (ACTUAL_COMPLETION_DATE - ACTUAL_START_DATE))

         || ' Days'

         || ' + '

         || TO_CHAR (

               TRUNC (SYSDATE)

               + NUMTODSINTERVAL (

                    MAX ( (ACTUAL_COMPLETION_DATE - ACTUAL_START_DATE))

                    * 86400,

                    'second'),

               'HH24:MI:SS')

            "Max"

from  apps.fnd_concurrent_programs p,

      apps.fnd_concurrent_programs_tl pt,

      apps.fnd_concurrent_requests f

where f.concurrent_program_id = p.concurrent_program_id

      and f.program_application_id = p.application_id

      and f.concurrent_program_id = pt.concurrent_program_id

      and f.program_application_id = pt.application_id

      AND pt.language = USERENV('Lang')

      and f.actual_start_date is not null

      and f.actual_start_date > sysdate - 60

      and (floor((((f.actual_completion_date-f.actual_start_date)*24*60*60)/3600)*3600)/60) > 60

  group by pt.user_concurrent_program_name, f.phase_code ; 


Friday, February 12, 2021

Dealing with Oracle jobs 


Views:

dba_jobs_running - lists all jobs that are currently running in the instance.

dba_jobs -  describes all jobs in the database.


To manage jobs as sys users for the jobs created by other users

use package dbms_ijobs to remove or mark other user jobs broken


To manage jobs logged in as user who submitted jobs

use package dbms_jobs 




Friday, August 21, 2020

 FIND LOW LEVEL DEBUG ON E-BUSINESSS SUITE 


PRODUCTION DATABASES SHOULD NOT HAVE DEBUG ENABLED 


1. Query to find if debug is enabled in EBS by setting trace event at application user level 


SELECT po.profile_option_name "NAME", po.user_profile_option_name,

DECODE (TO_CHAR (pov.level_id),

'10001', 'SITE',

'10002', 'APP',

'10003', 'RESP',

'10005', 'SERVER',

'10006', 'ORG',

'10004', 'USER',

'***'

) "LEVEL",

DECODE (TO_CHAR (pov.level_id),

'10001', '',

'10002', app.application_short_name,

'10003', rsp.responsibility_key,

'10005', svr.node_name,

'10006', org.NAME,

'10004', usr.user_name,

'***'

) "CONTEXT",

pov.profile_option_value "VALUE"

FROM apps.fnd_profile_options_vl po,

apps.fnd_profile_option_values pov,

apps.fnd_user usr,

apps.fnd_application app,

apps.fnd_responsibility rsp,

apps.fnd_nodes svr,

apps.hr_operating_units org

WHERE 1 = 1

AND pov.application_id = po.application_id

AND pov.profile_option_id = po.profile_option_id

AND usr.user_id(+) = pov.level_value

AND rsp.application_id(+) = pov.level_value_application_id

AND rsp.responsibility_id(+) = pov.level_value

AND app.application_id(+) = pov.level_value

AND svr.node_id(+) = pov.level_value

AND org.organization_id(+) = pov.level_value

and po.profile_option_name like '%FND_INIT_SQL%'

and lower(pov.profile_option_value) like '%event%'

ORDER BY "NAME";


2. FIND CONCURRENT PROGRAMS WITH TRACE ENABLED


select * from apps.fnd_concurrent_programs_vl WHERE ENABLE_TRACE='Y' ;


3. Check for debug profile options which are set to Y


SELECT po.profile_option_name "NAME", po.user_profile_option_name,

DECODE (TO_CHAR (pov.level_id),

'10001', 'SITE',

'10002', 'APP',

'10003', 'RESP',

'10005', 'SERVER',

'10006', 'ORG',

'10004', 'USER',

'***'

) "LEVEL",

DECODE (TO_CHAR (pov.level_id),

'10001', '',

'10002', app.application_short_name,

'10003', rsp.responsibility_key,

'10005', svr.node_name,

'10006', org.NAME,

'10004', usr.user_name,

'***'

) "CONTEXT",

pov.profile_option_value "VALUE"

FROM apps.fnd_profile_options_vl po,

apps.fnd_profile_option_values pov,

apps.fnd_user usr,

apps.fnd_application app,

apps.fnd_responsibility rsp,

apps.fnd_nodes svr,

apps.hr_operating_units org

WHERE 1 = 1

AND pov.application_id = po.application_id

AND pov.profile_option_id = po.profile_option_id

AND usr.user_id(+) = pov.level_value

AND rsp.application_id(+) = pov.level_value_application_id

AND rsp.responsibility_id(+) = pov.level_value

AND app.application_id(+) = pov.level_value

AND svr.node_id(+) = pov.level_value

AND org.organization_id(+) = pov.level_value

and po.profile_option_name like '%DEBUG%'

and lower(pov.profile_option_value)= 'y'

ORDER BY "NAME";


Monday, November 25, 2019

Oracle e-business suite 12.2

Add/Remove Managed server from weblogic

perl $AD_TOP/patch/115/bin/adProvisionEBS.pl \
ebs-delete-managedserver -contextfile=$CONTEXT_FILE \
-managedsrvname=oacore_server2 -servicetype=oacore \
-managedsrvport=7207 -logfile=/tmp/oacore_server2.del


perl $AD_TOP/patch/115/bin/adProvisionEBS.pl \
ebs-create-managedserver -contextfile=$CONTEXT_FILE \
-managedsrvname=oacore_server2 -servicetype=oacore \
-managedsrvport=7209 -logfile=/tmp/oacore_server2.add


So if you have to change the port used by EBS instance, then you have to log into the Weblogic admin console and change port there and then sync context xml file using adSyncContext.pl. This adSyncContext.pl utility will get the current port values from Weblogic console and update the xml with new port values. Once the context xml file syncs, we have to run Autoconfig to sync other config files and database profile values to pickup new webport

There are a few My Oracle Support notes that can help you understand these utilities little more, such as 1676430.1 and 1905593.1. But understand that Autoconfig is a different ball game in Oracle E-Business Suite R12.2.

Friday, August 11, 2017

expdp impdp datapump status check using query API

Hi All,

Below pl/sql code can be used to monitor datapump status.

Status of datapump is pulled from KU$_WORKERSTATUS1120, you can describe this and modify
"   dbms_output.put_line( ws(ind).worker_number || ',' || ws(ind).state || ',' || ws(ind).NAME || ',' || ws(ind).object_type || ',' || ws(ind).degree || ',' || ws(ind).
percent_done || ',' ||ws(ind).COMPLETED_ROWS);" To choose the columns to monitor.

set lines 160
set feed off
set serverout on ;
DECLARE
  ind NUMBER;              -- Loop index
  h1 NUMBER;               -- Data Pump job handle
  percent_done NUMBER;     -- Percentage of job complete
  job_state VARCHAR2(30);  -- To keep track of job state
  js ku$_JobStatus;        -- The job status from get_status
  ws ku$_WorkerStatusList; -- Worker status
  sts ku$_Status;          -- The status object returned by get_status
  counter NUMBER;          -- count executing workers
  job_n dba_datapump_jobs.job_name%TYPE;
  owner_n dba_datapump_jobs.owner_name%TYPE;
BEGIN
select job_name, owner_name into job_n, owner_n from sys.DBA_DATAPUMP_JOBS ;
dbms_output.put_line('Owner:            '||owner_n);
dbms_output.put_line('Job_name:         '||job_n);
h1 := DBMS_DATAPUMP.attach(job_n, owner_n); -- job name and owner
dbms_datapump.get_status(h1,dbms_datapump.ku$_status_job_error +
           dbms_datapump.ku$_status_job_status +
           dbms_datapump.ku$_status_wip, 0, job_state, sts);
js := sts.job_status;
counter := 0;
ws := js.worker_status_list;
      dbms_output.put_line('*** Job percent done =        ' ||to_char(js.percent_done));
      dbms_output.put_line('restarts =                   '||js.restart_count);
ind := ws.first;
DBMS_OUTPUT.put_line (to_char(SYSDATE,'DD-MON-YYYY:HH24:MI'));
    dbms_output.put_line('Number,State,Object Name,Object Type,Parallel,Percentage Done,completed_rows');
  while ind is not null loop
    dbms_output.put_line( ws(ind).worker_number || ',' || ws(ind).state || ',' || ws(ind).NAME || ',' || ws(ind).object_type || ',' || ws(ind).degree || ',' || ws(ind).
percent_done || ',' ||ws(ind).COMPLETED_ROWS);
                if ws(ind).state = 'EXECUTING' then
                                                counter := counter + 1 ;
                 end if ;
    ind := ws.next(ind);
                end loop;
                dbms_output.put_line ('Total Executing =' || counter );
DBMS_DATAPUMP.detach(h1);
end;
/

Regards
Manoj

Tuesday, June 21, 2016


Configure UNIX server for oracle apps workflow mailer.


Edit the /etc/mail/sendmal.mc file
Look for this bellow line in this file
DAEMON_OPTIONS (`Port=smtp,Addr=127.0.0.1, Name=MTA')dn

sendmail configuration for workflow mail, setup test box
Add 1 line with SMTP port Number and Server IP to this above line
DAEMON_OPTIONS (`Port=25,Addr=192.168.1.61, Name=MTA')dnl
Here 25 is SMTP Port Number, 192.168.1.61 is Server IP
After adding his like file look like this
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
DAEMON_OPTIONS(`Port=25,Addr=192.168.1.61, Name=MTA')dnl


Rebuild /etc/sendmail.cf from the revised /etc/mail/sendmail.mc
$m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
**NOTE: yum install sendmail-cf ( if error encountered )

yum install dovecot* (this is for imap)
/etc/init.d/dovecot restart
telnet localhost 143
a login appuser apppassword
c list "" *
create folder PROCESS and DISCARD under ~/mail


regards
 

Thursday, January 7, 2016

RMAN backup scripts

RMAN cold backup
================
run{
allocate channel d1 type disk FORMAT   '/u01/xx/xxxxx//%d_db_%u_%s_%p' MAXPIECESIZE 10G;
allocate channel d2 type disk FORMAT   '/u01/xx/xxxxx//%d_db_%u_%s_%p' MAXPIECESIZE 10G;
allocate channel d3 type disk FORMAT   '/u01/xx/xxxxx//%d_db_%u_%s_%p' MAXPIECESIZE 10G;
allocate channel d4 type disk FORMAT   '/u01/xx/xxxxx//%d_db_%u_%s_%p' MAXPIECESIZE 10G;
shutdown immediate;
startup mount;
backup tag FYR_database_cold as compressed backupset database ;
release channel d1;
release channel d2;
release channel d3;
release channel d4;
allocate channel ar1 type disk format '/u01/xxxxx/rman_cn_%T_%U.rman';
sql "alter database backup controlfile to ''/u01/xxxxx/rman_control.rman'' reuse";
release channel ar1 ;
alter database open;
}


RMAN Hot Backup
===============
run{
allocate channel d1 type disk FORMAT   '/u01/xxxxxx/%d_db_%u_%s_%p' MAXPIECESIZE 10G;
allocate channel d2 type disk FORMAT   '/u01/xxxxxx/%d_db_%u_%s_%p' MAXPIECESIZE 10G;
backup tag whole_database_cold as compressed backupset database ;
release channel d1;
release channel d2;
release channel d3;
release channel d4;
allocate channel ar1 type disk format '/u01/xxxx/rman_arc_%T_%U.rman';
BACKUP ARCHIVELOG from time 'sysdate - 2' ;
sql "alter database backup controlfile to ''/u01/xxxx/rman_control.rman'' reuse";
release channel ar1 ;
}

RESTORE (Duplicate)
===================
rman auxiliary /
RUN
{
ALLOCATE AUXILIARY CHANNEL c1 xxxICE TYPE disk ;
ALLOCATE AUXILIARY CHANNEL c2 xxxICE TYPE disk ;
ALLOCATE AUXILIARY CHANNEL c3 xxxICE TYPE disk ;
SET NEWNAME FOR DATABASE TO '/u01/xxx/oracle/data/%b';
duplicate database PROD to 'xxx' BACKUP LOCATION '/xxxxx/DB_Restore_xxx'
duplicate database PROD to 'xxx' BACKUP LOCATION '/xxxxx/DB_Restore_xxx'
LOGFILE GROUP 1 ('/u01/xxx/oracle/data/redo01.rdo') SIZE 1G REUSE, GROUP 2 ('/u01/xxx/oracle/data/redo02.rdo') SIZE 1G REUSE, GROUP 3 ('/u01/xxx/oracle/data/redo03.rdo') SIZE 1G REUSE;}


Use this in init file for RAC database "_no_recovery_through_resetlogs=TRUE"
Scripts for Apps DBA for daily operations.


--------------------------------------------------------
------OPERATION SCRIPTS TO HELP IN DAILY JOBS-----------
--------------------------------------------------------
1. Unlock application user
2. Currently Logged in users
3. Datafile shrink Report
4. Check DR Gap
5. Check DR current activity
6. Find SQL executed by a concurrent request
7. Unlock FNd user
8. Free Tablespace report
9. Get DDL of an object
10. List invalids with statement to compile them
11. Responsibilities assigned to a user.


--------------------------------------------------------
1. Unlock application user

BEGIN
FND_USER_PKG.EnableUser('A.STIGTER');
END;
/
--------------------------------------------------------
2. Currently Logged in users
SELECT
  fu.user_name User_Name,
  fu.email_address emailid,
  fu.description,
  TO_CHAR(IC.FIRST_CONNECT,'dd-Mon-rrrr HH24:mi:ss')"First Accessed",
  TO_CHAR(IC.LAST_CONNECT,'dd-Mon-rrrr HH24:mi:ss')"Last Accessed",
  ic.nls_territory,
  FVL.RESPONSIBILITY_NAME "RESPONSIBILITY NAME",
  fr.RESPONSIBILITY_KEY "Responsibility Key",
  ic.function_type,
  ic.time_out,
  fu.user_id,
  fu.employee_id,
  ic.responsibility_application_id,
  ic.responsibility_id,
  ic.org_id,
  ic.counter,
  fr.menu_id,
  ic.disabled_flag
FROM
  apps.fnd_user fu,
  apps.fnd_responsibility fr,
  apps.icx_sessions ic,
  apps.fnd_responsibility_VL FVL
WHERE
fu.user_id          = ic.user_id
AND FR.RESPONSIBILITY_KEY =FVL.RESPONSIBILITY_KEY
and fVl.responsibility_key != 'IRC_EXT_CANDIDATE'
AND fr.responsibility_id  = ic.responsibility_id
AND ic.disabled_flag      ='N'
AND ic.responsibility_id IS NOT NULL
AND (ic.last_connect + DECODE(apps.FND_PROFILE.VALUE('ICX_SESSION_TIMEOUT'), NULL,limit_time, 0,limit_time,apps.FND_PROFILE.VALUE('ICX_SESSION_TIMEOUT')/60)/24) > sysdate
and counter < ic.limit_connects
ORDER BY "Last Accessed" DESC;
--------------------------------------------------------
3. Datafile shrink Report

select /*+rule*/ 'alter database datafile '''||file_name||''' resize '||ceil( (nvl(hwm,1)*8192)/1024/1024)||'m autoextend on maxsize '||ceil( blocks*8192/1024/1024)||'m;' stat,
ceil( (nvl(hwm,1)*8192)/1024/1024 ) smallest,
ceil( blocks*8192/1024/1024) currsize,
ceil( blocks*8192/1024/1024) -
ceil( (nvl(hwm,1)*8192)/1024/1024 ) savings
from
   dba_data_files a,
   (select file_id, max(block_id+blocks-1) hwm
   from
      dba_extents
   group by file_id ) b
where a.file_id = b.file_id(+)
order by 4;
***NOTE: Autoexend on has to be enabled with relevant maxsize

--------------------------------------------------------
4. Check DR Gap

select a.*, b.*, (a."Archived" - b."Applied") "GAP"
from
(select thread#, max(sequence#) "Archived" from v$archived_log where archived='YES' group by thread# ) a,
(select thread#, max(sequence#) "Applied" from v$archived_log where applied='YES' group by thread# ) b where a.thread# = b.thread#
--------------------------------------------------------
5. Check DR current activity

SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY
--------------------------------------------------------
6. Find SQL executed by a concurrent request

SELECT
  B.sid,
  C.sql_text ,
  C.module
FROM APPS.fnd_concurrent_requests A ,
  gV$SESSION B ,
  gV$SQLAREA C
WHERE A.oracle_session_id = B.audsid
AND B.sql_hash_value      = C.hash_value
AND A.request_id          = 1451703
--------------------------------------------------------
7. Unlock FNd user

BEGIN
FND_USER_PKG.EnableUser('&username');
END;
/
--------------------------------------------------------
8. Free Tablespace report
select
  a.tablespace_name,
  round(sum(a.bytes/1024/1024),2) TOTAL_MB,  
  round(sum
  (
    ( case
    when autoextensible = 'YES' then
    (a.maxbytes - a.user_bytes) + nvl(b.bytes,0)
    when autoextensible = 'NO' then
    nvl(b.bytes,0)
    end
    )/1024/1024
  ),2) FREE_MB,
  (100 - round((round(sum(( case when autoextensible = 'YES' then (a.maxbytes - a.user_bytes) + nvl(b.bytes,0) when autoextensible = 'NO' then nvl(b.bytes,0) end)/1024/1024),2) *100) / round(sum(a.bytes/1024/1024),2))) "Percentage Used"
from
  dba_data_files a,
  (
    select file_id,
      sum(bytes) bytes
    from dba_free_space
    group by file_id
  ) b
where
  a.file_id = b.file_id(+)
group by a.tablespace_name
order by Total_mb desc
--------------------------------------------------------
9. Get DDL of an object

--select dbms_metadata.get_ddl( object_type=>'&OBJECT_TYPE',name=>'&OBJECT_NAME',schema=>'&SCHEMA_NAME') FROM DUAL ;

select dbms_metadata.get_ddl(object_type, object_name, owner)
from
(
    --Convert DBA_OBJECTS.OBJECT_TYPE to DBMS_METADATA object type:
    select
        owner,
        object_name,
        decode(object_type,
            'PACKAGE',      'PACKAGE_SPEC',
            'PACKAGE BODY', 'PACKAGE_BODY',
            'TYPE BODY', 'TYPE_BODY',
            object_type
        ) object_type
    from dba_objects
    where object_name = :object_name
        --These objects are included with other object types.
        and object_type not in ('INDEX PARTITION','LOB','LOB PARTITION','TABLE PARTITION')
        --Ignore system-generated types that support collection processing.
        and not (object_type like 'TYPE' and object_name like 'SYS_PLSQL_%')
)
order by owner, object_type, object_name;
--------------------------------------------------------
10. List invalids with statement to compile them

set linesize 200
set pagesize 200
col object_name for a40
col owner for a6
set echo off
set feedback off
set verify off
set heading off
SELECT '----------------' from dual;
SELECT 'List of Invalids' from dual;
SELECT '----------------' from dual;
set heading on
select owner, objecT_name, objecT_type, status from dba_objects where status!='VALID';
set heading off
SELECT '---------------------------------' from dual;
SELECT 'Execute Below to compile invalids' from dual;
SELECT '---------------------------------' from dual;
select 'alter ', object_type, owner, '.' ,object_name, 'compile ;' from dba_objects where status!='VALID' and object_type != 'PACKAGE BODY'
union ALL
select 'alter ', decode (OBJECT_TYPE, 'PACKAGE BODY', 'PACKAGE'), owner, '.' ,object_name, 'compile BODY ;' from dba_objects where status!='VALID' and object_type = 'PACKAGE BODY' ;
--------------------------------------------------------
11. Responsibilities assigned to a user.

Select b.user_name, c.responsibility_name, a.START_DATE, a.END_DATE
from fnd_user_resp_groups_direct a, fnd_user b, fnd_responsibility_tl c
where a.user_id = b.user_id
and a.responsibility_id = c.responsibility_id
and b.user_name='&username'



Tuesday, November 24, 2015

How to remove references of used features in oracle database
Oracle License register remove
remove used feature flag from oracle database

Shut down application
backup and restart database

@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
@?/rdbms/admin/utlrp.sql

Oracle E-business suite logs clean up

 Oracle E-business suite logs clean up #!/bin/bash cd $EBS_DOMAIN_HOME find $EBS_DOMAIN_HOME -type f -path "*/logs/*.log?*" -mtime...