Tablespace veritabanındaki segmentlerin tutulduğu yerdir.
Segment olarak bahsettiğimiz birim isim veritabanındaki herhangi bir obje
olabilir. Örnek olarak tablolar, indeksler,triggerlar ve bunun gibi bir sürü
obje tutulur. En basit tablespace yaratılış sorgusu:
Create tablespace (tablespace_adı);
Bu tablespace’in genel özellikleri yani default olarak
yaratılacak özellikleri kalıcı olması,
locally managed tipinde olması ve oluşturulacak datafile ise
db_create_file_dest’inde yaratılacak olmasıdır. Db_create_file_dest parametre
dosyasında belirtilen bir parametredir.
Bu tablespace’lerde
genel olarak belirtmemiz gereken özellikleri içeren bir sorguyu aşağıda
yazabiliriz.
Create tablespace (tablespace_adı) datafile ‘(yaratılacak_datafileın_pathi)’
size 50M Autoextend on maxsize 500M;
Oracle’da 3 tane tablespace tipi bulunmaktadır. Bunlar Temp,
Undo, Permanent tablespaceleridir. Temp
tablespacelerinin amacı geçici olarak bilgilerin saklanmasıdır. Undo
tablespaceler ise daha commit edilmemiş ama DML ifadeleriyle(
Insert,Update,Delete) değiştirilmiş olan bilgilerin eski hallerinin saklandığı
yerdir. Bu 2 tablespace’in yaratılmasındaki yazım şekli arasında çok az fark
vardır.
Undo:
Create undo tablespace (tablespace_adı) datafile ‘(yaratılacak_datafileın_pathi)’
size 50M Autoextend on maxsize 500M;
Temp:
Create Temp tablespace (tablespace_adı) tempile ‘(yaratılacak_datafileın_pathi)’
size 50M Autoextend on maxsize 500M;
Aşağıda koyduğumuz sorgu ise bize ileride yardımcı olacak
bir sorgudur. Bu sorguyla veritabanındaki tablespaceler ve bu tablespace’lerin
doluluk oranları gösterilmektedir. Bu sorguda kullanılan bazı tablolar DBA
tabloları olduğu için bu tablolalara erişim hakkınızın olması gerekmektedir.
SELECT /* + RULE */
df.tablespace_name "Tablespace",
df.bytes
/ (1024 * 1024) "Size (MB)",
SUM(fs.bytes) / (1024 * 1024) "Free (MB)",
Nvl(Round(SUM(fs.bytes) * 100 / df.bytes),1) "% Free",
Round((df.bytes
- SUM(fs.bytes)) * 100 / df.bytes) "% Used"
FROM
dba_free_space fs,
(SELECT
tablespace_name,SUM(bytes) bytes
FROM
dba_data_files
GROUP
BY tablespace_name) df
WHERE
fs.tablespace_name (+) =
df.tablespace_name
GROUP BY
df.tablespace_name,df.bytes
UNION ALL
SELECT /* + RULE */ df.tablespace_name tspace,
fs.bytes
/ (1024 * 1024),
SUM(df.bytes_free) / (1024 * 1024),
Nvl(Round((SUM(fs.bytes) - df.bytes_used) * 100 / fs.bytes), 1),
Round((SUM(fs.bytes)
- df.bytes_free) * 100 / fs.bytes)
FROM
dba_temp_files fs,
(SELECT
tablespace_name,bytes_free,bytes_used
FROM
v$temp_space_header
GROUP
BY tablespace_name,bytes_free,bytes_used) df
WHERE
fs.tablespace_name (+) = df.tablespace_name
GROUP BY
df.tablespace_name,fs.bytes,df.bytes_free,df.bytes_used
ORDER BY 4
DESC;
Hiç yorum yok:
Yorum Gönder