JENiSOFT SOLUTIONS #40A, G2 Ponnammal Street, Kumaran Colony, Vadapalni Chennai-600026 Mobile: 98409 41415 Nearest Land Mark: SRM UNIVERCITY JENiSOFT SOLUTIONS 2 Backup and Recovery Physical backup and recovery o Cold backup and recovery o Hot backup and recovery Logical backup and recovery o Export o Import RMAN backup and recovery o Offline backup and recovery o Online backup and recovery Physical backup and recovery Cold backup and recovery Offline backup NoArchive log backup Consistent backup o Datafiles o Control files o Redo log files o Password file o pfile SQL > select name from v$datafile; SQL > select name from v$controlfile; SQL > select member from v$logfile; SQL > create pfile=/backup/cold_prod/initprod.ora from spfile; JENiSOFT SOLUTIONS 3 SQL > shutdown immediate; $ cp /opt/oradata/prod/*.dbf /backup/cold_prod/ $ cp /opt/oradata/prod/*.ctl /backup/cold_prod/ $ cp /opt/oradata/prod/*.rdo /backup/cold_prod/ $ cp $ORACLE_HOME/dbs/orapwprod /backup/cold_prod/ SQL > startup
Reovery datafile/Contol file: SQL > shutdown abort; $ cp /backup/cold_prod/*.dbf /opt/oradata/prod/ $ cp /backup/cold_prod/*.ctl /opt/oradata/prod/ $ cp /backup/cold_prod/*.rdo /opt/oradata/prod/ SQL > startup Hot backup and recovery: Online backups Archive log backups Inconsistent backups o Tablespaces (datafiles) o Control files SQL > select tablespace_name from dba_tablespaces; SQL> select file_name from dba_data_files where tablespace_name=DATA; FILE_NAME /opt/oradata/prod/data01.dbf /opt/oradata/prod/data02.dbf JENiSOFT SOLUTIONS 4 SQL > alter tablespace data begin backup; SQL > ! cp /opt/oradata/prod/data01.dbf /backup/hot_prod/ SQL > ! cp /opt/oradata/prod/data02.dbf /backup/hot_prod/ SQL > alter tablespace data end backup;
SQL > alter tablespace data begin backup;
SQL > alter tablespace data end backup; SQL > alter tablespace data begin backup; SQL > select * from v$backup; FILE # STATUS 1 NOT ACTIVE 2 NOT ACTIVE 3 ACTIVE 4 ACTIVE 5 CAN NOT READ HEADER 6 FILE NOT FOUND SQL > alter tablespace data end backup;
Datafile
DATA01.DBF JENiSOFT SOLUTIONS 5 SQL > select * from v$backup; FILE # STATUS 1 NOT ACTIVE 2 NOT ACTIVE 3 NOT ACTIVE 4 NOT ACTIVE 5 CAN NOT READ HEADER 6 FILE NOT FOUND SQL > alter tablespace data begin backup; SQL > ! cp /opt/oradata/prod/data01.dbf /backup/hot_prod/ SQL > ! cp /opt/oradata/prod/data02.dbf /backup/hot_prod/ SQL > shutdown abort; SQL > startup Database mounted. ORA-01157: cannot identify/lock data file 3 - see DBWR trace file ORA-01110: data file 3: '/opt/oradata/prod/data01.dbf SQL > select * from v$backup; FILE # STATUS 1 NOT ACTIVE 2 NOT ACTIVE 3 ACTIVE 4 ACTIVE SQL > alter database end backup;
JENiSOFT SOLUTIONS 6 SQL > select * from v$backup; FILE # STATUS 1 NOT ACTIVE 2 NOT ACTIVE 3 NOT ACTIVE 4 NOT ACTIVE SQL > recover database; SQL > alter database open; SQL > alter tablespace data begin backup; SQL > ! cp /opt/oradata/prod/data01.dbf /backup/hot_prod/ SQL > ! cp /opt/oradata/prod/data02.dbf /backup/hot_prod/ SQL > alter tablespace data end backup; Recover Corrupted Datafile: SQL > alter database datafile 4 offline drop; SQL > ! cp /backup/hot_prod/data02.dbf /opt/oradata/prod/ SQL > recover datafile 4; SQL > alter database datafile 4 online; Recover Corrupted Tablespace: SQL > alter tablespace data offline; SQL > cp /backup/hot_prod/data01.dbf /opt/oradata/prod/ SQL > cp /backup/hot_prod/data02.dbf /opt/oradata/prod/ SQL > recover tablespace data; SQL > alter tablespace data online;
JENiSOFT SOLUTIONS 7 Recover Corrupted Read only tablespace: SQL > alter tablespace data offline; SQL > cp /backup/hot_prod/data01.dbf /opt/oradata/prod/ SQL > alter tablespace data online; Recover Corrupted SYSTEM tablespace: $ cp /backup/hot_prod/system01.dbf /opt/oradata/prod/ $ sqlplus / as sysdba SQL > startup mount SQL > recover database; SQL > alter database open; Recover Whole database corrupted (ALL DATAFILES) $ cp /backup/hot_prod/*.dbf /opt/oradata/prod/ $ sqlplus / as sysdba SQL > startup mount; SQL > recover database; SQL > alter database open; Backup control files Adding, dropping, or renaming datafiles Adding or dropping a tablespace, or altering the read-write state of the tablespace Adding or dropping redo log files or groups Two types of Control file backups o Binary backup o Trace backup
JENiSOFT SOLUTIONS 8 SQL > ALTER DATABASE BACKUP CONTROLFILE TO '/backup/hot_prod/control.bkp'; SQL > ALTER DATABASE BACKUP CONTROLFILE TO TRACE; SQL > ALTER DATABASE BACKUP CONTROLFILE TO TRACE as /backup/hot_prod/; Recover Corrupted control file using Binary backup: $ vi $ORACLE_HOME/dbs/initprod.ora Control_files=/backup/hot_prod/control.bkp $ sqlplus / as sysdba SQL > startup mount SQL > recover database using backup controlfile; SQL > alter database open resetlogs; Recover Corrupted Control file using Trace backup: $ vi /backup/hot_prod/control_001_123.trc CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS ARCHIVELOG MAXLOGFILES 50 MAXLOGMEMBERS 5 MAXDATAFILES 100 MAXINSTANCES 1 MAXLOGHISTORY 453 LOGFILE GROUP 1 '/opt/oradata/prod/redo01.rdo' SIZE 100M, GROUP 2 '/opt/oradata/prod/redo02.rdo' SIZE 100M, GROUP 3 '/opt/oradata/prod/redo03.rdo' SIZE 100M DATAFILE '/opt/oradata/prod/system01.dbf', JENiSOFT SOLUTIONS 9 '/opt/oradata/prod/undotbs01.dbf', '/opt/oradata/prod/sysaux01.dbf', '/opt/oradata/prod/data01.dbf', '/opt/oradata/prod/data02.dbf', '/opt/oradata/prod/users01.dbf' CHARACTER SET WE8ISO8859P1 ;
$ cat > /backup/hot_prod/create_control.sql CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS ARCHIVELOG MAXLOGFILES 50 MAXLOGMEMBERS 5 MAXDATAFILES 100 MAXINSTANCES 1 MAXLOGHISTORY 453 LOGFILE GROUP 1 '/opt/oradata/prod/redo01.rdo' SIZE 100M, GROUP 2 '/opt/oradata/prod/redo02.rdo' SIZE 100M, GROUP 3 '/opt/oradata/prod/redo03.rdo' SIZE 100M DATAFILE '/opt/oradata/prod/system01.dbf', '/opt/oradata/prod/undotbs01.dbf', '/opt/oradata/prod/sysaux01.dbf', '/opt/oradata/prod/data01.dbf', JENiSOFT SOLUTIONS 10 '/opt/oradata/prod/data02.dbf', '/opt/oradata/prod/users01.dbf' CHARACTER SET WE8ISO8859P1 ; $ sqlplus / as sysdba SQL > startup nomount SQL > @/backup/hot_prod/create_control.sql SQL > recover database using backup controlfile; SQL > alter database open resetlogs; Physical Backup Incomplete Recovery: Time Based incomplete recovery Change or SCN based incomplete recovery Cancel based incomplete recovery Log Miner:
SQL > show parameter utl_file_dir; SQL > alter system set utl_file_dir=/backup/log scope=spfile; SQL > shutdown immediate; SQL > startup
Archive log files Or Redo Log files Log Miner Dictionary File Log Miner V$logmnr_contents JENiSOFT SOLUTIONS 11 SQL > exec DBMS_LOGMNR_D.BUILD('dictionary.log','/backup/log/', DBMS_LOGMNR_D.STORE_IN_FLAT_FILE); SQL > exec DBMS_LOGMNR.ADD_LOGFILE ( LOGFILENAME => '/opt/arch/arch_123.arc', OPTIONS => DBMS_LOGMNR.NEW); SQL > exec DBMS_LOGMNR.ADD_LOGFILE ( LOGFILENAME => '/opt/arch/arch_124.arc',OPTIONS =>DBMS_LOGMNR.ADDFILE); SQL > exec dbms_logmnr.start_logmnr ( dictfilename=>'/backup/log/dictionary.log'); SQL > select username, to_char(timestamp,'mm/dd/yy hh24:mi:ss'), scn, sql_redo, operations from v$logmnr_contents where operations='DROP' and seg_owner='STANLY'; SQL > exec dbms_logmnr.end_logmnr; Create Testing Database or Database Cloning using Physical backups: Linux1: SQL > select name from v$datafile; SQL > select member from v$logfile; SQL > select name from v$archived_log; SQL > create pfile=/backup/prod/initprod.ora from spfile; SQL > alter database backup controlfile to trace as /backup/prod/; SQL > shutdown immediate; $ cp /opt/oradata/prod/*.dbf /backup/prod/ $ cp /opt/oradata/prod/*.rdo /backup/prod/ SQL > startup $ scp r /backup/prod/* oracle@192.168.1.101:/u01/oradata/test/ $ scp r /opt/prod/arch/*.arc oracle@192.168.1.101:/u01/test/arch/
JENiSOFT SOLUTIONS 12 Linux2 : (Cloning Server or Auxiliary Server) $ mkdir /u01/oradata/test $ mkdir /u01/admin/test/bdump $ mkdir /u01/admin/test/cdump $ mkdir /u01/admin/test/udump $ mkdir /u01/admin/test/adump $ mkdir /u01/admin/test/create $ mkdir /u01/admin/test/pfile $ mv /u01/oradata/test/initprod.ora $ORACLE_HOME/dbs/inittest.ora $ vi $ORACLE_HOME/dbs/inittest.ora db_unique_name=test db_name=test control_files=/u01/oradata/test/contorl01.ctl background_dump_dest=/u01/admin/test/bdump core_dump_dest=/u01/admin/test/cdump user_dump_dest=/u01/admin/test/udump audit_dump_dest=/u01/admin/test/adump log_archive_dest=/u01/test/arch $ cat > /u01/oradata/prod/create_control.sql CREATE CONTROLFILE SET DATABASE "TEST" RESETLOGS NOARCHIVELOG MAXLOGFILES 50 MAXLOGMEMBERS 5 MAXDATAFILES 100 MAXINSTANCES 1 JENiSOFT SOLUTIONS 13 MAXLOGHISTORY 453 LOGFILE GROUP 1 '/u01/oradata/test/redo01.rdo' SIZE 100M, GROUP 2 '/u01/oradata/test/redo02.rdo' SIZE 100M, GROUP 3 '/u01/oradata/test/redo03.rdo' SIZE 100M DATAFILE '/u01/oradata/test/system01.dbf', '/u01/oradata/test/undotbs01.dbf', '/u01/oradata/test/sysaux01.dbf', '/u01/oradata/test/data01.dbf', '/u01/oradata/test/data02.dbf', '/u01/oradata/test/users01.dbf' CHARACTER SET WE8ISO8859P1 ; $ export ORACLE_SID=test $ orapwd file=$ORACLE_HOME/dbs/orapwtest password=sys $ sqlplus / as sysdba SQL > startup nomount SQL > @/u01/oradata/test/create_control.sql Time based incomplete Recovery: SQL > recover database until time to_timestamp(2010-11-17 13:24:12,YYYY-MM-DD HH24:MI:SS) using backup controlfile; Change or SCN based incomplete Recovery: SQL > recover database until change 12345 using backup controlfile; JENiSOFT SOLUTIONS 14 Cancel based incomplete Recovery: SQL > recover database until cancel using backup controlfile; SQL > alter database open resetlogs; SQL > create spfile from pfile; SQL > select instance_name,status from v$instance; Client and Server Architecture
$ lsnrctl status PROD_LIST $ lsnrctl start PROD_LIST $ lsnrctl stop PROD_LIST $ lsnrctl reload PROD_LIST ORA-12571: TNS:packet writer failure ORA-12535: TNS:operation timed out TNS-03505: Failed to resolve name ORA-12154 TNS:could not resolve service name
JENiSOFT SOLUTIONS 17 $ more sqlnet.ora NAMES.DIRECTORY_PATH= (TNSNAMES) TRACE_LEVEL_CLIENT = OFF SQLNET.EXPIRE_TIME = 30 Logical backup: Export Import Export Parameters Import Parameters Full=Y/N Full=Y/N Owner=<user name> Fromuser=<user name> Touser=<user name> Tables=<user name>.<table name> Fromuser=<user name> Touser=<user name> Tables=<table name> Tablespaces=<tablespace name> Tablespaces=<tablespace name> File=<dump_file_name.dmp> File=<dump_file_name.dmp> Log=<log_file_name.log> Log=<log_file_name.log> Query= where <condition> Transport_tablespace=Y/N Transport_tablespace=Y/N Rows=Y/N Rows=Y/N Indexes=Y/N Indexes=Y/N Constraints= Y/N Constraints= Y/N Grants= Y/N Grants= Y/N JENiSOFT SOLUTIONS 18 Compress=Y/N Ignore=Y/N Direct=Y/N Buffer=<size> Buffer=<size> Recordlength=<size> Recordlength=<size> Filesize=<size> Filesize=<size> FLASHBACK_SCN=<SCN number> FLASHBACK_TIME=<time> TTS_FULL_CHECK=Y/N COMMIT=Y/N COMPILE=Y/N SHOW=Y/N DATAFILES=<name of datafile> INDEXFILE=<index_file_name.sql> Full database export: $ exp \/ as sysdba\ full=y file=full.dmp log=full.log $ exp system/sys@prod123 full=y file=full.dmp log=full.log Full database import: $ imp \/ as sysdba\ full=y file=full.dmp log=full1.log $ imp \/ as sysdba\ full=y file=full.dmp show=y log=full_ddl.log $ imp \/ as sysdba\ full=y file=full.dmp indexfile=index.sql log=index.log $ imp \/ as sysdba\ full=y file=full.dmp indexes=N log=full1.log SQL > @index.sql User or Schema level import: $ imp \/ as sysdba\ file=full.dmp fromuser=stanly touser=john log=user.log JENiSOFT SOLUTIONS 19 Table level import: $ imp system/sys@prod123 file=full.dmp fromuser=stanly tables=emp touser=john log=tab.log User or Schema level export and import: $ exp system/sys@apps123 owner=stanly file=sta.dmp log=sta.log $ imp system/sys@prod123 file=sta.dmp fromuser=stanly touser=john log=sta1.log $ imp system/sys@prod123 file=sta.dmp fromuser=stanly tables=emp touser=john log=tab2.log Table level export and import: $ exp system/sys@prod123 file=emp.dmp tables=stanly.emp log=emp.log $ exp system/sys@prod123 file=emp.dmp tables=stanly.emp Query= where salary>=4000 log=emp.log $ imp system/sys@prod123 file=emp.dmp fromuser=stanly tables=emp touser=john log=tab1.log Tablespace level export: $ export ORACLE_SID=prod $ sqlplus / as sysdba SQL > select file_name from dba_data_files where tablespace_name=DATA; FILE_NAME /opt/oradata/prod/data01.dbf SQL > alter tablespace data read only; $ exp \/ as sysdba\ file=data.dmp tablespaces=data transport_tablespace=Y tts_full_check=Y log=data.log $ cp /opt/oradata/prod/data01.dbf /opt/oradata/test/data01.dbf JENiSOFT SOLUTIONS 20 SQL > alter tablespace data read write; Tablespace Level Import: $ export ORACLE_SID=test $ imp \/ as sysdba\ file=data.dmp tablespaces=data transport_tablespace=Y datafiles=/opt/oradata/test/data01.dbf log=data1.log SQL > alter tablespace data read write; Datapump export and import Command-line clients, expdp and impdp DBMS_DATAPUMP PL/SQL package DBMS_METADATA PL/SQL package expdp and impdp, invoke the Data Pump Export utility and Data Pump Import utility expdp and impdp clients use the procedures provided in the DBMS_DATAPUMP PL/SQL package to execute export and import commands The DBMS_METADATA package provides a centralized facility for the extraction, manipulation, and resubmission of dictionary metadata SQL > select * from dba_datapump_jobs; OWNER_NAME - User that initiated the job JOB_NAME - Name of the job OPERATION - Type of operation being performed JOB_MODE - Mode of operation being performed STATE - Current job state DEGREE - Number of worker processes performing the operation
JENiSOFT SOLUTIONS 21 SQL > select * from v$session_longops; USERNAME - job owner OPNAME - job name TARGET_DESC - job operation SOFAR - megabytes (MB) transferred thus far during the job TOTALWORK - estimated number of megabytes (MB) in the job UNITS - 'MB' Default Locations for Dump, Log, and SQL Files SQL> CREATE DIRECTORY dumpdir AS '/backup/export/prod'; SQL> GRANT READ, WRITE ON DIRECTORY dumpdir TO hr; SQL> SELECT directory_name, directory_path FROM dba_directories WHERE directory_name='DUMPDIR'; Export Parameter(expdp) Import Parameters(impdp) ATTACH =<job_name> ATTACH =<job_name> SQL > select * from dba_datapump_jobs; $ expdp hr/hr attach=exp_full $ impdp hr/hr attach=imp_full CONTENT ={ALL | DATA_ONLY | METADATA_ONLY} CONTENT ={ALL | DATA_ONLY | METADATA_ONLY} $ expdp hr/hr@test123 full=y dirctory=dumpdir dumpfile=full.dmp logfile=full.log $ impdp hr/hr@apps123 dirctory=dumpdir dumpfile=full.dmp content=metadata_only logfile=full1.log DIRECTORY =<dump directory name> DIRECTORY =<dump directory name> JENiSOFT SOLUTIONS 22 DUMPFILE =<dump file name> expdat.dmp DUMPFILE =<dump file name> ESTIMATE ={BLOCKS | STATISTICS} ESTIMATE ={BLOCKS | STATISTICS} ESTIMATE_ONLY={ y | n } $ expdp hr/hr@test123 dirctory=dumpdir dumpfile=full.dmp ESTIMATE_ONLY=y logfile=full.log $ expdp hr/hr@test123 dirctory=dumpdir dumpfile=full.dmp ESTIMATE_ONLY=y ESTIMATE=STATISTICS logfile=full.log EXCLUDE={default : None} EXCLUDE={default : None} EXCLUDE=GRANT EXCLUDE=CONSTRAINT EXCLUDE=SCHEMA:"='HR'" EXCLUDE=VIEW,PACKAGE, FUNCTION SQL > select * from DATABASE_EXPORT_OBJECTS; SQL > select * from SCHEMA_EXPORT_OBJECTS; SQL > select * from TABLE_EXPORT_OBJECTS; $ expdp hr/hr full=y DIRECTORY=dpump_dir DUMPFILE=hr_exclude.dmp EXCLUDE=VIEW,PACKAGE logfile=hr.log $ impdp hr/hr full=y DIRECTORY=dpump_dir DUMPFILE=hr_exclude.dmp EXCLUDE=CONSTRAINT logfile=hr.log FILESIZE=integer[B | K | M | G] FILESIZE=integer[B | K | M | G] $ expdp hr/hr full= y DIRECTORY=dpump_dir DUMPFILE=hr_3m.dmp FILESIZE=3M logfile=full.log FLASHBACK_SCN=scn_value FLASHBACK_SCN=scn_value $ expdp hr/hr full=y DIRECTORY=dpump_dir1 DUMPFILE=hr_scn.dmp FLASHBACK_SCN=384632 logfile=scn.log JENiSOFT SOLUTIONS 23 $ impdp hr/hr full=y DIRECTORY=dpump_dir1 DUMPFILE=hr_scn.dmp FLASHBACK_SCN=384632 FLASHBACK_TIME="TO_TIMESTAMP(time- value)" FLASHBACK_TIME="TO_TIMESTAMP(time-value)" $ expdp hr/hr full=y DIRECTORY=dpump_dir1 DUMPFILE=hr_time.dmp FLASHBACK_TIME="TO_TIMESTAMP('25-08-2003 14:35:00', 'DD-MM-YYYY HH24:MI:SS')" logfile=time.log $ impdp hr/hr full=y DIRECTORY=dpump_dir1 DUMPFILE=hr_time.dmp FLASHBACK_TIME="TO_TIMESTAMP('25-08-2003 14:35:00', 'DD-MM-YYYY HH24:MI:SS')" logfile=time.log FULL= { y | n } FULL= { y | n } $ expdp hr/hr@test123 full=y dirctory=dumpdir dumpfile=full.dmp logfile=full.log $ impdp hr/hr@apps123 dirctory=dumpdir dumpfile=full.dmp logfile=full1.log
JENiSOFT SOLUTIONS 42 Target DB server: $ cat >> $ORACLE_HOME/network/admin/tnsnames.ora test123 = ( DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = test) ) ) $ export ORACLE_SID=PROD $ rman target / RMAN > connect catalog rman/rman123@apps123 RMAN > connect auxiliary sys/sys@test123 RMAN > run { Set until time to_date(2010-Nov-18 10:30:00); # Set until scn 12345; # Set until sequence 170; Duplicate target database to test; } RMAN > exit;
JENiSOFT SOLUTIONS 43 Auxiliary DB server: $ export ORACLE_SID=test $ sqlplus / as sysdba SQL > select name from v$database; NAME TEST SQL > select status from v$instance; STATUS OPEN Target DB Server: $ export $ORACLE_SID=PROD $ sqlplus / as sysdba SQL > shutdown immediate; SQL > exit; $ rman target / catalog rman/rman123@apps123 RMAN > startup mount RMAN > run { set until time to_date(2010-Nov-18 10:30:00); # set until scn 1000; # set until sequence 9923; restore database; recover database; open resetlogs database; } JENiSOFT SOLUTIONS 44 RMAN Configurations: RMAN> SHOW ALL; RMAN > CONFIGURE RETENTION POLICY TO REDUNDANCY 1; RMAN > CONFIGURE RETENTION POLICY TO recovery window of 10 days; RMAN > CONFIGURE BACKUP OPTIMIZATION ON; RMAN > CONFIGURE BACKUP OPTIMIZATION OFF; RMAN > CONFIGURE DEFAULT DEVICE TYPE TO DISK; RMAN > CONFIGURE DEFAULT DEVICE TYPE TO SBT; RMAN > CONFIGURE DEVICE TYPE "SBT" PARALLELISM 2; RMAN > CONFIGURE DEVICE TYPE DISK PARALLELISM 2; RMAN > CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT /opt/rman_%U; RMAN > RUN { ALLOCATE CHANNEL d1 DEVICE TYPE DISK FORMAT '/u01/rman_%U'; ALLOCATE CHANNEL d2 DEVICE TYPE DISK FORMAT '/u02/rman_%U'; BACKUP INCREMENTAL LEVEL 0 DATABASE; RELEASE CHANNEL d1; RELEASE CHANNEL d2; } RMAN > CONFIGURE MAXSETSIZE TO UNLIMITED; RMAN > CONFIGURE SNAPSHOT CONTROLFILE NAME TO /backup/cf_snap.f'; RMAN > CONFIGURE CONTROLFILE AUTOBACKUP OFF; RMAN > CONFIGURE CONTROLFILE AUTOBACKUP ON; RMAN > CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; RMAN > CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET; JENiSOFT SOLUTIONS 45 RMAN > CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY; RMAN > CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET; RMAN > CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; RMAN > CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY; RMAN> CONFIGURE EXCLUDE FOR TABLESPACE example; RMAN> CONFIGURE EXCLUDE FOR TABLESPACE example clear; RMAN > list backup; RMAN > list backup of database; RMAN > list backup of archivelog; RMAN > list backup of controlfile; RMAN > list backup of tablespace users; RMAN > list backup of datafile 10; RMAN > list copy of database; RMAN > list copy of archivelog; RMAN > list copy of controlfile; RMAN > list copy of tablespace users; RMAN > list copy of datafile 10; RMAN > crosscheck backup; RMAN > crosscheck backup of database; RMAN > crosscheck backup of archivelog; RMAN > crosscheck backup of controlfile; RMAN > crosscheck backup tablespace users; RMAN > crosscheck backup of datafile 10; RMAN > validate backup database; JENiSOFT SOLUTIONS 46 RMAN > validate backup archivelog all; RMAN > delete expired backup; RMAN > delete noprompt expired backup of database; RMAN > delete noprompt expired backup of archivelog; RMAN > delete noprompt expired backup of controlfile; RMAN > delete noprompt expired backup tablespace users; RMAN > delete noprompt expired backup of datafile 10; RMAN > report need backup; RMAN > report obsolete; RMAN > delete obsolete; RMAN > report schema; RMAN > backup copy of database; RMAN > backup copy of tablespace users; RMAN > backup copy of datafile 10; RMAN > backup copy of archivelog all; RMAN > backup copy of controlfile; RMAN > set maxcorrupt for datafile 1 to 10; RMAN > CHANGE BACKUPSET 100 AVAILABLE; RMAN > CHANGE BACKUP OF SPFILE COMPLETED BEFORE 'SYSDATE-1' UNAVAILABLE; RMAN > BACKUP DATABASE KEEP FOREVER NOLOGS; RMAN > BACKUP DATABASE KEEP FOREVER LOGS; RMAN > CHANGE COPY OF DATABASE NOKEEP; RMAN> CHANGE BACKUP DATABASE KEEP; RMAN > BACKUP KEEP UNTIL TIME '01-JAN-11' ARCHIVELOG ALL; JENiSOFT SOLUTIONS 47 RMAN > CHANGE BACKUP OF ARCHIVELOG ALL NOKEEP; RMAN > CATALOG START WITH '/u02/arch'; RMAN > CATALOG ARCHIVELOG '/u01/arch1_30.dbf', '/u02/arch_31.dbf''; RMAN > CATALOG DATAFILECOPY '/u01/oradata/users01.bak' RMAN > BLOCKRECOVER DATAFILE 2 BLOCK 12, 13 RMAN > BLOCKRECOVER CORRUPTION LIST; RMAN > DROP CATALOG Catalog DB: SQL > CONN RMAN/RMAN123@apps123 SQL > SELECT * FROM RC_BACKUP_ARCHIVELOG_DETAILS SQL > SELECT * FROM RC_BACKUP_CONTROLFILE_DETAILS SQL > SELECT * FROM RC_BACKUP_COPY_DETAILS SQL > SELECT * FROM RC_BACKUP_CORRUPTION SQL > SELECT * FROM RC_BACKUP_DATAFILE_DETAILS SQL > SELECT * FROM RC_BACKUP_FILES SQL > SELECT * FROM RC_BACKUP_PIECE SQL > SELECT * FROM RC_BACKUP_REDOLOG SQL > SELECT * FROM RC_BACKUP_SET_DETAILS SQL > SELECT * FROM RC_BACKUP_SPFILE_DETAILS SQL > SELECT * FROM RC_CONTROLFILE_COPY SQL > SELECT * FROM RC_COPY_CORRUPTION SQL > SELECT * FROM RC_DATABASE_BLOCK_CORRUPTION SQL > SELECT * FROM RC_DATAFILE_COPY SQL > SELECT * FROM RC_RMAN_BACKUP_JOB_DETAILS JENiSOFT SOLUTIONS 48 SQL > SELECT * FROM RC_RMAN_CONFIGURATION SQL > SELECT * FROM RC_RMAN_STATUS SQL > SELECT * FROM RC_STORED_SCRIPT SQL > SELECT * FROM RC_STORED_SCRIPT_LINE Flashback technologies 1. Flashback Query 2. Flashback Version Query 3. Flashback Transaction Query 4. Flashback Table 5. Flashback Drop (Recycle Bin) 6. Flashback Database Flashback Query SQL > CREATE TABLE flashback_query_test ( id NUMBER(10)); SQL > SELECT current_scn, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') FROM v$database; CURRENT_SCN TO_CHAR(SYSTIMESTAM 722452 2010-11-19 13:34:12 SQL > INSERT INTO flashback_query_test (id) VALUES (1); SQL > COMMIT; SQL > SELECT COUNT(*) FROM flashback_query_test; COUNT(*) 1
JENiSOFT SOLUTIONS 49 SQL > SELECT COUNT(*) FROM flashback_query_test AS OF TIMESTAMP TO_TIMESTAMP('2010-11-19 13:34:12', 'YYYY-MM-DD HH24:MI:SS'); COUNT(*) 0 SQL > SELECT COUNT(*) FROM flashback_query_test AS OF SCN 722452; COUNT(*) 0 SQL > SELECT COUNT(*) FROM flashback_query_test; COUNT(*) 1 Flashback Version Query SQL > CREATE TABLE flashback_version_query_test (id NUMBER(10), description VARCHAR2(50)); SQL > INSERT INTO flashback_version_query_test VALUES (1, 'ONE'); SQL > COMMIT; SQL > SELECT current_scn, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') FROM v$database; CURRENT_SCN TO_CHAR(SYSTIMESTAM 725202 2010-11-19 14:59:08
SQL > UPDATE flashback_version_query_test SET description = 'TWO' WHERE id = 1; SQL > COMMIT; SQL > UPDATE flashback_version_query_test SET description = 'THREE' WHERE id = 1; SQL > COMMIT; JENiSOFT SOLUTIONS 50 SQL > SELECT current_scn, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') FROM v$database; CURRENT_SCN TO_CHAR(SYSTIMESTAM 725219 2010-11-19 14:59:36 SQL > SELECT versions_xid, versions_operation, description FROM flashback_version_query_test VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2010-11-19 14:59:08', 'YYYY-MM-DD HH24:MI:SS') AND TO_TIMESTAMP('2010-11-19 14:59:36', 'YYYY-MM-DD HH24:MI:SS') WHERE id = 1; VERSIONS_XID VERSION_OPERATION DESCRIPTION 02001C0043030000 U THREE 0600030021000000 U TWO ONE SQL > SELECT versions_xid, versions_operation,description FROM flashback_version_query_test VERSIONS BETWEEN SCN 725202 AND 725219 WHERE id = 1; VERSIONS_XID VERSION_OPERATION DESCRIPTION 02001C0043030000 U THREE 0600030021000000 U TWO ONE
JENiSOFT SOLUTIONS 51 Flashback Transaction Query SQL > SELECT undo_sql FROM flashback_transaction_query WHERE xid = HEXTORAW('0600030021000000'); UNDO_SQL update "SCOTT"."FLASHBACK_VERSION_QUERY_TEST" set "DESCRIPTION" = 'ONE' where ROWID = 'AAAMP9AAEAAAAAYAAA'; Flashback Table SQL > CREATE TABLE flashback_table_test (id NUMBER(10)); SQL > ALTER TABLE flashback_table_test ENABLE ROW MOVEMENT; SQL > SELECT current_scn FROM v$database; CURRENT_SCN 715315 SQL > INSERT INTO flashback_table_test (id) VALUES (1); SQL > COMMIT; SQL > SELECT current_scn FROM v$database; CURRENT_SCN 715340 SQL > FLASHBACK TABLE flashback_table_test TO SCN 715315; SQL > SELECT COUNT(*) FROM flashback_table_test; COUNT(*) 0 SQL > FLASHBACK TABLE flashback_table_test TO SCN 715340;
JENiSOFT SOLUTIONS 52 SQL > SELECT COUNT(*) FROM flashback_table_test; COUNT(*) 1 SQL > FLASHBACK TABLE flashback_table_test TO TIMESTAMP TO_TIMESTAMP ('2010-11-19 15:30:30', 'YYYY-MM-DD HH: MI:SS); Flashback Drop (Recycle Bin) SQL > CREATE TABLE flashback_drop_test (id NUMBER(10)); SQL > INSERT INTO flashback_drop_test (id) VALUES (1); SQL > COMMIT; SQL > DROP TABLE flashback_drop_test; SQL > SHOW RECYCLEBIN ORIGINAL NAME R_NAME OBJ_TYPE DROP_TIME FLASHBACK_DROP_TEST BIN$T6 TABLE 2010-11-19:11:09:07 SQL > FLASHBACK TABLE flashback_drop_test TO BEFORE DROP; SQL > SELECT * FROM flashback_drop_test; ID 1 SQL > DROP TABLE flashback_drop_test; SQL > SHOW RECYCLEBIN ORIGINAL NAME R_NAME OBJ_TYPE DROP_TIME FLASHBACK_DROP_TEST BIN$T6 TABLE 2010-03-29:11:12:07 SQL > SELECT * FROM "BIN$6"; ID 1 JENiSOFT SOLUTIONS 53 SQL > FLASHBACK TABLE flashback_drop_test TO BEFORE DROP RENAME TO flashback_drop_test_old; SQL > PURGE TABLE emp; SQL > PURGE INDEX ind_eno; SQL > PURGE TABLESPACE data; SQL > PURGE TABLESPACE data USER stanly; SQL > PURGE RECYCLEBIN; SQL > PURGE DBA_RECYCLEBIN; Flashback Database $ export ORACLE_SID=PROD $ sqlplus "/ as sysdba" SQL > SHUTDOWN IMMEDIATE SQL > STARTUP MOUNT SQL > ALTER DATABASE ARCHIVELOG; SQL > ALTER DATABASE FLASHBACK ON; SQL > ALTER DATABASE OPEN; SQL > SELECT FLASHBACK_ON FROM V$DATABASE; FLASHBACK_ON YES SQL > SELECT current_scn, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') FROM v$database; CURRENT_SCN TO_CHAR(SYSTIMESTAM 725202 2010-11-19 14:59:08 SQL > CONN stanly/stanly123 JENiSOFT SOLUTIONS 54 SQL > CREATE TABLE flashback_database_test (id NUMBER(10)); SQL > CONN sys/sys AS SYSDBA SQL > SHUTDOWN IMMEDIATE SQL > STARTUP MOUNT SQL > FLASHBACK DATABASE TO TIMESTAMP TO_TIMESTAMP(2010-11-19 14:59:08, 'YYYY-MM-DD HH24:MI:SS'); SQL > FLASHBACK DATABASE TO SCN 725202 SQL > ALTER DATABASE OPEN RESETLOGS; SQL > CONN stanly/stanly123 SQL > select * from flashback_database_test; ORA-00942: table or view does not exist.