Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 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