##################################### BOBBY #############################################
ls -ltrh | grep -i "Feb 11"
===================================
ERROR: unrecoverable error ORA-29701 raised in ASM I/O path; terminating process 64234
you need to increase the below parameter value in clmprd asm instace pfile
current it is : *._asm_hbeatiowait =120
need to increase 180
*._asm_hbeatiowait=180
===================================
Have a look in the file '/var/adm/messages' for hardware errors.
select status , error from v$archive_dest where des_id=2; ==> dg errors
/var/opt/oracle/oratab
sys/n3wy0rk@wflprd
G_H: /u01/app/11.2.0/grid/bin ==> crsctl stat res -t
/opt/xts/sudo/bin/sudo -u oepmprd -i bash ==>
/opt/xts/sudo/bin/sudo -u ofisprd -i bash
/opt/xts/sudo/bin/sudo -u ocogprd -i bash
BKP :
nohup /u01/app/oracle/admin/dba/rman/rman_backup_rman.ksh xistracs level0 /u01/app/oracle/admin/dba/rman /migration/Oracle_backup > /tmp/level0_xistracs.log 2>&1 &
copy :
====
scp exp_clmprd_refer_data_08-Sep-2018.log prasadbh@10.5.99.24:/u02/orabackup_NFS/mat_imp/pump
copy bkp:
ls -ltr *20181208*
cp *20181213* /migration/Oracle_Backup/actimruatdatz01/level0/13dec
nohup cp *20181208* /migration/Oracle_Backup/actimruatdatz01/level0/13dec &
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SQL> set echo on
chmod 775 20180105170001.sql
SPOOL /tmp/BP/20180615100101.log
set serveroutput on
set time on
set echo on
alter session set current_schema=CDW_CLASS_INCREMENTAL;
SPOOL OFF
SQL> show error
%%%%%%%%%%%%%%%%%%%%%%%%%%
oracle@bascdwtsddatz01$ ls -l "REQ000000790158.sql"
-rw-r--r-- 1 oracle oinstall 609 Jul 12 12:04 REQ000000790158.sql
oracle@bascdwtsddatz01$ chmod 655 REQ000000790158.sql
oracle@bascdwtsddatz01$ ls -l "REQ000000790158.sql"
-rw-r-xr-x 1 oracle oinstall 609 Jul 12 12:04 REQ000000790158.sql
=====> alter session set current_schema=ABC ===> set serveroutput on ==> set time on ======
*** Process count :
ps -ef | grep ora | wc -l
touch listener.log
gzip listener.log
ls -ltrh | grep "May 5"
ls -rlth (with size)
===== Alert log ==
grep ORA- alert.log|more
cat alert_pbstsb.log |grep ORA-01821|sort|uniq
grep ORA-20001 alert_ibiuat.log
$ vi alert_sid.log
i) Now go the last line by pressing (capital G)
ii) now press ?(question Mark) (its like CTRL+F in windows) and then followed by ORA- and ENTER.
iii) for scrolling upwards (capital N)
for scrolling downwards (small n)
==> for 1 week alert log data : ===>
awk '/Jul 16/,/Jul 24/' alert_ibidev.log | sed '$d' >/tmp/Bobby.log
cat /var/opt/oracle/oratab
ls -1 | wc -l
find *.trc -mtime +7 -exec rm {} \;
find *.trc -mtime +7 (7 is num of days)
gunzip /var/log/mail.log.gz
++++++++++++++++++
****** Super fast long dump file deletion find . -name '*.aud' -mtime +15 -exec rm {} \; **********
du -ah /u01/app/oracle
find /u01/app/oracle/admin/clmtsd/adump/*trc.gz -mtime +45 -exec rm {} \;
find /u01/app/oracle/diag/rdbms/wfltsd/wfltsd/trace/*.gz -mtime +45 -exec ls -ltr {} \;
##################
find /u01/app/oracle/diag/rdbms/wfltsd/wfltsd/trace/*.trc -mtime +45 -exec ls -ltr {} \;
find /u01/app/oracle/diag/rdbms/wfltsd/wfltsd/trace/*.trc -mtime +45 -exec gzip {} \;
first check with ls -ltr and then give 1st command
===========================CPU commands ==================
prtstat
vmstat 3 3
sar
top
prstat -s rss
ipcs -a
Solaris load avg:
ipcs -a
sar 2 5
mpstat
vmstat -p 3
uptime
vmstat 3 10
====================OEM ==============
./emctl stop agent;
./emctl clearstate agent;
./emctl start agent;
./emctl upload agent
/u01/app/oracle/agent12c/core/12.1.0.5.0/bin
export EDITOR=vi
stty columns 120
======== > Account Lock <===
AU_XSBUTIL
select username,account_status from dba_users where account_status like '%LOCK%';
select username,account_status from dba_users where username='CDW_BO';
SQL > alter user CDW_BO account unlock;
====> Procedure checks <==============
SQL> select owner, object_name, object_type from ALL_OBJECTS where object_name = 'STP_INSERT_XAG_DRI_LINK_PG';
select DBMS_METADATA.GET_DDL('PACKAGE','STP_INSERT_XAG_DRI_LINK_PG','XAG') from ALL_OBJECTS where object_name = 'STP_INSERT_XAG_DRI_LINK_PG';
=====> Schema <============
select owner, sum(bytes)/1024/1024/1024 schema_size_gig from dba_segments group by owner;
select username from dba_users where username like '%CLAIM_EVENT%';
alter session set current_schema=CDW;
select sum(bytes)/1024/1024/1024 as size_in_gig, segment_type from dba_segments where owner='IMANAGE' group by segment_type;
TABLE_NAME :
===========
select TABLE_NAME ,STATUS,OWNER from dba_tables where OWNER='CDW_CLASS'
SQL> select TABLE_NAME ,STATUS,OWNER from dba_tables where table_name='PBS_DATA';
* select OBJECT_NAME ,OWNER from dba_objects where OBJECT_NAME like '%LINK%' and owner='XAG'
SQL> select segment_name,segment_type,bytes/1024/1024 MB from dba_segments where segment_type='TABLE' and segment_name='PBS_DATA';
SEGMENT_NAME SEGMENT_TYPE MB
-------------------- ------------------ ----------
DIM_CALENDAR_DAY TABLE 12
#################### BLOB + CLOB OBJECTS IN DATABAE ####################
select TABLE_NAME,COLUMN_NAME,DATA_TYPE,DATA_LENGTH FROM DBA_TAB_COLUMNS WHERE DATA_TYPE LIKE '_LOB' AND OWNER LIKE '%CLAIM_EVENT%'
1) SELECT SUM(DBMS_LOB.GetLength("COLUMN_NAME"))/1024/1024/1024 AS SizeGB FROM OWNER.TABLE * (columname will get from the dba_lobs view)
+
2) select segment_name,segment_type,bytes/1024/1024/1024 GB from dba_segments where segment_type='TABLE' and segment_name='CLAIM_EVENT_PROCESS_REQUEST';
add 1+2 = full table size
SQL> select OWNER, TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM ALL_TAB_COLUMNS a where a.DATA_TYPE in ('CLOB','BLOB','NCLOB','BFILE') and TABLE_NAME='CLAIM_EVENT_PROCESS_RESPONSE;
SQL> select TABLE_NAME,OWNER,COLUMN_NAME,SEGMENT_NAME from dba_lobs where TABLE_NAME='CLAIM_EVENT_PROCESS_RESPONSE';
SQL> select s.segment_name, s.partition_name, bytes/1048576 "Size (MB)" from dba_segments s, dba_lobs l
where s.segment_name = l.segment_name and s.owner = 'CLAIM_EVENT' order by s.segment_name, s.partition_name;
########################### Sequence + last number of sequence ####################
SQL> select SEQUENCE_NAME,LAST_NUMBER FROM all_sequences WHERE SEQUENCE_NAME ='EACC_R2_TRUST_FUND_SEQ';
SQl> select sequence_name, last_number from dba_sequences where sequence_owner = user;
SQL> select SEQUENCE_NAME,LAST_NUMBER from dba_sequences where SEQUENCE_OWNER='&OWNER' AND SEQUENCE_NAME='&SEQ_NAME';
queue= sequence name
last_number= current sequence number.
************ INDEX *********
select table_name, index_name from dba_ind_columns where table_owner='CLAIM_EVENT' order by table_name;
select table_name, index_name from dba_ind_columns where table_name='CLAIM_EVENT' order by table_name;
========================after import check if indexes and constraints as same in primary and backup table=============
SQL>
SQL>
col INDEX_NAME for a40
col TABLE_NAME for a40
col COLUMN_NAME for a40
select
b.uniqueness, a.index_name, a.table_name, a.column_name
from all_ind_columns a, all_indexes b
where a.index_name=b.index_name
and a.table_name = upper('CLAIM_EVENT_A')
order by a.table_name, a.index_name, a.column_position;
=====> User MAp by sudhir ======>
select * from DBA_ROLE_PRIVS where GRANTEE=upper('&user');
WADHWAN
> grant rolename to DESWALN_11528521;
select grantee,table_name,privilege from dba_tab_privs where grantee='&rolename';
: : Grant Select on all tables in a schema : :
Select 'GRANT SELECT ON HR.'||Table_Name||' TO SCOTT;' From All_Tables Where Owner='HR';
=============== Partitions ====
select a.TABLE_NAME ,a.PARTITION_NAME,a.TABLESPACE_NAME, b.PARTITIONING_TYPE from dba_part_tables b ,dba_tab_partitions a where a.TABLE_NAME=b.TABLE_NAME
and a.TABLE_NAME='DIM_TRANSACTION';
############### CONSTRAINTS ############### (use all_constraints )
SELECT * FROM user_cons_columns WHERE table_name = 'CLAIM_EVENT';
select table_name , CONSTRAINT_NAME FROM all_constraints WHERE table_name='CLAIM_EVENT_PROCESS_REQUEST_A';
======================================check if constraints are same in both tables=========
SQL> select OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,STATUS from dba_constraints where OWNER='CLAIM_EVENT' and TABLE_NAME='CLAIM_EVENT_A';
SQL> select OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME from dba_constraints where OWNER='CLAIM_EVENT' and TABLE_NAME='CLAIM_EVENT';
=
select OWNER,CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,status from dba_constraints where OWNER='CLAIM_EVENT' and TABLE_NAME='CLAIM_EVENT_PROCESS_RESPONSE';
alter table CLAIM_EVENT.CLAIM_EVENT_PROCESS_RESPONSE ENABLE constraint FK_CLAIM_EVENT_PROCESS_RESPONS;
********** alter table owner.tablename ENABLE/DISABLE constraint constraint_name; *******************
SQL> select DIRECTORY_NAME, DIRECTORY_PATH from dba_directories where DIRECTORY_NAME = 'DATA_PUMP_DIR';
====================== DB UPTIME
select instance_name, to_char(startup_time,'mm/dd/yyyy hh24:mi:ss') as startup_time from v$instance;
srvctl status database -d epmprd -v -f
select INSTANCE_NAME,HOST_NAME,to_char(startup_time,'DD-Mon-yy HH24:MI:SS'),STATUS,LOGINS,DATABASE_STATUS from gv$instance;
=============== Clearing /u01 mount point ==========
df -h .
find /u01/app/oracle/admin/imrdev/udump/*.trc -mtime +1 -exec ls -ltr {} \; |wc -l
find /u01/app/oracle/admin/imrprd/udump/*.trc -mtime +15 -exec rm {} \;
df -h .
gunzip /var/log/mail.log.gz
====================================================================================================
:: DB_size::
========================================================================================================
select name,open_mode,database_role,log_mode,current_scn from v$database;
select (a.data_size+b.temp_size+c.redo_size+d.controlfile_size)/1024 "total_size in GB"
from ( select sum(bytes)/1024/1024 data_size from dba_data_files) a,( select nvl(sum(bytes),0)/1024/1024 temp_size
from dba_temp_files ) b,(select sum(bytes)/1024/1024 redo_size from sys.v_$log ) c,( select sum(BLOCK_SIZE*FILE_SIZE_BLKS)/1024/1024
controlfile_size
from v$controlfile) d;
================== 9i =================================
SELECT SUM (bytes) / 1024 / 1024 / 1024 AS GB FROM dba_data_files;
Gives the size occupied by data in this database or Database usage details.
SELECT SUM (bytes)/1024/1024/1024 AS GB FROM dba_segments;
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
*****************************************************************************************************************************************************************
*********************************************************************************************************************************************************************
TABLESPACE RELATED
*****************************************************************************************************************************************************************
*****************************************************************************************************************************************************************
List information about tablespace to which datafiles belong ::
SELECT FILE_NAME,TABLESPACE_NAME,BYTES,AUTOEXTENSIBLE, MAXBYTES,INCREMENT_BY FROM DBA_DATA_FILES;
######### TS+ DF ##################
select tablespace_name, file_name from dba_data_files union select tablespace_name, file_name from dba_temp_files /
Datafiles info
==============
set lines 300
set pages 300
col file_name for a55
select file_name,bytes/1024/1024/1024 GB ,autoextensible, Maxbytes/1024/1024/1024 from dba_data_files where tablespace_name='GGS' order by file_id;
always use this script in IMRPRD
so that you can get the file names in order
QUERY TO CHECK THE TABLESPACE SIZE USED AND FREE ::--
======================================================================================
select * from dba_tablespace_usage_metrics;
========
SELECT /* + RULE */ df.tablespace_name "Tablespace",
df.bytes / (1024 * 1024) "Size (MB)",
SUM(fs.bytes) / (1024 * 1024) "Free (MB)",
Nvl(Round(SUM(fs.bytes) * 100 / df.bytes),1) "% Free",
Round((df.bytes - SUM(fs.bytes)) * 100 / df.bytes) "% Used"
FROM dba_free_space fs,
(SELECT tablespace_name,SUM(bytes) bytes
FROM dba_data_files
GROUP BY tablespace_name) df
WHERE fs.tablespace_name (+) = df.tablespace_name
GROUP BY df.tablespace_name,df.bytes
UNION ALL
SELECT /* + RULE */ df.tablespace_name tspace,
df.total ,
df.bytes_free,
Nvl(Round(( df.total - df.bytes_used) * 100 / df.total), 1),
Round((df.total - df.bytes_free) * 100 / df.total)
FROM dba_temp_files fs,
(SELECT tablespace_name, sum(bytes_free)/ (1024 * 1024) bytes_free,sum(bytes_used)/ (1024 * 1024) bytes_used, ( sum(bytes_free)/ (1024 * 1024) + sum(bytes_used)/ (1024 * 1024) ) total
FROM v$temp_space_header
GROUP BY tablespace_name) df
WHERE fs.tablespace_name (+) = df.tablespace_name
GROUP BY df.tablespace_name,df.total,df.bytes_free,df.bytes_used
ORDER BY 4 DESC;
=============================================================================================================================
TABLESPACE WITH FREE PCT SPACE BY DEEPAK :
=============
select df.tablespace_name tspace,
df.bytes/(1024*1024) tot_ts_size,
(df.bytes - (df.allocated - fs.free_space))/(1024*1024) free_ts_size,
df.bytes/(1024*1024)-(df.bytes - (df.allocated - fs.free_space))/(1024*1024) usedspace,
round(((df.bytes - (df.allocated - fs.free_space))/df.bytes) * 100) tc_pct
from (select tablespace_name, sum(bytes) free_space
from dba_free_space
group by tablespace_name ) fs ,
(select tablespace_name,
sum(decode(autoextensible,'NO',bytes,maxbytes)) bytes,
sum(user_bytes) allocated
from dba_data_files
group by tablespace_name ) df
where fs.tablespace_name = df.tablespace_name;
===>
show parameter undo
col FILE_NAME for a80
set lines 199 pages 999
select FILE_NAME,BYTES/(1024*1024*1024),AUTOEXTENSIBLE,MAXBYTES/(1024*1024*1024)from dba_data_files where TABLESPACE_NAME='UNDOTBS1';
Check Table Space Free Space with files in GB
_______________________________________
set linesize 300
set pagesize 300
col TABLESPACE_NAME for a30
col FILE_NAME for a46
SELECT B.TABLESPACE_NAME,
B.FILE_NAME,
ROUND (B.BYTES / 1024 / 1024/1024, 2) "SIZE GB",
ROUND (B.MAXBYTES / 1024 / 1024 / 1024, 2) "MAX SIZE GB",
ROUND (SUM (A.BYTES) / 1024 / 1024 / 1024, 2) "FREE SPACE GB",
CASE
WHEN MAXBYTES = 0
THEN
ROUND (SUM (A.BYTES) / 1024 / 1024 / 1024, 2)
ELSE
ROUND (
( (B.MAXBYTES - B.BYTES) + SUM (A.BYTES)) / 1024 / 1024 / 1024, 2)
END
"TOTAL FREE SPACE GB"
FROM DBA_FREE_SPACE A, DBA_DATA_FILES B
WHERE A.FILE_ID = B.FILE_ID AND B.TABLESPACE_NAME IN ('XMA_DATA')
GROUP BY B.TABLESPACE_NAME,
B.FILE_NAME,
B.BYTES,
B.MAXBYTES
ORDER BY 1, 2;
===============================================================================================================================
TEMP -> usage
SQL> select file_name , TABLESPACE_NAME from DBA_TEMP_FILES;
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;
======
SELECT S.sid || ',' || S.serial# sid_serial, S.username, S.osuser, P.spid, S.module,
P.program, SUM (T.blocks) * TBS.block_size / 1024 / 1024 mb_used, T.tablespace,
COUNT(*) statements
FROM v$sort_usage T, v$session S, dba_tablespaces TBS, v$process P
WHERE T.session_addr = S.saddr
AND S.paddr = P.addr
AND T.tablespace = TBS.tablespace_name
GROUP BY S.sid, S.serial#, S.username, S.osuser, P.spid, S.module,
P.program, TBS.block_size, T.tablespace
ORDER BY mb_used;
******** FREE SIZE OF TEMP ******
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;
Adding datafile IN ASM
----------------------
SQL> alter tablespace STATSPACK_DATA add datafile '+DATA' size 1G
Tablespace altered.
alter tablespace CLAIM_EVENT_DATA add datafile '+DATA' size 30G autoextend off
alter tablespace ODS_LARGE_DATA add datafile '+DATA' size 10G autoextend off
+DATA/clmtsa/datafile/claim_event_data.285.974270209
/u08/cdwdata/ibiprd/cdw_warehouse_data_24.dbf
SQL> alter database datafile '/u25/oradata/imrprd/data01/users03.dbf' resize 8g
alter database datafile '+DATA/ibiuat/datafile/imr_ods_data.376.949974073' resize 15g
Database altered.
New Datafile additon to TS:
==================
SQL> alter tablespace XAG_DATA add datafile '/u06/oradata/imrsec/data01/xag_data69.dbf' size 30g autoextend off
alter tablespace XMA_DATA add datafile '/u33/oradata/imrprd/data01/xma_data_99.dbf' size 30g autoextend off
alter tablespace AUDIT_DATA add datafile '/u06/oradata/rdcdev/audit_data5.dbf' size 2g autoextend off
SQL> alter tablespace PEGA_DATA add datafile '+DATA' size 30g
alter tablespace PBS_DATA add datafile '+DATA' size 30g
alter tablespace CLASS_TRIGGERS_DATA add datafile '/u23/oradata/imrprd/data01/class_triggers_data_13.dbf' size 7g ;
mkdir -p /u32/oradata/imrprd/data01/
SQL> alter database datafile '/u23/oradata/imrprd/data01/class_triggers_data_13.dbf' resize 7g
/u10/oradata/imrfof/data01/xma_data_04.dbf
Database altered.
+DATA/clmtsc/datafile/statspack_data.274.961837443
SQL> alter tablespace USERS add datafile '+DATA/clmtrn/datafile/users.264.875111507' size 2G;
imr_ods_data.376.949974073
/u11/oradata/imrfof/data01/xag_data_34.dbf
==========: ORA-01691: unable to extend lob segment ================
SYSTEM alter tablespace SYSTEM add datafile '+DATA' size 1g
alter tablespace PBS_DATA add datafile '+DATA' size 30g
Wed Oct 17 15:42:17 2018
Completed: alter tablespace pbs_data add datafile '+DATA' size 5g
We
alter tablespace STAGING_HISTORY_DATA add datafile '+DATA' size 8g;
=============================================================== Auto Extend off/on On Datafiles on Oracle Database =====================================================================
To Turn Off Auto Extend On Data files :
select 'alter database datafile '''||file_name||''' AUTOEXTEND OFF;' from dba_data_files where autoextensible='YES';
To Turn On Auto Extend On Data files :
select 'alter database datafile '''||file_name||''' AUTOEXTEND ON;' from dba_data_files where autoextensible='NO';
ASM Space Report
----------------
SET LINESIZE 150
SET PAGESIZE 9999
SET VERIFY off
COLUMN group_name FORMAT a20 HEAD 'Disk Group|Name'
COLUMN sector_size FORMAT 99,999 HEAD 'Sector|Size'
COLUMN block_size FORMAT 99,999 HEAD 'Block|Size'
COLUMN allocation_unit_size FORMAT 999,999,999 HEAD 'Allocation|Unit Size'
COLUMN state FORMAT a11 HEAD 'State'
COLUMN type FORMAT a6 HEAD 'Type'
COLUMN total_mb FORMAT 999,999,999 HEAD 'Total Size (GB)'
COLUMN free_mb FORMAT 999,999,999 HEAD 'Free Size (GB)'
COLUMN used_mb FORMAT 999,999,999 HEAD 'Used Size (GB)'
COLUMN pct_used FORMAT 999.99 HEAD 'Pct. Used'
SELECT
distinct name group_name
, sector_size sector_size
, block_size block_size
, allocation_unit_size allocation_unit_size
, state state
, type type
, round(total_mb/1024) "total_gb"
, round(free_mb/1024) "free_gb"
, round((total_mb - free_mb) / 1024) "used_gb"
, round((1- (free_mb / total_mb))*100, 2) "pct_used"
from v$asm_diskgroup ORDER BY name
/
============================= files in DG
SQL>
col ASM_DG for a20
col TYPE for a20
select 'Data Files' type,substr(name,1,instr(name,'/',1,2)-1) asm_dg,count(*) cnt
from v$datafile
group by substr(name,1,instr(name,'/',1,2)-1)
union
select 'Temp Files',substr(name,1,instr(name,'/',1,2)-1) asm_dg, count(*) cnt
from v$tempfile
group by substr(name,1,instr(name,'/',1,2)-1)
union
select 'Redo Member',substr(member,1,instr(member,'/',1,2)-1) asm_dg, count(*) cnt
from v$logfile
group by substr(member,1,instr(member,'/',1,2)-1)
/
File Type ASM Disk Location Number of Files
-------------- -------------------- ---------------
Data Files +DATA_CM01/visx 239
Redo Member +RECO_CM01/visx 6
Temp Files +DATA_CM01/visx 5
=========================================
select * from v$flash_recovery_area_usage;
BKP point also
Archive log list;
select name from v$datafile;
select name from v$tempfile;
select member from v$logfile;
select * from v$log;
Sql> select group#, member from v$logfile order by group#, member;
********************************************************************************
How much redo generated for a month:
SELECT SUM_ARCH.DAY,
SUM_ARCH.GENERATED_MB,
SUM_ARCH_DEL.DELETED_MB,
SUM_ARCH.GENERATED_MB - SUM_ARCH_DEL.DELETED_MB "REMAINING_MB"
FROM ( SELECT TO_CHAR (COMPLETION_TIME, 'DD/MM/YYYY') DAY,
SUM (ROUND ( (blocks * block_size) / (1024 * 1024*1024), 2))
GENERATED_MB
FROM V$ARCHIVED_LOG
WHERE ARCHIVED = 'YES'
GROUP BY TO_CHAR (COMPLETION_TIME, 'DD/MM/YYYY')) SUM_ARCH,
( SELECT TO_CHAR (COMPLETION_TIME, 'DD/MM/YYYY') DAY,
SUM (ROUND ( (blocks * block_size) / (1024 * 1024*1024), 2))
DELETED_MB
FROM V$ARCHIVED_LOG
WHERE ARCHIVED = 'YES' AND DELETED = 'YES'
GROUP BY TO_CHAR (COMPLETION_TIME, 'DD/MM/YYYY')) SUM_ARCH_DEL
WHERE SUM_ARCH.DAY = SUM_ARCH_DEL.DAY(+)
ORDER BY TO_DATE (DAY, 'DD/MM/YYYY');
Per Day archive generation :
===========================
select trunc(COMPLETION_TIME,'DD') Day, thread#,
round(sum(BLOCKS*BLOCK_SIZE)/1024/1024/1024) GB,
count(*) Archives_Generated from v$archived_log
group by trunc(COMPLETION_TIME,'DD'),thread# order by 1;
========Log switches per hour in a week========
SET PAGESIZE 90
SET LINESIZE 150
set heading on
column "00:00" format 9999
column "01:00" format 9999
column "02:00" format 9999
column "03:00" format 9999
column "04:00" format 9999
column "05:00" format 9999
column "06:00" format 9999
column "07:00" format 9999
column "08:00" format 9999
column "09:00" format 9999
column "10:00" format 9999
column "11:00" format 9999
column "12:00" format 9999
column "13:00" format 9999
column "14:00" format 9999
column "15:00" format 9999
column "16:00" format 9999
column "17:00" format 9999
column "18:00" format 9999
column "19:00" format 9999
column "20:00" format 9999
column "21:00" format 9999
column "22:00" format 9999
column "23:00" format 9999
SELECT * FROM (
SELECT * FROM (
SELECT TO_CHAR(FIRST_TIME, 'DD/MM') AS "DAY"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '00', 1, 0), '99')) "00:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '01', 1, 0), '99')) "01:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '02', 1, 0), '99')) "02:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '03', 1, 0), '99')) "03:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '04', 1, 0), '99')) "04:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '05', 1, 0), '99')) "05:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '06', 1, 0), '99')) "06:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '07', 1, 0), '99')) "07:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '08', 1, 0), '99')) "08:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '09', 1, 0), '99')) "09:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '10', 1, 0), '99')) "10:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '11', 1, 0), '99')) "11:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '12', 1, 0), '99')) "12:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '13', 1, 0), '99')) "13:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '14', 1, 0), '99')) "14:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '15', 1, 0), '99')) "15:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '16', 1, 0), '99')) "16:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '17', 1, 0), '99')) "17:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '18', 1, 0), '99')) "18:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '19', 1, 0), '99')) "19:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '20', 1, 0), '99')) "20:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '21', 1, 0), '99')) "21:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '22', 1, 0), '99')) "22:00"
, SUM(TO_NUMBER(DECODE(TO_CHAR(FIRST_TIME, 'HH24'), '23', 1, 0), '99')) "23:00"
FROM V$LOG_HISTORY
WHERE extract(year FROM FIRST_TIME) = extract(year FROM sysdate)
GROUP BY TO_CHAR(FIRST_TIME, 'DD/MM')
) ORDER BY TO_DATE(extract(year FROM sysdate) || DAY, 'YYYY DD/MM') DESC
) WHERE ROWNUM <8;
===== AVG of log switches per day ==============
SELECT trunc(first_time) DAY,
count(*) NB_SWITCHS,
trunc(count(*)*log_size/1024) TOTAL_SIZE_KB,
to_char(count(*)/24,'9999.9') AVG_SWITCHS_PER_HOUR
FROM v$loghist,
(select avg(bytes) log_size from v$log) GROUP BY trunc(first_time),log_size ;
*****************************************************************************************************************************************************************
*****************************************************************************************************************************************************************
BACKUP RELATED
*****************************************************************************************************************************************************************
*****************************************************************************************************************************************************************
RMAN BACKUPS QUERY
set lines 180
set pages 180
col STATUS for a24
col START_TIME for a20
col END_TIME for a20
col TIME_TAKEN_DISPLAY for a20
col OUTPUT_BYTES_DISPLAY for a15
col input_type for a20
select session_key,
input_type,
status,
to_char(start_time,'yyyy-mm-dd hh24:mi') start_time,
to_char(end_time,'yyyy-mm-dd hh24:mi') end_time,
output_bytes_display,
time_taken_display
from v$rman_backup_job_details
--where input_type like '%DB FULL%'
order by session_key asc;
=============================================================================
======================================= TIME FOR BACKUP ========================================
col END_TIME for a20
col START_TIME for a20
col DOW for a20
set lines 220
set pages 1000
col cf for 9,999
col df for 9,999
col elapsed_seconds heading "ELAPSED|SECONDS"
col i0 for 9,999
col i1 for 9,999
col l for 9,999
col output_mbytes for 9,999,999 heading "OUTPUT|MBYTES"
col session_recid for 999999 heading "SESSION|RECID"
col session_stamp for 99999999999 heading "SESSION|STAMP"
col status for a10 trunc
col time_taken_display for a10 heading "TIME|TAKEN"
col output_instance for 9999 heading "OUT|INST"
select
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/1024) output_gb, 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)-&NUMBER_OF_DAYS
order by j.start_time
/
===============================================================================================
Query to check the incremental Backup Details
----------------------------------------------
select incremental_level,
incremental_change#,
checkpoint_change#,
blocks
from v$backup_datafile;
==========================================================================================================================================================
-------creating RESTORE POINT -------------------
SQL> Create restore point BEFORE_UPGRADE_CRQ_24471 guarantee flashback database;
Restore point created.
SQL> alter session set current_schema=pegarules;
Session altered.
*****************************************************************************************************************************************************************
*****************************************************************************************************************************************************************
Clearing FRA/ARCHIVELOG LOCATION RELATED +FRA
*****************************************************************************************************************************************************************
*****************************************************************************************************************************************************************
Deleting backups based on tags:
================
DELETE BACKUP TAG='TAG20190221T200040';
DELETE BACKUP COMPLETED BEFORE 'SYSDATE-2' DEVICE TYPE DISK;
crosscheck backup;
delete expired backup;
delete archivelog all backed up 1 times to DEVICE TYPE disk;
****************************
Standby DB-Recovery ::
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE =2G SCOPE=BOTH ;
LIST BACKUP OF ARCHIVELOG ALL;
RMAN> delete archivelog until time 'sysdate-1' backed up 1 times to device type disk;
The following command can be used to manage the backup of the archive log when storage space needs to be released.
RMAN> DELETE BACKUP OF archivelog UNTIL TIME=’sysdate-5′;
given by deepak :
================
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'sysdate-1'; ( force archive delete )
you can also run below after deleting the archives
CROSSCHECK ARCHIVELOG ALL;
DELETE EXPIRED ARCHIVELOG ALL;
given by sudhir:
================
DELETE FORCE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-3' BACKED UP 1 TIMES TO DEVICE TYPE DISK;
DELETE FORCE ARCHIVELOG UNTIL TIME 'SYSDATE-1' BACKED UP 1 TIMES TO DEVICE TYPE DISK;
--> incase any backups of level 1 or level 0 are failed then we need to take the archive logs backup and do the delete input for example
check the format 'u02/orabackup/backups/pbstsa/rman_backup/ora_arch_%d_%s_%T_%c_%p' and then run below command
BACKUP ARCHIVELOG ALL FORMAT '/u02/orabackup/ibiuat/rman_backup/ora_arch_%d_%s_%T_%c_%p' delete input;
FRA checkup used space
========================
set lines 100
col name format a60
select name
, floor(space_limit / 1024 / 1024) "Size MB"
, ceil(space_used / 1024 / 1024) "Used MB"
from v$recovery_file_dest
order by name
/
=======================
DB Backup Mount point full:
SESSION_KEY INPUT_TYPE STATUS START_TIME END_TIME OUTPUT_BYTES_DI TIME_TAKEN_DISPLAY
----------- -------------------- ------------------------ -------------------- -------------------- --------------- --------------------
9199 ARCHIVELOG COMPLETED 2018-05-10 19:11 2018-05-10 19:16 19.96G 00:04:56
9208 DB INCR COMPLETED 2018-05-11 19:01 2018-05-11 19:18 32.25G 00:17:09
9227 DB INCR COMPLETED 2018-05-14 19:02 2018-05-14 19:48 63.45G 00:45:51
9228 DB INCR FAILED 2018-05-14 19:01 2018-05-15 00:49 130.57G 05:48:35
9247 DB INCR COMPLETED 2018-05-15 19:01 2018-05-16 02:01 197.76G 07:00:15
9277 ARCHIVELOG COMPLETED 2018-05-22 14:34 2018-05-22 14:47 92.94G 00:12:31
9280 DB INCR COMPLETED 2018-05-22 19:01 2018-05-22 19:24 12.54G 00:22:41
9289 DB INCR COMPLETED 2018-05-23 19:01 2018-05-23 19:15 23.39G 00:14:12
9298 DB INCR COMPLETED 2018-05-24 19:02 2018-05-25 02:17 206.42G 07:15:20
9307 DB INCR COMPLETED 2018-05-25 19:01 2018-05-25 19:14 17.19G 00:12:49
9316 DB INCR COMPLETED 2018-05-26 19:02 2018-05-27 02:09 206.20G 07:06:35
9335 DB INCR FAILED 2018-05-28 19:01 2018-05-28 19:17 21.88G 00:16:41
FULL BACKUP CLEAR ::
==================
delete backup completed before 'sysdate-5'
after above command plz check full backups is there or not with LEVEL 0
LIST BACKUP OF DATABASE;
RMAN> delete backup completed before 'sysdate-9';
rman> list backup;
using channel ORA_DISK_1
using channel ORA_DISK_2
List of Backup Pieces
BP Key BS Key Pc# Cp# Status Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
6929701 6929690 1 1 AVAILABLE DISK /u02/orabackup/backups/pbstsa/rman_backup/ora_df_PBSTSA_11119_20180524_1_1
6929702 6929691 1 1 AVAILABLE DISK /u02/orabackup/backups/pbstsa/rman_backup/ora_df_PBSTSA_11120_20180524_1_1
6929703 6929692 1 1 AVAILABLE DISK /u02/orabackup/backups/pbstsa/rman_backup/ora_df_PBSTSA_11121_20180524_1_1
Do you really want to delete the above objects (enter YES or NO)?
======================================================================
with % USED FRA SPACE
=======================
col name for a32
col size_m for 999,999,999
col used_m for 999,999,999
col pct_used for 999
SELECT name
, ceil( space_limit / 1024 / 1024) SIZE_M
, ceil( space_used / 1024 / 1024) USED_M
, decode( nvl( space_used, 0),
0, 0
, ceil ( ( space_used / space_limit) * 100) ) PCT_USED
FROM v$recovery_file_dest
ORDER BY name
/
*******************************************clearing +FRA by deleting the arvhice logs*********************************************************************************************************************
delete archivelog until time 'sysdate-3';
RMAN> delete archivelog until time 'sysdate-2' backed up 1 times to device type disk;
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE ‘sysdate-1’;
RMAN> DELETE ARCHIVELOG ALL BACKED UP 2 TIMES to disk;
RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = 3790;
Delete Archivelog Backups
The following command can be used to manage the backup of the archive log when storage space needs to be released.
RMAN> DELETE BACKUP OF archivelog UNTIL TIME=’sysdate-5′;
=====================================================================================================================================
Query to check the incremental Backup Details
----------------------------------------------
select incremental_level,
incremental_change#,
checkpoint_change#,
blocks
from v$backup_datafile;
============================================
*****************************************************************************************************************************************************************
*****************************************************************************************************************************************************************
USER RELATED
*****************************************************************************************************************************************************************
*****************************************************************************************************************************************************************
Creating a user with read only access to perticular schemas
===========================================================
SQL> create user neer identified by neer;
SQL> grant create session to neer ;
dineshg_11528203
Select a.grantee User_name, a.granted_role role, b.privilege from DBA_ROLE_PRIVS a, DBA_SYS_PRIVS b where
a.granted_role=b.grantee and a.grantee='KAUSHIKV_5001082'
SELECT * FROM DBA_SYS_PRIVS;
SELECT * FROM DBA_TAB_PRIVS;
select * from dba_roles;
grant CLAIM_EVENT_READ_ONLY to KSINGHAL20_11527032;
--> For this to find out role which is related to schema ,use below query
select role from dba_roles where role like '%READ_ONLY%';
***********************************
--> For this to find out role which is related to schema ,use below query
select role from dba_roles where role like '%DEBUG%';
select privilege,role from role_sys_privs where role like 'JAVADEBUGPRIV';
*************************************
--> In Xchanging for new user creation any privilige we need create role first (in case role doesn't exists) and then assign this role to user.
SQL> create role PBS_DATASTORE_READ_ONLY;
SQL > select 'grant select on PBS_DATASTORE.'||table_name|| ' to dineshg_11528203;' from dba_tables where owner='PBS_DATASTORE';
SQL> grant PBS_DATASTORE_READ_ONLY to dineshg_11528203;
-- here PBS_DATASTORE_READ_ONLY is role name.
--> If any new table is created in schema to which access is needed then we need to add this table for SELECT/UPDATE roles in the schema.
---- Grant select on <New table name> to schema_Read_only_role;
Here I have created the script with the help of spool by selecting the tables of the HR schemas
SQL> SPOOL C:\select_privs.sql
SQL> select 'grant select on REPOSITORY.'||table_name|| ' to ;' from dba_tables where owner='REPOSITORY';
SQL> select 'grant select on hr.'||view_name|| ' to neer;' from dba_views where owner='HR';
SQL> spool off
Now , we will check the spool “select _privs.sql” and prepare this as script for grant permission.
SQL> @C:\select_privs.sql
The script “select_privs.sql” script after modification is .
grant select on hr.REGIONS to neer;
grant select on hr.LOCATIONS to neer;
grant select on hr.DEPARTMENTS to neer;
grant select on hr.JOBS to neer;
grant select on hr.EMPLOYEES to neer;
grant select on hr.JOB_HISTORY to neer;
grant select on hr.COUNTRIES to neer;
grant select on hr.EMP_DETAILS_VIEW to neer;
Given role to users ::
=====================
Select :
=======
select t.role,t.owner,t.privilege,t.table_name,r.grantee from role_tab_privs t ,dba_role_privs r where
t.role=r.granted_role and r.grantee like '%KAUSHIKV_5001082%'
Update :
=======
col PRIVILEGE for a10
select t.role,t.owner,t.privilege,t.table_name,r.grantee from role_tab_privs t ,dba_role_privs r where
t.role=r.granted_role and t.privilege ='UPDATE' and r.grantee like '%CSINGH%'
If you wish to grant select on dictionary views then:
SQL> conn / as sysdba
SQL> grant select any dictionary to user_read_only;
If you wish the read_only user could select ddl of any objects belongs to any schema then:
SQL> grant SELECT_CATALOG_ROLE to user_read_only;
SQL> conn user_read_only
SQL> select dbms_metadata.get_ddl('TABLE','EMPLOYEES','HR') from dual;
DBMS_METADATA.GET_DDL('TABLE','EMPLOYEES','HR')
--------------------------------------------------------------------------------
CREATE TABLE "HR"."EMPLOYEES"
( "EMPLOYEE_ID" NUMBER(6,0),
"FIRST_NAME"
application schema sizes
============================
select owner,sum(bytes)/1024/1024/1024 schema_size_gig,tablespace_name
from dba_segments
where owner not in ('SYSTEM', 'XDB', 'SYS', 'TSMSYS', 'MDSYS', 'EXFSYS', 'WMSYS', 'ORDSYS', 'OUTLN', 'DBSNMP')
group by owner,tablespace_name;
( OR )
select distinct owner, tablespace_name
from dba_segments
where owner in (select username from dba_users where default_tablespace not in ('SYSTEM','SYSAUX'));
total objects in a schema
============================
select owner, tablespace_name, count(*)
from dba_segments
group by owner, tablespace_name
order by owner, tablespace_name;
object wise
============================
select substr(owner,1,20) owner, substr(segment_name,1,30) object_name,
segment_type type
from dba_segments
--where owner not in ('SYS', 'SYSTEM')
where tablespace_name not in('SYSTEM','SYSAUX')
/
*****************************************************************************************************************************************************************
*****************************************************************************************************************************************************************
ORACLE JOB SCHEDULER RELATED
*****************************************************************************************************************************************************************
*****************************************************************************************************************************************************************
job scheduler
===================
To stop and reschedule a job we need to Stop the job from OEM
Administration > oracle_jobs > search for job with schema name and job name then stop the run.
--------------------------------------------------------------------------------------------------------
SQL> SELECT JOB_NAME, STATE FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'CDW_ETL_JOB';
SELECT JOB_NAME, STATE FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME = 'CDW_CLASS_COPY_CHAIN_JOB';
SELECT JOB_NAME, START_DATE END_DATE,ENABLED,NEXT_RUN_DATE,STATE FROM DBA_SCHEDULER_JOBS where job_name in ('CDW_CLASS_COPY_CHAIN_JOB','CDW_ETL_JOB');
set linesize 800
select LOG_ID,LOG_DATE,OWNER,JOB_NAME,STATUS,ERROR#,REQ_START_DATE,ACTUAL_START_DATE,RUN_DURATION,SESSION_ID,CPU_USED,ADDITIONAL_INFO
from DBA_SCHEDULER_JOB_RUN_DETAILS where job_name in ('CDW_CLASS_COPY_CHAIN_JOB','CDW_ETL_JOB');
SELECT JOB_NAME, START_DATE END_DATE,ENABLED,NEXT_RUN_DATE,STATE FROM DBA_SCHEDULER_JOBS where job_name in ('CDW_CLASS_COPY_CHAIN_JOB','CDW_ETL_JOB');
select JOB,NEXT_DATE,LOG_USER,SCHEMA_USER,LAST_DATE,INTERVAL,LOG_USER from dba_jobs;
SELECT JOB_NAME, SCHEDULE_NAME, SCHEDULE_TYPE, ENABLED,STATE,OWNER FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME in ('CDW_CLASS_COPY_CHAIN_JOB','CDW_ETL_JOB');
CDW_CLASS_COPY_CHAIN_JOB
CDW_ETL_JOB
BEGIN
DBMS_SCHEDULER.ENABLE ('CDW_ETL_JOB');
END;
/
select job_name,state from dba_scheduler_jobs where job_name in ('CDW_ETL_JOB','CDW_CLASS_COPY_CHAIN_JOB');
'
########################## “The whole database is suddenly slow – where to start?” #################
The simplest query for determining database state performance wise would be this:
SQL> select event, state, count(*) from v$session_wait group by event, state order by 3 desc;
== I decode the “WAITED FOR xyz TIME” wait states to “WORKING” and “On CPU / runqueue”.
select
count(*),
CASE WHEN state != 'WAITING' THEN 'WORKING'
ELSE 'WAITING'
END AS state,
CASE WHEN state != 'WAITING' THEN 'On CPU / runqueue'
ELSE event
END AS sw_event
FROM
v$session_wait
GROUP BY
CASE WHEN state != 'WAITING' THEN 'WORKING'
ELSE 'WAITING'
END,
CASE WHEN state != 'WAITING' THEN 'On CPU / runqueue'
ELSE event
END
ORDER BY
1 DESC, 2 DESC
/
Background======
select
count(*),
CASE WHEN state != 'WAITING' THEN 'WORKING'
ELSE 'WAITING'
END AS state,
CASE WHEN state != 'WAITING' THEN 'On CPU / runqueue'
ELSE event
END AS sw_event
FROM
v$session
WHERE
type = 'USER'
AND status = 'ACTIVE'
GROUP BY
CASE WHEN state != 'WAITING' THEN 'WORKING'
ELSE 'WAITING'
END,
CASE WHEN state != 'WAITING' THEN 'On CPU / runqueue'
ELSE event
END
ORDER BY
1 DESC, 2 DESC
/
===================================== ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired ====================
* . Below are the sesions holding the table, kindly confirm to kill them.
Given by Deepak Try this we need all sessions with date(Logon_time).
SELECT a.object, a.type, a.sid, s.serial#, s.username, s.program, s.logon_time
FROM v$access a, v$session s WHERE a.sid = s.sid
AND a.owner = 'CLAIM_EVENT'
AND a.object = 'CLAIM_EVENT_PROCESS_REQUEST';
for granting enable disable constraints in CLMTSA
SQL> grant alter on CLAIM_EVENT.CLAIM_EVENT_PROCESS_REQUEST to MAINT_PURG;
Grant succeeded
SQL> grant create any index to MAINT_PURG;
Grant succeeded.
=============== which SQL is being executed:
SQL> select sql_hash_value, count(*) from v$session
where status = 'ACTIVE' group by sql_hash_value order by 2 desc;
==
SQL> select sql_text,users_executing from v$sql where hash_value = 966758382;
####################################### CURRENT SESSION INFO ###############
set pages 400
set lines 300
COLUMN instance_name FORMAT a6 HEADING 'Instance'
COLUMN sid FORMAT 999999 HEADING 'SID'
COLUMN serial_id FORMAT 99999999 HEADING 'Serial ID'
COLUMN session_status FORMAT a9 HEADING 'Status'
COLUMN oracle_username FORMAT a10 HEADING 'Oracle User'
COLUMN os_username FORMAT a10 HEADING 'O/S User'
COLUMN os_pid FORMAT a8 HEADING 'O/S PID'
COLUMN session_machine FORMAT a20 HEADING 'Machine' TRUNC
COLUMN session_program FORMAT a40 HEADING 'Session Program' TRUNC
column Inactive_Time_In_Hours format 99999 Heading 'Inactive_Time_In_HOUR'
column active_Time_In_Hours format 99999 Heading 'active_Time_In_HOUR'
BREAK ON instance_name SKIP PAGE
SELECT
i.instance_name instance_name
, s.sid sid
, s.serial# serial_id
, s.status session_status
, s.username oracle_username
, s.osuser os_username
, p.spid os_pid
,Round(s.last_call_et/60,2) active_Time_In_Min
,s.machine session_machine
, s.program session_program
FROM
gv$session s
INNER JOIN gv$process p ON (s.paddr = p.addr AND s.inst_id = p.inst_id)
INNER JOIN gv$instance i ON (p.inst_id = i.inst_id)
where S.USERNAME IS NOT NULL
and s.username not in('SYS','SYSTEM') and s.username is not null and s.status='ACTIVE'
ORDER BY
i.instance_name
, s.USERNAME;
===================== Total sessions count with ACTIVE + INACTIVE ======================================
SELECT s.machine
, s.username
, count(decode(s.STATUS, 'ACTIVE', 1)) as active_con
, count(decode(s.STATUS, 'INACTIVE', 1)) as inactive_con
, count(*) as total_con
FROM v$session s
WHERE type <> 'BACKGROUND'
GROUP BY username, machine
ORDER BY total_con DESC;
===========================
set lines 130
col "logon" format a16
col username format a10
col spid format 99999
col osuser format a10
col sid for 999
col MACHINE for a30
col PROGRAM for a20
select a.username,a.sid,a.process ,b.spid,to_char(a.logon_time,'dd:mm:yyyy hh24:mi')
"logon", a.status,a.osuser,a.machine,a.program from v$session a, v$process b
where a.paddr=b.addr and a.username is not null and status='ACTIVE';
======= current sqls with sql_id + sqltext ===============
set pages 50000 lines 32767
col program format a40
col sql_text format a130
select b.sid,b.status,b.last_call_et,b.program,c.sql_id,c.sql_text from v$session b,v$sqlarea c
where b.sql_id=c.sql_id
/
Run SQL Tuning Advisor for the SQL_ID
SQL> @?/rdbms/admin/sqltrpt.sql
######################## BLOCKING SESSIONS ########################
col WAIT_CLASS for a20
select blocking_session, sid, serial#, wait_class, seconds_in_wait from v$session where blocking_session is not NULL order by blocking_session ;
Select (select username from v$session where sid=a.sid) blocker,
a.sid,' is blocking ',(select username from v$session where sid=b.sid) blockee,b
.sid from v$lock a, v$lock b where a.block = 1 and b.request > 0 and a.id1 = b.id1 and a.id2 = b.id2;
############################################################################
LongRunning Session GV$
set echo off linesize 200 pages 1000 head on feedback on
col username format a10
col start_time format a15
col curr_time format a15
col osuser format a10
col opname format a10
col target format a25
col tremain format 999999.99
col elamin format 999999.99
select a.sid,substr(b.username,1,10) username,substr(b.osuser,1,10) osuser,to_char(a.start_time,'dd-mon:hh24:mi:ss') start_time,
to_char(sysdate,'dd-mon:hh24:mi:ss') curr_time,a.opname,a.target,a.totalwork,a.sofar,(a.elapsed_Seconds)/60 elamin,
a.time_remaining/60 tremain
from v$session_longops a,
v$session b
where a.totalwork<>a.sofar
and a.sid=b.sid
order by 3
/
========> Given By Deepak
set lines 300
SELECT S.SID,S.SERIAL#,S.USERNAME,S.STATUS, s.sql_id,S.LAST_cALL_ET/60 "Min",S.OSUSER,S.MACHINE
FROM V$SESSION S,V$PROCESS P
WHERE S.PADDR=P.ADDR
AND S.USERNAME IS NOT NULL
AND S.STATUS='ACTIVE'
and S.LAST_cALL_ET/60>60 order by S.LAST_cALL_ET/60;
===== WFLPRD
SQL> select count(*) from PEGARULES.pc_assign_workbasket where pxassignedoperatorid='IMRResponseWB' and pxcreatedatetime like '30-AUG-18%';
COUNT(*)
----------
0
select sql_text from v$sqlarea where SQL_ID='&sqlid';
*******
alter system kill session '1421,14693';
***************************************
killing sessions lot at a time given by arun
select 'alter system kill session ' || '''' || sid || ',' || serial# || '''' || ' immediate;' from v$session
where username='XAG_EB2B' and status='ACTIVE';
=========RAMN LONG RUNNING =======
select b.sid, b.serial#, a.spid, b.client_info,b.LOGON_TIME from v$process a, v$session b where a.addr=b.paddr and client_info like 'rman%';
======> This will give table level Locks with SID:
select c.owner, c.object_name, c.object_type, b.sid, b.serial#, b.status, b.osuser, b.machine
from v$locked_object a , v$session b , dba_objects c where b.sid = a.session_id and a.object_id = c.object_id;
=====> SQL TEXT FROM SQL ID ::
set lines 300
select a.sid,a.program,b.sql_text from v$session a, v$sqltext b where a.sql_hash_value = b.hash_value and a.sid=5496
order by a.sid,hash_value,piece;
SQL> select sid, serial#,SQL_ADDRESS, status,PREV_SQL_ADDR from v$session where sid='76';
select sid, serial#,SQL_ADDRESS, status,PREV_SQL_ADDR ,WAIT_TIME from v$session where sid='344';
SQL> select SQL_ID,sql_text from v$sqltext where address='00000004EB782658';
0kkhhb2w93cx0
###################################################################################
SQL_TEXT : This gives final text and SID ******
==========
select a.sid,a.program,b.sql_text from v$session a, v$sqltext b where a.sql_hash_value = b.hash_value
set lines 300
select a.sid,a.program,b.sql_text from v$session a, v$sqltext b where a.sql_hash_value = b.hash_value and a.sid=6273
order by a.sid,hash_value,piece;
No.of connections:
=================
show parameter sessions
SQL> SELECT COUNT(*) FROM v$session WHERE STATUS = 'ACTIVE';
>select resource_name, current_utilization, max_utilization, limit_value from v$resource_limit where resource_name in ('sessions', 'processes');
> select count(*),sum(decode(status, 'ACTIVE',1,0)) from v$session where type= 'USER'
It will give time how long its running :
=======================================
SELECT S.SID,S.SERIAL#,S.USERNAME,S.STATUS, s.sql_id,S.LAST_cALL_ET/60 "Min",S.OSUSER,S.MACHINE
FROM V$SESSION S,V$PROCESS P WHERE S.PADDR=P.ADDR
AND S.USERNAME IS NOT NULL and status='ACTIVE' and S.LAST_cALL_ET/60>2 ORDER BY S.USERNAME ;
=== Locks (OBJECT LEVEL LOCKS)
SELECT B.Owner, B.Object_Name, A.Oracle_Username, A.OS_User_Name,A.LOCKED_MODE
FROM V$Locked_Object A, All_Objects B
WHERE A.Object_ID = B.Object_ID;
============= BLOCKGING SESSIONS
Select (select username from v$session where sid=a.sid) blocker,
a.sid,' is blocking ',(select username from v$session where sid=b.sid) blockee,b
.sid from v$lock a, v$lock b where a.block = 1 and b.request > 0 and a.id1 = b.id1 and a.id2 = b.id2;
SQL_TEXT:
select a.sid,a.program,b.sql_text from v$session a, v$sqltext b where a.sql_hash_value = b.hash_value and a.sid=146 order by a.sid,hash_value,piece;
===================
SELECT p.program, p.spid
FROM v$session s, v$process p
WHERE s.paddr = p.addr
AND p.spid IN (10);
all sql text running in database::
==================================
select sesion.sid,
sesion.username,
optimizer_mode,
hash_value,
address,
cpu_time,
elapsed_time,
sql_text
from v$sqlarea sqlarea, v$session sesion
where sesion.sql_hash_value = sqlarea.hash_value
and sesion.sql_address = sqlarea.address
and sesion.username is not null
/
==================== 9i L-R ===========================
select sid,serial#,username,LAST_CALL_ET/60 from v$session;
=============================================
select sql_text,sql_fulltext from v$sql where sql_id='85b24mzqpbqyb';
===========
first check rman validation is running or not it will show like valid in the output of ps -ef | grep rman
then run long runing query and kill rman session
ps -ef|grep rman
get it from v$session
1429 8311
alter system kill session '1429,8311';
alter system kill session '43,53377';
alter system kill session '343,20835';
alter system kill session '943,47335';
select sid,serial# from gv$session where sid='638';
alter system kill session '
Rman remaining time refresh .. Try this query..
-------------------------------------------------
set lines 200
col opname format a30
set pages 200
SELECT USERNAME,SID, SERIAL#, CONTEXT,SOFAR, TOTALWORK,ROUND(SOFAR/TOTALWORK*100,2)
"%_COMPLETE" FROM V$SESSION_LONGOPS WHERE OPNAME LIKE 'RMAN%' AND TOTALWORK != 0 AND SOFAR <> TOTALWORK;
set lines 200
col opname format a30
set pages 200
SELECT USERNAME,SID, SERIAL#, CONTEXT,SOFAR, TOTALWORK,ROUND(SOFAR/TOTALWORK*100,2)
"%_COMPLETE" FROM V$SESSION_LONGOPS WHERE OPNAME LIKE 'RMAN%' AND TOTALWORK != 0 AND SOFAR <> TOTALWORK;
=============================
all sql text running in database::
==================================
select sesion.sid,
sesion.username,
optimizer_mode,
hash_value,
address,
cpu_time,
elapsed_time,
sql_text
from v$sqlarea sqlarea, v$session sesion
where sesion.sql_hash_value = sqlarea.hash_value
and sesion.sql_address = sqlarea.address
and sesion.username is not null
/
select sid, serial#,SQL_ADDRESS, status,PREV_SQL_ADDR from v$session where sid='xxxx' //(enter the sid value)
select sql_text from v$sqltext where address='XXXXXXXX';
==================================================================================================================
imruat(winsp)
SET MARKUP HTML ON
SPOOL C:\TEMP\MYOUTPUT.XLS
SQL QUERY
SPOOL OFF
=================================================================================================================================================================
query to find only perticular lines from one time to another time in alertlog file .
awk '/May 21/,/May 22/' alert_OPPMPRD.log | sed '$d' > /tmp/May21_alert.log
==================================================================================================================
CDW_CLASS.CDC_CONTROL_INS_UPD_TRIGGER
select name,open_mode from v$database;
select OWNER ,TRIGGER_NAME, STATUS from ALL_TRIGGERS where TRIGGER_NAME like '%CDC_CONTROL_INS_UPD_TRIGGER%'
ALTER TRIGGER CDW_CLASS.CDC_CONTROL_INS_UPD_TRIGGER ENABLE;
====================================
********************************** Materlized Views Refresh ********************
SELECT MVIEW_NAME, STALENESS, LAST_REFRESH_TYPE, COMPILE_STATE FROM DBA_MVIEWS ORDER BY MVIEW_NAME;
select MVIEW_NAME from all_mviews where MVIEW_NAME like '%MV_CLAIM_STATUS%' ;
select MVIEW_NAME , REFRESH_MODE ,LAST_REFRESH_DATE ,LAST_REFRESH_TYPE from dba_mviews where MVIEW_NAME like '%MV_CLAIM_STATUS%' +MV_BROKER_CONTACT_DETAILS
===Lingeswari
SQL> select object_name,owner,object_type from dba_objects where object_name='MV_BROKER_CONTACT_DETAILS';
SQL> exec dbms_mview.refresh('CDW.MV_BROKER_CONTACT_DETAILS','C');
EXEC DBMS_MVIEW.refresh('EMP_MV');
EXECUTE DBMS_MVIEW.REFRESH('CDW.MV_CLAIM_STATUS','C');
*******************************************************
Refresh Option Description
COMPLETE Refreshes by recalculating the materialized view's defining query.
FAST Applies incremental changes to refresh the materialized view using the information logged in the materialized view logs, or from a SQL*Loader direct-path or a partition maintenance operation.
FORCE Applies FAST refresh if possible; otherwise, it applies COMPLETE refresh.
NEVER Indicates that the materialized view will not be refreshed with refresh mechanisms.
=================================================
Triggers :
select OWNER ,TRIGGER_NAME, STATUS from ALL_TRIGGERS where TRIGGER_NAME like '%AW_DROP_TRG%';
ALTER TRIGGER CDW_CLASS.CDC_CONTROL_INS_UPD_TRIGGER ENABLE;
ALTER TRIGGER CDW_CLASS.CDC_CONTROL_INS_UPD_TRIGGER DISABLE;
get DDL of Triggers:
select trigger_body from user_triggers where trigger_name like '%CDC%';
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
FROM USER_TABLES u;
========================================
========> Flash Back issue <=============
SQL> show parameter flashback
SQL> select FLASHBACK_ON from v$database;
SQL> show parameter db_recovery;
SQL> select space_used/(1024*1024*1024),space_limit/(1024*1024*1024) from v$recovery_file_dest;
SQL> select * from v$flash_recovery_area_usage;
========================> INDEX INFO <===========================
************ INDEX *********
select table_name, index_name from dba_ind_columns where table_owner='CLAIM_EVENT' order by table_name;
SELECT table_name , owner FROM user_tables where table_name='CLAIM_EVENT';
select INDEX_NAME,TABLE_OWNER,TABLE_NAME,LAST_ANALYZED FROM DBA_INDEXES WHERE INDEX_NAME='PROCESS_REQUEST_SID_IDX';
select INDEX_NAME,TABLE_OWNER,TABLE_NAME,LAST_ANALYZED , STATUS FROM DBA_INDEXES WHERE INDEX_NAME='CE_PROCESS_REQUEST_IDX1';
Gather stats::
exec dbms_stats.gather_table_stats(ownname=>'CLAIM_EVENT',tabname=>'CLAIM_EVENT',estimate_percent =>dbms_stats.auto_sample_size,no_invalidate=>FALSE,cascade=>true,degree=>8);
===================================================================================================================================================================
======> clmtsa , clmtsd , clmprddr1 Bounce Activity <=========================
CLMTSD , CLMTSA +ASM => srvctl start asm
CLMTSA =>
cat /var/opt/oracle/oratab
/opt/xts/sudo/bin/sudo -u oracle -i bash
/opt/xts/sudo/bin/sudo -u grid -i bash
lsnrctl status LISTENER
1) Stop DB
select name,open_mode,database_role,log_mode,to_char(current_scn) from v$database;
SQL> shut immediate;
2) OEM DOWN ==> cd /u01/app/oracle/agent12c/core/12.1.0.5.0/bin/
CLMTSA => ./emctl stop agent
./emctl status agent
Check Cluster as grid user ::
==> cd /u01/app/grid/product/11.2.0/grid
CLMTSA => ./crsctl stat res -t
3) Stop ASM Than Stop cluster
Connect as Grid user ::
CLMTSA => . oraenv
ORACLE_SID = [grid] ? +ASM
===> cd /u01/app/grid/product/11.2.0/grid/bin
=> ./crsctl stat res -t
Stop ASM
sqlplus / as sysasm
SQL> select instance_name,status from v$instance;
SQL> shut immediate;
CLMTSA => crsctl stop has
CLMTSA => prstat -a ( No ORACLE & GRID process should not run)
================================================== STOPPED ============================
CLMPRDDR1 => Standby DOWN ( # MRP Should be stop)
SQL> select process,status,sequence# from v$managed_standby;
SQL> shut immediate;
=> ./emctl stop agent
CLMPRDDR1 => sqlplus / as sysasm
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
+ASM STARTED
SQL> shutdown immediate;
CLMPRDDR1 => ./crsctl stat res -t
CLMPRDDR1 => crsctl stop has
$prstat -a
===============================================================================================
START PROCESS
======================================================================================================
1) Start Cluster
2) Start ASM
3) Start DATABASE
4) Start OEM Agent
5) Check LISTENER STATUS
CLMPRDDR1 => ./crsctl start has
CLMPRDDR1 => ./crsctl stat res -t
CLMPRDDR1 => sqlplus / as sysasm
ASM SQL> select INSTANCE_NAME,HOST_NAME,STATUS,STARTUP_TIME from v$instance;
DB UP ==> SQL> startup mount;
SELECT THREAD#, MAX(SEQUENCE#) AS "LAST_APPLIED_LOG" FROM V$LOG_HISTORY GROUP BY THREAD#;
set head off
set echo off
set feedback off
SELECT (ARCH.SEQUENCE# - APPL.SEQUENCE#) difference
FROM
(SELECT DISTINCT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH
,
(SELECT DISTINCT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL
WHERE
ARCH.THREAD# = APPL.THREAD#
ORDER BY 1;
MRP Check :
SQL> select process,status,sequence# from v$managed_standby;
MPR Start :
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
SQL> select process,status,sequence# from v$managed_standby;
CLMPRDDR1 => lsnrctl status LISTNER
CLMPRDDR1 => ./emctl start agent
*ASM Checks ::
==========
sqlplus / as sysasm
SQL> select name Diskgroup,round(total_mb/1024,2) "Total_TB",round(free_mb/1024,2) "Free_GB",round(((free_mb/total_mb)*100),2) "Available%" from v$asm_diskgroup;
SQL> select name,state,GROUP_NUMBER from v$asm_Diskgroup;
================================> STANDBY ARCHIVE CHECKS <=================================
SOURCE_DIR="/u03/orarch/imrprd/"
DEST_DIR="/u04/prd_arch_logs/"
crontab -l|grep dr
RDCPRD
PBSPRD
========================= REDO PER DAY + ARCHIVES PER DAY =================================
REDO:
SELECT A.*, ROUND (A.Count# * B.AVG# / 1024 / 1024) Daily_Avg_Mb
FROM ( SELECT TO_CHAR (First_Time, 'YYYY-MM-DD') DAY,
COUNT (1) Count#,
MIN (RECID) Min#,
MAX (RECID) Max#
FROM v$log_history
GROUP BY TO_CHAR (First_Time, 'YYYY-MM-DD')
ORDER BY 1 DESC) A, (SELECT AVG (BYTES) AVG#,
COUNT (1) Count#,
MAX (BYTES) Max_Bytes,
MIN (BYTES) Min_Bytes
FROM v$log) B;
DAY COUNT# MIN# MAX# DAILY_AVG_MB
--------------------------------------------------------------------------- ---------- ---------- ---------- ------------
2018-10-04 155 173138 173292 31000
2018-10-03 375 172763 173137 75000
2018-10-02 182 172581 172762 36400
2018-10-01 188 172393 172580 37600
2018-09-30 186 172207 172392 37200
2018-09-29 186 172021 172206 37200
2018-09-28 185 171836 172020 37000
2018-09-27 260 171576 171835 52000
2018-09-26 186 171390 171575 37200
2018-09-25 190 171200 171389 38000
2018-09-24 187 171013 171199 37400
2018-09-23 85 170928 171012 17000
2018-09-22
========
SELECT THREAD#, MAX(SEQUENCE#) AS "LAST_APPLIED_LOG" FROM V$LOG_HISTORY GROUP BY THREAD#;
SELECT SUM_ARCH.DAY,
SUM_ARCH.GENERATED_MB,
SUM_ARCH_DEL.DELETED_MB,
SUM_ARCH.GENERATED_MB - SUM_ARCH_DEL.DELETED_MB "REMAINING_MB"
FROM ( SELECT TO_CHAR (COMPLETION_TIME, 'DD/MM/YYYY') DAY,
SUM (ROUND ( (blocks * block_size) / (1024 * 1024*1024), 2))
GENERATED_MB
FROM V$ARCHIVED_LOG
WHERE ARCHIVED = 'YES'
GROUP BY TO_CHAR (COMPLETION_TIME, 'DD/MM/YYYY')) SUM_ARCH,
( SELECT TO_CHAR (COMPLETION_TIME, 'DD/MM/YYYY') DAY,
SUM (ROUND ( (blocks * block_size) / (1024 * 1024*1024), 2))
DELETED_MB
FROM V$ARCHIVED_LOG
WHERE ARCHIVED = 'YES' AND DELETED = 'YES'
GROUP BY TO_CHAR (COMPLETION_TIME, 'DD/MM/YYYY')) SUM_ARCH_DEL
WHERE SUM_ARCH.DAY = SUM_ARCH_DEL.DAY(+)
ORDER BY TO_DATE (DAY, 'DD/MM/YYYY');
18/06/2018 122.58 41.32 81.26
19/06/2018 210.51 69.71 140.8
20/06/2018 336.63 112.21 224.42
21/06/2018 297.39 99.13 198.26
22/06/2018 300.27 100.09 200.18
23/06/2018 128.28 42.76 85.52
24/06/2018 127.8 42.6 85.2
25/06/2018 346.02 115.34 230.68
*************************************************** STANDBY CHECK *********************************************************************************************************
SQL> select name, open_mode, database_role from v$database;
select max(sequence#) from v$log_history;
Check redo received and applied on standby:
==========================================
SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG;
SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#) ORDER BY 1;
Identify the missing archive log file.
SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
MRP CHECKS ::
============
set head off
set echo off
set feedback off
SELECT (ARCH.SEQUENCE# - APPL.SEQUENCE#) difference
FROM
(SELECT DISTINCT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH
,
(SELECT DISTINCT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL
WHERE
ARCH.THREAD# = APPL.THREAD#
ORDER BY 1;
************************************************************************************************************************************************************
===> Befor Db up checklist :: <=========================
Pande, Deepak:
before opening in mount mode run below in database
select * from v$recover_file;
select distinct(status) from dba_tablespaces;
select distinct(status) from dba_data_files;
select name from v$datafile where status ='OFFLINE'
all tablespace should be online
all datafiles should be AVAILABLE
If v$recover_file returns some output then recovery is needed
If v$recover_file returns some output then recovery is needed
for recovery at sql prompt give recover database;
select * from dba_tablespace_usage_metrics;
select instance_name, to_char(startup_time,'mm/dd/yyyy hh24:mi:ss') as startup_time from v$instance;
select * from v$recover_file;
select distinct(status) from dba_tablespaces;
select distinct(status) from dba_data_files;
select name from v$datafile where status ='OFFLINE'
=============
====================================================== TNS ISSUES ================================================
* DB and Listener check alert log also.
1) ping 10.145.2.146 , ping actwf2tscdatz01
actwf2tscdatz01 is alive
2) telnet actwf2tscdatz01 1521
3) tnsping wfltsc
4)
SQL> connect XCS_WORKFLOW/UK_xcs#1@'(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = actwf2tscdatz01)(PORT = 1521)))
(CONNECT_DATA = (SERVER =DEDICATED) (SERVICE_NAME = wfltsc.xchanging.com)))'
Connected.
SQL>
connect ETL_CWT/e7tc77@'(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=basimrfofdatz01)(PORT=1521)))'
=====================
================== DB GROWTH RATE (DAILY + WEEKLY) ======
SET LINESIZE 200
SET PAGESIZE 200
COL "Database Size" FORMAT a13
COL "Used Space" FORMAT a11
COL "Used in %" FORMAT a11
COL "Free in %" FORMAT a11
COL "Database Name" FORMAT a13
COL "Free Space" FORMAT a12
COL "Growth DAY" FORMAT a11
COL "Growth WEEK" FORMAT a12
COL "Growth DAY in %" FORMAT a16
COL "Growth WEEK in %" FORMAT a16
SELECT
(select min(creation_time) from v$datafile) "Create Time",
(select name from v$database) "Database Name",
ROUND((SUM(USED.BYTES) / 1024 / 1024 ),2) || ' MB' "Database Size",
ROUND((SUM(USED.BYTES) / 1024 / 1024 ) - ROUND(FREE.P / 1024 / 1024 ),2) || ' MB' "Used Space",
ROUND(((SUM(USED.BYTES) / 1024 / 1024 ) - (FREE.P / 1024 / 1024 )) / ROUND(SUM(USED.BYTES) / 1024 / 1024 ,2)*100,2) || '% MB' "Used in %",
ROUND((FREE.P / 1024 / 1024 ),2) || ' MB' "Free Space",
ROUND(((SUM(USED.BYTES) / 1024 / 1024 ) - ((SUM(USED.BYTES) / 1024 / 1024 ) - ROUND(FREE.P / 1024 / 1024 )))/ROUND(SUM(USED.BYTES) / 1024 / 1024,2 )*100,2) || '% MB' "Free in %",
ROUND(((SUM(USED.BYTES) / 1024 / 1024 ) - (FREE.P / 1024 / 1024 ))/(select sysdate-min(creation_time) from v$datafile),2) || ' MB' "Growth DAY",
ROUND(((SUM(USED.BYTES) / 1024 / 1024 ) - (FREE.P / 1024 / 1024 ))/(select sysdate-min(creation_time) from v$datafile)/ROUND((SUM(USED.BYTES) / 1024 / 1024 ),2)*100,3) || '% MB' "Growth DAY in %",
ROUND(((SUM(USED.BYTES) / 1024 / 1024 ) - (FREE.P / 1024 / 1024 ))/(select sysdate-min(creation_time) from v$datafile)*7,2) || ' MB' "Growth WEEK",
ROUND((((SUM(USED.BYTES) / 1024 / 1024 ) - (FREE.P / 1024 / 1024 ))/(select sysdate-min(creation_time) from v$datafile)/ROUND((SUM(USED.BYTES) / 1024 / 1024 ),2)*100)*7,3) || '% MB' "Growth WEEK in %"
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;
=====
=================================================== ASM DISK ADD ===============================================
for this u need to connect as grid user
select name,PATH,HEADER_STATUS from v$asm_disk order by path;
alter diskgroup DATA add disk '/dev/asm/oradata32' name DATA_0032 rebalance power 10;
SELECT MOUNT_STATUS,HEADER_STATUS,MODE_STATUS,STATE,OS_MB,TOTAL_MB,FREE_MB,NAME,PATH FROM V$ASM_DISK;
==> select OPERATION, STATE, POWER, SOFAR, EST_WORK, EST_RATE, EST_MINUTES from V$ASM_OPERATION;
==========================
^^^^^^^^^^ PACKAGE not PACKAGEBODY ^^^^^^^^^^^^
SQL> select dbms_metadata.get_ddl('PACKAGE','PKG_CDW_BATCH_JOB','CDW_BATCH') FROM DUAL;
DBMS_METADATA.GET_DDL('PACKAGE','PKG_CDW_BATCH_JOB','CDW_BATCH')
--------------------------------------------------------------------------------
CREATE OR REPLACE PACKAGE "CDW_BATCH"."PKG_CDW_BATCH_JOB"
-- +--------------
------------------------------------------------------------------------------------------------------
++++++========================== OEM AGENT ERROR ===========================
stop agent
mv /u01/app/oracle/agent12c/agent_inst/sysman/emd/state/* /tmp/BPOEMBKP/
$ ./emctl clearstate agent
1. Shutdown the agent or kill any leftover processes
$ $AGENT_HOME/agent_inst/bin/emctl stop agent
$ ps -ef | grep java | grep '<agent based dir>'
$ ps -ef | grep perl
$ kill -9 <Process id>
2. Move old files from $AGENT_HOME/agent_inst/sysman/emd/state/* to a new directory
e.g
$ mv $AGENT_HOME/agent_inst/sysman/emd/state/* /u01/tmp/
3. Execute clearstate agent:
$ $AGENT_HOME/agent_inst/bin/emctl/emctl clearstate agent
4. Start the agent:
$AGENT_HOME/agent_inst/bin/emctl/emctl start agent
============================ EXPORT SCHEMA ===============
SQL> CREATE OR REPLACE DIRECTORY NEW_PUMP AS '/u02/orabackup/pump';
SQL> GRANT READ, WRITE ON DIRECTORY NEW_PUMP TO system;
>select DIRECTORY_NAME ,DIRECTORY_PATH from dba_directories;
PUMP /u02/orabackup/pump
nohup expdp \"/ as sysdba\" DIRECTORY=PUMP dumpfile=CDW_CLASS_INCREMENTAL_expdp.dmp
logfile=CDW_CLASS_INCREMENTAL_expdp.log schemas=CDW,CDW_CLASS_INCREMENTAL &
*****************************************************************************************************************************
The correct mount options that need to be used for NFS volumes on Linux are:
rsize=32k, wsize=32k, hard, actimeo=0
==============Schema refresh ==================
SELECT 'DROP ' || OBJECT_TYPE || ' ' || OWNER || '.' || OBJECT_NAME || ';'
FROM DBA_OBJECTS
WHERE OWNER = 'CDW_CLASS_INCREMENTAL' and OBJECT_TYPE <> 'DATABASE LINK';
Below are the query to find out the tablespace name and datafiles name and size.
set linesize 300
set pagesize 100
col file_name for a50
tablespace_name for a20
select distinct TABLESPACE_NAME from dba_segments where owner='<schema name>';
select tablespace_name,file,size/1024/1024/1024 "SIZE_IN_GB" from dba_data_files where tablespace_name='<tablespace name>';
Create the same name of tablespace with datafile and size on target database before import
Please start the import
Once import completed, please compare the object count on source and target database for validation.
SELECT OBJECT_TYPE, STATUS, COUNT(*) FROM DBA_OBJECTS;
The best way I believe is the take a spool of the grants and execute them once after the import is complete
==> ROLES
select 'grant '||PRIVILEGE||' on '||OWNER||'.'||TABLE_NAME||' to XXTEST;' from dba_tab_privs where GRANTEE='XXTEST' ;
===============================================
SQL> ALTER SYSTEM SET COMPATIBLE = '9.0.0' SCOPE=SPFILE;
=================================RESTORING DATABASE to GRP / ROLLBACK DB TO GRP==========================================
Flashback to the guaranteed restore point
SQL> select current_scn from v$database;
SQL> shutdown immediate;
SQL> startup mount;
SQL> select * from v$restore_point;
SQL> flashback database to restore point GRP_NAME;
SQL> alter database open resetlogs;
SQL> select current_scn from v$database;
=======================================
Recyclebin:
=====
check owner is correct or not .
select OWNER,OBJECT_NAME,ORIGINAL_NAME,OPERATION,CREATETIME ,DROPTIME from dba_recyclebin where ORIGINAL_NAME like 'CWT_ETL_TBL_1HR_1' owner='ETL_CWT';
===============
Use the below steps before shutdown that clmtrn database tomorrow
First, back up the crontab before shutdown the database
crontab -l > my_cron_backup.txt
Then you can empty it:
crontab -r
To restore the cron after starting the database
crontab my_cron_backup.txt
crontab -l
===================================================
============== DATAFILES RESIZE ===================
SQL> select 'alter database datafile '''||file_name||''' resize ' ||
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) || 'm;' cmd
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(+)
and ceil( blocks*&&blksize/1024/1024) -
ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0
/
> sho praemeter block_size
============================
ROW COUNT + OBJECTS COUNT for TSC
=======================================================
> row count
set time on pages 1000
select OWNER,TABLE_NAME,num_rows COUNTER from dba_tables where owner not in
('APEX_030200','SQLTXADMIN','SYSMAN','SCOTT','OLAPSYS','MDSYS','ORDSYS','XDB','CTXSYS','SYS','SYSTEM','OWBSYS','ORACLE_OCM','PUBLIC','APPQOSSYS','EXFSYS','OUTLN','OPS$ORACLE','ORDPLUGINS','DBSNMP','ORDDATA','MIST','WMSYS','SQLTXPLAIN','PERFSTAT')
order by owner,TABLE_NAME;
+++++++++++++++
> object count :
select owner,object_type,count(*),status from dba_objects group by owner,object_type,status order by 1;
select owner,object_type,count(*),status from dba_objects where owner not in
('APEX_030200','SQLTXADMIN','SYSMAN','OLAPSYS','MDSYS','ORDSYS','XDB','CTXSYS','SYS','SYSTEM','OWBSYS','ORACLE_OCM','PUBLIC','APPQOSSYS','EXFSYS','OUTLN','OPS$ORACLE','ORDPLUGINS','DBSNMP','ORDDATA','MIST','WMSYS','SQLTXPLAIN')
group by owner,object_type,status order by 1;
===============================================
================= EXPLIAN PLAN ====================
explain plan for select nvl(min(tblclaimco0_.COMMENT_TIMESTAMP), SYSDATE) as col_0_0_ from REPOSITORY.TBLCLAIMCOMMENTHEADER tblclaimco0_;
select plan_table_output
from table(dbms_xplan.display('plan_table',null,'ALL'));
STALE INDEXES:
select stale_stats,last_analyzed from dba_ind_statistics where table_owner='REPOSITORY' and table_name='TBLCLAIMCOMMENTHEADER' ;
select * from DBA_TAB_COL_STATISTICS where owner ='REPOSITORY' and table_name='TBLCLAIMCOMMENTHEADER';
select table_name, OWNER, stale_stats, last_analyzed from dba_tab_statistics where stale_stats='YES' and OWNER='REPOSITORY';
===================== LOAD TEST ===================
========== final query =========
set lines 180
set echo on
set colsep '|'
set long 399999
set lines 300 pages 300
col sql_text for a78
col USERNAME for a15
SELECT a.sql_text, b.sid,b.username,b.status,b.LAST_CALL_ET active_time_sec FROM v$sqltext a, v$session b
WHERE a.address = b.sql_address
AND a.hash_value = b.sql_hash_value AND b.status='ACTIVE' ORDER BY b.sid,a.piece;
==================== FINAL BY DEEPAK =================
select LAST_LOAD_TIME, ELAPSED_TIME/1000000, MODULE, SQL_TEXT ,LAST_ACTIVE_TIME from v$sql where LAST_LOAD_TIME like '%2019-01-04%'
order by LAST_LOAD_TIME desc;
====================================================== Last Inserts in db ========================
desc all_tab_modifications ==> inserts updates , delete
select TABLE_NAME,INSERTS,to_char(TIMESTAMP,'DD:MM:YY hh24:mi:ss') time from all_tab_modifications where TABLE_NAME='CLAIM_EVENT_PROCESS_REQUEST';
============================
===================== STATS GATHER WITH BACKUP =============
--create table for stat's backup
begin
dbms_stats.create_stat_table(ownname => 'SYSTEM',stattab => 'bkp_stats_181218_TBLCLAIM',tblspace => 'USERS');
end;
/
--taking backup of current stats of table
begin
dbms_stats.export_table_stats(ownname=>'REPOSITORY',tabname=>'TBLCLAIMCOMMENTHEADER',stattab => 'bkp_stats_181218_TBLCLAIM',statid => 'repos_tblclaim',statown => 'SYSTEM',cascade=>true);
end;
/
--gather stats
EXEC SYS.DBMS_STATS.GATHER_TABLE_STATS( 'repository','TBLCLAIMCOMMENTHEADER', CASCADE => TRUE ,degree => 47,estimate_percent =>DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO');
********************************************* IO Contention PT ***********************************************************
in AWR IO STATS ALSO GIVE SOME IDEA:
desc v$filestat + iostat + vol_grp
> select name,PHYRDS,PHYWRTS,READTIM,WRITETIM from v$filestat a , v$datafile b where a.file# = b.file# order by READTIM desc;
NAME PHYRDS PHYWRTS READTIM WRITETIM
------------------------------------------------------------ ---------- ---------- ---------- ----------
+DATA/ibiuat/datafile/undotbs1.258.949962237 2049374 25773291 5281946 9859863
+DATA/ibiuat/datafile/cdw_warehouse_indx.284.949966409 2936133 472456 5215601 2312
+DATA/ibiuat/datafile/cdw_warehouse_data.274.949964921 6159937 175348 5204899 4285
+DATA/ibiuat/datafile/cdw_warehouse_data.270.949964289 6696958 177707 5182428 4698
===================================== CRONTAB DISABLE ==============
Use the below steps before shutdown that clmprd database tomorrow
First, back up the crontab before shutdown the database
crontab -l > my_cron_backup.txt
Then you can empty it:
crontab -r
To restore the cron after starting the database
crontab my_cron_backup.txt
crontab -l
===================
!!!!!!!!!!!!!" IMRPRD:- XAG_DATA'S TABLES & TABLESPACE GROWTH DETAILS !!!!!!!!!!!!
---
--
--
set colsep '|'
column segment_name format a35
COLUMN allocated_bytes FORMAT a25
COLUMN USED_MB FORMAT a25
COLUMN FREE_MB FORMAT a25
COLUMN TOTAL_MB FORMAT a25
COLUMN per_free FORMAT a25
COLUMN tablespace FORMAT a25
set pagesize 200;
set linesize 200;
set lines 200;
set pages 200;
col owner format a12;
col segment_name format a35
col segment_type format a15;
col tablespace_name format a20;
-- SIZE OF SEGMENT
--================
select sysdate,owner, TABLESPACE_NAME,segment_name,sum(bytes/1024/1024) MB from dba_Segments where segment_type='TABLE' AND TABLESPACE_name='XAG_DATA' group by owner,sysdate,segment_name,tablespace_name
order by segment_name;
--SIZE OF TABLESPACE
--==================
SELECT F.TABLESPACE_NAME tablespace,
TO_CHAR ((T.TOTAL_SPACE - F.FREE_SPACE),'999999,999999') "USED_MB",
TO_CHAR (F.FREE_SPACE, '999999,999999') "FREE_MB",
TO_CHAR (T.TOTAL_SPACE, '999999,999999') "TOTAL_MB",
TO_CHAR ((ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)),'9999999')||' %' PER_FREE
FROM (
SELECT TABLESPACE_NAME,
ROUND (SUM (BLOCKS*(SELECT VALUE/1024
FROM V\\$PARAMETER
WHERE NAME = 'db_block_size')/1024)
) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME
) F,
(
SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES/1048576)) TOTAL_SPACE
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME
) T
WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME and t.tablespace_name='XAG_DATA';
spool off;
=================================
********************************************************** DATA GUARD **************************************************************************************************
primay : SELECT MESSAGE FROM V$DATAGUARD_STATUS;
SELECT to_char(CURRENT_SCN) FROM V$DATABASE;
SQL> select name, open_mode, database_role from v$database;
select max(sequence#) from v$log_history;
Check redo received and applied on standby:
==========================================
SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG;
SELECT SEQUENCE#, APPLIED ,COMPLETION_TIME ,STAMP FROM V$ARCHIVED_LOG where COMPLETION_TIME like '%06-JUL-18%';
SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG
GROUP BY THREAD#) ORDER BY 1;
select process,status,sequence# from v$managed_standby;
Identify the missing archive log file.
SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
SQL> select thread#, max (sequence#) from v$archived_log where APPLIED='YES' group by thread#;
THREAD# MAX(SEQUENCE#)
———- ————–
1 22
2 14
3 12
************************************************************************************************************************************************************
Crosscheck this :
Check redo received and applied on standby.
SELECT ARCH.THREAD# , ARCH.SEQUENCE# , APPL.SEQUENCE# , (ARCH.SEQUENCE# – APPL.SEQUENCE#) FROM
(SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN
(SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH,
(SELECT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN
(SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL
WHERE
ARCH.THREAD# = APPL.THREAD#
ORDER BY 1;
Identify the missing archive log file.
SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
col NAME for a70
select SEQUENCE#,THREAD#,STATUS,APPLIED,NAME from v$archived_log where APPLIED='YES' order by NAME;
col NAME for a70
select SEQUENCE#,THREAD#,STATUS,APPLIED,NAME from v$archived_log where APPLIED='NO';
col NAME for a70
select SEQUENCE#,THREAD#,STATUS,APPLIED,NAME from v$archived_log where APPLIED='YES' AND SEQUENCE# BETWEEN 80886 AND 81999;
use first query
=========================
set head off
set echo off
set feedback off
SELECT (ARCH.SEQUENCE# - APPL.SEQUENCE#) difference
FROM
(SELECT DISTINCT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH
,
(SELECT DISTINCT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL
WHERE
ARCH.THREAD# = APPL.THREAD#
ORDER BY 1;
=================== ARCH Difference query================================
SELECT ARCH.THREAD# "Thread", ARCH.SEQUENCE# "Last Sequence Received",
APPL.SEQUENCE# "Last Sequence Applied", (ARCH.SEQUENCE# - APPL.SEQUENCE#) "Difference"
FROM
(SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN
(SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH,
(SELECT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN
(SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL
WHERE
ARCH.THREAD# = APPL.THREAD#
ORDER BY 1;
==========================================
errors
select status , error from v$archive_dest where des_id=2;
select process,client_process,status,thread#,sequence#,block#,blocks from v$managed_standby;
SQL> select process,client_process,status,thread#,sequence#,block#,blocks from v$managed_standby;
PROCESS CLIENT_P STATUS THREAD# SEQUENCE# BLOCK# BLOCKS
--------- -------- ------------ ---------- ---------- ---------- ----------
ARCH ARCH CONNECTED 0 0 0 0
ARCH ARCH CONNECTED 0 0 0 0
ARCH ARCH CONNECTED 0 0 0 0
ARCH ARCH CONNECTED 0 0 0 0
MRP0 N/A WAIT_FOR_LOG 1 169866 0 0
RFS LGWR RECEIVING 1 169990 242070 8
RFS ARCH IDLE 0 0 0 0
SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG where APPLIED='NO' ;
alter database recover managed standby database cancel
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE disconnect from session
alter database recover managed standby database disconnect from session;
============ REAL TIME APPLY =======
select DEST_ID,dest_name,status,type,srl,recovery_mode from v$archive_dest_status where dest_id=1;
select database_role , open_mode from v$database;
DATABASE_ROLE
----------------
PHYSICAL STANDBY
SQL> select name ,open_mode from v$database;
NAME OPEN_MODE
--------- --------------------
WFLPRD READ ONLY WITH APPLY
SQL> select dest_id , recovery_mode from v$archive_dest_status where dest_id=1;
DEST_ID RECOVERY_MODE
---------- -----------------------
1 MANAGED
===========================