Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Note:/rdbms/admin/prgrmanc.sql
col algorithm_name format a15
col algorithm_description format a25
Encryption Algorithms
SELECT * FROM gv;
DBA_HIST_INSTANCE_RECOVERY GV_
Data Dictionary Objects
DBA_RECOVERABLE_SCRIPT V_
DBA_RECOVERABLE_SCRIPT_BLOCKS V_
DBA_RECOVERABLE_SCRIPT_ERRORS V_
DBA_RECOVERABLE_SCRIPT_PARAMS V_
GV_ V_
GV_ V_
GV_ V_
GV_ V_
GV_
Format Description
Format Directives
%a Current database activation id
%A Zero-filled activation ID
%c The copy number of the backup piece within a set of duplexed backup pieces.bMaximum value is 256
%d Database name
%D Current day of the month from the Gregorian calendar in format DD
%e Archived log sequence number
%f Absolute file number
%F Combines the DBID, day, month, year, and sequence into a unique and repeatable generated name
%h Archived redo log thread number
%I DBID
%M Month in the Gregorian calendar in the format MM
%n Database name, padded on the right with x characters to a total length of eight characters
%N Tablespace name. Only valid when backing up datafiles as image copies.
%p Piece number within the backup set. This value starts at 1 for each backup set and is incremented by 1 for each
backup piece created. If a PROXY is specified, the %p variable must be included in the FORMAT string either
explicitly or implicitly within %U.
%r Resetlogs ID
%s Backup set number. This number is a counter in the control file that is incremented for each backup set. The
counter value starts at 1 and is unique for the lifetime of the control file. If you restore a backup control file, then
duplicate values can result. CREATE CONTROLFILE initializes the counter at 1.
%S Zero-filled sequence number
%t Backup set time stamp, a 4-byte value derived as the number of seconds elapsed since a fixed reference time.
The combination of %s and %t can be used to form a unique name for the backup set.
%T Year, month, and day in the Gregorian calendar in the format: YYYYMMDD
An 8-character name constituted by compressed representations of the backup set or image copy number and
%u the time the backup set or image copy was created
%U A system-generated unique filename (default). %U is different for image copies and backup pieces. For a
backup piece, %U is a shorthand for %u_%p_%c and guarantees uniqueness in generated backup filenames.
For an image copy of a datafile, %U means the following:
data-D-%d_id-%I_TS-%N_FNO-%f_%u
For an image copy of an archived redo log, %U means the following:
arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u
For an image copy of a control file, %U means the following:
cf-D_%d-id-%I_%u
%Y Year in this format: YYYY
%% Percent (%) character. For example, %%Y translates to the string %Y
compatible=10.2.0
Repository Initialization log_archive_format=RMAN_%s_%r_%d.arc
Parameters remote_login_passwordfile=SHARED
show parameter archive_format
as root
To create a permanent NAS $ unmount /mnt
Mount
$ mkdir /u01
$ chown oracle:dba /u01
$ chmod 755 /u01
$ cd /etc
$ vi fstab
192.168.2.200:/vol/vol1/alpha1 /u01 nfs
rw,bg,intr,hard,rsize=32768,wsize=32768,noac,nolock,tcp,vers=3 0 0
/* as Linux user oracle modify the TNSNAMES.ORA to point to the database
Create RMAN Repository and that will host the repository catalog: Then ... */
Catalog
$ sqlplus / as sysdba
using OMF
SQL> CREATE TABLESPACE cat_tbs;
SQL> CREATE USER repoomega
IDENTIFIED BY oracle1
DEFAULT TABLESPACE cat_tbs
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON cat_tbs;
RMAN> GRANT create session TO repoomega
RMAN> GRANT recovery_catalog_owner TO repoomega;
RMAN> GRANT execute ON dbms_stats TO repoomega; for demos
in the operating system shell
$ rman target / catalog repoomega/oracle1@repos
RMAN> create catalog tablespace cat_tbs;
RMAN> register database;
RMAN> report schema;
RMAN> configure default device type to disk;
RMAN> configure device type disk parallelism 2 backup type to copy;
RMAN> configure retention policy to recovery window of 7 days;
RMAN> configure backup optimization on;
/* as Linux user oracle modify the TNSNAMES.ORA to point to the database
Put the database into that will host the repository catalog: Then ... */
ARCHIVELOG mode
$ sqlplus / as sysdba
col name format a30
col value format a30
SELECT name, value
FROM gv
WHERE name LIKE '%arch%';
alter the SPFILE as required
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
archive log list;
alter system switch logfile;
archive log list;
RMAN> BACKUP TAG Q107 DATABASE KEEP FOREVER;
Commands
@
@<path_and_file_name>
Execute a series of script of
RMAN commands stored in an rman TARGET / @backup_db.rcv
operating system file. Do not
leave whitespace between the or
@ and filename.
RMAN> RUN { @backup_db.rman }
@@
Execute script files located in @@<path_and_file_name>
the same directory as the file
from which it has been called TBD
ADVISE FAILURE
Displays repair options for the ADVISE FAILURE <ALL | CRITICAL | HIGH | LOW | failure_number_list>
specified failures. Prints a EXCLUDE FAILURE <failure_number_list>
summary of the failures
identified by the Data RMAN> LIST FAILURE;
Recovery Advisor and
implicitly closes all open
RMAN> ADVISE FAILURE ALL;
failures that are already fixed. RMAN> REPAIR FAILURE;
ALLOCATE CHANNEL
To manually allocate a channel, which is a connection between RMAN and a database instance. Each connection initiates an database server session
on the target or auxiliary instance: this server session performs the work of backing up, restoring, or recovering RMAN backups.
Manually allocated channels (allocated by using ALLOCATE) should be distinguished from automatically allocated channels (specified by using
CONFIGURE). Manually allocated channels apply only to the RUN job in which you issue the command. Automatic channels apply to any RMAN job in
which you do not manually allocate channels. You can always override automatic channel configurations by manually allocating channels within a RUN
command.
Each channel operates on one backup set or image copy at a time. RMAN automatically releases the channel at the end of the job.
You can control the degree of parallelism within a job by allocating the desired number of channels. Allocating multiple channels simultaneously allows a
single job to read or write multiple backup sets or disk copies in parallel. If you establish multiple connections, then each connection operates on a
separate backup set or disk copy.
Whether ALLOCATE CHANNEL causes operating system resources to be allocated immediately depends on the operating system. On some platforms,
operating system resources are allocated at the time the command is issued. On other platforms, operating system resources are not allocated until you
open a file for reading or writing.
Allocating a Single Backup Channel
ALLOCATE [AUXILIARY] CHANNEL <channel_name> [, <channel_id>, DEVICE TYPE
Allocate a disk channel <device_type_name>[allocation_operand_list]
SQL> desc gv
SQL> SELECT * FROM gv;
RMAN> RUN {
ALLOCATE CHANNEL d1 DEVICE TYPE DISK
FORMAT '/u01/backups/%U';
BACKUP DATABASE PLUS ARCHIVELOG;
RELEASE CHANNEL;
}
RMAN RUN {
Allocates a tape channel for a ALLOCATE CHANNEL tape1 DEVICE TYPE sbt;
whole database and archived BACKUP DATABASE PLUS ARCHIVELOG;
redo log backup RELEASE CHANNEL;
}
Spread the backup across RUN {
several disk drives. Allocate ALLOCATE CHANNEL d1 DEVICE TYPE DISK FORMAT '/u01/backups/%U';
one DEVICE TYPE DISK ALLOCATE CHANNEL d2 DEVICE TYPE DISK FORMAT '/u02/backups/%U';
channel for ach disk drive and
specify the format string BACKUP DATABASE PLUS ARCHIVELOG;
so that the filenames are on RELEASE CHANNEL;
different disks }
When creating multiple copies RUN {
of a backup, you can specify ALLOCATE CHANNEL c1 DEVICE TYPE DISK MAXPIECESIZE 5M;
the SET BACKUP
COPIES command. The # AS COPY is the default, so RMAN creates image copies
following example generates a BACKUP DATABASE PLUS ARCHIVELOG;
single backup of the database SET BACKUP COPIES = 2;
to disk, and then creates two BACKUP DATAFILE 1 FORMAT '/u01/backups/%U', '/u02/backups/%U';
identical backups of datafile 1
to two different file systems }
Allocate Maintenance Channel
*Allocates a channel in ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE <device_specifier>
preparation for a CHANGE, [allocation_operand_list];
DELETE, or CROSSCHECK.
This cannot be used within a
RUN block.
RMAN> ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;|
ALTER CLONE
ALTER CLONE ....
?
TBD
ALTER DATABASE
ALTER DATABASE <MOUNT | OPEN | OPEN RESETLOGS>;
RMAN> STARTUP NOMOUNT;
Mount and open the database RMAN> ALTER DATABASE MOUNT;
RMAN> BACKUP DATABASE;
RMAN> ALTER DATABASE OPEN;
RUN {
Mount and open the database ALLOCATE CHANNEL ch1 DEVICE TYPE sbt;
resetlogs
SET UNTIL SCN 1024;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
}
BACKUP
-- Back up a database, tablespace, datafile (current or copy), control file (current or copy), SPFILE, archived log, or backup set.
BACKUP <BackupOperand> CHANNEL '<channel_id>' CHECK LOGICAL COPIES <integer>
CUMULATIVE DEVICE TYPE <deviceSpecifier> DISKRATIO <integer> DURATION
<FileNameConversionSpecification> FILERPERSET <integer> FORCE
< AUXILIARY FORMAT <formatSpec, NEW> | FORMAT <formatSpec>
<forRecoveryOfSpec>
FULL
<keep option>
MAXSETSIZE <sizeSpec>
<notBackedUpSpec>
NO CHECKSUM NO EXCLUDE POOL <integer> PROXY [ONLY] REUSE SECTION SIZE <sizeSpec> <skipSpec>
TAG '<tag_name>' VALIDATE
-- Back up a database, tablespace, datafile (current or copy), control file (current or copy), SPFILE, archived log, or backup set.
BACKUP <BackupOperand> CHANNEL '<channel_id>' CHECK LOGICAL COPIES <integer>
CUMULATIVE DEVICE TYPE <deviceSpecifier> DISKRATIO <integer> DURATION
<FileNameConversionSpecification> FILERPERSET <integer> FORCE
< AUXILIARY FORMAT <formatSpec, NEW> | FORMAT <formatSpec>
<forRecoveryOfSpec>
INCREMENTAL <LEVEL | FROM SCN> <integer>
<keep option>
MAXSETSIZE <sizeSpec>
<notBackedUpSpec>
NO CHECKSUM NO EXCLUDE POOL <integer> PROXY [ONLY] REUSE SECTION SIZE <sizeSpec> <skipSpec>
TAG '<tag_name>' VALIDATE
BACKUP ARCHIVELOG
BACKUP CHANNEL d2 ARCHIVELOG UNTIL TIME 'SYSDATE'
NOT BACKED UP 2 TIMES TAG FIRST_COPY;
}
BACKUP CHECK
SET MAXCORRUPT indicates BACKUP CHECK [LOGICAL] <database_specifications>
that no more than 1 corruption
should be tolerated in each RUN {
datafile. Because the CHECK SET MAXCORRUPT FOR DATAFILE 5,6,7,8 TO 1;
LOGICAL option is specified BACKUP CHECK LOGICAL DATABASE;
on the BACKUP command,
RMAN checks for both }
physical and logical corruption.
BACKUP CONTROLFILECOPY
BACKUP CONTROLFILECOPY ....
?
TBD
BACKUP COPY
BACKUP COPY ....
?
TBD
BACKUP COPIES
BACKUP COPIES <integer> ....
Define the number of backup
copies to create RUN {
BACKUP COPIES 2 DEVICE TYPE sbt BACKUPSET ALL;
}
BACKUP CUMMULATIVE
BACKUP CUMMULATIVE ....
?
TBD
BACKUP CURRENT
BACKUP CURRENT CONTROLFILE [TO DESTINATION <destination_path>];
Backup the current Control
File to the default or specified RUN {
location BACKUP CURRENT CONTROLFILE TO DESTINATION '/u01/backups';
}
BACKUP DATABASE
RUN {
Backup Database ALLOCATE CHANNEL d1 DEVICE TYPE DISK;
BACKUP DATABASE;
}
RUN {
Backup Database Plus ALLOCATE CHANNEL d1 DEVICE TYPE DISK;
Archivelog
BACKUP DATABASE PLUS ARCHIVELOG;
}
BACKUP DATAFILE
BACKUP DATAFILE <integer> [FORMAT '<location_and_name_format>']
Datafile backup to multiple
locations
BACKUP DATAFILE <integer> [TO '<location>']
RUN {
ALLOCATE CHANNEL d1 DEVICE TYPE DISK;
BACKUP DATAFILE 1 FORMAT '/u01/backups/%U', '/u02/backups/%U';
BACKUP DATAFILE 6 TO '/u01/backups', '/u02/backups';
}
BACKUP DATAFILECOPY
BACKUP DATAFILECOPY ....
?
TBD
BACKUP DB_FILE_NAME_CONVERT
BACKUP DB_FILE_NAME_CONVERT ....
?
TBD
BACKUP DB_RECOVERY_FILE_DEST
BACKUP DB_RECOVERY_FILE_DEST ....
?
TBD
BACKUP DEVICE TYPE
BACKUP DEVICE TYPE <DISK | SBT> ....
RMAN locates all datafile
copies with the tag RMAN> {
LATESTCOPY, backs them up
to tape, and names the BACKUP DEVICE TYPE sbt
backups by means of DATAFILECOPY FROM TAG 'LATESTCOPY' FORMAT 'Datafile%f_Database%d';
substitution variables. After the
datafile copies are on tape, the DELETE COPY TAG 'LATESTCOPY';
example deletes all image
copies with the tag }
LATESTCOPY.
BACKUP DISKRATIO
Populate each backup set with RMAN> BACKUP DISKRATIO 0; disable
datafiles from the specified
number of disks. To disable
set to 0. RMAN> BACKUP DISKRATIO 5; enable
BACKUP DURATION
RMAN> BACKUP KEEP FOREVER FORMAT '?/dbs/%U_longterm.cpy'
TAG LNGTRM_BCK DATAFILE 5 DATAFILE 6;
RMAN> ALTER DATABASE OPEN;
BACKUP KEEP
BACKUP KEEP ....
?
TBD
BACKUP MAXSETSIZE
BACKUP MAXSETSIZE ....
?
TBD
BACKUP NOCHECKSUM
BACKUP NOCHECKSUM ....
?
TBD
BACKUP NOEXCLUDE
BACKUP NOEXCLUDE ....
?
TBD
BACKUP NOKEEP
BACKUP NOKEEP ....
?
TBD
BACKUP NOT
BACKUP NOT ....
?
TBD
BACKUP PROXY
BACKUP PROXY ....
?
TBD
BACKUP POOL
BACKUP POOL ....
?
TBD
BACKUP RECOVERY
BACKUP RECOVERY ....
?
TBD
BACKUP REUSE
BACKUP REUSE ....
?
TBD
BACKUP SECTION
BACKUP SECTION ....
?
TBD
BACKUP SETSIZE
BACKUP SETSIZE ....
?
TBD
BACKUP SKIP READONLY
BACKUP SKIP READONLY ....
?
TBD
BACKUP SPFILE
Backup the Server Parameter BACKUP SPFILE [TO DESTINATION <destination_path>]
file to the default or specified
location RMAN> BACKUP SPFILE TO DESTINATION '/u01/backups';
BACKUP TAG
BLOCKRECOVER
Block media recovery recovers an individual data block or set of data blocks within a datafile. This type of recovery is useful if the data loss or corruption
applies to a small number of blocks rather than to an entire datafile.
Typically, block corruption is reported in error messages in trace files. Block-level data loss usually results from:
I/O errors causing minor data loss
RMAN> BLOCKRECOVER DATAFILE 2 BLOCK 12,13 DATAFILE 3 BLOCK 5,98,99
DATAFILE 4 BLOCK 19;
BLOCKRECOVER DATAFILE <data_file_number> BLOCK <block_list> TABLESPACE
Limit block recovery by <tablespace_name> FROM DATAFILECOPY
restoration type
RUN {
BLOCKRECOVER DATAFILE 3 BLOCK 2,3,4,5 TABLESPACE sales DBA 4194405,
4194409, 4194412
FROM DATAFILECOPY;
}
BLOCKRECOVER DATAFILECOPY
BLOCKRECOVER DATAFILECOPY ....
?
TBD
BLOCKRECOVER DELETE
BLOCKRECOVER DELETE ....
?
TBD
BLOCKRECOVER DEVICE
BLOCKRECOVER DEVICE ....
?
TBD
BLOCKRECOVER EXCLUDE
BLOCKRECOVER EXCLUDE ....
?
TBD
BLOCKRECOVER FROM
BLOCKRECOVER FROM ....
?
TBD
BLOCKRECOVER NOFILEUPDATE
BLOCKRECOVER NOFILEUPDATE ....
?
TBD
BLOCKRECOVER NOPARALLEL
BLOCKRECOVER NOPARALLEL ....
?
TBD
BLOCKRECOVER NOREDO
? BLOCKRECOVER NOREDO ....
TBD
BLOCKRECOVER PARALLEL
BLOCKRECOVER PARALLEL ....
?
TBD
BLOCKRECOVER PREVIEW
BLOCKRECOVER PREVIEW ....
?
TBD
BLOCKRECOVER RESTORE
BLOCKRECOVER RESTORE ....
?
TBD
BLOCKRECOVER SAVE
BLOCKRECOVER SAVE ....
?
TBD
BLOCKRECOVER SKIP READONLY
BLOCKRECOVER SKIP READONLY ....
?
TBD
BLOCKRECOVER SAVE
BLOCKRECOVER SAVE ....
?
TBD
BLOCKRECOVER TABLESPACE
BLOCKRECOVER TABLESPACE <tablespace_name> ...
BLOCKRECOVER TABLESPACE SYSTEM DBA 4194404, 4194405 FROM TAG
Limit block recovery by backup
tag "weekly_backup";
BLOCKRECOVER TABLESPACE <tablespace_name> ...
Limit block recovery by time
BLOCKRECOVER TABLESPACE SYSTEM DBA 4194404, 4194405 RESTORE UNTIL TIME
'SYSDATE2';
BLOCKRECOVER CORRUPTION LIST
Repair all corrupt blocks in the
database using gv BACKUP VALIDATE DATABASE;
BLOCKRECOVER CORRUPTION LIST;
BLOCKRECOVER TEST
BLOCKRECOVER TEST ....
?
TBD
BLOCKRECOVER UNDO
BLOCKRECOVER UNDO ....
?
TBD
BLOCKRECOVER VALIDATE
BLOCKRECOVER VALIDATE ....
?
TBD
CATALOG
Adds information about file copies and user-managed backups to the repository
CATALOG ARCHIVELOG
Back the named archive log CATALOG ARCHIVELOG '<file_name_list>'
RMAN> CATALOG ARCHIVELOG '
CATALOG BACKUP
CHANGE
To make the following changes:
To change the status of backups, copies, and archived logs in the repository to AVAILABLE or UNAVAILABLE. This feature is useful when a
previously unavailable file is made available again, or you do not want a specific backup or copy to be eligible to be restored but also do not want
to delete it.
To alter the repository status of usable backups and copies from prior incarnations.
To remove catalog records for backups and copies, and update the corresponding records in the target control file to status DELETED. This
feature is useful when you remove a file by using an operating system command rather than the RMAN CHANGE command, and want to
remove its repository record as well.
To specify that a backup or copy should either abide by the currently configured retention policy or be exempt from it.
CHANGE ARCHIVELOG
CHANGE ARCHIVELOG ...
Move all archived logs to a
new directory, uncatalog them, HOST 'mv /oradata/trgt/arch/* /fs2/arch';
and then recatalog them in the CHANGE ARCHIVELOG ALL UNCATALOG;
new location CATALOG START WITH '/fs2/arch';
CHANGE BACKUP
CHANGE BACKUP ...
Change the status of all
backups of server parameter CHANGE BACKUP OF SPFILE COMPLETED BEFORE 'SYSDATE1' UNAVAILABLE;
files created more than a day
ago to UNAVAILABLE CHANGE BACKUP OF ARCHIVELOG ALL NOKEEP;
CHANGE BACKUPSET
Change the status a backup CHANGE BACKUPSET ...
set
CHANGE BACKUPSET 42 UNAVAILABLE;
Change an ordinary backup CHANGE BACKUPSET ...
into a long-term backup
CHANGE BACKUP TAG 'consistent_db_bkup' KEEP FOREVER NOLOGS;
CHANGE CHANGEFAILURE
CHANGE CHANGEFAILURE ...
?
TBD
CHANGE CONTROLFILECOPY
CHANGE CONTROLFILECOPY ...
?
TBD
CHANGE COPY
? CHANGE COPY ...
TBD
CHANGE DATAFILECOPY
CHANGE DATAFILECOPY ...
?
TBD
CHANGE DB_UNIQUE_NAME_FROM
CHANGE DB_UNIQUE_NAME_FROM ...
?
TBD
CONFIGURE
To configure persistent settings affecting RMAN backup, restore, duplication, and maintenance jobs. These configurations are in effect for any RMAN
session until the configuration is cleared or changed.
$ rman
Configuration Defaults
RMAN> SHOW ALL
RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;
RMAN> CONFIGURE BACKUP OPTIMIZATION OFF;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP OFF;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';
RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;
RMAN> CONFIGURE ENCRYPTION FOR DATABASE OFF;
RMAN> CONFIGURE ENCRYPTION ALGORITHM 'AES128';
RMAN> CONFIGURE MAXSETSIZE TO 2 G;
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
RMAN> CONFIGURE SNAPSHOT CONTROLFILE NAME TO
'/app/oracle/product/flash_recovery_area/snapshot.ctl';
CONFIGURE AUXILIARY
CONFIGURE AUXILIARY CHANNEL <DEVICE, INTEGER> ....
?
RMAN> CONFIGURE AUXILARY
CONFIGURE AUXNAME
CONFIGURE AUXNAME FOR DATAFILE <data_file_number> TO <path_and_file_name>
Set and clear an auxiliary CONFIGURE AUXNAME FOR DATAFILE CLEAR
name for a datafile
RMAN> CONFIGURE AUXNAME FOR DATAFILE 5 TO '/home/oracle/auxfiles/aux1.f';
RMAN> CONFIGURE AUXNAME FOR DATAFILE 4 CLEAR;
CONFIGURE CHANNEL
CONFIGURE CHANNEL <DEVICE TYPE | INTEGER> <configuration | CLEAR>
?
RMAN> CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' CLEAR;
CONFIGURE CLONENAME ....
?
RMAN> CONFIGURE CLONENAME
CONFIGURE COMPATIBLE
CONFIGURE COMPATIBLE ....
?
RMAN> CONFIGURE COMPATIBLE
CONFIGURE COMPRESSION
CONFIGURE COMPRESSION ALGORITHM <CLEAR | '<quoted_string>'>
SELECT algorithm_name, algorithm_description
Configure a backup FROM v;
compression algorithm
RMAN> CONFIGURE COMPRESSION ALGORITHM 'ZLIB';
CONFIGURE CONTROLFILE
CONFIGURE CONTROLFILE AUTOBACKUP
Enable autobackup and
configure the default CONFIGURE CONTROLFILE AUTOBACKUP ON;
autobackup format for a DISK
device
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u02/%F';
CONFIGURE DB_UNIQUE_NAME
CONFIGURE DB_UNIQUE_NAME '<db_unique_name>' <CLEAR | CONNECT IDENTIFIER
? '<quoted_string>'>
TBD
CONFIGURE ENCRYPTION ALGORITHM <CLEAR | encryption_algorithm>
Set and clear encryption
SQL> col algorithm_name format a20
SQL> col algorithm_description format a25
SQL> SELECT algorithm_name, algorithm_description
FROM v;
RMAN> CONFIGURE ENCRYPTION ALGORITHM 'AES256';
RMAN> CONFIGURE ENCRYPTION CLEAR;
Configure Database or CONFIGURE ENCRYPTION FOR <DATABASE | TABLESPACE <tablespace_name>>
Tablespace Encryption <ON | OFF | CLEAR>
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;
RMAN> CONFIGURE ENCRYPTION FOR TABLESPACE uwdata OFF;
CONFIGURE EXCLUDE ...
?
TBD
CONNECT
Creates a connection between RMAN and a target, auxiliary, or recovery catalog database
CONNECT AUXILIARY <user_id>/<password>@<instance>
Auxiliary
$ rman auxiliary oracle/oracle1@prodb
CONNECT
Catalog
$ rman catalog repoomega/oracle1@repos
$ rman
RMAN> connect catalog repoomega/oracle1@repos
CONNECT TARGET <user_id>/<password>@<instance>
Target only
$ rman target /
$ rman>
RMAN> connect target / catalog repoomega/oracle1@repos
CONNECT
$ rman target / catalog repoomega/oracle1@repos
Target and Catalog
$ rman>
RMAN> connect target / catalog repoomega/oracle1@repos
CONNECT
Target without a catalog
$ rman
RMAN> connect target omega1/omega1@emrep NOCATALOG
CONVERT
Converts a datafile, tablespace or database to the format of a destination platform, in preparation for transport across different platforms
CONVERT DATABASE
CONVERT DATABASE NEW DATABASE '<db_name>'
Uses CONVERT DATABASE TRANSPORT SCRIPT '<script_location>'
NEW DATABASE to convert
datafiles and generate a transport TO PLATFORM '<platform_name>'
script DB_FILE_NAME_CONVERT '<source_location> <destination_location>'
CONVERT DATABASE
NEW DATABASE 'prodb'
TRANSPORT SCRIPT '/tmp/convertdb/transportscript'
TO PLATFORM 'Linux IA (64bit)'
DB_FILE_NAME_CONVERT '/u01/oradata', '/stage/dbfiles';
CONVERT DATAFILE
CONVERT DATAFILE <datafile_name_list>
Converts the datafiles to be DB_FILE_NAME_CONVERT '<source_location> <destination_location>'
transported to the destination host
FROM PLATFORM <original_platform_name>
format and deposits the results CONVERT DATAFILE
in /u02/oradata '/tmp/transport_from_aix/u01/uwdata01.dbf',
'/tmp/transport_from_aix/u01/uwdata02.dbf',
'/tmp/transport_from_aix/u03/users01.dbf',
'/tmp/transport_from_aix/u03/users02.dbf'
DB_FILE_NAME_CONVERT
'/app/oracle/product/oradata','/stage/oradata',
'/tmp/transport_from_solaris/hr','/stage/oradata'
FROM PLATFORM 'Linux IA (64bit)';
CONVERT TABLESPACE
CONVERT TABLESPACE <tablespace_name_list> TO PLATFORM <platform_name>
Convert a tablespaces to 64 bit FORMAT '<format_string>'
Linux
desc v
SELECT platform_name, endian_format
FROM v;
CONVERT TABLESPACE uwdata, users TO PLATFORM 'Linux IA (64bit)'
FORMAT '/app/oracle/product/flash_recovery_area/linux64/%U';
COPY
COPY ARCHIVELOG ... (level, nochecksum, nokeep, reuse, tag)
?
RMAN> COPY ARCHIVELOG
COPY BACKUP ...
?
RMAN> COPY BACKUP
COPY CHECK ...
?
RMAN> COPY CHECK
COPY CONTROLFILECOPY ...
?
RMAN> COPY CONTROLFILECOPY
COPY CURRENT ...
?
RMAN> COPY CURRENT
COPY DATAFILE ...
?
RMAN> COPY DATAFILE
COPY DATAFILECOPY ...
?
RMAN> COPY DATAFILECOPY
COPY KEEP ...
?
RMAN> COPY KEEP
CREATE
CREATE CATALOG
CREATE [VIRTUAL] CATALOG;
RMAN> CREATE CATALOG;
Create a recovery catalog or a
virtual private catalog
SQL> conn repoomega/oracle1@repos
SQL> SELECT object_type, COUNT(*)
FROM user_objects;
RMAN> DROP CATALOG;
SQL> SELECT object_type, COUNT(*)
FROM user_objects;
CREATE RESTORE POINT
CREATE RESTORE POINT <restore_point_name>
Create a restore point RMAN> CREATE RESTORE POINT app_patch;
RMAN> DROP RESTORE POINT app_patch;
CREATE SCRIPT
CREATE [GLOBAL] SCRIPT '<script_name>'
Creates a stored script called COMMENT '<comment>'
backup_whole that backs up
the database and archived {RMAN_command_list}
redo logs FROM FILE '<file_name>'
CREATE SCRIPT backup_whole
COMMENT "backup whole database and logs"
{
BACKUP INCREMENTAL LEVEL 0 TAG b_whole_l0
DATABASE PLUS ARCHIVELOG;
}
CREATE GLOBAL SCRIPT global_backup_db
Creates a stored script called COMMENT "backup any database from the recovery catalog, with logs"
backup_whole that backs up
the database and archived
{
redo logs BACKUP DATABASE PLUS ARCHIVELOG;
}
CROSSCHECK
Verify the status of backups and copies recorded in the RMAN repository against media such as disk or tape. The CROSSCHECK command only
processes files created on the same device type as the channels running the crosscheck.
Status Description
AVAILABLE The Object is available for use by RMAN. For a backup set to be AVAILABLE, all set backup pieces must be AVAILABLE.
Object is not found either in file system (for DISK) or in the media manager (for sbt). Note that for a backup set to be EXPIRED, all
EXPIRED
backup pieces in the set must be EXPIRED. EXPIRED does not mean the same as OBSOLETE.
UNAVAILABLE Object is not available for use by RMAN. For a backup set to be UNAVAILABLE, all backup pieces must be UNAVAILABLE.
The following objects can be crosschecked:
ARCHIVELOG BACKUP BACKUPPIECE BACKUPSET CONTROLFILECOPY COPY DATAFILECOPY PROXY
CROSSCHECK ARCHIVELOG
CROSSCHECK <archivelogRecordSpecifier>
Allocate a channel and
crosscheck all archivelogs RMAN> RUN {
ALLOCATE CHANNEL d1 FOR MAINTENANCE DEVICE TYPE DISK;
CROSSCHECK ARCHIVELOG ALL;
RELEASE CHANNEL;
}
CROSSCHECK BACKUP
CROSSCHECK BACKUP ....
RMAN> RUN {
Allocate a channel, ALLOCATE CHANNEL d1 FOR MAINTENANCE DEVICE TYPE DISK;
crosscheck backups in a date
range and release the channel CROSSCHECK BACKUP DEVICE TYPE DISK COMPLETED BETWEEN '01JUL08' AND
after use '30SEP08';
RELEASE CHANNEL;
}
CROSSCHECK BACKUPPIECE
DEBUG
DEBUG <AFFINITY | ALL | DUPLICATE | IO | KRB | MISC | NODEVALS | OFF | ON
| PACKAGES | PLSQL | RCVCAT | RCVMAN | RECOVER | RESTORE | RESYNC | RPC |
Commands for the RMAN SQL>
debugger
*RMAN> DEBUG ALL;
*RMAN> DEBUG OFF;
DELETE
To delete physical backups and copies as well as do the following:
Update their repository records in the target control file to status DELETED
Remove their repository records from the recovery catalog (if you use a catalog)
When running RMAN interactively, DELETE displays a list of the files and prompts you for confirmation before deleting any file in the list. When reading
commands from a command file, RMAN will not prompt for confirmation.
DELETE ARCHIVELOG
DELETE ARCHIVELOG <ALL | FROM | HIGH | LIKE | LOGSEQ | LOW | QUOTED_STRING
| SCN | SEQUENCE | TIME | UNTIL> ....
Wildcard Delete RMAN> LIST ARCHIVELOG LIKE '%';
RMAN> CROSSCHECK ARCHIVELOG LIKE '%';
RMAN> DELETE ARCHIVELOG LIKE '%';
DELETE BACKUPSET
?
Delete Backup Set
*DELETE NOPROMPT BACKUP OF DATABASE COMPLETED BEFORE 'SYSDATE7';
?
Delete both Disk and Tape
Backup Sets # back up datafile to disk and tape
BACKUP DEVICE TYPE DISK DATAFILE 1 TAG "weekly_bkup";
BACKUP DEVICE TYPE sbt DATAFILE 1 TAG "weekly_bkup";
# manually allocate disk and sbt channels
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE SBT;
DELETE BACKUPSET TAG "weekly_bkup";
DELETE EXPIRED
DELETE [FORCE | NOPROMPT] EXPIRED <maintenance_spec> [for
db_unique_name_option];
RMAN> CROSSCHECK BACKUP;
Deletes expired backup RMAN> DELETE EXPIRED BACKUP;
records
RMAN> CROSSCHECK BACKUPSET OF TABLESPACE uwdata DEVICE TYPE disk COMPLETED
BEFORE SYSDATE15;
RMAN> DELETE NOPROMPT EXPIRED BACKUPSET OF TABLESPACE uwdata DEVICE TYPE
disk COMPLETED BEFORE SYSDATE15;
DELETE OBSOLETE
DELETE [FORCE | NOPROMPT] OBSOLETE [obsOperandList] [device_type]
Delete Obsolete [device_specifier];
RMAN> DELETE FORCE OBSOLETE;
DELETE SCRIPT
DELETE [GLOBAL] SCRIPT '<script_name>'
Deletes a stored script
b_whole_10 from the recovery rman TARGET / CATALOG rman/cat@catdb
catalog RMAN> DELETE SCRIPT b_whole_10;
RMAN> DELETE GLOBAL SCRIPT b_whole_10;
Drop
DROP CATALOG
DROP CATALOG;
Drop the RMAN catalog
*See CREATE CATALOG Demo Above
DROP DATABASE
DROP DATABASE;
Use RMAN to issue the drop No demo is shown as this is something I would strongly recommend against
database command doing within RMAN.
DROP RESTORE POINT
DROP RESTORE POINT <restore_point_name>
Drop a restore point
*See CREATE RESTORE POINT Demo Above
DUPLICATE
DUPLICATE [TARGET] DATABASE TO <new_name>
Allocates axiliary channels and LOGFILE '<redo_log_file_path_and_name>' SIZE <integer> <K | M>
duplicates the target database
as newdb [SKIP READONLY] [NOFILENAMECHECK]
RUN {
ALLOCATE AUXILIARY CHANNEL d1 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL d2 DEVICE TYPE DISK;
DUPLICATE TARGET DATABASE TO newdb
LOGFILE
'?/oradata/aux1/redo01.log' SIZE 50M,
'?/oradata/aux1/redo02.log' SIZE 50M,
'?/oradata/aux1/redo03.log' SIZE 50M
SKIP READONLY
NOFILENAMECHECK;
}
EXIT
EXIT
RMAN> target /
Exit from RMAN or a terminal *RMAN> EXIT;
window
or
RMAN> HOST;
*$ EXIT;
RMAN>
FLASHBACK DATABASE
Returns the database to its FLASHBACK DATABASE TO SCN=<integer>
state at a previous time or
SCN *RMAN> FLASHBACK DATABASE TO SCN=42678315;
GRANT
GRANT <privilege> TO <schema_name>
Grant privileges to a recovery
catalog user *RMAN> GRANT CATALOG FOR DATABASE orabase TO repoomega;
*RMAN> GRANT REGISTER DATABASE TO repoomega;
HOST
Shell out of RMAN to the HOST
operating system for
command execution *See EXIT Demo Above
IMPORT
IMPORT CATALOG
Imports the metadata from one ?
recovery catalog into a
different recovery catalog ?
IMPORT RCVCAT
?
?
?
LIST
LIST <ARCHIVELOG | COPY | DB_UNIQUE_NAME | FAILURE> ALL;
Produce a detailed listing of
the indicated items *RMAN> LIST ARCHIVELOG ALL;
*RMAN> LIST COPY;
*RMAN> LIST DB_UNIQUE_NAME ALL;
*For LIST FAILURE See Advise Failure Demo Above
List the most recent Level 0 backups
Lisa T. was kind enough to select distinct to_char((b.CHECKPOINT_TIME), 'YYYYMMDD HH:MI.SS') t
send in this useful bit of code from v b, v ts, v f
that will give you a list of the
most recent Level 0 backups. where b.incremental_level = 0
and INCLUDED_IN_DATABASE_BACKUP='YES'
and f.file#=b.file#
and f.ts#=ts.ts#
group by b.checkpoint_time
order by 1;
PRINT SCRIPT
PRINT <IDENTIFIER | QUOTED_STRING>
Display a stored script
See CREATE SCRIPT Demos Above
PURGE
PURGE
?
See "CREATE SCRIPT" Demos Above
QUIT
QUIT
Exit the RMAN executable
*RMAN> QUIT;
RECOVER
Apply redo logs and RECOVER
incremental backups to
datafiles or data blocks
restored from backup or
datafile copies, in order to TBD
update them to a specified
time
REGISTER DATABASE
REGISTER DATABASE
Register a Target in the
Database *RMAN> REGISTER DATABASE;
Recovery Catalog
RELEASE CHANNEL
Release a channel that was RELEASE CHANNEL
allocated with an ALLOCATE
CHANNEL command or
ALLOCATE CHANNEL FOR See ? Demo Above
MAINTENANCE command
REPAIR FAILURE
Repair one or more failures REPAIR FAILURE [<NO | NOPROMPT | PREVIEW | USING>
recorded in the automated
diagnostic repository *See Advise Failure Demo Above
REPLACE SCRIPT
Replace an existing script REPLACE SCRIPT
stored in the recovery catalog.
If the script does not exist,
then REPLACE SCRIPT TBD
creates it
REPORT
Perform detailed analyses on REPORT
recovery catalog metadata RMAN> REPORT SCHEMA;
RESET DATABASE
RESET DATABASE TO INCARNATION <incarnation_identifier>;
Reset the incarnation of the
target database in the RMAN $ rman target / nocatalog
repository to a previous RMAN> STARTUP NOMOUNT;
database incarnation RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
RMAN> ALTER DATABASE MOUNT;
RMAN> LIST INCARNATION OF DATABASE orabase;
RMAN> RESET DATABASE TO INCARNATION 1;
RMAN> RESTORE DATABASE UNTIL SCN 4208974;
RMAN> RECOVER DATABASE UNTIL SCN 4208974;
RMAN> ALTER DATABASE OPEN RESETLOGS;
RMAN> LIST INCARNATION OF DATABASE orabase;
RESTORE
RESTORE
RMAN> target / catalog rman/rman@rman
Restore files from backup sets
or from disk copies to the
default or a new location RMAN> backup database;
RMAN> validate backupset 1;
SQL> conn scott/tiger
SQL> DELETE FROM emp WHERE rownum < 6;
SQL> COMMIT;
RMAN> restore database;
RESYNC
Perform a full resynchronization, which creates a snapshot control file and then copies any new or changed information from that snapshot control file to
the recovery catalog.
RESYNC CATALOG FROM CONTROLFILECOPY '<file_name>'
This example performs a full
resynchronization of the target
database after archiving all RESYNC FROM DB_UNIQUE_NAME ALL
unarchived redo logs
RESYNC FROM DB_UNIQUE_NAME '<db_unique_name>'
Mount the target database, $ rman target /
update the repository in the RMAN> STARTUP FORCE MOUNT;
current control file with
metadata from a backup RMAN> RESYNC CATALOG FROM CONTROLFILECOPY '/u01/cfile.dbf';
control file, then open the RMAN> ALTER DATABASE OPEN;
database
After adding a datafile to an
existing tablespace
*RMAN> RESYNC CATALOG;
Revoke
Revoke privileges from a REVOKE
recovery catalog user TBD
Run
RUN {
Execute a script of RMAN <script commands>
commands }
See "Allocate A Single Backup Channel" Demo Above
Send
Send a vendor-specific quoted string to one or more specific channels
SEND CHANNEL
Set
Set the value of various attributes that affect RMAN behavior for the duration of a RUN block or a session
SET <OFF | ON> [FOR ALL TABLESPACES]
?
TBD
SET ARCHIVELOG DESTINATION TO '<
Restore database and recover SET BACKUP COPIES <integer>
until the specified date and
time SET COMPRESSION ALGORITHM '<compression_algorithm_name>'
SET DECRYPTION IDENTIFIED BY <password>
SET ECHO <ON | OFF>
SET ENCRYPTION ALGORITHM '<algorithm_name>'
SET IDENTIFIED BY <password> [ONLY]
SET MAXCORRUPT FOR DATAFILE <dataFileSpec> TO <integer>
SET NEWNAME FOR DATAFILE <dataFileSpec> TO '<file_name>'
SET NEWNAME FOR DATAFILE <dataFileSpec> TO NEW
SET NEWNAME FOR TEMPFILE <tempFileSpec> TO '<quoted_string>'
SET NEWNAME FOR TEMPFILE <tempFileSpec> TO NEW
SET TO RESTORE POINT <restore_point_name>
SET UNTIL <TIME | SCN>
CONFIGURE ARCHIVELOG COPIES FOR DEVICE TYPE sbt TO 3;
CONFIGURE DATAFILE COPIES FOR DEVICE TYPE sbt TO 3;
RMAN> run {
ALLOCATE CHANNEL dev1 DEVICE TYPE sbt
PARMS 'ENV=(OB_DEVICE_1=stape1,OB_DEVICE_2=stape2)';
* SET BACKUP COPIES 2;
BACKUP DATABASE PLUS ARCHIVELOG;
}
RMAN> run {
SET UNTIL TIME = "TO_DATE('03/15/08 10:42:07','MM/DD/RR HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
}
SET AUXILIARY INSTANCE PARAMETER FILE TO '<file_name>
?
SET COMMAND ID TO '<string>'
SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE <deviceSpecifier> TO
<formatSpec>
SET DBID <integer>
RMAN> RUN {
ALLOCATE CHANNEL d1 DEVICE TYPE DISK FORMAT '/u01/%U';
ALLOCATE CHANNEL d2 DEVICE TYPE DISK FORMAT '/u02/%U';
SET COMMAND ID TO 'rman';
BACKUP INCREMENTAL LEVEL 0 DATABASE;
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
}
RMAN> SET DBID 3257174182;
RMAN> STARTUP FORCE NOMOUNT;
RMAN> RUN {
ALLOCATE CHANNEL t1 DEVICE TYPE sbt;
RESTORE SPFILE FROM AUTOBACKUP;
}
STARTUP FORCE; # RMAN restarts database with restored SPFILE
$ rman target /
RMAN> STARTUP FORCE NOMOUNT
RMAN> SET DBID 28014364;
RMAN> RUN {
SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u02/cf_
%F.bak';
RESTORE CONTROLFILE FROM AUTOBACKUP MAXSEQ 100;
}
ALTER DATABASE MOUNT;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
Show
ALL
All $ rman target / catalog repoomega1/oracle1@repos
RMAN> show all;
AUXNAME
Auxname $ rman target / catalog repoomega1/oracle1@repos
RMAN> show auxname;
{DATAFILE | ARCHIVELOG} BACKUP COPIES
Shutdown
SHUTDOWN <ABORT | IMMEDIATE | NORMAL | TRANSACTIONAL>
Shutdown the target database
RMAN> SHUTDOWN ABORT;
Spool
SPOOL LOG OFF
Write RMAN output to a log file
SPOOL LOG TO <file_name> [APPEND]
CONFIGURE DEFAULT DEVICE TYPE TO sbt;
SPOOL LOG TO '/tmp/current_config.log';
SHOW ALL;
SPOOL LOG OFF;
SPOOL LOG TO '/home/oracle/rman.log';
BACKUP DATABASE;
SPOOL LOG OFF;
SQL
SQL '<SQL_statement>'
Execute a SQL statement from
within RMAN RUN {
SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';
}
Startup
STARTUP <DBA | FORCE | MOUNT | NOMOUNT>
Startup a Database
STARTUP PFILE '<file_name>'
$ rman TARGET / CATALOG repoomega/oracle1@repos
RMAN> STARTUP MOUNT;
Switch
Specify that a datafile copy is now the current datafile, that is, the datafile pointed to by the control file. This command is equivalent to the SQL statement
ALTER DATABASE RENAME FILE as it applies to datafiles
Switch the controlfile to point SWITCH DATABASE TO COPY
to an ImageCopy of the data
file TBD
SWITCH DATAFILE '<data_file_specification>' TO COPY
TBD
SWITCH DATAFILE '<data_file_specification>' TO DATAFILECOPY '<file_name>'
TBD
SWITCH DATAFILE '<data_file_specification>' TO DATAFILECOPY TAG
'<tag_name>'
TBD
A disk fails, forcing a datafile SWITCH DATAFILE ALL
restore to a new disk location.
Connecting to the TARGET, RUN {
SET NEWNAME to rename ALLOCATE CHANNEL d1 DEVICE TYPE DISK;
the datafile, then RESTORE SQL "ALTER TABLESPACE uwdata OFFLINE IMMEDIATE";
the missing datafile. Run
SWITCH to point the control SET NEWNAME FOR DATAFILE '/u01/oradata/users01.dbf' TO
file to the new datafile and '/u02/oradata/users01.dbf';
then RECOVER. RESTORE TABLESPACE uwclass;
SWITCH DATAFILE ALL;
RECOVER TABLESPACE uwclass;
SQL "ALTER TABLESPACE uwclass ONLINE";
}
SWITCH TABLESPACE '<tablespace_name>' TO COPY
Assume all datafiles of the SQL "ALTER TABLESPACE users OFFLINE IMMEDIATE";
USERS tablespace are SWITCH TABLESPACE users TO COPY;
damaged but image copies
exist in the FRA. Connect to RECOVER TABLESPACE users;
the TARGET and use SWITCH SQL "ALTER TABLESPACE users ONLINE";
to point the control file to the
new datafiles then RECOVER.
SWITCH TEMPFILE <temp_file_specification> TO '<file_name>'
TBD
SWITCH TEMPFILE ALL
TBD
Transport Tablespace
Create transportable TRANSPORT TABLESPACE
tablespace sets from backup
for one or more tablespaces TBD
Unregister
UNREGISTER DATABASE '<database_name>' [NOPROMPT]
Unregister a Database from
the Catalog RMAN> UNREGISTER DATABASE;
UNREGISTER DB_UNIQUE_NAME '<db_unique_name>' [INCLUDING BACKUPS
[NOPROMPT]]
RMAN> LIST DB_UNIQUE_NAME ALL;
RMAN> UNREGISTER DB_UNIQUE_NAME 'ORADATA';
Upgrade Catalog
Upgrade the recovery catalog UPGRADE CATALOG
schema from an older version
to the version required by RMAN> UPGRADE CATALOG;
RMAN
Validate
Examine a backup set and report whether its data is intact. RMAN scans all of the backup pieces in the specified backup sets and looks at the
checksums to verify that the contents can be successfully restored
VALIDATE ARCHIVELOG ALL
Validate archivelogs VALIDATE ARCHIVELOG LIKE '<string_pattern>'
VALIDATE ARCHIVELOG FROM SCN <integer>
VALIDATE ARCHIVELOG BETWEEN SCN <integer> AND SCN <integer>
VALIDATE ARCHIVELOG UNTIL SCN <integer>
VALIDATE ARCHIVELOG FROM SEQUENCE <integer> [THREAD <integer>]
VALIDATE ARCHIVELOG SEQUENCE <integer> [THREAD <integer>]
VALIDATE ARCHIVELOG SEQUENCE BETWEEN <integer> AND <integer>
VALIDATE ARCHIVELOG UNTIL SEQUENCE <integer> [THREAD <integer>]
TIME BETWEEN '<date_string>' AND '<date_string>'
UNTIL TIME '<date_string>'
RMAN> VALIDATE ARCHIVELOG ALL;
VALIDATE BACKUPSET <primaryKey>
?
TBD
Validate all control files copies VALIDATE CONTROLFILECOPY ALL
VALIDATE CONTROLFILECOPY '<file_name>'
VALIDATE CONTROLFILECOPY LIKE '<string_pattern>'
RMAN> VALIDATE CONTROLFILECOPY ALL;
VALIDATE COPY OF DATABASE
VALIDATE COPY OF DATAFILE '<file_name>'
Validate all database, datafile, VALIDATE COPY OF DATAFILE <file_number>
or tablespace copies
VALIDATE COPY OF TABLESPACE '<tablespace_name>'
RMAN> VALIDATE COPY OF TABLESPACE 'UWDATA';
VALIDATE <blockObject>
?
TBD
VALIDATE CURRENT CONTROLFILE
Validate the current control file
RMAN> VALIDATE CURRENT CONTROLFILE;
RMAN Demos
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
Using a target database RMAN> CONFIGURE BACKUP OPTIMIZATION OFF; # default
controlfile instead of recovery
catalog RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
The following were provided to RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK
PSOUG by member Andrea TO '%F';
Sparling
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO
COMPRESSED BACKUPSET; # default
RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
RMAN> CONFIGURE MAXSETSIZE TO 2 G;
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;
RMAN> CONFIGURE SNAPSHOT CONTROLFILE NAME TO
'/u01/app/oracle/product/10.1.0.3/dbs/snapcf_pnbdb.f';
RMAN> connect target /
Incremental Level 0 Backup
RMAN> BACKUP INCREMENTAL LEVEL 0
TAG full_backup
FORMAT '/u03/backup/rman_fullbackup_%d_%t.%s.%c.%p.bus'
DATABASE;
RMAN> COPY CURRENT CONTROLFILE TO '/u03/backup/ctrlfile.backup';
RMAN> CROSSCHECK BACKUP;
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> DELETE OBSOLETE;
RMAN> DELETE EXPIRED ARCHIVELOG ALL;
RMAN> LIST BACKUP;
RMAN> LIST ARCHIVELOG ALL;
#!/bin/sh
Incremental #####################################################
# script to take a rman full backup
# this script must be run
# as the trusted user 'oracle10g' 'oracle9i' etc
#####################################################
# create output logs with that number and the current date in the ./rman/logs directory age out in 14-30 days
# get env IMPORTANT, if multiple Oracle SID's the env var ORACLE_SID must be set
. /etc/bashrc
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=/product/10.1.0.3;
export ORACLE_SID=pnbdb;
export LD_LIBRARY_PATH=/u01/app/oracle/product/10.1.0.3/lib:/lib:/usr/lib;
# set relative head of directory (work disk is u03, oracle disk is u01)
HEAD=/u03
WORK=/backup/scripts
cd
# unique logfile
DATE=`date +"%Y%m%d%H%M%S"`
LOGFILE='/u03/backup/rman/logs/rman_full_backup_''.log'
echo "log: " >
echo "Started " >>
date >>
echo instance >>
##########################################################################
/bin/rman @/rman_full.rcv >>
returncode=$?
echo return code >>
df >>
echo "Ended " >>
date >>
if [ ne 0 ]; then
echo " email error log " >>
mail csds_opb@u.washington.edu s"RMAN ERROR LOG for parnassus pnbdb
backup" <
mail amspar@u.washington.edu s"RMAN ERROR LOG for parnassus pnbdb
backup" <
fi
exit
RAC Demo
Crosschecking on Multiple Nodes of an Oracle Real Application Clusters Configuration: Example In this example, you perform a crosscheck of backups
on two nodes of an Oracle Real Application Clusters configuration, where each node has access to a subset of backups. It is assumed here that all
backups are accessible by at least one of the two nodes used in the crosscheck. Any backups not accessible from at least one of the nodes are marked
EXPIRED after the crosscheck.
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK CONNECT
RMAN on a RAC Cluster 'sys/oracle1@inst1';
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK CONNECT
'sys/oracle1@inst2';
CROSSCHECK BACKUP;
SELECT * FROM v_;
select count(*) from dba_hist_instance_recovery;
cd /app/oracle/product/OracleHomes/oradata/orcl
ls la
cd /app/oracle/product/OracleHomes/admin/orcl/bdump
tail alert_orcl.log
rm control02.ctl
ls la
SQL> conn hr/hr (after unlocking account)
SQL> desc jobs
SQL> INSERT INTO jobs VALUES (987,'TEST',0,1);
SQL> COMMIT;
also build a dummy table
tail alert_orcl.log
no one knows anything bad has happened
SQL> select file_name from mgmt;
lets do a shutdown and restart
SQL> shutdown immediate;
SQL> conn / as sysdba
Connected.
SQL> shutdown immediate;
ORA00210: cannot open the specified control file
ORA00202: control file:
'/app/oracle/product/OracleHomes/oradata/orcl/control02.ctl'
ORA27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
now we have a problem
SQL> shutdown abort;
tail the alert log and we know what happened
RUN {
STARTUP FORCE NOMOUNT;
RESTORE CONTROLFILE;
ALTER DATABASE MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
}
alter database open resetlogs;
ls la shows control files back
rman done
hadn't done a backup after last restore
RMAN> run {startup force nomount; restore controlfile;
alter database mount;}
tail the alert log
look at /app/oracle/OracleHomes/oradata/orcl
the file is restored
ls la
conn / as sysdba
shutdown immediate;
startup
note error message
SQL> startup
ORACLE instance started.
Total System Global Area 440401920 bytes
Fixed Size 1219880 bytes
Variable Size 130024152 bytes
Database Buffers 306184192 bytes
Redo Buffers 2973696 bytes
Database mounted.
ORA01589: must use RESETLOGS or NORESETLOGS option
for database open
SQL> startup mount;
tail alert_orcl.log
next dumped controlfiles 1 and 3
shutdown immediate fails
shutdown abort
connect to RMAN
2. Turn on block tracking when using RMAN backups (if running 10g or above)
REASON: This will allow RMAN to backup only those blocks that have changed since the last full backup, which will
reduce the time taken to back up, as less blocks will be backed up.
SQL> alter database enable block change tracking using file
�/u01/oradata/ora1/change_tracking.f�;
3. Duplex log groups and members and have more than one archive log dest
REASON: If an archivelog is corrupted or lost, by having multiple copies in multiple locations, the other logs will still be
available and could be used.
If an online log is deleted or becomes corrupt, you will have another member that can be used to recover if required.
SQL> alter system set log_archive_dest_2='location=/new/location/archive2' scope=both;
SQL> alter database add logfile member '/new/location/redo21.log' to group 1;
RMAN> backup check logical database plus archivelog delete input;
RMAN> restore validate database;
RMAN> backup database filesperset 1 plus archivelog delete input;
SQL> alter system set control_file_record_keep_time=21 scope=both;
This will keep 21 days of backup records.
RMAN> delete obsolete;
REASON: crosschecking will check that the catalog/controlfile matches the physical backups. If a backup is missing, it
will set the piece to 'EXPIRED' so when a restore is started, that it will not be eligible, and an earlier backup will be used.
To remove the expired backups from the catalog/controlfile use the delete expired command.
RMAN> crosscheck backup;
RMAN> delete expired backup;
RMAN> configure controlfile autobackup on;
SQL> recover database test;
Related Topics
Archivelogs
Block Change Tracking
DBMS_IR
DBMS_RCVMAN
DDL Event Triggers
Flashback Database
Flashback Query
Flashback Table
RMAN Demo
System Event Triggers