Index organized table and redo log it genereates
2008-10-14 13:30
246 查看
Today, OPS team raised an issue related to a program using IOT. The program generated too many archive logs thus it took more time to FTP archive logs to our DR server and apply them. 1~4 hours lag were caused by this issue. So our focus is why this program is generating so many archived logs.
Following is my testing:
CREATE TABLE IOT_OE_ORDER_LINES
(
LINE_ID NUMBER NOT NULL PRIMARY KEY,
ORG_ID NUMBER,
HEADER_ID NUMBER NOT NULL,
LINE_TYPE_ID NUMBER NOT NULL,
LINE_NUMBER NUMBER NOT NULL,
ORDERED_ITEM VARCHAR2(2000 BYTE),
REQUEST_DATE DATE,
PROMISE_DATE DATE,
SCHEDULE_SHIP_DATE DATE,
ORDER_QUANTITY_UOM VARCHAR2(3 BYTE),
PRICING_QUANTITY NUMBER,
PRICING_QUANTITY_UOM VARCHAR2(3 BYTE)
)
ORGANIZATION INDEX;
In sqlplus, set autot trace exp stat
SQL>
INSERT INTO IOT_OE_ORDER_LINES ( LINE_ID
,ORG_ID
,HEADER_ID
,LINE_TYPE_ID
,LINE_NUMBER
,ORDERED_ITEM
,REQUEST_DATE
,PROMISE_DATE
,SCHEDULE_SHIP_DATE
,ORDER_QUANTITY_UOM
,PRICING_QUANTITY
,PRICING_QUANTITY_UOM)
SELECT * FROM (SELECT LINE_ID
,ORG_ID
,HEADER_ID
,LINE_TYPE_ID
,LINE_NUMBER
,ORDERED_ITEM
,REQUEST_DATE
,PROMISE_DATE
,SCHEDULE_SHIP_DATE
,ORDER_QUANTITY_UOM
,PRICING_QUANTITY
,PRICING_QUANTITY_UOM
FROM OE_ORDER_LINES_ALL
ORDER BY LINE_ID
)
WHERE ROWNUM < 1000;
The order by line_id clause will reduce the redo size. When I tried to insert into a heap table, it generated even less redos.
Following is my testing:
CREATE TABLE IOT_OE_ORDER_LINES
(
LINE_ID NUMBER NOT NULL PRIMARY KEY,
ORG_ID NUMBER,
HEADER_ID NUMBER NOT NULL,
LINE_TYPE_ID NUMBER NOT NULL,
LINE_NUMBER NUMBER NOT NULL,
ORDERED_ITEM VARCHAR2(2000 BYTE),
REQUEST_DATE DATE,
PROMISE_DATE DATE,
SCHEDULE_SHIP_DATE DATE,
ORDER_QUANTITY_UOM VARCHAR2(3 BYTE),
PRICING_QUANTITY NUMBER,
PRICING_QUANTITY_UOM VARCHAR2(3 BYTE)
)
ORGANIZATION INDEX;
In sqlplus, set autot trace exp stat
SQL>
INSERT INTO IOT_OE_ORDER_LINES ( LINE_ID
,ORG_ID
,HEADER_ID
,LINE_TYPE_ID
,LINE_NUMBER
,ORDERED_ITEM
,REQUEST_DATE
,PROMISE_DATE
,SCHEDULE_SHIP_DATE
,ORDER_QUANTITY_UOM
,PRICING_QUANTITY
,PRICING_QUANTITY_UOM)
SELECT * FROM (SELECT LINE_ID
,ORG_ID
,HEADER_ID
,LINE_TYPE_ID
,LINE_NUMBER
,ORDERED_ITEM
,REQUEST_DATE
,PROMISE_DATE
,SCHEDULE_SHIP_DATE
,ORDER_QUANTITY_UOM
,PRICING_QUANTITY
,PRICING_QUANTITY_UOM
FROM OE_ORDER_LINES_ALL
ORDER BY LINE_ID
)
WHERE ROWNUM < 1000;
The order by line_id clause will reduce the redo size. When I tried to insert into a heap table, it generated even less redos.
相关文章推荐
- How to display table and its fields property
- LogMiner Dictionary Files and Redo Log Files
- What is Local Index and Global Index in Partition Table? What is Prefix Index and Nonprefix Index in table?
- How To Reclaim Wasted Space on The Segment (Table, Index and LOB) and Tablespace Levels (文档 ID 16827
- Asktom Oracle: Partition table and index .
- Know more about redo log buffer and latches
- MANUAL segment management on tablespace for AUD$ and FGA_LOG$ could lead to database hanging with gc
- SQL Server - Table and Index Organization
- Mysql Redo AND Undo log
- [Err] 1075 - Incorrect table definition; there can be only one auto column and it must be defined as
- Heap-Organized table 和 Index-Organized table 说明
- Table and Index Movement
- 简述Oracle IOT(Index Organized Table)(上)
- table被drop之后,关联的index和materialized view log是否进入回收站
- Latches and Tuning:Redo Log Buffer and Latches
- How To Reclaim Wasted Space on The Segment (Table, Index and LOB) and Tablespace Levels (文档 ID 16827
- ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be def
- This function has none of Deterministic,no sql,or reads sql data in its declaration and binary logging is enabled(you *might* want to use the less safe log_bin_trust_function_creators variable
- Index-Organized Table和Clustered Table
- 1075-Incorrect table definition;there can be only one auto column and it must be defined as a key