Partition Additions

Fellowes Plastic Partition Additions Nameplate 9w x 2 1 2h Graphite FEL75906
Fellowes Plastic Partition Additions Nameplate 9w x 2 1 2h Graphite FEL75906
$17.00
Time Remaining: 29d 3h 22m
Buy It Now for only: $17.00

Fellowes 75275 Plastic Partition Additions File Pocket
Fellowes 75275 Plastic Partition Additions File Pocket
$5.99
Time Remaining: 28d 19h 33m
Buy It Now for only: $5.99

Fellowes Partition Additions Note Rail 18w x 1 15 16h Dark Graphite FEL7502201
Fellowes Partition Additions Note Rail 18w x 1 15 16h Dark Graphite FEL7502201
$16.00
Time Remaining: 10d 16h 4m
Buy It Now for only: $16.00

NEW Fellowes Partition Additions Note Rail 7502201
NEW Fellowes Partition Additions Note Rail 7502201
$6.99
Time Remaining: 22d 20h 57m
Buy It Now for only: $6.99

FEL 7501101 6 Fellowes Pro Series Partition Additions Coat Hook and Clip Sl
FEL 7501101 6 Fellowes Pro Series Partition Additions Coat Hook and Clip Sl
$90.99
Time Remaining: 14d 17h 7m
Buy It Now for only: $90.99

FELLOWES CRC 75023Partition Additions Waterfall Sorter
FELLOWES CRC 75023Partition Additions Waterfall Sorter
$17.49
Time Remaining: 28d 12h 23m
Buy It Now for only: $17.49

Fellowes Partition Additions Coat Hook
Fellowes Partition Additions Coat Hook
$10.85
Time Remaining: 23d 22h
Buy It Now for only: $10.85

Fellowes Partition Additions Coat Hook 4x5 1 8x6
Fellowes Partition Additions Coat Hook 4x5 1 8x6
$10.84
Time Remaining: 18d 21h 50m
Buy It Now for only: $10.84

Fellowes Partition Additions Hook 5 Per Pack Dark Graphite 75271
Fellowes Partition Additions Hook 5 Per Pack Dark Graphite 75271
$2.99
Time Remaining: 23d 13h 35m
Buy It Now for only: $2.99

Fellowes Mesh Partition Additions Nameplate 16 1 4w x 1 7 8d x 13 3 8h Black
Fellowes Mesh Partition Additions Nameplate 16 1 4w x 1 7 8d x 13 3 8h Black
$17.00
Time Remaining: 29d 3h 22m
Buy It Now for only: $17.00

NEW Fellowes Mesh Partition Additions Nameplate 16 1
NEW Fellowes Mesh Partition Additions Nameplate 16 1
$7.99
Time Remaining: 22d 20h 59m
Buy It Now for only: $7.99

Fellowes Plastic Partition Additions Clips 1 1 4w x 1 7 8h 4 Pk FEL75270
Fellowes Plastic Partition Additions Clips 1 1 4w x 1 7 8h 4 Pk FEL75270
$9.00
Time Remaining: 29d 3h 22m
Buy It Now for only: $9.00

NEW Fellowes Partition Additions 7528101 Shelf
NEW Fellowes Partition Additions 7528101 Shelf
$13.99
Time Remaining: 23d 9h 8m
Buy It Now for only: $13.99

NEW Fellowes Partition Additions Step File Pocket 75901
NEW Fellowes Partition Additions Step File Pocket 75901
$24.99
Time Remaining: 22d 20h 54m
Buy It Now for only: $24.99

Fellowes File Pocket Wall Files Partition Additions CRC 75275
Fellowes File Pocket Wall Files Partition Additions CRC 75275
$8.99
Time Remaining: 4d 16h 26m
Buy It Now for only: $8.99

Fellowes 22318 Perf Ect Partition Additions Three Pocket Organizer Black
Fellowes 22318 Perf Ect Partition Additions Three Pocket Organizer Black
$60.00
Time Remaining: 3d 17h 23m
Buy It Now for only: $60.00

NEW Fellowes Partition Additions Coat Hook  Clip
NEW Fellowes Partition Additions Coat Hook Clip
$10.99
Time Remaining: 22d 20h 56m
Buy It Now for only: $10.99

NEW Fellowes Partition Additions Single Letter Tray
NEW Fellowes Partition Additions Single Letter Tray
$12.99
Time Remaining: 22d 20h 58m
Buy It Now for only: $12.99

Fellowes 75905 Partition Additions Dry Erase Board 2 Item Bundle Dry Era
Fellowes 75905 Partition Additions Dry Erase Board 2 Item Bundle Dry Era
$31.32
Time Remaining: 29d 16h 22m
Buy It Now for only: $31.32

Fellowes 22318 Black Perf Ect Partition Additions Three Pocket Organizer
Fellowes 22318 Black Perf Ect Partition Additions Three Pocket Organizer
$26.91
Time Remaining: 7d 18h 48m
Buy It Now for only: $26.91

PARTITION ADDITIONS FILE ORGANIZER FELLOWES 22316 Perf
PARTITION ADDITIONS FILE ORGANIZER FELLOWES 22316 Perf
$20.69
Time Remaining: 9d 15h 22m
Buy It Now for only: $20.69

FELLOWES CRC55083 Partition Additions Coat Hook
FELLOWES CRC55083 Partition Additions Coat Hook
$12.49
Time Remaining: 4d 49m
Buy It Now for only: $12.49

Fellowes 7502201 Partition Additions Note Rail
Fellowes 7502201 Partition Additions Note Rail
$18.79
Time Remaining: 27d 5h 22m
Buy It Now for only: $18.79

Fellowes Partition Additions Spring Clip
Fellowes Partition Additions Spring Clip
$8.26
Time Remaining: 28d 15h 46m
Buy It Now for only: $8.26

Fellowes 7528701 Partition Additions Magazine File
Fellowes 7528701 Partition Additions Magazine File
$22.32
Time Remaining: 27d 3h 48m
Buy It Now for only: $22.32

NEW Fellowes Partition Additions Pencil Cup 75272
NEW Fellowes Partition Additions Pencil Cup 75272
$5.99
Time Remaining: 22d 20h 54m
Buy It Now for only: $5.99

Fellowes Mesh Partition Additions Name Plate
Fellowes Mesh Partition Additions Name Plate
$11.93
Time Remaining: 21h 19m
Buy It Now for only: $11.93

FELLOWES 7527002 Partition Additions Clip 18 Pack Dark Graphite
FELLOWES 7527002 Partition Additions Clip 18 Pack Dark Graphite
$15.99
Time Remaining: 14d 19h 20m
Buy It Now for only: $15.99

NEW Plastic Partition Additions153 Clips Graphit
NEW Plastic Partition Additions153 Clips Graphit
$2.99
Time Remaining: 11d 1h 31m
Buy It Now for only: $2.99

NEW Plastic Partition Additions153 Hooks Graphit
NEW Plastic Partition Additions153 Hooks Graphit
$2.99
Time Remaining: 11d 1h 31m
Buy It Now for only: $2.99

NEW Partition Additions Pop Up Note Dispenser for 3x
NEW Partition Additions Pop Up Note Dispenser for 3x
$5.99
Time Remaining: 16d 22h 21m
Buy It Now for only: $5.99

NEW Fellowes Additions Partition File Pocket 75275
NEW Fellowes Additions Partition File Pocket 75275
$9.99
Time Remaining: 22d 20h 54m
Buy It Now for only: $9.99

Fellowes Partition Additions Business Card Paper Clip Holder 4125x175 Inches
Fellowes Partition Additions Business Card Paper Clip Holder 4125x175 Inches
$3.99
Time Remaining: 2d 19h 16m
Buy It Now for only: $3.99

FELLOWES 75906 Plastic Partition Additions Nameplate
FELLOWES 75906 Plastic Partition Additions Nameplate
$10.89
Time Remaining: 10d 22h 2m
Buy It Now for only: $10.89

Fellowes Partition Additions 6 Compartments Step File
Fellowes Partition Additions 6 Compartments Step File
$23.36
Time Remaining: 27d 5h 15m
Buy It Now for only: $23.36

Fellowes 7528501 Partition Additions Single Letter Tray
Fellowes 7528501 Partition Additions Single Letter Tray
$23.40
Time Remaining: 27d 5h 15m
Buy It Now for only: $23.40

Fellowes 7502301 Partition Additions Waterfall Sorter
Fellowes 7502301 Partition Additions Waterfall Sorter
$23.40
Time Remaining: 27d 5h 21m
Buy It Now for only: $23.40

Fellowes Partition Additions Clips
Fellowes Partition Additions Clips
$2.00
Time Remaining: 16h 20m
Buy It Now for only: $2.00

New Fellowes 5508801 Partition Additions Corner Organizer Graphite Retail box
New Fellowes 5508801 Partition Additions Corner Organizer Graphite Retail box
$9.99
Time Remaining: 26d 16h 1m
Buy It Now for only: $9.99

NEW Fellowes Plastic Partition Additions Nameplate 9
NEW Fellowes Plastic Partition Additions Nameplate 9
$7.99
Time Remaining: 4d 4h 31m
Buy It Now for only: $7.99

Fellowes Partition Additions Coat Hook and Clip 7501101
Fellowes Partition Additions Coat Hook and Clip 7501101
$72.78
Time Remaining: 8d 2h 41m
Buy It Now for only: $72.78

NEW Fellowes Partition Additions Clip Dark Graphite
NEW Fellowes Partition Additions Clip Dark Graphite
$9.99
Time Remaining: 22d 20h 57m
Buy It Now for only: $9.99

NEW Fellowes Mesh Partition Additions Double Coat Hook
NEW Fellowes Mesh Partition Additions Double Coat Hook
$8.99
Time Remaining: 22d 20h 56m
Buy It Now for only: $8.99

FELLOWES 75275  Partition Additions File Pocket
FELLOWES 75275 Partition Additions File Pocket
$14.89
Time Remaining: 29d 13h 15m
Buy It Now for only: $14.89

Fellowes 75905 Partition Additions Dry Erase Board
Fellowes 75905 Partition Additions Dry Erase Board
$23.62
Time Remaining: 26d 13h 45m
Buy It Now for only: $23.62

FELLOWES 75272 PARTITION ADDITIONS PENCIL CUP BLACK
FELLOWES 75272 PARTITION ADDITIONS PENCIL CUP BLACK
$12.89
Time Remaining: 14d 14h 12m
Buy It Now for only: $12.89

Fellowes Partition Additions 7528101 Shelf Organizer
Fellowes Partition Additions 7528101 Shelf Organizer
$30.11
Time Remaining: 28d 15h 13m
Buy It Now for only: $30.11

Fellowes Mesh Partition Additions Double Garment Hook 4 1 2w x 6h Black
Fellowes Mesh Partition Additions Double Garment Hook 4 1 2w x 6h Black
$19.00
Time Remaining: 10d 16h 4m
Buy It Now for only: $19.00

Fellowes 7528601 Partition Additions Step File
Fellowes 7528601 Partition Additions Step File
$25.88
Time Remaining: 27d 5h 15m
Buy It Now for only: $25.88

FELLOWES 75275 PARTITION ADDITIONS FILE PCKT DGRAPHITE
FELLOWES 75275 PARTITION ADDITIONS FILE PCKT DGRAPHITE
$14.89
Time Remaining: 2d 10h 19m
Buy It Now for only: $14.89

Fellowes Plastic Partition Additions File Pocket 14 x 2 1 2 x 7 3 4 Graphite
Fellowes Plastic Partition Additions File Pocket 14 x 2 1 2 x 7 3 4 Graphite
$16.58
Time Remaining: 18d 13h 4m
Buy It Now for only: $16.58

Fellowes Mesh Partition Additions Triple File Pocket Black 75901
Fellowes Mesh Partition Additions Triple File Pocket Black 75901
$22.99
Time Remaining: 19d 17h 26m
Buy It Now for only: $22.99

Fellowes 75310 Partition Additions Triple Tray
Fellowes 75310 Partition Additions Triple Tray
$38.15
Time Remaining: 28d 15h 17m
Buy It Now for only: $38.15

Fellowes Plastic Partition Additions Clips Graphite 4 per Pack
Fellowes Plastic Partition Additions Clips Graphite 4 per Pack
$9.89
Time Remaining: 23d 17h 15m
Buy It Now for only: $9.89

Fellowes Partition Additions 7500901 Portable Triple Pocket Slate Gray
Fellowes Partition Additions 7500901 Portable Triple Pocket Slate Gray
$15.55
Time Remaining: 17h 12m
Buy It Now for only: $15.55

Fellowes Plastic Partition Additions Hooks Graphite 5 per Pack
Fellowes Plastic Partition Additions Hooks Graphite 5 per Pack
$10.97
Time Remaining: 4d 17h 1m
Buy It Now for only: $10.97

Fellowes Partition Additions Business Card Paper Clip Holder 4 1 8x1 3 4
Fellowes Partition Additions Business Card Paper Clip Holder 4 1 8x1 3 4
$11.00
Time Remaining: 9d 19h 48m
Buy It Now for only: $11.00

Fellowes 75904 Mesh Partition Additions Step File
Fellowes 75904 Mesh Partition Additions Step File
$30.78
Time Remaining: 27d 5h 28m
Buy It Now for only: $30.78

Fellowes Plastic Partition Additions Dry Erase Board with Marker
Fellowes Plastic Partition Additions Dry Erase Board with Marker
$18.97
Time Remaining: 4d 17h 1m
Buy It Now for only: $18.97

NEW Fellowes Partition Additions 6 Compartments Step Fi
NEW Fellowes Partition Additions 6 Compartments Step Fi
$12.99
Time Remaining: 22d 20h 56m
Buy It Now for only: $12.99

NEW Fellowes Partition Additions Magazine File Dark G
NEW Fellowes Partition Additions Magazine File Dark G
$11.99
Time Remaining: 22d 20h 58m
Buy It Now for only: $11.99

Partition Additions File Pocket Mesh 1 1 2 Capacity Black FEL7702701
Partition Additions File Pocket Mesh 1 1 2 Capacity Black FEL7702701
$10.51
Time Remaining: 10d 17h 56m
Buy It Now for only: $10.51

FEL 75905 Fellowes Partition Additions Dry Erase Board
FEL 75905 Fellowes Partition Additions Dry Erase Board
$25.99
Time Remaining: 17d 17h
Buy It Now for only: $25.99

Fellowes Partition Additions File Pocket Mesh 1 1 2 Capacity Black
Fellowes Partition Additions File Pocket Mesh 1 1 2 Capacity Black
$16.46
Time Remaining: 18d 13h 4m
Buy It Now for only: $16.46

Fellowes 75310 Wire Partition Additions Three Tray Organizer Black
Fellowes 75310 Wire Partition Additions Three Tray Organizer Black
$43.99
Time Remaining: 14d 17h 9m
Buy It Now for only: $43.99

FEL 7502101 Fellowes Partition Additions Mini Step File Dark Graphite
FEL 7502101 Fellowes Partition Additions Mini Step File Dark Graphite
$17.99
Time Remaining: 18d 31m
Buy It Now for only: $17.99

NEW Fellowes Partition Additions Coat Hook 75510
NEW Fellowes Partition Additions Coat Hook 75510
$12.99
Time Remaining: 14d 8h 26m
Buy It Now for only: $12.99

Fellowes 22318 Perf Ect Partition Additions Three Pocket Organizer Black
Fellowes 22318 Perf Ect Partition Additions Three Pocket Organizer Black
$64.99
Time Remaining: 14d 17h 6m
Buy It Now for only: $64.99

Fellowes 75901 Partition Additions Step File Pocket
Fellowes 75901 Partition Additions Step File Pocket
$36.89
Time Remaining: 27d 5h 21m
Buy It Now for only: $36.89

Perf ect Partition Additions Step File Organizer
Perf ect Partition Additions Step File Organizer
$38.35
Time Remaining: 27d 5h 22m
Buy It Now for only: $38.35

Fellowes 7528201 Partition Additions Pop Up Note Dispenser for 3 x 3 Pads
Fellowes 7528201 Partition Additions Pop Up Note Dispenser for 3 x 3 Pads
$19.89
Time Remaining: 29d 19h 10m
Buy It Now for only: $19.89

Fellowes Partition Additions Waterfall File Sorter 12w x 19 3 4h FEL7502301
Fellowes Partition Additions Waterfall File Sorter 12w x 19 3 4h FEL7502301
$23.00
Time Remaining: 10d 16h 4m
Buy It Now for only: $23.00

Fellowes Plastic Partition Additions Business Card Paper Clip Holder Graphite
Fellowes Plastic Partition Additions Business Card Paper Clip Holder Graphite
$12.39
Time Remaining: 3d 17h 42m
Buy It Now for only: $12.39

Fellowes Plastic Partition Additions Hooks 1 1 4w x 1 7 8h 5 Pk FEL75271
Fellowes Plastic Partition Additions Hooks 1 1 4w x 1 7 8h 5 Pk FEL75271
$9.00
Time Remaining: 10d 16h 4m
Buy It Now for only: $9.00

Fellowes 7703101 Mesh Partition Additions Dry Erase Board Black
Fellowes 7703101 Mesh Partition Additions Dry Erase Board Black
$31.99
Time Remaining: 14d 17h 10m
Buy It Now for only: $31.99

Partition Additions Phone MP3 Holster
Partition Additions Phone MP3 Holster
$5.79
Time Remaining: 10d 10h 31m
Buy It Now for only: $5.79

Fellowes 75210 Wire Partition Additions Step File
Fellowes 75210 Wire Partition Additions Step File
$10.88
Time Remaining: 4d 2h 42m
Buy It Now for only: $10.88

NEW Partition Additions Step File Dark Graphite
NEW Partition Additions Step File Dark Graphite
$13.99
Time Remaining: 16d 22h 21m
Buy It Now for only: $13.99

NEW Plastic Partition Additions153 Dry Erase Boar
NEW Plastic Partition Additions153 Dry Erase Boar
$13.99
Time Remaining: 11d 1h 11m
Buy It Now for only: $13.99

Fellowes Plastic Partition Additions Shelf 4 3 4 x 17 3 4 Surface Area
Fellowes Plastic Partition Additions Shelf 4 3 4 x 17 3 4 Surface Area
$19.72
Time Remaining: 18d 13h 5m
Buy It Now for only: $19.72

Partition Additions Corner Shelf 15 3 8w x 11 1 4d x 1 5 8h Dark Graphite
Partition Additions Corner Shelf 15 3 8w x 11 1 4d x 1 5 8h Dark Graphite
$16.99
Time Remaining: 13d 22h 36m
Buy It Now for only: $16.99

Fellowes Partition Additions Pop Up Note Dispenser for 3 x 3 Pads Dark Graphite
Fellowes Partition Additions Pop Up Note Dispenser for 3 x 3 Pads Dark Graphite
$14.00
Time Remaining: 10d 16h 4m
Buy It Now for only: $14.00

NEW Fellowes Mesh Partition Additions Step File 75904
NEW Fellowes Mesh Partition Additions Step File 75904
$16.99
Time Remaining: 4d 9h 29m
Buy It Now for only: $16.99

Fellowes Mesh Partition Additions Nameplate 16 1 4w x 1 7 8d x 13 3 8h Black
Fellowes Mesh Partition Additions Nameplate 16 1 4w x 1 7 8d x 13 3 8h Black
$16.11
Time Remaining: 3d 17h 43m
Buy It Now for only: $16.11

Fellowes Mesh Partition Additions Coat Hook Black
Fellowes Mesh Partition Additions Coat Hook Black
$14.95
Time Remaining: 23d 17h 15m
Buy It Now for only: $14.95

Fellowes Plastic Partition Additions Pencil Cup 3 1 2 x 2 3 16 x 5 9 16
Fellowes Plastic Partition Additions Pencil Cup 3 1 2 x 2 3 16 x 5 9 16
$14.15
Time Remaining: 3d 17h 45m
Buy It Now for only: $14.15

Fellowes 75901 Mesh Partition Additions Three File Pocket Organizer Black
Fellowes 75901 Mesh Partition Additions Three File Pocket Organizer Black
$42.99
Time Remaining: 14d 17h 9m
Buy It Now for only: $42.99

Wire Partition Additions 6 Step File Organizer 7 1 2w x 10 1 2h Black
Wire Partition Additions 6 Step File Organizer 7 1 2w x 10 1 2h Black
$12.66
Time Remaining: 10d 22h 14m
Buy It Now for only: $12.66

FELLOWES MANUFACTURING Partition Additions Plastic Waterfall File Sorter
FELLOWES MANUFACTURING Partition Additions Plastic Waterfall File Sorter
$14.20
Time Remaining: 10d 19h 38m
Buy It Now for only: $14.20

NEW Fellowes Partition Additions Triple Tray 75310
NEW Fellowes Partition Additions Triple Tray 75310
$23.98
Time Remaining: 4d 9h 28m
Buy It Now for only: $23.98

NEW Fellowes Perf ect Partition Additions Step File Org
NEW Fellowes Perf ect Partition Additions Step File Org
$24.99
Time Remaining: 4d 9h 28m
Buy It Now for only: $24.99

FEL 7527002 5 Fellowes Partition Additions Dark Graphite
FEL 7527002 5 Fellowes Partition Additions Dark Graphite
$73.99
Time Remaining: 3d 14h 48m
Buy It Now for only: $73.99

Fellowes Partition Additions Note Rail 18w x 1 15 16h Graphite
Fellowes Partition Additions Note Rail 18w x 1 15 16h Graphite
$15.80
Time Remaining: 4d 17h 1m
Buy It Now for only: $15.80

Fellowes 7502201 Partition Additions Note Rail Dark Graphite 12 Each
Fellowes 7502201 Partition Additions Note Rail Dark Graphite 12 Each
$120.99
Time Remaining: 14d 17h 7m
Buy It Now for only: $120.99

Fellowes 75810 Wire Partition Additions Three Pocket Organizer Black
Fellowes 75810 Wire Partition Additions Three Pocket Organizer Black
$31.99
Time Remaining: 14d 17h 9m
Buy It Now for only: $31.99

Fellowes Partition Additions Pop Up Note Dispenser 3 5 8w x 7 8d x 3 3 8h
Fellowes Partition Additions Pop Up Note Dispenser 3 5 8w x 7 8d x 3 3 8h
$15.01
Time Remaining: 4d 17h 1m
Buy It Now for only: $15.01

Fellowes Partition Additions Mini Step File 2 1 2w x 3 3 8h Graphite
Fellowes Partition Additions Mini Step File 2 1 2w x 3 3 8h Graphite
$14.77
Time Remaining: 27d 13h 38m
Buy It Now for only: $14.77

NEW Wire Partition Additions153 Triple File Pocke
NEW Wire Partition Additions153 Triple File Pocke
$16.99
Time Remaining: 11d 1h 11m
Buy It Now for only: $16.99

Fellowes Mesh Partition Additions Shelf 18 1 2w x 5 7 16d x 4h Black
Fellowes Mesh Partition Additions Shelf 18 1 2w x 5 7 16d x 4h Black
$20.51
Time Remaining: 18d 13h 4m
Buy It Now for only: $20.51

Fellowes 75904 Mesh Partition Additions Six Step File Organizer Black
Fellowes 75904 Mesh Partition Additions Six Step File Organizer Black
$35.99
Time Remaining: 14d 17h 10m
Buy It Now for only: $35.99

Partition Additions
Partition Additions

Partitioning Using Dbms Redefinition

Oracle Table Partitioning

1       Introduction

Oracle provides a good feature called Partitioning which enables dividing an Object (table or an Index) into smaller pieces based on particular fields or values.  This helps us in maintaining and administering the tables and indexes in a better way when compared to the normal tables. With the help of the partitioning, the availability of the Database objects and the Performance of the DML or DDL operations on those objects can be improved. In the partitioning concept, a single table or an Index is divided into multiple parts of smaller pieces called Partitions. Each of the partition can be given a different name and consider as a part of the object.  By this, DBA tasks can be performed on these partitions as a whole or individually also. E.g. backing up a particular portion of the table. Partitioning can also improve the performance of multi-table joins, by using a technique known as partition-wise join. The Oracle Partitioning is an additional feature that is available when Oracle Server is installed. This feature is available only with the Enterprise edition of the Oracle server. If Partitioning is not enabled, then you will face the following error when trying to partition:

 

 

 

ORA-00439: feature not enabled: Partitioning

 

1.1     Advantages

 

  • Query subsets of data.
  • Partitions usually provide enhanced performance when accessing large tables.
  • Table reorganizations can be done on a partition level.
  • Reduce downtime for scheduled maintenance.
  • Reduce downtime due to data failure.
  • I/O performance.

 

1.2     Evolution of Partitioning in Oracle

 

  • Oracle 8 à Range
  • Oracle 8i à Range, Hash, Range-Hash
  • Oracle 9i à Range, Hash, List, Range-Hash
  • Oracle 9i Release 2 à Range, Hash, List, Range-List, Range-Hash

 

1.3     Decision to Partition Tables

 

The main thing for an Oracle DBA or a developer is to take a decision on whether to partition a particular table or not. Here are some tips on making a decision for the same:

 

  • For “large” tables i.e. for tables  >= 2 Gigs
  • If Performance gain outweighs the management of partitioning.
  • If Archiving of data is on a schedule and repetitive.

 

Tip: SQL to identify the size of a table

 

SELECT B.OWNER,

 

       B.TABLESPACE_NAME,

 

       B.TABLE_NAME,

 

       ROUND (SUM (BYTES) / 1024 / 1024 / 1024, 6) GIGS

 

FROM   SYS.DBA_EXTENTS A,

 

            SYS.DBA_TABLES B

 

WHERE ((B.TABLESPACE_NAME = A.TABLESPACE_NAME)

 

                AND

 

        (B.OWNER = UPPER ('&OWNER')) AND (B.TABLE_NAME = '&TABLE')

 

      )

 

GROUP BY B.OWNER, B.TABLESPACE_NAME, B.TABLE_NAME;

2       Partitioning methods

2.1     Range Partitioning

 

Range partitioning was the first partitioning method supported by Oracle in Oracle 8. Range partitioning was probably the first partition method because data normally has some sort of logical range. For example, business transactions can be partitioned by various versions of date (start date, transaction date, close date, or date of payment). Range partitioning can also be performed on part numbers, serial numbers or any other ranges that can be discovered.

 

The below shown syntax can be used to implement Range Partitioning:

 

Example1: Range partition example using a single tablespace.

 

CREATE TABLE EMP (EMPNO NUMBER (7), NAME VARCHAR2 (50), DESIGNATION VARCHAR2 (10), SALARY NUMBER (9, 3)

 

PARTITION BY RANGE (SALARY)

 

(PARTITION SAL_A VALUES LESS THAN (200000),

 

PARTITION SAL_B VALUES LESS THAN (100000),

 

PARTITION SAL_C VALUES LESS THAN (50000))

 

TABLESPACE USERS);

 

Example2: Range partition example using a Multiple tablespaces. This method provides better performance when table is very big.

 

CREATE TABLE EMP (EMPNO NUMBER (7), NAME VARCHAR2 (50), DESIGNATION VARCHAR2 (10), SALARY NUMBER (9, 3)

 

PARTITION BY RANGE (SALARY)

 

(PARTITION SAL_A VALUES LESS THAN (200000) TABLESPACE EMP1,

 

PARTITION SAL_B VALUES LESS THAN (100000) TABLESPACE EMP2,

 

PARTITION SAL_C VALUES LESS THAN (50000) TABLESPACE EMP3);

 

Important Note on Range Partitions: Range partitions are ordered by defining the lower and upper boundary for a specific partition.  It is possible that partition size may differ substantially due to the amount of data that will be mapped to each specific partition.  This may cause sub-optimal performance for certain operations like parallel DML. So through analysis of the data is required before deciding on the partition.

 

2.2     List Partitioning

 

List partitioning was added as a partitioning method in Oracle 9i Release 1. List partitioning allows for partitions to reflect real-world groupings (e.g. business units and territory regions). List partitioning differs from range partition in that the groupings in list partitioning are not side by side or in a logical range. List partitioning gives the DBA the ability to group together seemingly unrelated data into a specific partition.

 

The LIST_ME.SQL script provides an example of a list partition table. Note the last partition with the DEFAULT value. This DEFAULT value is new in Oracle 9i Release 2.

 

CREATE TABLE EMP (EMPNO NUMBER (7), NAME VARCHAR2 (50), DESIGNATION VARCHAR2 (10), SALARY NUMBER (9, 3)

 

PARTITION BY LIST (DESIGNATION)

 

(PARTITION DES_A VALUES (‘MANAGER’,’SENIOR MANAGER’),

 

PARTITION DES_B VALUES (‘ANALYST’,’SENIOR ANALYST’),

 

PARTITION DES_C VALUES (‘ENGINEER’,’SENIOR ENGINEER’))

 

TABLESPACE USERS);

 

2.3     Hash Partitoning

 

Hash partioning is the method in which the partioning is enabled or implemented by means of a hash range scan and it is best to be implemented in cases where in we do not have the list or range of values befor in-hand for a particular table. The following is the syntax that can be used for the same :

 

CREATE TABLE EMP

 

(EMPNO NUMBER (7),

 

NAME VARCHAR2 (50),

 

DESIGNATION VARCHAR2 (10),

 

SALARY NUMBER (9, 3)

 

PARTITION BY HASH (EMPNO)

 

(PARTITION STORE IN (P1,P2,P3,P4,P5))  TABLESPACE USERS);

 

In the above statement the parameter PARTITION number can be changed based on the performance or the throughput of the operations that are performed in the table.

 

2.4     Composite Range-Hash Partitioning

 

Composite range-hash partitioning combines both the ease of range partitioning and the benefits of hashing for data placement, striping, and parallelism. Range-hash partitioning is slightly harder to implement. But, with the example provided and a detail explanation of the code one can easily learn how to use this powerful partitioning method.

 

One suggestion is that when you actually try to build a range-hash partition table that you do it in the following steps:

 

  1. Determine the partition key for the range.
  2. Design a range partition table.
  3. Determine the partition key for the hash.
  4. Create the SUBPARTITION BY HASH clause.
  5. Create the SUBPARTITION TEMPLATE.
  6. Do Steps 1 and 2 first. Then you can insert the code created in Steps 3 –5 in the range partition table syntax.

 

CREATE TABLE DEMO ( ID    NUMBER,

 

                              TXT    VARCHAR2(50))

 

PARTITION BY RANGE (ID)

 

    SUBPARTITION BY HASH (TXT)

 

          SUBPARTITIONS 4 STORE IN (DATA01, DATA02)

 

    (PARTITION KB_LO VALUES LESS THAN (0),

 

      PARTITION KB_HI VALUES LESS THAN (100),

 

      PARTITION KB_MX VALUES LESS THAN (MAXVALUE)

 

                 SUBPARTITIONS 2 STORE IN (DATA03));

 

2.5     Composite Range-List partitioning

 

Composite range-list partitioning combines both the ease of range partitioning and the benefits of list partitioning at the sub partition level. This  is a combination of the Range and the List partitions. Like range-hash partitioning, range-list partitioning needs to be carefully designed. The time used to properly design a range-list partition table pays off during the actual creation of the table.

 

CREATE TABLE EMPDEMO

 

(EMPNO NUMBER(7),

 

NAME VARCHAR2(50),

 

DESIGNATION VARCHAR2(10),

 

SALARY NUMBER(9,3)

 

PARTITION BY RANGE (EMPNO)

 

SUBPARTITION BY DESIGNATION (

 

(PARTITION DES_A VALUES(‘MANAGER’,’SENIOR MANAGER’),

 

PARTITION DES_B  VALUES(‘ANALYST’,’SENIOR ANALYST’),

 

PARTITION DES_C VALUES (ENGINEER,SENIOR ENGINEER))

 

 TABLESPACE USERS);

3       Indexes for partitioned tables

The indexes for partitioned tables are of two types.

 

  • Globally Partitioned Indexes
  • Locally Partitioned Indexes

 

3.1     Globally Partitioned Indexes

 

There are mainly two types of Globally Partition Indexes available :

 

  • Non-Partitioned
  • Partitioned

 

Globally Non-Partitioned Indexes are “regular” indexes used in OLTP.

 

Globally Partitioned Indexes are similar in syntax to Range partitioned tables.

 

CREATE INDEX PARTITION_BY_RANGE_GPI

 

       ON PARTITION_BY_RANGE (BIRTH_YYYY)

 

GLOBAL PARTITION BY RANGE (BIRTH_YYYY)

 

(PARTITION DOBS_IN_1971_OR_B4 

 

 VALUES LESS THAN (1972)      

 

 TABLESPACE ITS01,

 

 PARTITION DOBS_IN_1972_GPI

 

 VALUES LESS THAN (1973)      

 

 TABLESPACE ITS02,

 

 . . .

 

 PARTITION DOBS_IN_1975_OR_L8R

 

 VALUES LESS THAN (MAXVALUE)  

 

 TABLESPACE ITS05);

 

3.2     Locally Partitioned Indexes

 

Locally partitioned indexes are for the most part very straightforward.

 

Extra time should be allocated when creating locally partitioned indexes on range-hash or range-list partitioned tables. There are a couple reasons that extra time is needed for this type of index. One of the reasons is a decision needs to be made on what the index will be referencing in regards to a range-hash or range-list partitioned tables. A locally partitioned index can be created to point to either partition level or sub partition level.

 

Maintenance of locally partitioned indexes is much easier than the maintenance of globally partitioned indexes. Whenever there is DDL activity on the underlying indexed table Oracle rebuilds the locally partitioned index.

 

This automatic rebuilding of locally partitioned indexes is one reason why most DBAs prefer locally partitioned indexes.

4       When to use which partitioning Method

There are five different table partitioning methods (range, hash, list, range-hash and range-list) and three for indexes (global non-partitioned, global partitioned and locally partitioned). The obvious question that comes to mind is: “When do I use which combination of table and index partitioning?” There is no concrete answer for that question. However, here are some general guidelines on mixing and matching table and index partitioning.

 

1.       First, determine if you need to partition the table.

 

                   ·  Refer to the section 1.3 on “When To Partition Tables”.

 

2.       Next, decide which table partitioning method is right for your situation.

 

                   ·  Each method is described under Section 2

 

3.       Determine how volatile the data is.

 

                   ·  How often are there inserts, updates and deletes?

 

4.       Choose your indexing strategy: global or local partitioned indexes.

 

                   ·  Each type has its own maintenance consideration.

 

These guidelines are good place to start when developing a partitioning solution.

5       Partitioning Existing tables using the dbms_redefinition package

The DBMS_REDEFINITION is an in-built PL/SQL package that is available with Oracle versions starting from version 9.This can be used in order to redefine the meaning of the tables and columns in a table.

 

The DBMS_REDEFINITION package can be created by executing the dbmshord.sql script available in the following location: $ORACLE_HOME/rdbms/admin/dbmshord.sql

 

There are different procedures available in the DBMS_REDEFINITION Package that is used for the implementation of the Partitioning concept:

 

dbms_redefinition.start_redef_table – This is used to Start the Redefinition Process.

 

dbms_redefinition.sync_interim_table – This procedure will synchronize the data between the source and the intermediate table.

 

dbms_redefinition.finish_redef_table  - This is will do the final touch up of the redefinition process.

 

dbms_redefinition.can_redef_table – This is used to find whether we can redefine a table or not by using the Redefinition process.

 

The following are the steps that were carried out for implementing the redefinition process and the test results for the same :

 

5.1     Range Partition Process Explained

 

Environment Selected : DCSCAN Production Server.

 

Original Table Name: CESAR_VEHICLE_HISTORY

 

Size of the table : 2195 MB

 

No. Of Rows : 8.23M

 

For rest of our discussion in this example we use two tables.

 

  •  

    1. “CESAR_VEHICLE_HISTORY” can be referred as Original Table
    2. “CESAR_VEHICLE_HISTORY_INT” can be referred as Intermittent Table.

 

Step 1: Create an Intermittent table CESAR_VEHICLE_HISTORY_INT

 

This is an intermittent table and will be dropped later after the partitioning process has been completed. So the desired partitions have to be defined on this table. In this specific example we have decided to Range partition the table based on a filed called “TIMESTAMP_DT” and each partition contains data for a Quarter.

 

CREATE TABLE MPCI5171.CESAR_VEHICLE_HISTORY_INT

 

(

 

  VEHICLE_NO_INT              VARCHAR2(22 BYTE) NOT NULL,

 

  TIMESTAMP                   NUMBER(21,7)      NOT NULL,

 

  ACTION                      VARCHAR2(4 BYTE),

 

  VACTION                     VARCHAR2(4 BYTE),

 

  ACTION_CONTROL_PURCHASE     VARCHAR2(4 BYTE),

 

  PURCHASING_STATUS_OLD       VARCHAR2(4 BYTE),

 

  PURCHASING_STATUS_NEW       VARCHAR2(4 BYTE),

 

  ACTION_CONTROL_SALES        VARCHAR2(4 BYTE),

 

  SALES_STATUS_OLD            VARCHAR2(4 BYTE),

 

  SALES_STATUS_NEW            VARCHAR2(4 BYTE),

 

  VEHICLE_LOCATION            VARCHAR2(10 BYTE),

 

  PERSON_CREATED_OBJECT       VARCHAR2(12 BYTE),

 

  ALLOCATION_REASON           VARCHAR2(40 BYTE),

 

  QUOTE_NO                    VARCHAR2(10 BYTE),

 

  DEALERFRONTEND_USERID       VARCHAR2(50 BYTE),

 

  REASON_CODE                 VARCHAR2(3 BYTE),

 

  CUSTOMER_NO                 VARCHAR2(10 BYTE),

 

  SHIP_TO_PARTY               VARCHAR2(10 BYTE),

 

  DELIVERY_DATE_REQ           DATE,

 

  VEHICLE_USAGE               VARCHAR2(3 BYTE),

 

  CUSTOMER_PURCHASE_ORDERNO   VARCHAR2(20 BYTE),

 

  KERRIDGE_STOCK_NO           VARCHAR2(18 BYTE),

 

  END_CUSTOMER_NAME           VARCHAR2(30 BYTE),

 

  SALESPERSON                 VARCHAR2(10 BYTE),

 

  CHARACTERISTIC_VAL1         VARCHAR2(120 BYTE),

 

  CHARACTERISTIC_VAL2         VARCHAR2(120 BYTE),

 

  CHARACTERISTIC_VAL3         VARCHAR2(120 BYTE),

 

  CHARACTERISTIC_VAL4         VARCHAR2(120 BYTE),

 

  CHARACTERISTIC_VAL5         VARCHAR2(120 BYTE),

 

  CHARACTERISTIC_VAL6         VARCHAR2(120 BYTE),

 

  CONFIGURATION_INT           VARCHAR2(18 BYTE),

 

  ADDRESS_NO                  VARCHAR2(10 BYTE),

 

  CRM_REFERENCE               VARCHAR2(18 BYTE),

 

  SHIP_EST_ARRIVAL_DATE       DATE,

 

  FACTORD_PLANNED_FIN_DATE    DATE,

 

  EARLIER_VEHICLE_REQ         VARCHAR2(1 BYTE),

 

  NAME1                       VARCHAR2(40 BYTE),

 

  NAME2                       VARCHAR2(40 BYTE),

 

  NAME3                       VARCHAR2(40 BYTE),

 

  NAME4                       VARCHAR2(40 BYTE),

 

  VESSEL_NAME                 VARCHAR2(20 BYTE),

 

  SHIP_VOYAGE_NO              VARCHAR2(18 BYTE),

 

  SHIP_BILL_OF_LADING_NO      VARCHAR2(18 BYTE),

 

  SHIP_EST_DEPARTURE_DATE     DATE,

 

  PORT_OF_DESTINATION         VARCHAR2(10 BYTE),

 

  KERRIDGE_USER               VARCHAR2(50 BYTE),

 

  ZZ_PLANNED_DELIVERY_TIME    NUMBER(15),

 

  VEH_MANUFACTURER_YEAR       VARCHAR2(4 BYTE),

 

  VEH_CONSTRUCTION_MONTH      VARCHAR2(2 BYTE),

 

  VEH_CONSTRUCTION_DAY        VARCHAR2(2 BYTE),

 

  VIN                         VARCHAR2(35 BYTE),

 

  PLANNED_DELIVERY_TIME       DATE,

 

  PRODUCTION_TIME             DATE,

 

  ORDER_TIME                  DATE,

 

  VEHICLE_LOCATION_FROM       VARCHAR2(10 BYTE),

 

  VEHICLE_LOCATION_FROM_TEXT  VARCHAR2(30 BYTE),

 

  VEHICLE_LOCATION_TO         VARCHAR2(10 BYTE),

 

  VEHICLE_LOCATION_TO_TEXT    VARCHAR2(30 BYTE),

 

  VEND_CRED_ACCOUNT_NO        VARCHAR2(10 BYTE),

 

  CARRIER_NAME                VARCHAR2(35 BYTE),

 

  COMMENTS                    VARCHAR2(40 BYTE),

 

  PROMISED_TIME               DATE,

 

  TIMESTAMP_DT                DATE,

 

  COUNTRY_CODE                VARCHAR2(4 BYTE),

 

  VEHICLE_NO                  VARCHAR2(10 BYTE),

 

  FACTORY_ORDER_DATE          DATE,

 

  DAYS_SINCE                  NUMBER(10),

 

  TIMESTAMP_DT_WEEK           VARCHAR2(10 BYTE),

 

  DAYS_SINCE_FIRST            NUMBER(10),

 

  DAYS_SINCE_LAST             NUMBER(10)

 

)

 

PARTITION BY RANGE (TIMESTAMP_DT)

 

(PARTITION CESAR_VEHICLE_HISTORY_2005Q4 VALUES LESS THAN (TO_DATE('01/01/2006', 'DD/MM/YYYY')),

 

 PARTITION CESAR_VEHICLE_HISTORY_2006Q1 VALUES LESS THAN (TO_DATE('31/03/2006', 'DD/MM/YYYY')),

 

 PARTITION CESAR_VEHICLE_HISTORY_2006Q2 VALUES LESS THAN (TO_DATE('30/06/2006', 'DD/MM/YYYY')),

 

 PARTITION CESAR_VEHICLE_HISTORY_2006Q3 VALUES LESS THAN (TO_DATE('30/09/2006', 'DD/MM/YYYY')),

 

 PARTITION CESAR_VEHICLE_HISTORY_2006Q4 VALUES LESS THAN (TO_DATE('31/12/2006', 'DD/MM/YYYY')),

 

 PARTITION CESAR_VEHICLE_HISTORY_2007Q1 VALUES LESS THAN (TO_DATE('31/03/2007', 'DD/MM/YYYY')),

 

 PARTITION CESAR_VEHICLE_HISTORY_2007Q2 VALUES LESS THAN (TO_DATE('30/06/2007', 'DD/MM/YYYY')),

 

 PARTITION CESAR_VEHICLE_HISTORY_2007Q3 VALUES LESS THAN (TO_DATE('30/09/2007', 'DD/MM/YYYY')),

 

 PARTITION CESAR_VEHICLE_HISTORY_2007Q4 VALUES LESS THAN (TO_DATE('31/12/2007', 'DD/MM/YYYY')))

 

TABLESPACE MPCDATA

 

PCTUSED    0

 

PCTFREE    10

 

INITRANS   1

 

MAXTRANS   255

 

STORAGE    (

 

            INITIAL          1M

 

            MINEXTENTS       1

 

            MAXEXTENTS       2147483645

 

            PCTINCREASE      0

 

            BUFFER_POOL      DEFAULT

 

           )

 

LOGGING;

 

/

 

Step 2: Check if the table can be partitioned

 

Execute the below statement to verify if the original table can be partitioned.

 

EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE('MPCI5171', 'CESAR_VEHICLE_HISTORY');

 

The above step should not return any errors which means that we can go ahead.

 

Step 3: Start the Redefinition

 

BEGIN

 

  DBMS_REDEFINITION.START_REDEF_TABLE(

 

    UNAME      => 'MPCI5171',

 

    ORIG_TABLE => 'CESAR_VEHICLE_HISTORY',

 

    INT_TABLE  => 'CESAR_VEHICLE_HISTORY_INT');

 

END;

 

/

 

Step 4: Synchronize the tables

 

BEGIN

 

  DBMS_REDEFINITION.SYNC_INTERIM_TABLE(

 

    UNAME      => 'MPCI5171',

 

    ORIG_TABLE => 'CESAR_VEHICLE_HISTORY',

 

    INT_TABLE  => 'CESAR_VEHICLE_HISTORY_INT');

 

END;

 

/

 

Step 5: Create the constraints and Indexes on interim table as original Table with new names

 

CREATE INDEX MPCI5171.CES_VEHIHIST_P_NOINT_IDX01 ON MPCI5171.CESAR_VEHICLE_HISTORY_INT

 

(VEHICLE_NO_INT)

 

LOGGING

 

TABLESPACE MPCINDEX

 

PCTFREE    10

 

INITRANS   2

 

MAXTRANS   255

 

STORAGE    (

 

            INITIAL          1M

 

            MINEXTENTS       1

 

            MAXEXTENTS       2147483645

 

            PCTINCREASE      0

 

            BUFFER_POOL      DEFAULT

 

           )

 

NOPARALLEL;

 

CREATE INDEX MPCI5171.CES_VEHIHIST_P_VACT_IDX ON MPCI5171.CESAR_VEHICLE_HISTORY_INT

 

(VACTION)

 

LOGGING

 

TABLESPACE MPCINDEX

 

PCTFREE    10

 

INITRANS   2

 

MAXTRANS   255

 

STORAGE    (

 

            INITIAL          1M

 

            MINEXTENTS       1

 

            MAXEXTENTS       2147483645

 

            PCTINCREASE      0

 

            BUFFER_POOL      DEFAULT

 

           )

 

NOPARALLEL;

 

CREATE UNIQUE INDEX MPCI5171.CES_VEHI_HIST_P_PK ON MPCI5171.CESAR_VEHICLE_HISTORY_INT

 

(VEHICLE_NO_INT, TIMESTAMP)

 

LOGGING

 

TABLESPACE MPCINDEX

 

PCTFREE    10

 

INITRANS   2

 

MAXTRANS   255

 

STORAGE    (

 

            INITIAL          1M

 

            MINEXTENTS       1

 

            MAXEXTENTS       2147483645

 

            PCTINCREASE      0

 

            BUFFER_POOL      DEFAULT

 

           )

 

NOPARALLEL;

 

CREATE INDEX MPCI5171.IX1CESAR_VEHICLE_HISTORY_P ON MPCI5171.CESAR_VEHICLE_HISTORY_INT

 

(ACTION)

 

LOGGING

 

TABLESPACE MPCINDEX

 

PCTFREE    10

 

INITRANS   2

 

MAXTRANS   255

 

STORAGE    (

 

            INITIAL          1M

 

            MINEXTENTS       1

 

            MAXEXTENTS       2147483645

 

            PCTINCREASE      0

 

            BUFFER_POOL      DEFAULT

 

           )

 

NOPARALLEL;

 

CREATE INDEX MPCI5171.IX2CESAR_VEHICLE_HISTORY_P ON MPCI5171.CESAR_VEHICLE_HISTORY_INT

 

(VEHICLE_NO)

 

LOGGING

 

TABLESPACE MPCINDEX

 

PCTFREE    10

 

INITRANS   2

 

MAXTRANS   255

 

STORAGE    (

 

            INITIAL          1M

 

            MINEXTENTS       1

 

            MAXEXTENTS       2147483645

 

            PCTINCREASE      0

 

            BUFFER_POOL      DEFAULT

 

           )

 

NOPARALLEL;

 

ALTER TABLE MPCI5171.CESAR_VEHICLE_HISTORY_INT ADD (

 

  CONSTRAINT CES_VEHI_HIST_PK_P PRIMARY KEY (VEHICLE_NO_INT, TIMESTAMP)

 

    USING INDEX

 

    TABLESPACE MPCINDEX

 

    PCTFREE    10

 

    INITRANS   2

 

    MAXTRANS   255

 

    STORAGE    (

 

                INITIAL          1M

 

                MINEXTENTS       1

 

                MAXEXTENTS       2147483645

 

                PCTINCREASE      0

 

               ));

 

Step 6: Gather Statistics on the new table

 

EXEC DBMS_STATS.GATHER_TABLE_STATS('MPCI5171', 'CESAR_VEHICLE_HISTORY_INT', CASCADE => TRUE);

 

Step 7: Finish Redefinition Process

 

BEGIN

 

  DBMS_REDEFINITION.FINISH_REDEF_TABLE(

 

    UNAME      => 'MPCI5171',       

 

    ORIG_TABLE => 'CESAR_VEHICLE_HISTORY',

 

    INT_TABLE  => 'CESAR_VEHICLE_HISTORY_INT');

 

END;

 

/

 

At this point the interim table has become the "real" table and their names have been switched in the data dictionary. All that remains is to perform some cleanup operations

 

Step 8: Now drop the Interim table CESAR_VEHICLE_HISTORY_INT

 

DROP TABLE CESAR_VEHICLE_HISTORY_INT;

 

Step 9:Rename the Constraints and Indexes to match with the Original names

 

Alter INDEX CES_VEHIHIST_P_NOINT_IDX01 RENAME TO CES_VEHIHIST_T_NOINT_IDX01;

 

Alter INDEX CES_VEHI_HIST_P_PK RENAME TO CES_VEHI_HIST_T_PK;

 

Alter INDEX IX1CESAR_VEHICLE_HISTORY_P RENAME TO IX1CESAR_VEHICLE_HISTORY_T;

 

Alter INDEX IX2CESAR_VEHICLE_HISTORY_P RENAME TO IX2CESAR_VEHICLE_HISTORY_T;

 

Step 10: Once the Partitioning is implemented, the same can be tested by using the following SQL query :

 

SELECT PARTITIONED FROM USER_TABLES WHERE TABLE_NAME='CESAR_VEHICLE_HISTORY':

 

This will return an output saying YES which means that the original table is partitioned:

 

SELECT PARTITION_NAME FROM   USER_TAB_PARTITIONS WHERE  TABLE_NAME = 'CESAR_VEHICLE_HISTORY';

 

The above query returns the names of the Partitions for the original table.

 

5.1.1    Test Results :

 

In the production environment we have a procedure named “CESAR_MARKETING_MEASURES”. This procedure uses the original table CESAR_VEHICLE_HISTORY in many select statements.

 

The Execution of the procedure took 5 hrs 31 min without Partitoning

 

Execution of the same procedure took 4 hrs 45 min after implementing RANGE Partitioning.

 

5.1.2    Conclusion

 

The test results reveal that implementing a Range partition on the filed TIMESTAMP_DT is not the right choice in the given scenario. It is simply because the exection time for the procedure “CESAR_MARKETING_MEASURES” has not improved much after implemneting the rage partition also. So we have continued our testing with hash partitioning and is explained in the next section.

 

5.2     Hash Partitioning Process Explained

 

Environment selected : DCSCAN Production.

 

Table : CESAR_VEHICLE_HISTORY

 

Size of the table : 2195 MB

 

No.Of Rows : 8.23M

 

Step 1: Create a Partitioned table CESAR_VEHICLE_HISTORY_INT

 

CREATE TABLE MPCI5171.CESAR_VEHICLE_HISTORY_INT

 

(

 

  VEHICLE_NO_INT              VARCHAR2(22 BYTE) NOT NULL,

 

  TIMESTAMP                   NUMBER(21,7)      NOT NULL,

 

  ACTION                      VARCHAR2(4 BYTE),

 

  VACTION                     VARCHAR2(4 BYTE),

 

  ACTION_CONTROL_PURCHASE     VARCHAR2(4 BYTE),

 

  PURCHASING_STATUS_OLD       VARCHAR2(4 BYTE),

 

  PURCHASING_STATUS_NEW       VARCHAR2(4 BYTE),

 

  ACTION_CONTROL_SALES        VARCHAR2(4 BYTE),

 

  SALES_STATUS_OLD            VARCHAR2(4 BYTE),

 

  SALES_STATUS_NEW            VARCHAR2(4 BYTE),

 

  VEHICLE_LOCATION            VARCHAR2(10 BYTE),

 

  PERSON_CREATED_OBJECT       VARCHAR2(12 BYTE),

 

  ALLOCATION_REASON           VARCHAR2(40 BYTE),

 

  QUOTE_NO                    VARCHAR2(10 BYTE),

 

  DEALERFRONTEND_USERID       VARCHAR2(50 BYTE),

 

  REASON_CODE                 VARCHAR2(3 BYTE),

 

  CUSTOMER_NO                 VARCHAR2(10 BYTE),

 

  SHIP_TO_PARTY               VARCHAR2(10 BYTE),

 

  DELIVERY_DATE_REQ           DATE,

 

  VEHICLE_USAGE               VARCHAR2(3 BYTE),

 

  CUSTOMER_PURCHASE_ORDERNO   VARCHAR2(20 BYTE),

 

  KERRIDGE_STOCK_NO           VARCHAR2(18 BYTE),

 

  END_CUSTOMER_NAME           VARCHAR2(30 BYTE),

 

  SALESPERSON                 VARCHAR2(10 BYTE),

 

  CHARACTERISTIC_VAL1         VARCHAR2(120 BYTE),

 

  CHARACTERISTIC_VAL2         VARCHAR2(120 BYTE),

 

  CHARACTERISTIC_VAL3         VARCHAR2(120 BYTE),

 

  CHARACTERISTIC_VAL4         VARCHAR2(120 BYTE),

 

  CHARACTERISTIC_VAL5         VARCHAR2(120 BYTE),

 

  CHARACTERISTIC_VAL6         VARCHAR2(120 BYTE),

 

  CONFIGURATION_INT           VARCHAR2(18 BYTE),

 

  ADDRESS_NO                  VARCHAR2(10 BYTE),

 

  CRM_REFERENCE               VARCHAR2(18 BYTE),

 

  SHIP_EST_ARRIVAL_DATE       DATE,

 

  FACTORD_PLANNED_FIN_DATE    DATE,

 

  EARLIER_VEHICLE_REQ         VARCHAR2(1 BYTE),

 

  NAME1                       VARCHAR2(40 BYTE),

 

  NAME2                       VARCHAR2(40 BYTE),

 

  NAME3                       VARCHAR2(40 BYTE),

 

  NAME4                       VARCHAR2(40 BYTE),

 

  VESSEL_NAME                 VARCHAR2(20 BYTE),

 

  SHIP_VOYAGE_NO              VARCHAR2(18 BYTE),

 

  SHIP_BILL_OF_LADING_NO      VARCHAR2(18 BYTE),

 

  SHIP_EST_DEPARTURE_DATE     DATE,

 

  PORT_OF_DESTINATION         VARCHAR2(10 BYTE),

 

  KERRIDGE_USER               VARCHAR2(50 BYTE),

 

  ZZ_PLANNED_DELIVERY_TIME    NUMBER(15),

 

  VEH_MANUFACTURER_YEAR       VARCHAR2(4 BYTE),

 

  VEH_CONSTRUCTION_MONTH      VARCHAR2(2 BYTE),

 

  VEH_CONSTRUCTION_DAY        VARCHAR2(2 BYTE),

 

  VIN                         VARCHAR2(35 BYTE),

 

  PLANNED_DELIVERY_TIME       DATE,

 

  PRODUCTION_TIME             DATE,

 

  ORDER_TIME                  DATE,

 

  VEHICLE_LOCATION_FROM       VARCHAR2(10 BYTE),

 

  VEHICLE_LOCATION_FROM_TEXT  VARCHAR2(30 BYTE),

 

  VEHICLE_LOCATION_TO         VARCHAR2(10 BYTE),

 

  VEHICLE_LOCATION_TO_TEXT    VARCHAR2(30 BYTE),

 

  VEND_CRED_ACCOUNT_NO        VARCHAR2(10 BYTE),

 

  CARRIER_NAME                VARCHAR2(35 BYTE),

 

  COMMENTS                    VARCHAR2(40 BYTE),

 

  PROMISED_TIME               DATE,

 

  TIMESTAMP_DT                DATE,

 

  COUNTRY_CODE                VARCHAR2(4 BYTE),

 

  VEHICLE_NO                  VARCHAR2(10 BYTE),

 

  FACTORY_ORDER_DATE          DATE,

 

  DAYS_SINCE                  NUMBER(10),

 

  TIMESTAMP_DT_WEEK           VARCHAR2(10 BYTE),

 

  DAYS_SINCE_FIRST            NUMBER(10),

 

  DAYS_SINCE_LAST             NUMBER(10)

 

)

 

PARTITION BY HASH(VEHICLE_NO_INT)

 

PARTITIONS 20

 

TABLESPACE MPCDATA

 

PCTUSED    0

 

PCTFREE    10

 

INITRANS   1

 

MAXTRANS   255

 

STORAGE    (

 

            INITIAL          1M

 

            MINEXTENTS       1

 

            MAXEXTENTS       2147483645

 

            PCTINCREASE      0

 

            BUFFER_POOL      DEFAULT

 

           )

 

LOGGING;

 

/

 

In the above example Hash partitioning approach is selected with number of partitions as 20 and all the  partitions resides on the one table space named “MPCDATA”. If the table size is too big then it is a good idea to span each partition on a separate table space.

 

Step 2: Check if the table can be partitioned

 

EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE('MPCI5171', 'CESAR_VEHICLE_HISTORY');

 

The above step should not returns errors which means that we can go ahead.

 

Step 3: Start the Redefinition

 

BEGIN

 

  DBMS_REDEFINITION.START_REDEF_TABLE(

 

    UNAME      => 'MPCI5171',

 

    ORIG_TABLE => 'CESAR_VEHICLE_HISTORY',

 

    INT_TABLE  => 'CESAR_VEHICLE_HISTORY_INT');

 

END;

 

/

 

Step 4: Synchronize the tables

 

BEGIN

 

  DBMS_REDEFINITION.SYNC_INTERIM_TABLE(

 

    UNAME      => 'MPCI5171',

 

    ORIG_TABLE => 'CESAR_VEHICLE_HISTORY',

 

    INT_TABLE  => 'CESAR_VEHICLE_HISTORY_INT');

 

END;

 

/

 

Step 5: Create the constraints and Indexes as Original Table with new names

 

CREATE INDEX MPCI5171.CES_VEHIHIST_P_NOINT_IDX01 ON MPCI5171.CESAR_VEHICLE_HISTORY_INT

 

(VEHICLE_NO_INT)

 

LOGGING

 

TABLESPACE MPCINDEX

 

PCTFREE    10

 

INITRANS   2

 

MAXTRANS   255

 

STORAGE    (

 

            INITIAL          1M

 

            MINEXTENTS       1

 

            MAXEXTENTS       2147483645

 

            PCTINCREASE      0

 

            BUFFER_POOL      DEFAULT

 

           )

 

NOPARALLEL;

 

CREATE INDEX MPCI5171.CES_VEHIHIST_P_VACT_IDX ON MPCI5171.CESAR_VEHICLE_HISTORY_INT

 

(VACTION)

 

LOGGING

 

TABLESPACE MPCINDEX

 

PCTFREE    10

 

INITRANS   2

 

MAXTRANS   255

 

STORAGE    (

 

            INITIAL          1M

 

            MINEXTENTS       1

 

            MAXEXTENTS       2147483645

 

            PCTINCREASE      0

 

            BUFFER_POOL      DEFAULT

 

           )

 

NOPARALLEL;

 

CREATE UNIQUE INDEX MPCI5171.CES_VEHI_HIST_P_PK ON MPCI5171.CESAR_VEHICLE_HISTORY_INT

 

(VEHICLE_NO_INT, TIMESTAMP)

 

LOGGING

 

TABLESPACE MPCINDEX

 

PCTFREE    10

 

INITRANS   2

 

MAXTRANS   255

 

STORAGE    (

 

            INITIAL          1M

 

            MINEXTENTS       1

 

            MAXEXTENTS       2147483645

 

            PCTINCREASE      0

 

            BUFFER_POOL      DEFAULT

 

           )

 

NOPARALLEL;

 

CREATE INDEX MPCI5171.IX1CESAR_VEHICLE_HISTORY_P ON MPCI5171.CESAR_VEHICLE_HISTORY_INT

 

(ACTION)

 

LOGGING

 

TABLESPACE MPCINDEX

 

PCTFREE    10

 

INITRANS   2

 

MAXTRANS   255

 

STORAGE    (

 

            INITIAL          1M

 

            MINEXTENTS       1

 

            MAXEXTENTS       2147483645

 

            PCTINCREASE      0

 

            BUFFER_POOL      DEFAULT

 

           )

 

NOPARALLEL;

 

CREATE INDEX MPCI5171.IX2CESAR_VEHICLE_HISTORY_P ON MPCI5171.CESAR_VEHICLE_HISTORY_INT

 

(VEHICLE_NO)

 

LOGGING

 

TABLESPACE MPCINDEX

 

PCTFREE    10

 

INITRANS   2

 

MAXTRANS   255

 

STORAGE    (

 

            INITIAL          1M

 

            MINEXTENTS       1

 

            MAXEXTENTS       2147483645

 

            PCTINCREASE      0

 

            BUFFER_POOL      DEFAULT

 

           )

 

NOPARALLEL;

 

ALTER TABLE MPCI5171.CESAR_VEHICLE_HISTORY_INT ADD (

 

  CONSTRAINT CES_VEHI_HIST_PK_P PRIMARY KEY (VEHICLE_NO_INT, TIMESTAMP)

 

    USING INDEX

 

    TABLESPACE MPCINDEX

 

    PCTFREE    10

 

    INITRANS   2

 

    MAXTRANS   255

 

    STORAGE    (

 

                INITIAL          1M

 

                MINEXTENTS       1

 

                MAXEXTENTS       2147483645

 

                PCTINCREASE      0

 

               ));

 

Step 6: Gather Statistics on Interim table

 

EXEC DBMS_STATS.GATHER_TABLE_STATS('MPCI5171', 'CESAR_VEHICLE_HISTORY_INT', CASCADE => TRUE);

 

Step 7: Finish Redefinition Process

 

BEGIN

 

  DBMS_REDEFINITION.FINISH_REDEF_TABLE(

 

    UNAME      => 'MPCI5171',       

 

    ORIG_TABLE => 'CESAR_VEHICLE_HISTORY',

 

    INT_TABLE  => 'CESAR_VEHICLE_HISTORY_INT');

 

END;

 

/

 

At this point the interim table has become the "real" table and their names have been switched in the data dictionary. All that remains is to perform some cleanup operations

 

Step 8: Now drop the Interim table CESAR_VEHICLE_HISTORY_INT

 

DROP TABLE CESAR_VEHICLE_HISTORY_INT;

 

Step 9:Rename the Constraints and Indexes to match with the Original names

 

ALTER INDEX CES_VEHIHIST_P_NOINT_IDX01 RENAME TO CES_VEHIHIST_T_NOINT_IDX01;

 

ALTER INDEX CES_VEHI_HIST_P_PK RENAME TO CES_VEHI_HIST_T_PK;

 

ALTER INDEX IX1CESAR_VEHICLE_HISTORY_P RENAME TO IX1CESAR_VEHICLE_HISTORY_T;

 

ALTER INDEX IX2CESAR_VEHICLE_HISTORY_P RENAME TO IX2CESAR_VEHICLE_HISTORY_T;

 

Step 10: Once the Partitioning is implemented, the same can be tested by using the following SQL query :

 

SELECT PARTITIONED FROM USER_TABLES WHERE TABLE_NAME='CESAR_VEHICLE_HISTORY':

 

This will return an output saying YES which means that the original table is partitioned:

 

SELECT PARTITION_NAME FROM   USER_TAB_PARTITIONS WHERE  TABLE_NAME = 'CESAR_VEHICLE_HISTORY';

 

The above query returns the names of the Partitions for the original table.

 

5.2.1    Test Results

 

In the production environmen

About the Author

 

I have Windows XP Professional full version?

At the start of a full format and recovery there are 2 partitons: they are c drive and unpatitoned space. I want to create a d drive partition in addition to the c drive and unpartitioned space drives. How can I do it?

Choose the option unpartitioned space and it will guide you from there.

How to Install VirtualBox Guest Additions into Ubuntu and use CompizFusion in the VM!