Anda di halaman 1dari 54

JENiSOFT SOLUTIONS 1

Oracle 10g DBA


Backup and Recovery



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

Clinet Desktop:
Here install oracle 10g Client software only.
$ cd $ORACLE_HOME/network/admin
$ ls -l *.ora
tnsnames.ora
sqlnet.ora
$ cat >> tnsnames.ora
prod123 =
(DESCRIPTION =
(ADDRESS=(PROTOCOL=TCP) (HOST=192.168.1.20) (PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=PROD)
)
)

192.168.1.10

Client
Desktop
192.168.1.20
Database
Server

(PROD)
(PROD)
(APPS)
Read data from Database
Write data to Database
JENiSOFT SOLUTIONS 15
$ netca
$ tnsping prod123
Used parameter files:
/opt/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP)
(HOST=192.168.1.20) (PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=PROD)))
OK (80 msec)
$ sqlplus stanly/ora123@prod123
ORA-12541: TNS: no listener
Database Server:
$ cd $ORACLE_HOME/network/admin
$ ls -l *.ora
listener.ora
tnsnames.ora
sqlnet.ora
$ more listener.ora
LISTENER=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.20)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=plsextproc)
(ORACLE_HOME=/opt/oracle/product/10.2.0/db_1)
(PROGRAM=extproc)
)
)
JENiSOFT SOLUTIONS 16

PROD_LIST=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.20)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))
SID_LIST_PROD_LIST=
(SID_LIST=
(SID_DESC=
(ORACLE_HOME=/opt/oracle/product/10.2.0/db_1)
(SID_NAME=prod)
)
)

$ 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

INCLUDE=<default: none> INCLUDE=<default: none>
INCLUDE=GRANT
INCLUDE=CONSTRAINT
INCLUDE=SCHEMA:"='HR'"
INCLUDE=VIEW,PACKAGE, FUNCTION
SQL > select * from DATABASE_EXPORT_OBJECTS;
SQL > select * from SCHEMA_EXPORT_OBJECTS;
SQL > select * from TABLE_EXPORT_OBJECTS;
$ expdp hr/hr SCHEMAS=HR DIRECTORY=dpump_dir DUMPFILE=hr_INCLUDE.dmp
INCLUDE=VIEW,PACKAGE logfile=hr.log
JENiSOFT SOLUTIONS 24
$ impdp hr/hr SCHEMAS=HR DIRECTORY=dpump_dir DUMPFILE=hr_INCLUDE.dmp
INCLUDE=CONSTRAINT logfile=hr.log
JOB_NAME=job_name JOB_NAME=job_name
$ expdp hr/hr@test123 full=y DIRECTORY=dpump_dir1 DUMPFILE=exp_job.dmp
JOB_NAME=exp_job logfile=full.log
$ impdp hr/hr@apps123 DIRECTORY=dpump_dir1 DUMPFILE=exp_job.dmp JOB_NAME=imp_job
LOGFILE= Default: export.log LOGFILE = Default: import.log
$ expdp hr/hr@test123 full=y DIRECTORY=dpump_dir1 DUMPFILE=exp_job.dmp
$ impdp hr/hr@test123 DIRECTORY=dpump_dir1 DUMPFILE=exp_job.dmp


NETWORK_LINK=source_database_link NETWORK_LINK=source_database_link
SQL > CREATE DATABASE LINK apps CONNECT TO hr IDENTIFIED BY hr USING 'apps123';
$ expdp hr/hr@prod123 TABLES=emp DIRECTORY=dpump_dir1 NETWORK_LINK=apps
DUMPFILE=network_export.dmp
$ impdp hr/hr@prod123 TABLES=emp DIRECTORY=dpump_dir1 NETWORK_LINK=apps
DUMPFILE=network_export.dmp
NOLOGFILE={ y | n } NOLOGFILE={ y | n }
$ expdp hr/hr@test123 full=y dirctory=dumpdir dumpfile=full.dmp NOLOGFILE=Y
$ impdp hr/hr@apps123 dirctory=dumpdir dumpfile=full.dmp NOLOGFILE=Y
PARALLEL=integer PARALLEL=integer
$ expdp hr/hr full=y DIRECTORY=dpump_dir1 DUMPFILE=par_exp%U.dmp PARALLEL=3
LOGFILE=parallel_import.log
JENiSOFT SOLUTIONS 25
$ impdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=par_exp%U.dmp PARALLEL=3
LOGFILE=parallel_import.log
PARFILE={parfile_name} PARFILE={parfile_name}
$ cat > hr_schema.par
SCHEMAS=HR
DUMPFILE=exp.dmp
DIRECTORY=dpump_dir1
LOGFILE=exp.log
$ expdp hr/hr parfile=hr_schema.par
$ impdp hr/hr parfile=hr_schema.par
QUERY =schema:table_name :' " <condition>" ' QUERY =schema:table_name :' " <condition>" '
$ expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tables.dmp TABLES=emp
QUERY='"WHERE eno> 10 AND sal > 10000"'
$ imp dp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tables.dmp TABLES=emp
QUERY='"WHERE eno> 10 AND sal > 10000"'
SCHEMAS=username,... SCHEMAS=username,...
$ expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp SCHEMAS=hr,sh,oe
$ impdp hr/hr SCHEMAS=hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp
REMAP_SCHEMA=source_schema:target_schema
$ expdp hr/hr SCHEMAS=hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp
$ impdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp REMAP_SCHEMA=hr:scott
STATUS=[integer] STATUS=[integer]
JENiSOFT SOLUTIONS 26
expdp hr/hr DIRECTORY=dpump_dir1 dumpdir=hr.dmp SCHEMAS=hr,sh STATUS=300
impdp hr/hr DIRECTORY=dpump_dir1 dumpdir=hr.dmp SCHEMAS=hr,sh STATUS=300
TABLES= sname.tname:pname TABLES= sname.tname:pname
$ expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tables.dmp TABLES=emp,jobs,dept
$ expdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tables_part.dmp
TABLES=sh.sales:sales_Q1_2000
$ impdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tables.dmp TABLES=employees,jobs
$ impdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tables.dmp remap_schema=hr: scott
TABLES=employees,jobs
TABLE_EXISTS_ACTION={SKIP | APPEND |
TRUNCATE | REPLACE}
$ impdp hr/hr TABLES=emp DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp
TABLE_EXISTS_ACTION=REPLACE
TABLESPACES=tablespace_name TABLESPACES=tablespace_name
REMAP_TABLESPACE=s_tablespace:t_tablespace
$ impdp hr/hr REMAP_TABLESPACE=tbs_1:tbs_6 DIRECTORY=dpump_dir1 DUMPFILE=tbs1.dmp
$ impdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=tables.dmp remap_schema=hr: scott
REMAP_TABLESPACE=tbs_1:tbs_6 TABLES=employees,jobs
SQLFILE=[directory_object:]file_name
impdp hr/hr full=y DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp vSQLFILE=expfull.sql
JENiSOFT SOLUTIONS 27
TRANSPORT_FULL_CHECK={y | n}
TRANSPORT_TABLESPACES=tablespace_name

TRANSPORT_FULL_CHECK={y | n}
TRANSPORT_TABLESPACES=tablespace_name
TRANSPORT_DATAFILES=datafile_name
$ expdp \'/ as sysdba\' TRANSPORT_TABLESPACES=data Directory=dumpdir dumpfile=data.dmp
TRANSPORT_FULL_CHECK=Y
$ impdp \'/ as sysdba\' TRANSPORT_TABLESPACES=data Directory=dumpdir dumpfile=data.dmp
TRANSPORT_FULL_CHECK=Y TRANSPORT_DATAFILES=/opt/oradata/prod/data01.dbf
Data Pump Interactive-Command Mode
CONTINUE_CLIENT
EXIT_CLIENT
KILL_JOB
PARALLEL
START_JOB
STATUS
STOP_JOB
Cross-Platform Transport Tablespace:
Source DB: Solaris
SQL > EXECUTE DBMS_TTS. TRANSPORT SET CHECK (TBS1, TRUE);
SQL > SELECT * FROM TRANSPORT_SET_VIOLATIONS;
SQL > SELECT a.platform name, endian_format FROM v$transportable_platform b, v$database a
WHERE b.platform name = a.platform name;
Solaris[tm] OE (32bit) Big
JENiSOFT SOLUTIONS 28
SQL> ALTER TABLESPACE TBS1 READ ONLY;
$ expdp system/manager dumpfile=tbs1.dmp directory=dumpdir transport_tablespace=tbs1
SQL > ! cp /opt/oradata/test/tbs01.dbf /backup/tbs01.dbf
SQL > alter tablespace tbs1 read write;
$ scp r tbs1.dmp oracle@192.168.1.101:/u01/import/prod
$ scp r /backup/tbs01.dbf oracle@192.168.1.101:/u01/import/prod
Target DB: Linux
SQL > SELECT a.platform name, endian_format FROM v$transportable_platform b, v$database a
WHERE b.platform name = a.platform name;
Linux IA (32bit) Little
$ rman target /
RMAN> CONVERT DATAFILE /u01/import/prod/tbs01.dbf
TO PLATFORM=Linux IA (32-bit)
FROM PLATFORM=Solaris[tm] OE (64-bit)
DB_FILE_NANE CONVERT=/u01/import/prod, /u01/oradata/prod ;
$ impdp system/manager dumpfile=tbs1.dmp directory=dumpdir transport_tablespace=tbs1
transport_datafiles=/u01/oradata/prod /tbs01.dbf
SQL > alter tablespace tbs1 read write;
Flash Recovery Area:
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 10G;
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/u01/FRA' ;
SQL> SELECT * FROM V$RECOVERY_FILE_DEST;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUM_OF_FILES
/u01/FRA 10737418240 109240320 256000 28
JENiSOFT SOLUTIONS 29
SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;
FILE_TYPE PERCENT_USED PERCENT_RECLAIMABLE NUMB_OF_FILES
CONTROLFILE 0 0 0
ONLINELOG 2 0 22
ARCHIVELOG 4.05 2.01 31
BACKUPPIECE 3.94 3.86 8
IMAGECOPY 15.64 0.43 66
FLASHBACKLOG 0.08 0 1

SQL > ALTER SYSTEM SET DB_RECOVERY_FILE_DEST=' ';
RMAN Backup and Recovery:
$ export ORACLE_SID=PROD
$ rman target /
RMAN > backup database;
RMAN > backup database plus archivelog;
RMAN > backup database include current controlfile;
RMAN > backup database format =/backup/rman_%U;
RMAN > backup database skip read only skip offline skip inaccessible;
RMAN > backup database maxsetsize=1024M;
RMAN > backup tablespace users, data;
RMAN > backup datafile 10,12,14;
RMAN > backup archivelog all;
RMAN > backup archivelog all delete input;
RMAN > backup archivelog all skip inaccessible;
JENiSOFT SOLUTIONS 30
RMAN > backup archivelog until scn 12345 delete input;
RMAN > backup archive log until time
to_timestamp(2010-11-18 10:10:00,YYYY-MM-DD HH24:MI:SS)
DELETE INPUT;
RMAN > backup archivelog time between sysdate-30 and sysdate-1;
RMAN > backup archivelog scn between 12345 and 12350;
RMAN > backup archivelog sequence between 101 and 150;
RMAN > backup archivelog until sequence 150;
RMAN > backup current controlfile;
RMAN > backup spfile;
SQL > SELECT OPERATION, STATUS, MBYTES_PROCESSED, START_TIME, END_TIME
from V$RMAN_STATUS;
SQL> SELECT SID, SERIAL#, 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;
Recover Corrupted Datafiles:
SQL > SELECT FILE#, ERROR, RECOVER, TABLESPACE_NAME
FROM V$DATAFILE_HEADER
WHERE RECOVER = 'YES' OR (RECOVER IS NULL AND ERROR IS NOT NULL);


JENiSOFT SOLUTIONS 31
RMAN > sql alter database datafile 10 offline drop;
RMAN > restore datafile 10;
RMAN > recover datafile 10;
RMAN > sql alter database datafile 10 online;
RMAN > run
{ sql alter database datafile 10 offline drop;
restore datafile 10;
recover datafile 10;
sql alter database datafile 10 online;
}
Recover corrupted tablespaces:
RMAN > run
{ sql alter tablespace data offline;
restore tablespace data;
recover tablespace data;
sql alter tablespace data online;
}
Recover corrupted READ ONLY tablespaces:
RMAN > run
{ sql alter tablespace data offline;
restore tablespace data;
sql alter tablespace data online;
}

JENiSOFT SOLUTIONS 32
Recover corrupted SYSTEM tablespaces:
$ export ORACLE_SID=PROD
$ rman target /
RMAN > startup mount;
RMAN > run
{ sql alter tablespace system offline;
restore tablespace system;
recover database;
sql alter tablespace system online;
open database;
}
Recover corrupted ALL Datafiles:
$ export ORACLE_SID=PROD
$ rman target /
RMAN > startup mount;
RMAN > run
{ restore database;
recover database;
open database;
}




JENiSOFT SOLUTIONS 33
Catalog database or Recovery Catalog

Catalog Database Server(192.168.1.101) :
$ export ORACLE_SID=APPS
$ sqlplus / as sysdba
SQL > create tablespace rmantbs Datafile /opt/oradata/apps/rman01.dbf size 500M;
SQL > create user rman identified by rman123
Default tablespace rmantbs
Temporary tablespace temp
Quota unlimited on rmantbs;
SQL > grant connect,resource to rman;
SQL > grant recovery_catalog_owner to rman;
SQL > exit
Target database Server (192.168.1.100) :
$ cat >> $ORACLE_HOME/network/admin/tnsnames.ora
apps123 =
( DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = APPS)
)
)

Target
Database

192.168.1.100

(PROD)

Catalog
Database

192.168.1.101

(APPS)

Control
File
JENiSOFT SOLUTIONS 34
$ export ORACLE_SID=PROD
$ rman target / catalog rman/rman123@apps123
RAMN > create catalog;
RMAN > register database;
RMAN > resync catalog;
Recover corrupted controlfile without catalog database:
$ export ORACLE_SID=PROD
$ rman target /
RMAN > startup nomount
RMAN > restore controlfile from /backup/prod/C01_001_020.ctl;
RMAN > alter database mount;
RMAN > recover database;
RMAN > open resetlogs database;
Recover corrupted controlfile with catalog database:
$ export ORACLE_SID=PROD
$ rman target / catalog rman/rman123@apps123
RMAN > startup nomount
RMAN > restore controlfile ;
RMAN > alter database mount;
RMAN > recover database;
RMAN > open resetlogs database;



JENiSOFT SOLUTIONS 35
Control files Auto backup:
RMAN > CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN > CONFIGURE CONTROLFILE AUTOBACKUP FORMAT
FOR DEVICE TYPE DISK TO '/backup/prod/cf_%F';
Recover corrupted controlfile without catalog database using Autobackup:
$ export ORACLE_SID=PROD
$ rman target /
RMAN > startup nomount
RMAN > restore controlfile from /backup/prod/cf_001_020.ctl;
RMAN > alter database mount;
RMAN > recover database;
RMAN > open resetlogs database;
Recover corrupted controlfile with catalog database using Autobackup:
$ export ORACLE_SID=PROD
$ rman target / catalog rman/rman123@apps123
RMAN > startup nomount
RMAN > restore controlfile from autobackup;
RMAN > alter database mount;
RMAN > recover database;
RMAN > open resetlogs database;




JENiSOFT SOLUTIONS 36
Recover Corrupted SPFILE with out Autobackup:
$ export ORACLE_SID=PROD
$ rman target /
RMAN > startup force nomount;
RMAN > restore spfile from /backup/prod/spfile_01023;
RMAN > startup force;
Recover Corrupted SPFILE with Autobackup:
$ export ORACLE_SID=PROD
$ rman target / catalog rman/rman123@apps123
RMAN > startup force nomount;
RMAN > restore spfile from autobackup;
RMAN > startup force;
RMAN backups:
Full backups
Incremental backups
o Differential incremental backups
o Cumulative incremental backups







JENiSOFT SOLUTIONS 37
Differential incremental backups
1. n
2. n-1
3. < n-1

RMAN > backup database;
RMAN > backup incremental level 0 database;
RMAN > backup incremental level 1 database;
RMAN > backup incremental level 1 tablespace data,system;
RMAN > backup incremental level 1 datafile 10, 12;







JENiSOFT SOLUTIONS 38
Cumulative incremental backups
1. n-1
2. < n-1

RMAN > backup incremental level 1 cumulative database;
RMAN > backup incremental level 1 cumulative tablespace data,system;
RMAN > backup incremental level 1 cumulative datafile 10, 12;
Block Change Tracking


Target
DB

PROD
Block Change
Tracking Files
CTWR
RMAN
Session
RMAN
BACKUP
SETS
JENiSOFT SOLUTIONS 39
SQL > ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;
SQL > ALTER DATABASE ENABLE BLOCK CHANGE TRACKING
USING FILE '/opt/oradata/rman_change_track_%f'
SQL > SELECT STATUS, FILENAME FROM V$BLOCK_CHANGE_TRACKING;
STATUS FILENAME
ENABLED /opt/oradata/rman_change_track_1_mf_2f71np5j_.chg
SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
SQL > SELECT FILE#, INCREMENTAL_LEVEL, COMPLETION_TIME FROM V$BACKUP_DATAFILE
WHERE INCREMENTAL_LEVEL > 0 ORDER BY COMPLETION_TIME;
RMAN Scripts:
RMAN > create script levelonebk
{ backup incremental level 1 database;
backup archivelog until time sysdate-1 delete input;
backup current controlfile;
backup spfile;
}
RMAN > run { execute script levelonebk;}
RMAN > print script levelonebk;
RMAN > delete script levelonebk;
RMAN > list script;
RMAN incomplete recovery:
Time based incomplete recovery
SCN based incomplete recovery
Log sequence base incomplete recovery
JENiSOFT SOLUTIONS 40
RMAN Database Cloning

Target DB Server:
$ export ORACLE_SID=PROD
$ rman target / catalog rman/rman123@apps123
RMAN> backup database;
RMAN > backup archivelog all;
RMAN > backup current controlfile;
RMAN > backup spfile;
RMAN > resync catalog;
RMAN> exit;
Auxiliary DB Server:
$ mkdir /u01/admin/test
$ cd /u01/admin/test
$ mkdir pfile bdump udump cdump create
$ mkdir /u01/oradata/test
Target DB server:
$ scp r $ORACLE_HOME/dbs/initprod.ora oracle@192.168.1.101:/u01/admin/test/pfile
Auxiliary DB server:
$ mv /u01/admin/test/pfile/initprod.ora /u01/admin/test/pfile/inittest.ora

Target
DB
192.168.1.100
PROD
Auxiliary
DB
192.168.1.101
TEST
JENiSOFT SOLUTIONS 41
$ vi /u01/admin/test/pfile/inittest.ora
db_unique_name=test
db_name=test
control_files=/u01/oradata/test/control01.ctl
background_dump_dest=/u01/admin/test/bdump
user_dump_dest=/u01/admin/test/udump
core_dump_dest=/u01/admin/test/cdump
audit_dump_dest=/u01/admin/test/adump
db_file_name_convert=(/opt/oradata/prod,/u01/oradata/test)
log_file_name_convert=(/opt/oradata/prod,/u01/oradata/test)
$ export ORACLE_SID=test
$ orapwd file=$ORACLE_HOME/dbs/orapwtest password=sys
$ sqlplus / as sysdba
SQL > startup nomount pfile=/u01/admin/test/pfile/inittest.ora;
SQL > create spfile from pfile=/u01/admin/test/pfile/inittest.ora;
SQL > shutdown immediate;
SQL > startup nomount;
$ cat >> $ORACLE_HOME/network/admin/tnsnames.ora
test =
( DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = test)
)
)

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.

Anda mungkin juga menyukai