34
Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Embed Size (px)

Citation preview

Page 1: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle Online Features - Golfing Instead of

Working on Weekends

Oracle World 2003 – Session 36769

Sep 2003

Denny WongConsultantDatabase Services

Page 2: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Introduction

Take a system outage at 7pm on a weekday?

No, because …

Internet applications

Nightly batch jobs

Users from other countries

7x24 retail systems

Users work late during month-end

so on ...

Page 3: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Introduction

As a Result ...

You must work on the weekend

Well, you can still go golfing on the weekend because …

The regular system outage is between 1am - 5am on Saturday

Page 4: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Introduction

Oracle9i Online Features

Create/Rebuild Indexes Online

ALTER TABLE/INDEX VALIDATE STRUCTURE ONLINE

ALTER INDEX REBUILD COMPUTE STATISTICS ONLINE

Dynamic SGA

Online Table Redefinition

Page 5: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Enhancements)

Create/Rebuild Indexes Online

Oracle extended these capabilities in 9i

Reverse-key index

Function-based index

Key-compressed index

IOT secondary index

Limitations

Parallel DML not supported while the index is being rebuilt

Bitmap and Cluster indexes can’t be rebuilt online

Page 6: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Enhancements)

ANALYZE TABLE VALIDATE STRUCTURE ONLINE

Users can still perform DML on the table

ANALYZE TABLE VALIDATE STRUCTURE ONLINE

Verify the integrity of data blocks/rows (e.g. rows belong to the correct partition)

Page 7: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Enhancements)

ANALYZE INDEX VALIDATE STRUCTURE ONLINE

Verify the structure of the index (e.g. Check block corruption)

When to rebuild an index? Cannot use the ONLINE option

SELECT DEL_LF_ROWS / LF_ROWS “Wasted” FROM INDEX_STATS

Rebuild the index If “Wasted” > 0.2, or

If index node utilization < 60% (PCT_USED < 60)

Page 8: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Enhancements)

ALTER INDEX REBUILD COMPUTE STATISTICS ONLINE

An index should be analyzed after it has been rebuilt.

“ALTER INDEX REBUILD ONLINE” followed by “ANALYZE INDEX”

“ALTER INDEX REBUILD COMPUTE STATISTICS”

But, users cannot perform DML on the table

“ALTER INDEX REBUILD COMPUTE STATISTICS ONLINE” is available in Oracle9i

Users can perform DML on the table

Page 9: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (New Features)

Dynamic SGA

In database tuning, it may require adjusting the buffer cache or shared pool size

Requires an instance restart, challenging for 7x24 systems

Dynamic SGA components

Buffer cache (DB_CACHE_SIZE)

Shared pool (SHARED_POOL_SIZE)

Large pool (LARGE_POOL_SIZE) in Oracle9i Release 2

Page 10: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Dynamic SGA) E.g., increase the buffer cache size from 32M to 64M dynamically

SQL> show sga Total System Global Area 219638280 bytes Fixed Size 735752 bytes Variable Size 184549376 bytes Database Buffers 33554432 bytes Redo Buffers 798720 bytes SQL> alter system set db_cache_size = 64m; System altered. SQL> show sga Total System Global Area 219638280 bytes Fixed Size 735752 bytes Variable Size 150994944 bytes Database Buffers 67108864 bytes Redo Buffers 798720 bytes

Page 11: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Dynamic SGA)

SGA_MAX_SIZE

SGA is basically made up of memory components, such as buffer cache, shared pool, large pool, java pool, etc ...

SGA_MAX_SIZE limits the maximum size the SGA can grow dynamically

Page 12: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Dynamic SGA)

SGA_MAX_SIZE Example

SGA_MAX_SIZE = 208M

Sum of all memory components = 200M

Increase the shared pool by another 16M will fail because there is only 8M (208M - 200M) available

SQL> alter system set shared_pool_size=32m; alter system set shared_pool_size=32m * ERROR at line 1: ORA-02097: parameter cannot be modified because specified value is invalid ORA-04033: Insufficient memory to grow pool

Page 13: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Dynamic SGA)

Granule

A piece of contiguous memory that Oracle allocates in SGA

If SGA < 128M, the granule size will be 4M otherwise it will be 16M

Oracle allocates space in SGA by multiples of granules

V$SGA views containing Dynamic SGA information … next slide -->

Page 14: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Dynamic SGA)

V$SGA

V$SGA_DYNAMIC_COMPONENTS Dynamic SGA component name, size, granule size, etc …

V$SGA_DYNAMIC_FREE_MEMORYAmount of SGA memory can be grown dynamically

V$SGA_CURRENT_RESIZE_OPSSGA resize operations currently in progress

V$SGA_RESIZE_OPSLast 100 SGA resize operations

Page 15: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

Online Table Redefinition

Allows you to redefine a table structure while users are performing DML on the table

Online Table Redefinition Capabilities

Reorganize a table

Drop/add columns

Change a heap (regular) table to an IOT

Change a non-partitioned table to a partition table

So on ...

Page 16: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

Online Table Redefinition

The whole redefinition process involves a number of DBMS_REDEFINITION procedure calls

CAN_REDEF_TABLE – Check if the table can be redefined

START_REDEF_TABLE – Start the redefinition process

SYNC_INTERIM_TABLE – Synchronize data modifications (Optional)

FINISH_REDEF_TABLE – Finish the redefinition process

ABORT_REDEF_TABLE – Abort the redefinition process

Page 17: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

Steps for Redefining a Table Online

How to redefine a table online? Let’s walk through an example …

Reorganize table EMPLOYEE and drop column OLD_SALARY

Step 1) Verify the Table

Step 2) Create the Interim Table

Step 3) Start the Redefinition Process

Step 4) Create Indexes, Constraints, Triggers and Grants on the Interim Table

Step 5) Complete the Redefinition Process

Step 6) The Final Step

Page 18: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

Step 1) Verify the TableLimitations of Online Table Redefinition. The table ...

must have a primary key (prior to Oracle9i Release 2)

must not contain any LONG or FILE columns

cannot have any materialized view defined on it

must be defined within the same schema

Execute the CAN_REDEF_TABLE procedure to verify

If the table cannot be redefined, it will raise an error

SQL> exec dbms_redefinition.can_redef_table ('HRMS','EMPLOYEE') PL/SQL procedure successfully completed.

Page 19: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

Step 2) Create the Interim Table

The interim table will ultimately become the new table

All desired table definitions must be defined on the interim table

However indexes, constraints and triggers will be created later in step 4

In our example, we will reorganize table EMPLOYEE and drop column OLD_SALARY

continue …

Page 20: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

SQL> desc hrms.employee Name Null? Type --------------- ----------- ----------------------- EMPNO NOT NULL NUMBER NAME VARCHAR2(30) SALARY NUMBER OLD_SALARY NUMBER SQL> CREATE TABLE INTERIM 2 (EMPNO NUMBER PRIMARY KEY, 3 NAME VARCHAR2(30), 4 SALARY NUMBER);

Page 21: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

Step 3) Start the Redefinition Process

Execute the START_REDEF_TABLE procedure

It will create a materialized view and log

–The log keeps track of any data modifications made by users

Then, it starts copying the data from EMPLOYEE to INTERIM

continue …

Page 22: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

If the original and interim table have different columns

Then, specify all the column names when calling the procedure

SQL> exec dbms_redefinition.start_redef_table

(‘HRMS','EMPLOYEE','INTERIM', 'EMPNO EMPNO, NAME NAME, SALARY SALARY'); PL/SQL procedure successfully completed.

Page 23: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

Step 4) Create Indexes, Constraints, Triggers and Grants on the Interim Table

Create after START_REDEF_TABLE is completed

What we define on the interim table will ultimately belong to the new table

Foreign key constraints must be created in disabled state

SQL> create index interim_indx on INTERIM(EMPNO, NAME);

Index created.

Page 24: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

Step 5) Complete the Redefinition ProcessExecute the FINISH_REDEF_TABLE procedure

Data Synchronization

–Any data modifications recorded in the materialized log will be transferred to INTERIM

Switch Tables

–EMPLOYEE will be locked

–Switch the table names of EMPLOYEE and INTERIM

–Drop the materialized view and log

continue ...

Page 25: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

SQL> exec dbms_redefinition.finish_redef_table('HRMS','EMPLOYEE','INTERIM');

PL/SQL procedure successfully completed.

Page 26: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

Step 6) The Final StepEMPLOYEE has been redefined successfully

INTERIM is now the old copy of EMPLOYEE

–Drop it to free up the space

Rename indexes, constraints and triggers on the new table

–Rename index INTERIM_INDX created in step 4

– In Oracle9i Release 2, constraints and column names can be renamed

continue ...

Page 27: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

Users are accessing the new EMPLOYEE table (without OLD_SALARY)

The whole table redefinition process is now completed

SQL> ALTER INDEX INTERIM_INDX RENAME EMPLOYEE_INDX ;

Index Altered.

SQL> desc hrms.employee

Name Null? Type ----------------------------------------- -------- ------------------ EMPNO NOT NULL NUMBER NAME VARCHAR2(30) SALARY NUMBER

Page 28: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

Synchronize Data Modifications (Optional)

Execute the SYNC_INTERIM_TABLE procedure

This procedure can be executed many times between START_REDEF_TABLE and FINISH_REDEF_TABLE

It propagates data modifications recorded in the materialized view log to the interim table

–e.g. Execute SYNC_INTERIM_TABLE to propagate 5 million records to the interim table before creating the index

continue ...

Page 29: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

This synchronization is part of FINISH_REDEF_TABLE

Calling SYNC_INTERIM_TABLE doesn’t affect the short period of time the original table is locked

TEST> exec dbms_redefinition.sync_interim_table('HRMS','EMPLOYEE','INTERIM');

PL/SQL procedure successfully completed.

Page 30: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Oracle9i (Online Table Redefinition)

Abort the Redefinition Process (if necessary)

E.g. You made a typo in the column name, or the tablespace ran out of space

Execute the ABORT_REDEF_TABLE procedure

The procedure will drop the materialized view and log

Re-start the redefinition process when the problem is fixed

Page 31: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Conclusion

Oracle9i extended these online capabilities

Create/Rebuild Indexes Online

Reverse-key, function-based and key-compressed indexes

ALTER TABLE/INDEX VALIDATE STRUCTURE ONLINE

Examine the table/index without locking the table

ALTER INDEX REBUILD COMPUTE STATICS ONLINE

Rebuild the index and collect statistics without locking the table

Page 32: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Conclusion

Dynamic SGAAdjust buffer cache, shared pool and large pool dynamically

SGA_MAX_SIZE limits the maximum size the SGA can grow dynamically

Oracle allocates space in SGA by multiples of granules

Online Table RedefinitionOnline capabilities

Reorganize a table

Change a heap table to IOT

Change a non-partitioned table to a partitioned table …

Page 33: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Conclusion

Online Table Redefinition

A number of procedure calls to redefine a table online

CAN_REDEF_TABLE

START_REDEF_TABLE

SYNC_INTERIM_TABLE

FINISH_REDEF_TABLE

Create indexes, constraints and triggers on the interim table

Rename indexes, constraints and triggers on the new table

Page 34: Oracle Online Features - Golfing Instead of Working on Weekends Oracle World 2003 – Session 36769 Sep 2003 Denny Wong Consultant Database Services

Questions?

Oracle Online Features – Golfing Instead of Working on Weekends

Session 36769

Denny Wong

[email protected] Sources

•Experience•Oracle Metalink•Oracle Technet