Oracle 10g: Datenbank optimal auf das Speichersystem abstimmen

Striping einer Tabelle über mehrere Festplatten

1. Erstellen Sie eine Tablespace mit drei Dateien, die jeweils auf einer separaten Festplatte liegen.

SQL> CREATE TABLESPACE dat
2 DATAFILE '/u02/oradata/komp/dat01.dbf'
3 SIZE 5M;
Tablespace wurde angelegt.
SQL> ALTER TABLESPACE dat
2 ADD DATAFILE '/u03/oradata/komp/dat02.dbf'
3 SIZE 5M;
Tablespace wurde geändert.
SQL> ALTER TABLESPACE dat
2 ADD DATAFILE '/u04/oradata/komp/dat03.dbf'
3 SIZE 5M;
Tablespace wurde geändert.

2. Die Tabelle accounts wird ohne Besonderheiten erstellt unter Angabe der STORAGE-Parameter.

SQL> CREATE TABLE accounts (
2 account_id NUMBER(14),
3 account_owner NUMBER(10),
4 balance NUMBER(10,2),
5 last_balance NUMBER(10,2),
6 changed DATE)
7 STORAGE (INITIAL 1M NEXT 1M PCTINCREASE 0)
8 TABLESPACE dat;
Tabelle wurde angelegt.

Mit dem Anlegen der Tabelle hat Oracle das INITIAL EXTENT in der Datei /u02/oradata/komp/dat01.dbf angelegt. Normalerweise braucht sich ein Administrator nicht um das Anlegen weiterer Extents zu kümmern, da Oracle das automatisch macht, wenn die Tabelle wächst. In diesem Fall sollen jedoch die weiteren Extents nicht wahllos, sondern gezielt in den Dateien auf den anderen Festplatten angelegt werden. Mit den folgenden Anweisungen können Sie weitere Extents manuell anlegen.

SQL> ALTER TABLE accounts
2 ALLOCATE EXTENT
3 (DATAFILE '/u03/oradata/komp/dat02.dbf'
4 SIZE 1M);
Tabelle wurde geändert.
SQL> ALTER TABLE accounts
2 ALLOCATE EXTENT
3 (DATAFILE '/u04/oradata/komp/dat03.dbf'
4 SIZE 1M);
Tabelle wurde geändert.

Manuelles Striping für große Datenbanken ist sehr aufwendig. Dort bietet sich eine intelligente Verteilung der E/A-Aktivitäten über das Disk-Subsystem bzw. der Einsatz von ASM an.