Tuesday, October 15, 2013

Adding existing backups to RMAN catalog

RMAN> CATALOG DATAFILECOPY '/u01/backup/system01.dbf'
RMAN> CATALOG ARCHIVELOG '/u01/backup/arch_1.arc', '/u01/backup/arch_2.arc';
RMAN> CATALOG BACKUPPIECE '/u01/backup/backup_001.bkp'; -- FOR EACH BACKUP PIECE IN THE BACKUP SET !!!
RMAN> CATALOG START WITH '/u01/backup/'; -- Check for the trailing backslash !!!

rman incomplete recovery

Note down current redo log if possible

Archive redo log if possible using alter system switch logfile;

Finally Recover redo logs if needed before opening database in resetlogs:

If not able to recover the redo logs, try logminer to get transactions.

SQL> RECOVER DATABASE using BACKUP CONTROLFILE UNTIL CANCEL;
ORA-00279: change 27615990 generated at 10/02/2013 15:08:30 needed for thread 1
ORA-00289: suggestion :
/u00/app/oracle/product/11.2.0.3/dbs/arch1_1513_813415794.dbf
ORA-00280: change 27615990 for thread 1 is in sequence #1513


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/oradata/hr91cap/redo03.dbf
ORA-00310: archived log contains sequence 1512; sequence 1513 required
ORA-00334: archived log: '/u01/oradata/hr91cap/redo03.dbf'


SQL> RECOVER DATABASE using BACKUP CONTROLFILE UNTIL CANCEL;
ORA-00279: change 27615990 generated at 10/02/2013 15:08:30 needed for thread 1
ORA-00289: suggestion :
/u00/app/oracle/product/11.2.0.3/dbs/arch1_1513_813415794.dbf
ORA-00280: change 27615990 for thread 1 is in sequence #1513


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/oradata/hr91cap/redo01.dbf
Log applied.
Media recovery complete.
SQL>
SQL>
SQL>
SQL> RECOVER DATABASE using BACKUP CONTROLFILE UNTIL CANCEL;
ORA-00279: change 27616065 generated at 10/02/2013 15:11:04 needed for thread 1
ORA-00289: suggestion :
/u00/app/oracle/product/11.2.0.3/dbs/arch1_1513_813415794.dbf
ORA-00280: change 27616065 for thread 1 is in sequence #1513


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/oradata/hr91cap/redo02.dbf
ORA-00310: archived log contains sequence 1511; sequence 1513 required
ORA-00334: archived log: '/u01/oradata/hr91cap/redo02.dbf'


SQL> alter databse open read only;


RMAN recovery using redo logs

Note down current redo log if possible

Archive redo log if possible using alter system switch logfile;

Finally Recover redo logs if needed before opening database in resetlogs:

If not able to recover the redo logs, try logminer to get transactions.

SQL> RECOVER DATABASE using BACKUP CONTROLFILE UNTIL CANCEL;
ORA-00279: change 27615990 generated at 10/02/2013 15:08:30 needed for thread 1
ORA-00289: suggestion :
/u00/app/oracle/product/11.2.0.3/dbs/arch1_1513_813415794.dbf
ORA-00280: change 27615990 for thread 1 is in sequence #1513


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/oradata/hr91cap/redo03.dbf
ORA-00310: archived log contains sequence 1512; sequence 1513 required
ORA-00334: archived log: '/u01/oradata/hr91cap/redo03.dbf'


SQL> RECOVER DATABASE using BACKUP CONTROLFILE UNTIL CANCEL;
ORA-00279: change 27615990 generated at 10/02/2013 15:08:30 needed for thread 1
ORA-00289: suggestion :
/u00/app/oracle/product/11.2.0.3/dbs/arch1_1513_813415794.dbf
ORA-00280: change 27615990 for thread 1 is in sequence #1513


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/oradata/hr91cap/redo01.dbf
Log applied.
Media recovery complete.
SQL>
SQL>
SQL>
SQL> RECOVER DATABASE using BACKUP CONTROLFILE UNTIL CANCEL;
ORA-00279: change 27616065 generated at 10/02/2013 15:11:04 needed for thread 1
ORA-00289: suggestion :
/u00/app/oracle/product/11.2.0.3/dbs/arch1_1513_813415794.dbf
ORA-00280: change 27616065 for thread 1 is in sequence #1513


Specify log: {=suggested | filename | AUTO | CANCEL}
/u01/oradata/hr91cap/redo02.dbf
ORA-00310: archived log contains sequence 1511; sequence 1513 required
ORA-00334: archived log: '/u01/oradata/hr91cap/redo02.dbf'


SQL> alter databse open read only;


vi search and replace

vi search and replace between line 32 and 56.

:32,56s/guy/gal/g

Find and search text in unix

find . -exec grep -l "entropy" {} \; 2> /dev/null

alias rgrep='find . -type f -print | xargs grep $1'


find . -type f -name post -print | xargs grep DPassword

PS database refresh

Make sure to truncate these tables:

DELETE FROM PSAPMSGPUBHDR;
DELETE FROM PSAPMSGPUBDATA;
DELETE FROM PSAPMSGPUBCON;
DELETE FROM PSAPMSGSUBCON;
DELETE FROM PSAPMSGPUBERR;
DELETE FROM PSAPMSGPUBERRP;
DELETE FROM PSAPMSGPUBCERR;
DELETE FROM PSAPMSGPUBCERRP;
DELETE FROM PSAPMSGSUBCERR;
DELETE FROM PSAPMSGSUBCERRP;
DELETE FROM PSAPMSGPCONDATA;
DELETE FROM PSAPMSGSCONDATA;
DELETE FROM PSIBLOGHDR;
DELETE FROM PSIBLOGDATA;
DELETE FROM PSIBLOGERR;
DELETE FROM PSIBLOGERRP;
DELETE FROM PSAPMSGARCHPH;
DELETE FROM PSAPMSGARCHPD;
DELETE FROM PSAPMSGARCHPC;
DELETE FROM PSAPMSGARCHSC;
DELETE FROM PSAPMSGARCHPT;
DELETE FROM PSAPMSGARCHST;
DELETE FROM PSIBLOGHDRARCH;
DELETE FROM PSIBLOGDATAARCH;


Update sender and receiver node in following tables:
PSIBRTNGSUBDEFN
PSRTNGDFNPARM
PSIBRTNGDEFN

Update PSIBRTNGSUBDEFN set SENDERNODENAME='HRSBX' WHERE SENDERNODENAME='HRPRD';
update PSIBRTNGSUBDEFN set RECEIVERNODENAME='HRSBX' WHERE RECEIVERNODENAME='HRPRD';
update PSIBRTNGSUBDEFN set SENDERNODENAME='FNSBX' WHERE SENDERNODENAME='FNPRD';
update PSIBRTNGSUBDEFN set RECEIVERNODENAME='FNSBX' WHERE RECEIVERNODENAME='FNPRD';

update PSRTNGDFNPARM set SENDERNODENAME='HRSBX' WHERE SENDERNODENAME='HRPRD';
update PSRTNGDFNPARM set RECEIVERNODENAME='HRSBX' WHERE RECEIVERNODENAME='HRPRD';
update PSRTNGDFNPARM set SENDERNODENAME='FNSBX' WHERE SENDERNODENAME='FNPRD';
update PSRTNGDFNPARM set RECEIVERNODENAME='FNSBX' WHERE RECEIVERNODENAME='FNPRD';

update PSIBRTNGDEFN set SENDERNODENAME='HRSBX' WHERE SENDERNODENAME='HRPRD';
update PSIBRTNGDEFN set RECEIVERNODENAME='HRSBX' WHERE RECEIVERNODENAME='HRPRD';
update PSIBRTNGDEFN set SENDERNODENAME='FNSBX' WHERE SENDERNODENAME='FNPRD';
update PSIBRTNGDEFN set RECEIVERNODENAME='FNSBX' WHERE RECEIVERNODENAME='FNPRD';

Update node name:
PSMSGNODEDEFN

update PSMSGNODEDEFN set MSGNODENAME='HRSBX' WHERE MSGNODENAME='HRPRD';
update PSMSGNODEDEFN set MSGNODENAME='FNSBX' WHERE MSGNODENAME='FNPRD';


Update trusted node:
PSTRUSTNODES
update PSTRUSTNODES SET MSGNODENAME='HRSBX' WHERE MSGNODENAME='HRPRD';
update PSTRUSTNODES SET MSGNODENAME='FNSBX' WHERE MSGNODENAME='FNPRD';

Update IBPASSWORD:
update PSMSGNODEDEFN set IBPASSWORD='XYZ'
WHERE MSGNODENAME in ('HRSBX','FNSBX');

Few SQLs

Find blocking sessions
select 'alter system disconnect session '''sid','serial#'''immediate;' from V$SESSION where sid in (select sid from V$LOCK where block=1);

Find current Running SQLs
select sesion.sid,
sesion.username,
sesion.machine,
sesion.program,
sesion.serial#,
0ptimizer_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


Finding DB Character set
select value$ from sys.props$ where name='NLS_CHARACTERSET';

STATs update
on a the entire schema: 

EXEC DBMS_STATS.gather_schema_stats (ownname => 'SYSADM', cascade =>true,estimate_percent => dbms_stats.auto_sample_size);
on a single table: 
EXEC DBMS_STATS.gather_table_stats ('SYSADM','PS_TABLE',cascade=>true)

Finding the remaining time for a long running query
select * from (
select opname, target, sofar, totalwork,
units, elapsed_seconds, message,elapsed_seconds*(totalwork-sofar)/sofar as time_rem
from v$session_longops
where sid = and serial# = 
order by start_time desc)
where rownum <=1;

Finding RMAN backup status

selectSESSION_KEY, INPUT_TYPE, STATUS,to_char(START_TIME,'mm/dd/yy hh24:mi') start_time,to_char(END_TIME,'mm/dd/yy hh24:mi') end_time,elapsed_seconds/3600 hrsfrom V$RMAN_BACKUP_JOB_DETAILSorder by session_key;

find out the impdp status of a table-how many rows got imported
select sum(bytes)/1048576
from dba_segments
where owner = 'SCOTT'
and segment_type = 'TEMPORARY'
and tablespace_name = TABSPACENAME

SGA usage
select round(sum(bytes)/1024/1024,2) total_sga,
round(sum(decode(name,'free memory',bytes,0))/1024/1024,2) free,
round((sum(decode(name,'free memory',bytes,0))/1024/1024)/(sum(bytes)/1024/1024)*100,2) free_perfromv$sgastat;

select * from ( select POOL, NAME, BYTES, BYTES/1048576 as MBytes from v$sgastat where pool='shared pool' order by BYTES desc ) where rownum <= 25;

Finding details on a peoplesoft process instance from DB

select * from PSPRCSQUE where PRCSINSTANCE=297037;
select * from PS_PRCSRQSTDIST where PRCSINSTANCE=297037;
select RUNSTATUS from PSPRCSRQST where PRCSINSTANCE=297037;

Finding total size of a Oracle DB
select a.data_size+b.temp_size+c.redo_size+d.controlfile_size "total_size in MB" 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;


Long Running Operations

SELECT s.sid,
       s.serial#,
       s.machine,
       TRUNC(sl.elapsed_seconds/60) || ':' || MOD(sl.elapsed_seconds,60) elapsed,
       TRUNC(sl.time_remaining/60) || ':' || MOD(sl.time_remaining,60) remaining,
       ROUND(sl.sofar/sl.totalwork*100, 2) progress_pct
FROM   v$session s,
       v$session_longops sl
WHERE  s.sid     = sl.sid
AND    s.serial# = sl.serial#;