Oracle 10.2 New Features
Download
Report
Transcript Oracle 10.2 New Features
Oracle 10.2
New Features
Julian Dyke
Independent Consultant
Web Version
1
© 2005 Julian Dyke
juliandyke.com
Introduction
2
© 2005 Julian Dyke
juliandyke.com
A Brief History of Oracle
3
© 2005 Julian Dyke
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
juliandyke.com
A Brief History of Oracle
4
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
© 2005 Julian Dyke
juliandyke.com
Comparison Between 10.1 and 10.2
5
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
© 2005 Julian Dyke
juliandyke.com
DML Error
Logging
6
© 2005 Julian Dyke
juliandyke.com
DML Error Logging
7
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
© 2005 Julian Dyke
juliandyke.com
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>]);
8
© 2005 Julian Dyke
juliandyke.com
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
Can optionally specify name for DML error table
EXECUTE DBMS_ERRLOG.CREATE_ERROR_LOG
('CAR'.'ERR_CAR');
9
DBMS_ERRLOG creates columns with recommended data
types in DML Error Table
© 2005 Julian Dyke
juliandyke.com
Mandatory Columns
10
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 operation
I = insert, U = update, D = delete
ORA_ERR_TAG$
VARCHAR2(2000)
User supplied tag
© 2005 Julian Dyke
juliandyke.com
Optional Columns
11
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
© 2005 Julian Dyke
juliandyke.com
Example: CAR table
Column 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');
12
© 2005 Julian Dyke
juliandyke.com
Example: ERR_CAR table
13
Column 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)
© 2005 Julian Dyke
Mandatory
Columns
Optional
Columns
juliandyke.com
LOG ERRORS Clause
Syntax is:
LOG ERRORS INTO <error_table>[('<tag>')]
REJECT LIMIT <limit>;
14
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
© 2005 Julian Dyke
juliandyke.com
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_car
LOG ERRORS INTO err_car REJECT LIMIT UNLIMITED;
15
Note: INSERT statement does not return any error messages
even if rows are written to DML error table
© 2005 Julian Dyke
juliandyke.com
Asynchronous
Commit
16
© 2005 Julian Dyke
juliandyke.com
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
17
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
© 2005 Julian Dyke
juliandyke.com
Asynchronous Commit
18
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
© 2005 Julian Dyke
juliandyke.com
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';
19
© 2005 Julian Dyke
juliandyke.com
Asynchronous Commit
20
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
© 2005 Julian Dyke
juliandyke.com
Asynchronous Commit
21
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
© 2005 Julian Dyke
juliandyke.com
PL/SQL
Conditional
Compilation
22
© 2005 Julian Dyke
juliandyke.com
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 p1
BEGIN
DBMS_OUTPUT.PUT_LINE ('Before');
$IF $$trace_enabled $THEN
DBMS_OUTPUT.PUT_LINE ('Conditional Code');
$END
DBMS_OUTPUT.PUT_LINE ('After');
END;
/
23
© 2005 Julian Dyke
juliandyke.com
Conditional Compilation
By default conditional compilation flag will be NULL
SET SERVEROUTPUT ON
EXECUTE p1;
Before
After
Conditional compilation can be enabled as follows:
ALTER PROCEDURE p1 COMPILE
PLSQL_CCFLAGS = 'trace_enabled: true' REUSE SETTINGS;
EXECUTE p1;
Before
Conditional code
After
24
© 2005 Julian Dyke
juliandyke.com
Column
Encryption
25
© 2005 Julian Dyke
juliandyke.com
Column Encryption
26
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
© 2005 Julian Dyke
juliandyke.com
Column Encryption
Define wallet in SQLNET.ORA
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /u01/app/oracle/admin/TEST/wallet)
)
)
Restart instance and open wallet
ALTER SYSTEM
SET ENCRYPTION WALLET OPEN
IDENTIFIED BY <password>;
Set up an encryption key
ALTER SYSTEM
SET ENCRYPTION KEY
IDENTIFIED BY <password>;
27
© 2005 Julian Dyke
juliandyke.com
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
28
© 2005 Julian Dyke
juliandyke.com
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;
29
© 2005 Julian Dyke
juliandyke.com
Column Encryption
Columns are encrypted on disk
tab 0, row 0, @0x1f55
tl: 67 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [10] 41 42 43 44 45 46 47 48 49 4a
col 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 8d
tab 0, row 1, @0x1f12
tl: 67 fb: --H-FL-- lb: 0x1 cc: 2
col 0: [10] 41 42 43 44 45 46 47 48 49 4a
col 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
30
Column length changes on disk
Actual lengths not reported by DUMP or VSIZE
© 2005 Julian Dyke
juliandyke.com
Space
Management
31
© 2005 Julian Dyke
juliandyke.com
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 ENABLE ROW MOVEMENT;
Must also disable ROWID-based triggers
To shrink table
ALTER TABLE t1 SHRINK SPACE;
By default
compacts space
adjusts high water mark
releases space
To shrink dependent objects
ALTER TABLE t1 SHRINK SPACE CASCADE;
32
© 2005 Julian Dyke
juliandyke.com
Online Shrink
33
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
© 2005 Julian Dyke
juliandyke.com
Dropping Empty Datafiles
In Oracle 10.2 and above, empty datafiles can be dropped
Useful in conjunction with online shrink
ALTER TABLESPACE test DROP DATAFILE 'test1.dbf';
Cannot drop non-empty datafiles
ORA-03262: the file is non-empty
Cannot drop first file in tablespace
ORA-03263: cannot drop the first file of tablespace TEST
34
© 2005 Julian Dyke
juliandyke.com
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;
35
© 2005 Julian Dyke
juliandyke.com
Trace and
Diagnostics
36
© 2005 Julian Dyke
juliandyke.com
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
37
PROCEDURE DATABASE_TRACE_ENABLE
Argument Name
Type
In/Out
Default
WAITS
BOOLEAN
IN
DEFAULT
BINDS
BOOLEAN
IN
DEFAULT
INSTANCE_NAME
VARCHAR2
IN
DEFAULT
PROCEDURE DATABASE_TRACE_DISABLE
Argument Name
Type
In/Out
Default
INSTANCE_NAME
VARCHAR2
IN
DEFAULT
© 2005 Julian Dyke
juliandyke.com
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);
38
Note - cannot disable instance level trace in Oracle 10.2.0.1
© 2005 Julian Dyke
juliandyke.com
V$PROCESS_MEMORY
39
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
© 2005 Julian Dyke
juliandyke.com
V$PROCESS_MEMORY
Example - can be used to verify size of SQL and PL/SQL areas
for a process
SELECT * FROM V$PROCESS_MEMORY
WHERE pid = 26;
PID
SERIAL#
CATEGORY
26
3
SQL
26
3
PL/SQL
26
3
26
3
40
ALLOCATED
USED
MAX ALLOCATED
102588
33164
806508
27328
21560
31480
Freeable
1310720
0
Other
3119097
3119097
Base view is X$KSMPGST
© 2005 Julian Dyke
juliandyke.com
SQL*Plus
41
© 2005 Julian Dyke
juliandyke.com
SQL*Plus XQUERY
In Oracle 10.2 and above SQL*Plus can run XQuery 1.0
commands against database
For example
SQL> SET LONG 200
SQL> SET LINESIZE 200
SQL> XQUERY FOR $i IN ORA:VIEW ("CIRCUIT") RETURN $i
SQL> /
Returns
<ROW><CIRCUIT_KEY>SHA</CIRCUIT_KEY><CIRCUIT_NAME>Shang
hai</CIRCUIT_NAME><COUNTRY_KEY>CHI</COUNTRY_KEY></ROW>
<ROW><CIRCUIT_KEY>BAH</CIRCUIT_KEY><CIRCUIT_NAME>Bahrai
n</CIRCUIT_NAME><COUNTRY_KEY>BAH</COUNTRY_KEY></ROW>
...
55 item(s) selected
42
© 2005 Julian Dyke
juliandyke.com
DBMS_OUTPUT
DBMS_OUTPUT maximum line length
In Oracle 10.1 and below - 255 bytes
In Oracle 10.2 and above - 32767 bytes
SET SERVEROUTPUT ON
DBMS_OUTPUT.ENABLE (1000000);
DBMS_OUTPUT.PUT_LINE (...);
SET SERVEROUTPUT ON SIZE 1000000
DBMS_OUTPUT.PUT_LINE (...);
43
DBMS_OUTPUT maximum output buffer size
In Oracle 10.1 and below - 1000000 bytes
In Oracle 10.2 and above - unlimited
© 2005 Julian Dyke
juliandyke.com
Parameters
44
© 2005 Julian Dyke
juliandyke.com
V$PARAMETER_VALID_VALUES
45
Introduced in Oracle 10.2
Returns one row for each valid value for each parameter
taking scalar values
© 2005 Julian Dyke
Name
Type
NUM
NUMBER
NAME
VARCHAR2(64)
ORDINAL
NUMBER
VALUE
VARCHAR2(255)
ISDEFAULT
VARCHAR2(64)
juliandyke.com
V$PARAMETER_VALID_VALUES
E.g in Oracle 10.2 valid values for CURSOR_SHARING
parameter are:
FORCE
EXACT
SIMILAR
SELECT name, value, isdefault
FROM v$parameter_valid_values
WHERE name = 'cursor_sharing'
ORDER BY ordinal;
46
© 2005 Julian Dyke
Parameter Name
Value
IsDefault?
cursor_sharing
FORCE
FALSE
cursor_sharing
EXACT
TRUE
cursor_sharing
SIMILAR
FALSE
juliandyke.com
V$PARAMETER_VALID_VALUES
View definition
SELECT view_definition FROM v$fixed_view_definition
WHERE 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_values
WHERE TRANSLATE (name_kspvld_values,'_','#')
NOT LIKE '#%';
47
© 2005 Julian Dyke
juliandyke.com
X$KSPVLD_VALUES
48
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)
© 2005 Julian Dyke
juliandyke.com
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_values
WHERE TRANSLATE (name_kspvld_values,'_','#')
LIKE '#%';
ORDER BY
name_kspvld_values,
ordinal_kspvld_values;
49
© 2005 Julian Dyke
juliandyke.com
Auditing
50
© 2005 Julian Dyke
juliandyke.com
XML Audit Trail
In Oracle 10.2 and above auditing records can be output in
XML
ALTER SYSTEM SET audit_trail = 'XML'
SCOPE = SPFILE;
51
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
© 2005 Julian Dyke
juliandyke.com
XML Audit Trail
Sample output
SELECT COUNT (*)
FROM table1;
<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>
52
© 2005 Julian Dyke
juliandyke.com
Restore Points
53
© 2005 Julian Dyke
juliandyke.com
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 IMMEDIATE
STARTUP MOUNT
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;
54
© 2005 Julian Dyke
juliandyke.com
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
55
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
© 2005 Julian Dyke
juliandyke.com
Restore Points
To create a restore point
CREATE RESTORE POINT restore_point1;
CREATE RESTORE POINT restore_point2
GUARANTEE FLASHBACK DATABASE;
To drop a restore point
DROP RESTORE POINT restore_point1;
To flashback database to a restore point
SHUTDOWN IMMEDIATE
STARTUP MOUNT
FLASHBACK DATABASE TO RESTORE POINT restore_point1;
ALTER DATABASE OPEN RESETLOGS;
56
© 2005 Julian Dyke
juliandyke.com
Restore Points
57
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
© 2005 Julian Dyke
juliandyke.com
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 a restore point
CREATE RESTORE POINT restore_point3;
Update table (not DROP or TRUNCATE)
DELETE * FROM t1;
Flashback table to restore point
FLASHBACK TABLE TO RESTORE POINT restore_point3;
58
© 2005 Julian Dyke
juliandyke.com
RMAN
59
© 2005 Julian Dyke
juliandyke.com
RMAN
In Oracle 10.2 and above RMAN is supported by a number of
new dynamic performance views including:
V$BACKUP_ARCHIVELOG_DETAILS
V$BACKUP_ARCHIVELOG_SUMMARY
V$BACKUP_CONTROLFILE_DETAILS
V$BACKUP_CONTROLFILE_SUMMARY
V$BACKUP_COPY_DETAILS
V$BACKUP_COPY_SUMMARY
V$BACKUP_DATAFILE_DETAILS
V$BACKUP_DATAFILES_SUMMARY
V$BACKUP_PIECE_DETAILS
V$BACKUP_SET_DETAILS
V$BACKUP_SET_SUMMARY
V$BACKUP_SPFILE_DETAILS
V$BACKUP_SPFILE_SUMMARY
60
© 2005 Julian Dyke
juliandyke.com
Conclusion
61
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
© 2005 Julian Dyke
juliandyke.com
Thank you for listening
[email protected]
62
© 2005 Julian Dyke
juliandyke.com