Oracle 10.2 New Features
description
Transcript of Oracle 10.2 New Features
1 © 2005 Julian Dyke
Oracle 10.2New Features
Julian Dyke
Independent Consultant
Web Version
juliandyke.com
2
© 2005 Julian Dykejuliandyke.co
m
Introduction
3
© 2005 Julian Dykejuliandyke.co
m
A Brief History of Oracle
Version Date
2 June 1979
3 March 1983
4 October 1984
5.0 April 1985
6.0 July 1988
7.0 June 1992
7.1 May 1994
7.2 May 1995
7.3 February 1996
4
© 2005 Julian Dykejuliandyke.co
m
A Brief History of Oracle Continued....
Version Date Release Name
8.0 June 1997 Oracle 8
8.1.5 February 1999 Oracle 8i Release 1
8.1.6 November 1999 Oracle 8i Release 2
8.1.7 August 2000 Oracle 8i Release 3
9.0.1 June 2001 Oracle 9i Release 1
9.2 May 2002 Oracle 9i Release 2
10.1 January 2004 Oracle 10g Release 1
10.2 July 2005 Oracle 10g Release 2
5
© 2005 Julian Dykejuliandyke.co
m
Comparison Between 10.1 and 10.2
Version 10.1 10.2
Supported Parameters 255 258
Unsupported Parameters 918 1127
Dynamic Performance Views (V$) 340 396
Fixed Views (X$) 529 597
Events (Waits) 811 874
Statistics 332 363
Latches 348 382
Background Processes (Fixed SGA) 109 157
6
© 2005 Julian Dykejuliandyke.co
m
DML ErrorLogging
7
© 2005 Julian Dykejuliandyke.co
m
DML Error Logging Introduced in Oracle 10.2
Works with DML statements: INSERT UPDATE MERGE DELETE
Logs errors encountered during DML operations in error logging table
Avoids rolling back entire statement if an error occurs
8
© 2005 Julian Dykejuliandyke.co
m
DML Error Logging Table Information about failed rows written to DML Error Logging
Table
Default name is ERR$_ plus first 25 characters of table name
Contains Mandatory columns - Oracle control information Optional columns - contain data from failed rows
Can be created manually or using DBMS_ERRLOG package
EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG(<DML table_name>,[<error_table_name>]);
9
© 2005 Julian Dykejuliandyke.co
m
DML Error Logging Table To create a DML error logging table use:
EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG(<DML table_name>);
For example:
EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('CAR');
Creates DML error table called ERR$_CAR
EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('CAR'.'ERR_CAR');
DBMS_ERRLOG creates columns with recommended data types in DML Error Table
Can optionally specify name for DML error table
10
© 2005 Julian Dykejuliandyke.co
m
Mandatory Columns Required in DML Error Logging Table
Column Name Data Type Description
ORA_ERR_NUMBER$ NUMBER Oracle error number
ORA_ERR_MESG$ VARCHAR2(2000) Oracle error message text
ORA_ERR_ROWID$ ROWID Rowid of the row in error(update and delete only)
ORA_ERR_OPTYP$ VARCHAR2(2) Type of operationI = insert, U = update, D = delete
ORA_ERR_TAG$ VARCHAR2(2000) User supplied tag
11
© 2005 Julian Dykejuliandyke.co
m
Optional Columns Can have zero, one or more columns Contain data from failed rows Error table column names same as DML table column names Error table data types may differ from DML table data types
Capture type conversion errors Column overflow
DML Table Column Type Error Logging Table Column Type
NUMBER VARCHAR2(4000)
CHAR/VARCHAR2(n) VARCHAR2(4000)
NCHAR/NVARCHAR2(n) NVARCHAR2(4000)
DATE/TIMESTAMP VARCHAR2(4000)
RAW RAW(2000)
ROWID UROWID
LONG/LOB Not supported
User-defined types Not supported
12
© 2005 Julian Dykejuliandyke.co
m
Example: CAR tableColumn Name Data Type
SEASON_KEY VARCHAR2(4)
RACE_KEY VARCHAR2(2)
POSITION NUMBER
DRIVER_KEY VARCHAR2(4)
TEAM_KEY VARCHAR2(3)
ENGINE_KEY VARCHAR2(3)
LAPS_COMPLETED NUMBER
CLASSIFICATION_KEY VARCHAR2(4)
NOTES VARCHAR2(100)
DRIVER_POINTS NUMBER
TEAM_POINTS NUMBER
EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG('CAR'.'ERR_CAR');
13
© 2005 Julian Dykejuliandyke.co
m
Example: ERR_CAR tableColumn Name Data Type
ORA_ERR_NUMBER$ NUMBER
ORA_ERR_MESG$ VARCHAR2(2000)
ORA_ERR_ROWID$ ROWID
ORA_ERR_OPTYP$ VARCHAR2(2)
ORA_ERR_TAG$ VARCHAR2(2000)
SEASON_KEY VARCHAR2(4000)
RACE_KEY VARCHAR2(4000)
POSITION VARCHAR2(4000)
DRIVER_KEY VARCHAR2(4000)
TEAM_KEY VARCHAR2(4000)
ENGINE_KEY VARCHAR2(4000)
LAPS_COMPLETED VARCHAR2(4000)
CLASSIFICATION_KEY VARCHAR2(4000)
NOTES VARCHAR2(4000)
DRIVER_POINTS VARCHAR2(4000)
TEAM_POINTS VARCHAR2(4000)
MandatoryColumns
OptionalColumns
14
© 2005 Julian Dykejuliandyke.co
m
LOG ERRORS Clause Syntax is:
LOG ERRORS INTO <error_table>[('<tag>')] REJECT LIMIT <limit>;
Can optionally specify a REJECT LIMIT subclause number of errors before statement terminates and rolls back can also specify UNLIMITED default value is 0 if statement rolls back, error logging table retains log entries
Can optionally specify tag to correlate failed rows with DML statement
15
© 2005 Julian Dykejuliandyke.co
m
Example: INSERT STATEMENT For example:
INSERT INTO car(
season_key, race_key, position, driver_key, team_key, engine_key,laps_completed, classification_key, notes
)SELECT
season_key, race_key, position, driver_key, team_key, engine_key,laps_completed, classification_key, notes
FROM external_carLOG ERRORS INTO err_car REJECT LIMIT UNLIMITED;
Note: INSERT statement does not return any error messages even if rows are written to DML error table
16
© 2005 Julian Dykejuliandyke.co
m
AsynchronousCommit
17
© 2005 Julian Dykejuliandyke.co
m
Asynchronous Commit In Oracle 10.2 and above COMMITs can be optionally deferred New syntax for COMMIT statement
COMMIT [ WRITE [ IMMEDIATE|BATCH] [WAIT | NOWAIT] ]
WRITE clause IMMEDIATE specifies redo should be written immediately
by LGWR process when transaction is committed (default) BATCH causes redo to be buffered to redo log
WAIT specifies commit will not return until redo is persistent in online redo log (default)
NOWAIT allows commit to return before redo is persistent in redo log
18
© 2005 Julian Dykejuliandyke.co
m
Asynchronous Commit COMMIT Statement Examples
COMMIT; -- IMMEDIATE WAIT
COMMIT WRITE; -- Same as COMMIT;
COMMIT WRITE IMMEDIATE; -- Same as COMMIT;
COMMIT WRITE IMMEDIATE WAIT; -- Same as COMMIT;
COMMIT WRITE BATCH; -- BATCH WAIT
COMMIT WRITE BATCH NOWAIT; -- BATCH NOWAIT
19
© 2005 Julian Dykejuliandyke.co
m
Asynchronous Commit COMMIT_WRITE initialization parameter
Controls default behaviour for commit operation Default value is Determines default value of COMMIT WRITE statement If neither is set then commit records are written to disk
before control is returned to user (Oracle 10.1 behaviour) Can be modified using ALTER SESSION statement
ALTER SESSION SET COMMIT_WRITE = 'IMMEDIATE,WAIT';
ALTER SESSION SET COMMIT_WRITE = 'BATCH,NOWAIT';
20
© 2005 Julian Dykejuliandyke.co
m
Asynchronous Commit Advantages:
Eliminates the wait for an I/O to the redo log Can improve performance by reducing latency Improves response times
Disadvantages: Must be able to tolerate loss of asynchronously committed
transaction
Applicable where: high volume of update transactions generate frequent redo
log writes to disk response times degraded by waits for redo log writes to
disk
21
© 2005 Julian Dykejuliandyke.co
m
Asynchronous Commit Some thoughts...
Difficult to test on single CPU systems
Can lose data therefore cannot be used in OLTP or web environments unless middleware detects and resolves errors
Might work in DSS and batch environments where processes are repeatable e.g.
Parallel batch processing Parallel direct load
But only of benefit if there are high number of transactions Does not apply in DSS or batch environments Change application to reduce number of COMMITs
22
© 2005 Julian Dykejuliandyke.co
m
PL/SQLConditionalCompilation
23
© 2005 Julian Dykejuliandyke.co
m
Conditional Compilation In Oracle 10.2 and above, PL/SQL can include conditional
compilation directives Useful for
Compatibility between releases (10.2 and upwards only) Trace / Debugging Testing / Quality Assurance
For example
CREATE OR REPLACE PROCEDURE p1BEGIN
DBMS_OUTPUT.PUT_LINE ('Before');
$IF $$trace_enabled $THENDBMS_OUTPUT.PUT_LINE ('Conditional Code');
$END
DBMS_OUTPUT.PUT_LINE ('After');END;/
24
© 2005 Julian Dykejuliandyke.co
m
Conditional Compilation By default conditional compilation flag will be NULL
SET SERVEROUTPUT ON
EXECUTE p1;
BeforeAfter
Conditional compilation can be enabled as follows:
ALTER PROCEDURE p1 COMPILEPLSQL_CCFLAGS = 'trace_enabled: true' REUSE SETTINGS;
EXECUTE p1;
BeforeConditional codeAfter
25
© 2005 Julian Dykejuliandyke.co
m
ColumnEncryption
26
© 2005 Julian Dykejuliandyke.co
m
Column Encryption In Oracle 10.2 and above individual columns can be encrypted
Columns are encrypted transparently to applications Columns are encrypted on disk
Requires a wallet Directory containing encryption keys Password protected Defined in SQLNET.ORA Directory must be created manually
27
© 2005 Julian Dykejuliandyke.co
m
Column Encryption Define wallet in SQLNET.ORA
ALTER SYSTEM SET ENCRYPTION WALLET OPENIDENTIFIED BY <password>;
Set up an encryption key
ALTER SYSTEM SET ENCRYPTION KEYIDENTIFIED BY <password>;
Restart instance and open wallet
WALLET_LOCATION = (SOURCE =
(METHOD = FILE)(METHOD_DATA =
(DIRECTORY = /u01/app/oracle/admin/TEST/wallet))
)
28
© 2005 Julian Dykejuliandyke.co
m
Column Encryption Create a table with an encrypted column
CREATE TABLE t1(
c1 VARCHAR2(10),c2 VARCHAR2(10) ENCRYPT
);
INSERT INTO t1 VALUES ('ABCDEFGHIJ','ABCDEFGHIJ');INSERT INTO t1 VALUES ('ABCDEFGHIJ','ABCDEFGHIJ');
Columns are decrypted when queried
SELECT c1, c2 FROM t1;
C1 C2---------- ----------ABCDEFGHIJ ABCDEFGHIJ
29
© 2005 Julian Dykejuliandyke.co
m
Column Encryption Columns are encrypted on disk
SELECT DBMS_ROWID.ROWID_TO_ABSOLUTE_FNO (ROWID,USER,'T1'),DBMS_ROWID.ROWID_BLOCK_NUMBER (ROWID)
FROM t1;
File Number Block Number----------- ------------ 4 63
ALTER SESSION SET EVENTS '10389 trace name context forever, level 1';
ALTER SYSTEM DUMP DATAFILE 4 BLOCK 63;
30
© 2005 Julian Dykejuliandyke.co
m
Column Encryption Columns are encrypted on disk
tab 0, row 0, @0x1f55tl: 67 fb: --H-FL-- lb: 0x1 cc: 2col 0: [10] 41 42 43 44 45 46 47 48 49 4acol 1: [52] c0 55 15 73 ec 73 c8 a9 ed b2 6f fa e0 17 c8 be 45 f1 7e 19 7a 6a 49 77 0a 31 83 19 b3 4f b9 78 ef f2 fb 38 7e 57 13 75 a0 fe 98 b7 ed ae d4 a6 78 a4 df 8dtab 0, row 1, @0x1f12tl: 67 fb: --H-FL-- lb: 0x1 cc: 2col 0: [10] 41 42 43 44 45 46 47 48 49 4acol 1: [52] 7d b1 af 57 74 e0 65 48 c9 c3 ec f6 de 2d 31 65 cf 40 eb 54 7e 76 6a a5 5b 67 21 b0 1f 6d 11 44 07 b9 ca 92 b0 30 b0 55 9c 28 46 b9 53 62 69 eb 15 4f 94 50
Column length changes on disk Actual lengths not reported by DUMP or VSIZE
31
© 2005 Julian Dykejuliandyke.co
m
Space Management
32
© 2005 Julian Dykejuliandyke.co
m
Online Shrink In Oracle 10.1 and above, tables and indexes can be shrunk
Must be using Automatic Segment Space Management Must enable row movement
ALTER TABLE t1 SHRINK SPACE;
ALTER TABLE t1 ENABLE ROW MOVEMENT;
To shrink table
By default compacts space adjusts high water mark releases space
To shrink dependent objects
Must also disable ROWID-based triggers
ALTER TABLE t1 SHRINK SPACE CASCADE;
33
© 2005 Julian Dykejuliandyke.co
m
Online Shrink In Oracle 10.1 and above can shrink
Tables Indexes IOT IOT Secondary Indexes Partitions Subpartitions Materialized Views Materialized View Logs
In Oracle 10.2 and above can also shrink LOB Segments Function Based Indexes IOT Overflow Segments
34
© 2005 Julian Dykejuliandyke.co
m
Dropping Empty Datafiles In Oracle 10.2 and above, empty datafiles can be dropped Useful in conjunction with online shrink
Cannot drop non-empty datafiles
ALTER TABLESPACE test DROP DATAFILE 'test1.dbf';
Cannot drop first file in tablespace
ORA-03263: cannot drop the first file of tablespace TEST
ORA-03262: the file is non-empty
35
© 2005 Julian Dykejuliandyke.co
m
Renaming Temporary Files In Oracle 10.2 and above temporary files can be renamed For example to rename temp1.dbf to temp2.dbf Take file offline using:
ALTER DATABASE TEMPFILE 'temp1.dbf' OFFLINE;
Move file at operating system level
$ mv temp1.dbf temp2.dbf
Rename file using:
ALTER DATABASE RENAME FILE 'temp1.dbf' TO 'temp2.dbf';
Bring file online again using:
ALTER DATABASE TEMPFILE 'temp2.dbf' ONLINE;
36
© 2005 Julian Dykejuliandyke.co
m
Trace andDiagnostics
37
© 2005 Julian Dykejuliandyke.co
m
Database / Instance Level Trace In Oracle 10.2 and above includes new procedures to enable
and disable trace at database and/or instance level New procedures in DBMS_MONITOR package
Argument Name Type In/Out Default
WAITS BOOLEAN IN DEFAULT
BINDS BOOLEAN IN DEFAULT
INSTANCE_NAME VARCHAR2 IN DEFAULT
PROCEDURE DATABASE_TRACE_ENABLE
PROCEDURE DATABASE_TRACE_DISABLE
Argument Name Type In/Out Default
INSTANCE_NAME VARCHAR2 IN DEFAULT
38
© 2005 Julian Dykejuliandyke.co
m
Database / Instance Level Trace Examples - database level
EXECUTE dbms_monitor.database_trace_enable;
EXECUTE dbms_monitor.database_trace_enable (binds=>TRUE);
EXECUTE dbms_monitor.database_trace_enable (waits=>TRUE);
Example - instance level
EXECUTE dbms_monitor.database_trace_enable (instance_name=>'RAC1);
Note - cannot disable instance level trace in Oracle 10.2.0.1
39
© 2005 Julian Dykejuliandyke.co
m
V$PROCESS_MEMORY Introduced in Oracle 10.2
Name Type
PID NUMBER
SERIAL# NUMBER
CATEGORY VARCHAR2(15)
ALLOCATED NUMBER
USED NUMBER
MAX_ALLOCATED NUMBER
Included in STATSPACK report in Oracle 10.2 and above
40
© 2005 Julian Dykejuliandyke.co
m
V$PROCESS_MEMORY Example - can be used to verify size of SQL and PL/SQL areas
for a process
SELECT * FROM V$PROCESS_MEMORYWHERE pid = 26;
PID SERIAL# CATEGORY ALLOCATED USED MAX ALLOCATED
26 3 SQL 102588 33164 806508
26 3 PL/SQL 27328 21560 31480
26 3 Freeable 1310720 0
26 3 Other 3119097 3119097
Base view is X$KSMPGST
41
© 2005 Julian Dykejuliandyke.co
m
SQL*Plus
42
© 2005 Julian Dykejuliandyke.co
m
SQL*Plus XQUERY In Oracle 10.2 and above SQL*Plus can run XQuery 1.0
commands against database For example
SQL> SET LONG 200SQL> SET LINESIZE 200SQL> XQUERY FOR $i IN ORA:VIEW ("CIRCUIT") RETURN $iSQL> /
<ROW><CIRCUIT_KEY>SHA</CIRCUIT_KEY><CIRCUIT_NAME>Shanghai</CIRCUIT_NAME><COUNTRY_KEY>CHI</COUNTRY_KEY></ROW>
<ROW><CIRCUIT_KEY>BAH</CIRCUIT_KEY><CIRCUIT_NAME>Bahrain</CIRCUIT_NAME><COUNTRY_KEY>BAH</COUNTRY_KEY></ROW>
...
55 item(s) selected
Returns
43
© 2005 Julian Dykejuliandyke.co
m
DBMS_OUTPUT
DBMS_OUTPUT maximum output buffer size In Oracle 10.1 and below - 1000000 bytes In Oracle 10.2 and above - unlimited
SET SERVEROUTPUT ON
DBMS_OUTPUT.ENABLE (1000000);
DBMS_OUTPUT.PUT_LINE (...);
SET SERVEROUTPUT ON SIZE 1000000
DBMS_OUTPUT.PUT_LINE (...);
DBMS_OUTPUT maximum line length In Oracle 10.1 and below - 255 bytes In Oracle 10.2 and above - 32767 bytes
44
© 2005 Julian Dykejuliandyke.co
m
Parameters
45
© 2005 Julian Dykejuliandyke.co
m
V$PARAMETER_VALID_VALUES Introduced in Oracle 10.2 Returns one row for each valid value for each parameter
taking scalar values
Name Type
NUM NUMBER
NAME VARCHAR2(64)
ORDINAL NUMBER
VALUE VARCHAR2(255)
ISDEFAULT VARCHAR2(64)
46
© 2005 Julian Dykejuliandyke.co
m
V$PARAMETER_VALID_VALUES E.g in Oracle 10.2 valid values for CURSOR_SHARING
parameter are: FORCE EXACT SIMILAR
SELECT name, value, isdefaultFROM v$parameter_valid_valuesWHERE name = 'cursor_sharing'ORDER BY ordinal;
Parameter Name Value IsDefault?
cursor_sharing FORCE FALSE
cursor_sharing EXACT TRUE
cursor_sharing SIMILAR FALSE
47
© 2005 Julian Dykejuliandyke.co
m
V$PARAMETER_VALID_VALUES View definition
SELECT view_definition FROM v$fixed_view_definitionWHERE view_name = 'GV$PARAMETER_VALID_VALUES';
SELECT inst_id,parno_kspvld_values,name_kspvld_values,ordinal_kspvld_values,value_kspvld_values,isdefault_kspvld_values
FROM x$kspvld_valuesWHERE TRANSLATE (name_kspvld_values,'_','#') NOT LIKE '#%';
48
© 2005 Julian Dykejuliandyke.co
m
X$KSPVLD_VALUES Introduced in 10.2 Contains all valid parameter values Includes supported and unsupported parameters
Name Type
ADDR RAW(4)
INDX NUMBER
INST_ID NUMBER
PARNO_KSPVLD_VALUES NUMBER
NAME_KSPVLD_VALUES VARCHAR2(64)
ORDINAL_KSPVLD_VALUES NUMBER
VALUE_KSPVLD_VALUES VARCHAR2(255)
ISDEFAULT_KSPVLD_VALUES VARCHAR2(64)
49
© 2005 Julian Dykejuliandyke.co
m
X$KSPVLD_VALUES To select valid values for all unsupported parameters use
SELECT name_kspvld_values,value_kspvld_values,isdefault_kspvld_values
FROM x$kspvld_valuesWHERE TRANSLATE (name_kspvld_values,'_','#') LIKE '#%';ORDER BY
name_kspvld_values,ordinal_kspvld_values;
50
© 2005 Julian Dykejuliandyke.co
m
Auditing
51
© 2005 Julian Dykejuliandyke.co
m
XML Audit Trail In Oracle 10.2 and above auditing records can be output in
XML
ALTER SYSTEM SET audit_trail = 'XML'SCOPE = SPFILE;
Requires instance restart Audit trail files are written to directory specified by AUDIT_DUMP_DEST
parameter Defaults to $ORACLE_BASE/admin/<SID>/adump Filenames like ora_3221174380.xml
52
© 2005 Julian Dykejuliandyke.co
m
XML Audit Trail Sample output
<Audit><Version>10.2</Version><AuditRecord>
<Audit_Type>1</Audit_Type><Session_Id>700</Session_Id><StatementId>7</StatementId>|<EntryId>1</EntryId><Extended_Timestamp>2005-09-09T15:30:01.584940</Extended_Timestamp><DB_User>USER1</DB_User><OS_User>oracle</OS_User><Userhost>server1</Userhost><OS_Process>26000</OS_Process><Terminal>pts/0</Terminal><Instance_Number>0</Instance_Number><Object_Schema>USER1</Object_Schema><Object_Name>TABLE1</Object_Name><Action>103</Action><Returncode>0</Returncode><Scn>3277463</Scn><SesActions>---------S------</SesActions>
</AuditRecord></Audit>
SELECT COUNT (*) FROM table1;
53
© 2005 Julian Dykejuliandyke.co
m
Restore Points
54
© 2005 Julian Dykejuliandyke.co
m
Restore Points In Oracle 10.2 and above restore points can be named
Previously required SCN or timestamp
Requires Archiving Flashback
To enable flashback set the following parameters:
ALTER SYSTEM SET db_recovery_file_dest_size = 1000M;ALTER SYSTEM SET db_recovery_file_dest = '<filename>';ALTER SYSTEM SET db_flashback_retention_target = 1440;
Enable flashback mode:SHUTDOWN IMMEDIATESTARTUP MOUNTALTER DATABASE FLASHBACK ON;ALTER DATABASE OPEN;
55
© 2005 Julian Dykejuliandyke.co
m
Restore Points Restore points can be
Guaranteed restore points FLASHBACK must be enabled before creation Must be manually deleted Can restore beyond time specified by
DB_FLASHBACK_RETENTION_TARGET parameter
Normal restore points Can be created before FLASHBACK is enabled Can be automatically deleted Cannot restore beyond time specified by
DB_FLASHBACK_RETENTION_TARGET parameter
56
© 2005 Julian Dykejuliandyke.co
m
Restore Points To create a restore point
CREATE RESTORE POINT restore_point1;
To drop a restore point
DROP RESTORE POINT restore_point1;
To flashback database to a restore point
SHUTDOWN IMMEDIATESTARTUP MOUNTFLASHBACK DATABASE TO RESTORE POINT restore_point1;ALTER DATABASE OPEN RESETLOGS;
CREATE RESTORE POINT restore_point2GUARANTEE FLASHBACK DATABASE;
57
© 2005 Julian Dykejuliandyke.co
m
Restore Points New dynamic performance view - V$RESTORE_POINT
Name Type
SCN NUMBER
DATABASE_INCARNATION# NUMBER
GUARANTEE_FLASHBACK_DATABASE VARCHAR2(3)
STORAGE_SIZE NUMBER
TIME TIMESTAMP(9)
NAME VARCHAR2(128)
Based on X$KCCNRS Stored in controlfile Maximum 2048 rows
58
© 2005 Julian Dykejuliandyke.co
m
Restore Points In Oracle 10.2 and above can also flashback table to restore
point Does not require flashback database Row movement must be enabled on table
ALTER TABLE t1 ENABLE ROW MOVEMENT;
CREATE RESTORE POINT restore_point3;
Create a restore point
DELETE * FROM t1;
Update table (not DROP or TRUNCATE)
Flashback table to restore point
FLASHBACK TABLE TO RESTORE POINT restore_point3;
59
© 2005 Julian Dykejuliandyke.co
m
RMAN
60
© 2005 Julian Dykejuliandyke.co
m
RMAN In Oracle 10.2 and above RMAN is supported by a number of
new dynamic performance views including:
V$BACKUP_ARCHIVELOG_DETAILSV$BACKUP_ARCHIVELOG_SUMMARYV$BACKUP_CONTROLFILE_DETAILSV$BACKUP_CONTROLFILE_SUMMARYV$BACKUP_COPY_DETAILSV$BACKUP_COPY_SUMMARYV$BACKUP_DATAFILE_DETAILSV$BACKUP_DATAFILES_SUMMARYV$BACKUP_PIECE_DETAILSV$BACKUP_SET_DETAILSV$BACKUP_SET_SUMMARYV$BACKUP_SPFILE_DETAILSV$BACKUP_SPFILE_SUMMARY
61
© 2005 Julian Dykejuliandyke.co
m
Conclusion If you are implementing a new system use Oracle 10.2
If you are considering upgrading an existing system
Upgrade if you use ASM Data Guard Spatial / OLAP etc
Consider upgrading if you use RAC
Otherwise perform a cost / benefit analysis before upgrading