*********************************************************************************************
POJOK ORACLE                                                                    
                                                        Edisi 17 April 2006
Redaksi Erick di [EMAIL PROTECTED]
*********************************************************************************************
Perencanaan Kapasitas 
  Perencanaan kapasitas meliputi dua tujuan utama
->Berapa banyak kapasitas penyimpanan yang telah terisi
->Berapa besar pertumbuhan data
  Peralatan dan metode yang dapat digunakan untuk merencanakan kapasitas di 
batasi oleh dua hal, yaitu:
->Seberapa akurat hasil perhitungan
->Dampaknya pada performance
  Metoda yang tidak akurat
->Menghitung kapasitas yang telah digunakan berdasarkan besarnya datafile dari 
operating system (Datafile size).
  Metoda yang akurat, tetapi hasilnya tidak bisa dipercaya karena sangat erat 
kaitannya dengan pengorganisasian system 
penyimpanan fisik (physical storage)
->Menghitung isi dari data file dengan menggabungkan informasi performance view 
dari DBA_DATA_FILES dengan 
    DBA_FREE_SPACE (datafile content sizes).
  Metoda yang tingkat keakuratannya tinggi, tetapi sangat tergantung block 
usage parameter atau berapa banyak block yang 
secara partial telah terisi.
->DBMS_SPACE
  Metoda yang tingkat keakuratannya tinggi, tetapi mempengaruhi performance
->Statistics, semakin tinggi tingkat keakuratan yang kita inginkan, maka 
semakin tinggi pula pengaruhnya pada performance. 
    Perlu di perhatikan bahwa pada versi Oracle lama masih menggunakan rule 
based optimizer dari pada cost based 
    optimizer. 
    Pergunakan parameter OPTIMIZER_MODE untuk menghindari masalah ini.
->Mengukur panjang data, data yang tersimpan dalam database diukur dengan 
menggunakan besarnya parameter dalam 
    tipe data pada masing-masing tabel di kali banyak baris data. Kesulitan 
dengan menggunakan metoda ini adalah pada 
    tipe data variabel seperti varchar2. Metoda ini merupaka metoda yang paling 
akurat untuk database dengan 
    menggunakan database relasional yang utuh (pure).
->Oracle Enterprise Manager Capacity Planner Package.
  Metoda Datafile sizes
Pada metoda ini pengukuran dilakukan secara langsung dari operating system 
dengan menggunakan sintak dir pada 
windows, df – k pada solaris atau dengan skrip perl.
  Metoda Datafile content sizes
Skrip untuk mendapatkan nilai kapasitas yang telah terisi adalah sebagai 
berikut:
  spool ./logs/tablespace.log;
SELECT  'Tablespace '||df.tablespace_name "TBS"
 ,round((sum(nvl(fs.bytes,0))/ (df.bytes)) * 100) "%Free"
,round(((df.bytes - sum(nvl(fs.bytes,0))) / (df.bytes) ) * 100) "%Used"
 ,round(sum(nvl(fs.bytes/1024/1024,0))) "Mb Free"
 ,round(df.bytes/1024/1024 - sum(nvl(fs.bytes/1024/1024,0))) "Mb Used"
 ,df.autoextensible "AutoExtensible"
FROM   dba_free_space fs, dba_data_files df
WHERE  fs.file_id(+) = df.file_id
GROUP BY df.tablespace_name, df.file_id, df.bytes, df.autoextensible
ORDER BY df.file_id;
spool off;
  Metoda DBMS_SPACE
DBMS_SPACE merupakan package dari oracle untuk menghitung jumlah total blok 
dari setiap database objek, tabel, 
index dan cluster.
Skrip dari metoda ini adalah sebagai berikut:
  set serveroutput on;
create or replace procedure my_DBMS_SPACE (powner in varchar2) as
cursor cOBJECTS is
select decode(partitioned,'NO','TABLE','YES','TABLE PARTITION')
as type,table_name as name from dba_tables where owner = powner
UNION
select decode(partitioned,'NO','INDEX','YES','TABLE PARTITION')
as type,index_name as name from dba_indexes where owner = powner
UNION
select 'CLUSTER' as type,cluster_name as name from dba_clusters where owner = 
powner;
total_blocks NUMBER;
total_bytes NUMBER;
unused_blocks NUMBER;
unused_bytes NUMBER;
lastextf NUMBER;
lastextb NUMBER;
lastusedblock NUMBER;
used_blocks integer default 0;
free_blocks integer default 0; 
begin
for objs in cOBJECTS loop
dbms_space.unused_space(
 powner
,objs.name
,objs.type
,total_blocks
,total_bytes
,unused_blocks
,unused_bytes
,lastextf
,lastextb
,lastusedblock); 
used_blocks := used_blocks + total_blocks;
free_blocks := free_blocks + unused_blocks;
end loop;
dbms_output.put_line('Used = '||to_char(used_blocks)||', Free = 
'||to_char(free_blocks));
exception when others then
dbms_output.put_line('test '||sqlerrm(sqlcode));
end;
/
exec my_dbms_space;
  Metoda Statistics
Ada dua cara untuk menggunakan metoda statistics, yaitu:
->Menggunakan perintah ANALYZE.
->Menggunakan DBMS_STATS package.
  Perintah ANALYZE
Sintaknya adalah sebagai berikut:
  ANALYZE table_name COMPUTE STATISTICS;
  Cara ini lebih efisien tetapi kurang begitu akurat karena perintah ini 
memerintahkan oracle untuk melakukan sampling 
1064 baris dari tabel yang di tentukan. 
Sintak perintah ANALYZE yang memperhitungkan persentase dari jumlah baris 
adalah sebagai berikut:
  ANALYZE table_name ESTIMATE STATISTICS [SAMPLE {1-99% | rows];
  DBMS_STATS package
Sintak untuk menjalankan DBMS_STATS yang berhubungan dengan perencanaan 
kapasitas adalah sebegai berikut:
EXEC DBMS_STATS.GATHER_TABLE_STATS(‘owner’,’table_name’);
EXEC DBMS_STATS.GATHER_INDEX_STATS(‘owner’,’index_name’);
  Skrip untuk menghitung total kapasitas terpakai dari tabel dan index dalam 
satu schema adalah sebagai berikut:
  set termout off echo off feed off trimspool on head off pages 0 timing off;
spool ./log/statistics.log;
select 'exec dbms_stats.gather_table_stats(''ACCOUNTS'','''||table_name||''');' 
from user_tables;
select 'exec dbms_stats.gather_index_stats(''ACCOUNTS'','''||index_name||''');' 
from user_indexes;
spool off;
set termout on timing off;
@@./log/statistics.log;
  SELECT  SUM((t.BLOCKS+SUM(i.LEAF_BLOCKS/DECODE(i.BLEVEL,0,1,i.BLEVEL))))*8192 
AS BYTES
 ,ROUND(SUM((t.BLOCKS+SUM(i.LEAF_BLOCKS/DECODE(i.BLEVEL,0,1,i.BLEVEL)))
*8192/1024/1024)) AS MB
 ,ROUND(SUM((t.BLOCKS+SUM(i.LEAF_BLOCKS/DECODE(i.BLEVEL,0,1,i.BLEVEL)))
*8192/1024/1024/1024),1) AS GB
FROM USER_TABLES t, USER_INDEXES i
WHERE t.TABLE_NAME = i.TABLE_NAME
GROUP BY t.TABLE_NAME,t.BLOCKS;
  exit;
  Metoda mengukur panjang data dari masing-masing table.
Ilustrasi dari metoda ini adalah sebagai berikut:
Membuat table dengan skrip sebagai berikut:
  CREATE TABLE ATABLE(
 rnum INTEGER,
 vc1 VARCHAR2(4000) DEFAULT '0123456789',
 vc2 VARCHAR2(4000) DEFAULT '012',
 c1 CHAR(2) DEFAULT 'ab',
 c2 CHAR(10) DEFAULT 'abc',
 n1 NUMBER DEFAULT 100,
 n2 NUMBER(10) DEFAULT 101,
 n3 NUMBER(12,4) DEFAULT 103.1234,
 f1 FLOAT DEFAULT 1.23334,
 si1 SMALLINT DEFAULT 0,
 si2 SMALLINT DEFAULT 100,
 i1 INTEGER DEFAULT 0,
 i2 INTEGER DEFAULT 222,
 d1 DATE DEFAULT SYSDATE,
 t1 TIMESTAMP DEFAULT SYSDATE
);
INSERT INTO ATABLE(rnum) VALUES(1);
COMMIT;
  Kemudian lakukan query dengan skrip sebagai berikut:
  SELECT DATA_LENGTH AS Length, DATA_PRECISION AS Precision, DATA_SCALE AS 
Scale, 
COLUMN_NAME|| ‘, ‘||DATA_TYPE AS Field FROM USER_TAB_COLUMNS 
WHERE TABLE_NAME = ‘ATABLE’;
  Jumlahkan nilai yang ada pada kolom length dan kalikan dengan jumlah baris 
(row) pada setiap table, maka akan 
di peroleh nilai kapasitas terpakai dari tabel. Lakukan hal yang sama untuk 
setiap tabel dan jumlahkan semua sehingga 
diperoleh nilai total.
  Semoga bermanfaat.


                
---------------------------------
Do you Yahoo!?
 Yahoo! Movies - Search movie info and celeb profiles and photos.
                
---------------------------------
Do you Yahoo!?
 New and Improved Yahoo! Mail - 1GB free storage!

[Non-text portions of this message have been removed]



--
-----------I.N.D.O - O.R.A.C.L.E---------------
Keluar: [EMAIL PROTECTED]
Website: http://indo-oracle.lizt.org (NEW)
-----------------------------------------------

Bergabung dengan Indonesia Thin Client User Groups, 
Terminal Server, Citrix, New Moon Caneveral, di:
http://indo-thin.vze.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/indo-oracle/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Kirim email ke