Download Behind The Scene: Oracle9i Automatic Undo Management and

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Oracle10g:
Behind the Scenes of
Flashback Technologies
DOUG Meeting
July 19, 2007
Kirtikumar Deshpande
KD
DOUG_071907
1
About Me

Senior Oracle DBA

Idearc Media

KD
Phone Directories Publication
DOUG_071907
2
Agenda








KD
Flashback Query - Background
Oracle10g - What’s New
Flashback Table
Flashback Drop Table
Flashback Version Query
Flashback Transaction Query
Flashback Database
Q&A
DOUG_071907
3
Flashback Query - Background

Oracle9i Release 1





Oracle9i Release 2

KD
Undo Tablespace
Automatic Undo Segments
Undo Retention Time
Session level Flashback Query feature
Statement level Flashback Query feature
DOUG_071907
4
What’s New in Oracle10g

Guaranteed Undo Retention


Auto Undo Retention Tuning


Undo Retention time adjusted
automatically
V$UNDOSTAT view enhancements

KD
Undo preserved for specified retention time
New information to track long running
queries
DOUG_071907
5
What’s New in Oracle10g

Pseudocolumns







KD
ORA_ROWSCN
VERSIONS_STARTTIME
VERSIONS_STARTSCN
VERSIONS_ENDTIME
VERSIONS_ENDSCN
VERISONS_XID
VERSIONS_OPERATION
DOUG_071907
6
What’s New in Oracle10g

Functions



View


FLASHBACK_TRANSACTION_QUERY
Recycle Bin

KD
SCN_TO_TIMESTAMP
TIMESTAMP_TO_SCN
To restore dropped table (not PURGED)
DOUG_071907
7
What’s New in Oracle10g

Flashback Drop


Flashback Table

KD
Restore dropped table
Restore table to a point in time in the past
DOUG_071907
8
What’s New in Oracle10g

Flashback Versions Query


Flashback Transaction Query

KD
How data changed over a timeframe
How data changed at transactions level
DOUG_071907
9
What’s New in Oracle10g

Flashback Database



KD
Restores database to a point in time in the
past
Does not use undo segments and
recyclebin
Needs special configuration
DOUG_071907
10
Guaranteed Undo Retention


KD
Guaranteed Retention makes sure that
the committed undo is preserved for the
specified retention time.
Transactions that need more undo
space may terminate due to lack of
undo space as Oracle will not overwrite
undo information.
DOUG_071907
11
Guaranteed Undo Retention

UNDO Tablespace Option




KD
create unto tablespace undo_tbs
datafile ‘/u09/oradata/ked9_undo_01.dbf’ size 100M
retention guarantee;
alter tablespace undo_tbs retention guarantee;
alter tablespace undo_tbs retention noguarantee;
RETENTION NOGUARANTEE - Default
DOUG_071907
12
Auto Undo Retention Tuning


UNDO_RETENTION value may change
V$UNDOSTAT tracks undo retention
value for sampled intervals

KD
TUNED_UNDORETENTION
DOUG_071907
13
V$UNDOSTAT View

New Columns





KD
MAXQUERYID
ACTIVEBLKS
UNEXPIREDBLKS
EXPIREDBLKS
TUNED_UNDORETENTION
DOUG_071907
14
V$UNDOSTAT Example
BEGIN_TIME
END_TIME
MAXQUERYID
MAXQL TUNEDRET ACTBLK UNXPBLK
XPBLK
------------------------ ------------------------- ------------------- ----------- -------------- ---------- ----------- ---------22-FEB-06 23:54:49 23-FEB-06 00:04:49
0
1800
448
256 142416
22-FEB-06 23:44:49 22-FEB-06 23:54:49
0
1800
448
130176
12496
22-FEB-06 23:34:49 22-FEB-06 23:44:49 b1z64uk2y5p6v
5997
6358
448
130048
12496
22-FEB-06 23:24:49 22-FEB-06 23:34:49 b1z64uk2y5p6v
5392
5752
448
130048
12496
22-FEB-06 23:14:49 22-FEB-06 23:24:49 b1z64uk2y5p6v
4785
5145
448
130048
12496
22-FEB-06 23:04:49 22-FEB-06 23:14:49 b1z64uk2y5p6v
4178
4538
448
130048
12496
22-FEB-06 22:54:49 22-FEB-06 23:04:49 b1z64uk2y5p6v
3571
3932
448
129792
12496
22-FEB-06 22:44:49 22-FEB-06 22:54:49 b1z64uk2y5p6v
2965
3325
448
129664
12496
22-FEB-06 22:34:49 22-FEB-06 22:44:49 b1z64uk2y5p6v
2357
2720
448
129408
13392
22-FEB-06 22:24:49 22-FEB-06 22:34:49 b1z64uk2y5p6v
1752
2112
448
129408
13264
22-FEB-06 22:14:49 22-FEB-06 22:24:49 b1z64uk2y5p6v
1145
1800
448
129408
13136
22-FEB-06 22:04:49 22-FEB-06 22:14:49 b1z64uk2y5p6v
538
1800
448
127616
13264
22-FEB-06 21:54:49 22-FEB-06 22:04:49 5rv0j37z1ztgm
203
1800
448
256
15952
22-FEB-06 21:44:49 22-FEB-06 21:54:49 ac20brc1kdgdx
927
1800
448
256
15952
22-FEB-06 21:34:49 22-FEB-06 21:44:49 ac20brc1kdgdx
320
1800
448
128
16080
KD
DOUG_071907
15
Flashback Table




KD
Recovers table data to point in time in
the past
Uses undo segments to reconstruct
past data
Undo information must be available in
undo segments
Uses an internal global temporary
table, SYS_TEMP_FBT, to stage data
DOUG_071907
16
Flashback Table

Enable row movement


Flashback Table to SCN or Timestamp


KD
alter table t1 enable row movement;
flashback table t1 to <SCN>;
flashback table t1 to timestamp(
<systimestamp – interval ‘5’ minute>);
DOUG_071907
17
Flashback Table

Example:
SQL> select department_id, department_name from dept;
DEPARTMENT_ID DEPARTMENT_NAME
--------------------- -----------------------------10 Administration
20 Marketing
30 Purchasing
40 Human Resources
KD
DOUG_071907
18
Flashback Table
SQL> delete dept;
4 rows deleted.
SQL> commit;
Commit complete.
SQL> flashback table dept to timestamp (systimestamp - interval ‘10' minute);
Flashback complete.
SQL> select department_id, department_name from dept;
DEPARTMENT_ID DEPARTMENT_NAME
--------------------- -----------------------------10 Administration
20 Marketing
30 Purchasing
40 Human Resources
KD
DOUG_071907
19
Flashback Table

Restrictions and Limitations

Does not work for







KD
Clustered tables
Tables in Materialized View
Advance Queuing Tables
Data Dictionary Tables
Table Partitions/Sub-Partitions
Nested Tables
Remote Tables
DOUG_071907
20
Flashback Table

Restrictions and Limitations



Bug: 3076151 - Unpublished

KD
Referential Integrity Constraints may limit
flashback operation
Any DDL operation on table will restrict
flashback time (or SCN) to the DDL time
Internal GTT SYS_TEMP_FBT not dropped
after flashback operation
DOUG_071907
21
Flashback Drop Table



Really an ‘undrop’ Table operation
Does not use Undo Segments
Uses ‘RECYCLEBIN’ to restore a dropped
table
flashback table t1 to before drop;
flashback table t1 to before drop rename t2;
KD
DOUG_071907
22
Flashback Drop Table


DROP TABLE with PURGE option, or
purging RECYCLEBIN will NOT restore
the table
Restored dependent objects (triggers,
indexes, constraints) will get system
generated names

KD
Need to RENAME those explicitly
DOUG_071907
23
Flashback Drop Table

Recyclebin


Dropped objects do not release disk space
Views



Public Synonym

KD
USER_RECYCLEBIN
DBA_RECYCLEBIN
RECYCLEBIN
DOUG_071907
24
Flashback Drop Table

Recyclebin


Enabled by Default
Can be Disabled

10g R1
alter system set “_recyclebin” = false;

10g R2
alter session set recyclebin = off;
alter system set recyclebin = off;
KD
DOUG_071907
25
Flashback Drop Table

Example:
SQL> drop table fdt cascade constraints;
Table dropped.
SQL> select object_name, original_name, type from recyclebin;
OBJECT_NAME
---------------------------------------------BIN$2NkxhR9EQYaOi6iEb5MyEw==$0
BIN$eH23RoJUSg6P6x98+kvK/w==$0
BIN$3jL+fbUZTza4Z0HRlZMYvA==$0
BIN$2EIiiDRWQ8u/P1c366iICg==$0
ORIGINAL_NAME
--------------------FDT_I1
FDT_PK
FDT_T1
FDT
TYPE
-------------INDEX
INDEX
TRIGGER
TABLE
4 rows selected.
KD
DOUG_071907
26
Flashback Drop Table
SQL> flashback table fdt to before drop;
Flashback complete.
SQL> select index_name obj_name, ‘NDX' type from user_indexes where table_name ='FDT‘
2 union
3 select trigger_name obj_name, 'TRIG' type from user_triggers where table_name = 'FDT'
4 union
5 select constraint_name obj_name, 'CNSTR- ' ||constraint_type
6 from user_constraints where table_name = 'FDT'
7 /
OBJ_NAME
TYPE
------------------------------------------------ --------------BIN$2NkxhR9EQYaOi6iEb5MyEw==$0 NDX
BIN$3jL+fbUZTza4Z0HRlZMYvA==$0 TRIG
BIN$ZsANcV+8TfGmDzwH5wzIFg==$0 CNSTR- P
BIN$eH23RoJUSg6P6x98+kvK/w==$0 NDX
BIN$s10Y+0xMTriID+82Iqovxg==$0
CNSTR- C
5 rows selected.
KD
DOUG_071907
27
Flashback Drop Table

Limitations (Does not Work For)




KD
External Tables
Materialized Views
Tables in Dictionary Managed Tablespaces
Tables in SYSTEM Tablespace
DOUG_071907
28
Flashback Versions Query


View row data at various commit times
(Versions) within a timeframe
Enhanced SQL syntax to retrieve rows


Timeframe can be Timestamp range or SCN
range


KD
VERSIONS BETWEEN Clause
VERSIONS BETWEEN TIMESTAMP
VERSIONS BETWEEN SCN
DOUG_071907
29
Flashback Versions Query




KD
Timeframe must fall within Undo
Retention time
Can be used to audit and analyze
changes
Can assist in testing Application process
Only committed changes can be seen
DOUG_071907
30
Flashback Versions Query

Syntax:
SELECT * FROM DEPARTMENTS
VERSIONS BETWEEN TIMESTAMP
(SYSTIMESTAMP – INTERVAL ’30’ MINUTE)
AND
(SYSTIMESTAMP)
WHERE DEPARTMENT_ID = 100;
KD
DOUG_071907
31
Flashback Versions Query

Pseudo-columns with returned rows:

VERSIONS_STARTSCN


VERSIONS_ENDSCN

KD
If NULL, then version existed prior to the lower
bound of SCN range, else the starting SCN for
version of row data shown
If NULL, then shown version is current row or
row is deleted, else the SCN when row version
expired
DOUG_071907
32
Flashback Versions Query

Pseudo-columns:

VERSIONS_STARTTIME


VERSIONS_ENDTIME

KD
If NULL then version existed prior to the lower
bound of timestamp range, else the starting
timestamp for version of row data shown
If NULL then shown version is current row or
row is deleted, else the timestamp when row
version expired
DOUG_071907
33
Flashback Versions Query

Pseudo-columns:

VERSIONS_XID


VERSIONS_OPERATION

KD
Transaction ID that created the row version
DML Operation that created the row version
(I=Insert, D=Delete, U=Update)
DOUG_071907
34
Flashback Versions Query

Example
SQL> select department_id, department_name, manager_id,
2
versions_starttime, versions_endtime,
3
versions_operation
4
from fv
5
versions between timestamp
6
(systimestamp - interval '5' minute)
7
and (systimestamp)
8
order by department_id, versions_starttime;
KD
DOUG_071907
35
Flashback Versions Query
Dept
-----10
10
20
30
40
DeptName
MGR_ID VERSIONS_STARTTIME VERSIONS_ENDTIME
V
---------------------- ---------- ----------------------------- ---------------------------- Administration
888 23-FEB-06 05.27.01 PM
U
Administration
200
23-FEB-06 05.27.01 PM
Marketing
201
Purchasing
114
Human Resources
203
KD
DOUG_071907
36
Flashback Versions Query

Example
SQL> select versions_xid xid, versions_startscn start_scn,
2
versions_endscn end_scn, versions_operation oper,
3
department_id, department_name, manager_id
4 from fv
5 versions between scn
6
minvalue
7
and maxvalue;
KD
DOUG_071907
37
Flashback Version Query
XID
START_SCN END_SCN O Dept DeptName
MANAGER_ID
------------------------ --------------- --------------- - ------- ------------------- ----------------08002400E9080000
5373412
U 30 Purchasing
777
06000000DB080000
5373406
U 10 Administration
888
5373406
10 Administration
200
20 Marketing
201
5373412
30 Purchasing
114
40 Human Resources
203
6 rows selected.
KD
DOUG_071907
38
Flashback Transaction Query



View/Recover all data modifications at
Transaction level
FLASHBACK_TRANSACTION_QUERY
view provides Undo SQL among other
information
SELECT ANY TRANSACTION privilege
needed to access this view
KD
DOUG_071907
39
Flashback Transaction Query

KD
Can be used to audit and analyze
changes

Can assist in testing Application process

Only committed changes can be seen

Supplements Flashback Versions Query
DOUG_071907
40
Flashback Transaction Query

FLASHBACK_TRANSACTION_QUERY View
Name
Null? Type
----------------------------- -------- -------------XID
RAW(8)
START_SCN
NUMBER
START_TIMESTAMP
DATE
COMMIT_SCN
NUMBER
COMMIT_TIMESTAMP
DATE
LOGON_USER
VARCHAR2(30)
UNDO_CHANGE#
NUMBER
OPERATION
VARCHAR2(32)
TABLE_NAME
VARCHAR2(256)
TABLE_OWNER
VARCHAR2(32)
ROW_ID
VARCHAR2(19)
UNDO_SQL
VARCHAR2(4000)
KD
DOUG_071907
41
Flashback Transaction Query

Example:

List transactions and affected tables in ‘KIRTI’ schema
after a certain date and time
SQL> select xid, operation, start_scn, commit_scn
2
table_owner, table_name, logon_user, undo_sql
3
from flashback_transaction_query
4
where table_owner = 'KIRTI'
5
and start_timestamp >=
6
to_timestamp('02/03/06 17:27:00','MM/DD/YY HH24:MI:SS');
KD
DOUG_071907
42
Flashback Transaction Query
XID
OPERATION START_SCN COMMIT_SCN TABLE_OWNER TABLE_NAME
----------------------- --------------- -------------- ----------------- ------------------ ----------------LOGON_USER
---------------UNDO_SQL
-----------------------------------------------------------------------------------------06000000DB080000 UPDATE
5373227
5373406 KIRTI
FV
KIRTI
update "KIRTI"."FV" set "MANAGER_ID" = '200' where ROWID = 'AAANtjAAEAAAAGkAAA';
08002400E9080000 UPDATE
5373406
5373412 KIRTI
FT
KIRTI
update "KIRTI"."FT" set "MANAGER_ID" = '204' where ROWID = 'AAANtkAAEAAAAGsAAC';
08002400E9080000 UPDATE
5373406
5373412 KIRTI
FV
KIRTI
update "KIRTI"."FV" set "MANAGER_ID" = '114' where ROWID = 'AAANtjAAEAAAAGkAAC';
KD
DOUG_071907
43
Flashback Database



KD
Set entire database to point in time in
the past
Similar to the database Point In Time
Recovery
Special setup is required to enable this
functionality – Does not use undo
segments and Recyclebin
DOUG_071907
44
Flashback Database

Flashback Logs - New type of log files



KD
FB Logs are written to by a new
background process RVWR
FB Logs are kept in flashback area
FB Logs contain before images of Oracle
data blocks and are not archived
DOUG_071907
45
Flashback Database

New initialization parameters

DB_RECOVERY_FILE_DEST


DB_RECOVERY_FILE_DEST_SIZE


Hard limit for the disk space used by files in
recovery area
DB_FLASHBACK_RETENTION_TARGET

KD
Default location of flash recovery area
Upper limit in minutes on how far database can
be flashed back
DOUG_071907
46
Flashback Database

New Views

V$FLASH_RECOVERY_AREA_USAGE


V$FLASHBACK_DATABASE_LOG


Information about flashback data, used for sizing flash
recovery area
V$FLASHBACK_DATABASE_STAT

KD
Usage information about flash recovery area
Information about I/O overhead of logging flashback
data, estimated flashback spaces based on workloads
DOUG_071907
47
Flashback Database

Set up database for Flashback mode




Define new initialization parameters
Mount the database
Enable Archive log mode, if required
Switch database to run in ‘flashback’ mode
alter database flashback on;

KD
Open database
DOUG_071907
48
Flashback Database

Database can be flashed back using:

SQL command
SQL> flashback database to scn|timestamp;

RMAN command
RMAN> flashback database to scn|time;



KD
OEM Recovery Wizard
Database must be in ‘mount’ mode
Database must be opened with ‘resetlogs’
DOUG_071907
49
Flashback Database

Oracle10g R2

Restore points

Aliases to SCN that you can use in
flashback database command
create restore point batch_start_1;
create restore point batch_mid_1;
flashback database to restore point batch_mid_1;
KD
DOUG_071907
50
Flashback Database

Oracle10g R2

Restore points
V$RESTORE_POINT shows defined
restore points
 Remove unwanted restore point

drop restore point batch_start_1;
KD
DOUG_071907
51
Questions ?
Thank you.
Contact: [email protected]
KD
DOUG_071907
52
Related documents