0% found this document useful (0 votes)
80 views4 pages

Tuning & Diagnostic RMAN

This document provides instructions for tuning and monitoring RMAN backups, including: 1) Using parallelization to allocate channels for parallel backups of datafiles. 2) Monitoring RMAN sessions by querying V$PROCESS and V$SESSION. 3) Using the DEBUG option to log debug output to a trace file. 4) Enabling and using change tracking to perform fast incremental backups of changed blocks. 5) Performing diagnostic checks and repairs using RMAN and DBMS_HM, including validating backups and databases.

Uploaded by

Ahmed Nagy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
80 views4 pages

Tuning & Diagnostic RMAN

This document provides instructions for tuning and monitoring RMAN backups, including: 1) Using parallelization to allocate channels for parallel backups of datafiles. 2) Monitoring RMAN sessions by querying V$PROCESS and V$SESSION. 3) Using the DEBUG option to log debug output to a trace file. 4) Enabling and using change tracking to perform fast incremental backups of changed blocks. 5) Performing diagnostic checks and repairs using RMAN and DBMS_HM, including validating backups and databases.

Uploaded by

Ahmed Nagy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 4

Tuning RMAN

============
Parallelization
----------------
RMAN> run {
ALLOCATE CHANNEL c1 DEVICE TYPE disk;
ALLOCATE CHANNEL c2 DEVICE TYPE disk;
ALLOCATE CHANNEL c3 DEVICE TYPE disk;
BACKUP
(DATAFILE 1,2 CHANNEL c1)
(DATAFILE 3,4 CHANNEL c2)
(DATAFILE 5 CHANNEL c3);
}

Monitor RMAN Session


---------------------
RMAN> backup database;
SQL>
COLUMN CLIENT_INFO FORMAT a30
COLUMN SID FORMAT 999
COLUMN SPID FORMAT 9999
SQL> SELECT s.sid, p.spid, s.client_info FROM v$process p, v$session s WHERE p.addr
= s.paddr AND CLIENT_INFO LIKE 'rman%';
SQL> SELECT OPNAME, CONTEXT, SOFAR, TOTALWORK,ROUND(SOFAR/TOTALWORK*100,2)
"%_COMPLETE" FROM V$SESSION_LONGOPS WHERE OPNAME LIKE 'RMAN%' AND OPNAME NOT LIKE
'%aggregate%' AND TOTALWORK != 0 AND SOFAR <> TOTALWORK;

Using DEBUG Option


-------------------
CMD> rman target / debug trace trace.log
RMAN> backup database;
RMAN>
run {
debug on;
allocate channel c1 type disk;
backup datafile 3;
debug off;
backup datafile 4; }
CMD> more trace.log

Using Change Tracking (Fast Incremental Backup)


----------------------
Enable
******
SQL> COLUMN FILENAME FORMAT A32
SQL> SELECT * FROM V$BLOCK_CHANGE_TRACKING;
SQL> HOST MKDIR C:\app\Administrator\flash_recovery_area\orcl\BLOCK_CHANGE
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE
'C:\app\Administrator\flash_recovery_area\orcl\BLOCK_CHANGE\ORCL_BLOCK_TRACK.LOG';
SQL> SELECT * FROM V$BLOCK_CHANGE_TRACKING;
SQL> SELECT PROGRAM FROM V$SESSION WHERE USERNAME IS NULL;
SQL> SELECT PROGRAM FROM V$SESSION WHERE USERNAME IS NULL AND PROGRAM LIKE '%CTWR
%';

SQL> host rman target /


RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;
RMAN> exit
SQL> update scott.dept set dname='uuu' where deptno=40;
SQL> commit;
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
SQL> SELECT file#, avg(datafile_blocks),
avg(blocks_read),
avg(blocks_read/datafile_blocks)
* 100 AS PCT_READ_FOR_BACKUP,
avg(blocks)
FROM v$backup_datafile
WHERE used_change_tracking = 'YES'
AND incremental_level > 0
GROUP BY file#;

Disable
********
SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
SQL> SELECT * FROM V$BLOCK_CHANGE_TRACKING;
SQL> SELECT PROGRAM FROM V$SESSION WHERE USERNAME IS NULL;
SQL> SELECT PROGRAM FROM V$SESSION WHERE USERNAME IS NULL AND PROGRAM LIKE '%CTWR
%';

Diagnostic RMAN
================
Data Recovery Advisor
----------------------
Using EM
+=+=+=+=+
Open EM>advisor central>Data Recovery Advisor> list failure
RMAN> backup database;
CMD> sqlplus / as sysdba
SQL> host dir C:\app\Administrator\oradata\orcl\USERS*.dbf
SQL> host del C:\app\Administrator\oradata\orcl\USERS01.DBF### before run delete
command unlock data file
SQL> select * from scott.dept; ### ERROR
SQL> select * from scott.emp; ### ERROR
Open EM>advisor central>Data Recovery Advisor> refresh

Using SQL
+=+=+=+=+=
RMAN> LIST FAILURE;
SQL> host dir C:\app\Administrator\oradata\orcl\USERS*.dbf
SQL> host del C:\app\Administrator\oradata\orcl\USERS01.DBF### before run delete
command unlock data file
SQL> select * from scott.dept; ### ERROR
SQL> select * from scott.emp; ### ERROR
RMAN> LIST FAILURE;
RMAN> ADVISE FAILURE;
RMAN> REPAIR FAILURE PREVIEW;
RMAN> CHANGE FAILURE 202 PRIORITY LOW;
RMAN> LIST FAILURE;
RMAN> LIST FAILURE all;
RMAN> REPAIR FAILURE NOPROMPT;

Proactive Checks
----------------
CMD> dbv file= C:\app\Administrator\oradata\orcl\USERS01.DBF blocksize=8192

CMD> exp hr/hr tables=departments file=c:\dept.dmp

SQL> ANALYZE INDEX scott.pk_dept VALIDATE STRUCTURE;


SQL> SELECT BLOCKS , PCT_USED, LF_ROWS , DEL_LF_ROWS FROM INDEX_STATS;
Detect Corruption
******************
SQL> show parameter DB_ULTRA_SAFE ### in 11g only

SQL> show parameter DB_BLOCK_CHECKING

SQL> show parameter DB_BLOCK_CHECKSUM

SQL> show parameter DB_LOST_WRITE_PROTECT

Block Media Recovery


*********************
RMAN> BLOCKRECOVER DATAFILE 5 BLOCK 540 <UNTIL TIME 'SYSDATE-2'> | UNTIL SCN |
UNTIL SEQUENCE ;
RMAN> BLOCKRECOVER CORRUPTION LIST;
SQL> select * from V$DATABASE_BLOCK_CORRUPTION;
RMAN> BLOCKRECOVER DATAFILE 5 BLOCK 3;

Health Monitor (DBMS_HM)


***************
SQL> SELECT name FROM v$hm_check WHERE internal_check='N';
SQL>
SET LINESIZE 120
COLUMN check_name FORMAT A30
COLUMN parameter_name FORMAT A15
COLUMN type FORMAT A15
COLUMN default_value FORMAT A15
COLUMN description FORMAT A20
SQL> SELECT c.name check_name, p.name parameter_name, p.type, p.default_value,
p.description
FROM v$hm_check_param p, v$hm_check c
WHERE p.check_id = c.id
AND c.internal_check = 'N'
ORDER BY c.name;
SQL>
BEGIN
DBMS_HM.run_check (
check_name => 'DB Structure Integrity Check',
run_name => 'my_test_run');
END;
/

SQL>
SET LONG 100000
SET LONGCHUNKSIZE 1000
SET PAGESIZE 1000
SET LINESIZE 512
SQL> SELECT DBMS_HM.get_run_report('MY_TEST_RUN') FROM dual;
SQL>
column value format a50
column name format a24
set linesize 100
SQL> select * from v$diag_info;

Using Automatic Diagnostic Repository


*******************************************
CMD> adrci
adrci> help
adrci> show homes
adrci> set homepath diag\rdbms\orcl\orcl
adrci> show incident
adrci> show incident -mode basic
adrci> show incident -mode detail
adrci> show alert -tail 10
adrci> describe alert_ext
adrci> show alert -p "MODULE_ID like '%ARCHIVE%'"
adrci> show alert -p "MODULE_ID like '%SMON%'"
adrci> show alert -p "MODULE_ID like '%SCHEDULER%'"
adrci> show alert -p "MESSAGE_TEXT like '%ORA-600%'"
adrci> show alert -p "MESSAGE_TEXT like '%ORA-%600%'"
adrci> show tracefile %reco% -rt
adrci> show tracefile %ckpt% -rt
adrci> show hm_run
adrci> create report hm_run my_test_run
adrci> show report hm_run my_test_run
adrci> exit
CMD> more c:\app\administrator\diag\rdbms\orcl\orcl\hm\HMREPORT_my_test_run.hm

Validate Database
******************
# Check for physical corruption of all database files.
RMAN> VALIDATE DATABASE;

# Check for physical and logical corruption of a tablespace.


RMAN> VALIDATE CHECK LOGICAL TABLESPACE USERS;

# Check for physical and logical corruption of a datafile.


RMAN> VALIDATE CHECK LOGICAL DATAFILE 4;

# Check for physical corruption of all archived redo logs files.


RMAN> VALIDATE ARCHIVELOG ALL;

# Check for physical and logical corruption of the controlfile.


RMAN> VALIDATE CHECK LOGICAL CURRENT CONTROLFILE;

# Check for physical and logical corruption of a specific backupset.


RMAN> VALIDATE CHECK LOGICAL BACKUPSET 30

You might also like