<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Oracle Database | rohmad.net</title>
	
	<link>http://rohmad.net</link>
	<description>Administrasi | Belajar | Tutorial</description>
	<pubDate>Fri, 17 Oct 2008 08:57:59 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/rohmadnet" type="application/rss+xml" /><feedburner:emailServiceId>1916168</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><item>
		<title>Mengetahui konfigurasi database</title>
		<link>http://feeds.feedburner.com/~r/rohmadnet/~3/423523415/</link>
		<comments>http://rohmad.net/2008/10/17/mengetahui-konfigurasi-database/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 08:57:59 +0000</pubDate>
		<dc:creator>rohmadne</dc:creator>
		
		<category><![CDATA[Administration]]></category>

		<category><![CDATA[Concept]]></category>

		<category><![CDATA[configuration]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[information]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[properties]]></category>

		<guid isPermaLink="false">http://rohmad.net/?p=135</guid>
		<description><![CDATA[Berikut ini cara mengetahui informasi seputar konfigurasi database Oracle yang kita maintain. Informasi ini sangat penting diketahui, terutama bagi DBA yang databasenya di-install/create/configure oleh orang (DBA) lain.
Informasi tentang environment Operating System (OS)
Salah satu informasi yang paling penting adalah ORACLE_HOME, yaitu directory di mana instalasi Oracle ditaruh. Lihat environment OS di sini:

Di Windows, lihat di registry [...]]]></description>
			<content:encoded><![CDATA[<p>Berikut ini cara mengetahui informasi seputar konfigurasi database Oracle yang kita maintain. Informasi ini sangat penting diketahui, terutama bagi DBA yang databasenya di-install/create/configure oleh orang (DBA) lain.</p>
<p><strong>Informasi tentang environment Operating System (OS)</strong><br />
Salah satu informasi yang paling penting adalah ORACLE_HOME, yaitu directory di mana instalasi Oracle ditaruh. Lihat environment OS di sini:</p>
<ol>
<li>Di Windows, lihat di registry <code2>My Computer --> HKEY_LOCAL_MACHINE --> SOFTWARE --> ORACLE</code2>
<li>Di Unix, lihat di user profile dari database owner. Untuk shell sh/ksh/bash, user profile ada di file <code2>.profile</code2>. Untuk shell csh/tcsh, user profile ada di file <code2>.login</code2>
</ol>
<p><strong>Informasi parameter Instance (init file)</strong><br />
Lokasinya ada di <code2>$ORACLE_HOME/dbs</code2> untuk OS Unix, atau <code2>%ORACLE_HOME%\database</code2> untuk Windows. Lebih detail silahkan lihat <a href="http://rohmad.net/2008/06/28/teori-dan-administrasi-init-file-pfile-dan-spfile/">Teori dan Administrasi init file (pfile dan spfile)</a>. </p>
<p>Parameter instance, kalau tidak di-specify di init file, maka Oracle akan memberi nilai default. Ketika instance up, kita bisa melihat parameter-parameter instance melalui view <code2>v$parameter</code2>. Contoh:</p>
<pre>SQL> select NAME,VALUE,ISDEFAULT from v$parameter order by name;</pre>
<p>Kolom NAME adalah nama parameter. Kolom VALUE adalah nilai dari parameter tersebut. Kolom ISDEFAULT, kalau bernilai YES berarti nilai tersebut masih merupakan nilai default atau belum di-specify.</p>
<p><span id="more-135"></span><strong>Feature (option) database yang sudah ter-install</strong><br />
 Ketika <a href="http://rohmad.net/2008/05/21/install-database-oracle-10g-di-windows-xp/">meng-install software database Oracle</a>, kita diberi 3 pilihan jenis instalasi yaitu standart, enterprise, atau custom. Feature (option) mana saja yang akan turut di-install, ya tergantung pilihan kita tersebut.  Untuk mengetahui option apa saja yang include dalam software database Oracle yang telah kita install, query ke view <code2>v$option</code2>.</p>
<pre>SQL> select * from v$option order by parameter;</pre>
<p><strong>Feature (option) yang dipakai oleh database</strong><br />
Ketika kita <a href="http://rohmad.net/2008/05/27/membuat-database-oracle-10g/">membuat database</a>, tidak semua feature database Oracle (yang telah kita install) kita butuhkan. Untuk melihat feature yang dipakai oleh database, query view <code2>dba_registry</code2></p>
<pre>SQL> select COMP_NAME,VERSION,STATUS from dba_registry;</pre>
<p>Jadi, perlu dipahami betul beda informasi antara yang di VIEW v$option dan di dba_registry. Feature (option) yang di-install (ada di v$option) belum tentu dipakai oleh database (ada di dba_registry). Sebaliknya, feature yang dipakai database (ada di dba_registry) sudah pasti merupakan feature yang sudah ada dalam instalasi software database Oracle (ada di view v$option).</p>
<p><strong>Informasi tentang properties database</strong><br />
Contoh properties database adalah default tablespace (permanent dan temporary), timezone, character set, language, dll. Informasi tersebut bisa dilihat dengan query ke view <code2>database_properties</code2>. </p>
<pre>SQL> select PROPERTY_NAME,PROPERTY_VALUE
from database_properties order by PROPERTY_NAME;</pre>

<p><a href="http://feeds.feedburner.com/~a/rohmadnet?a=a4JK1C"><img src="http://feeds.feedburner.com/~a/rohmadnet?i=a4JK1C" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/rohmadnet/~4/423523415" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rohmad.net/2008/10/17/mengetahui-konfigurasi-database/feed/</wfw:commentRss>
		<feedburner:origLink>http://rohmad.net/2008/10/17/mengetahui-konfigurasi-database/</feedburner:origLink></item>
		<item>
		<title>Gather statistic untuk Performance</title>
		<link>http://feeds.feedburner.com/~r/rohmadnet/~3/400425635/</link>
		<comments>http://rohmad.net/2008/09/23/gather-statistic-untuk-performance/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 04:04:29 +0000</pubDate>
		<dc:creator>rohmadne</dc:creator>
		
		<category><![CDATA[Administration]]></category>

		<category><![CDATA[Performance Tuning]]></category>

		<category><![CDATA[CBO]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[optimizer]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[performance]]></category>

		<category><![CDATA[statistic]]></category>

		<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false">http://rohmad.net/?p=132</guid>
		<description><![CDATA[Cost based optimizer (CBO) menggunakan statistic untuk menentukan execution plan yang paling optimal. Saya pernah membahas sekilas tentang CBO ini di artikel Tuning Query dengan Explain Plan. 
DI versi 9i ke bawah, gather statistic dilakukan secara manual dengan package DBMS_STATS. By default di database Oracle 10g, gather statistic ini dilakukan oleh Oracle secara otomatis; selanjutnya [...]]]></description>
			<content:encoded><![CDATA[<p>Cost based optimizer (CBO) menggunakan statistic untuk menentukan execution plan yang paling optimal. Saya pernah membahas sekilas tentang CBO ini di artikel <a href="http://rohmad.net/2008/05/29/tuning-query-dengan-explain-plan/" >Tuning Query dengan Explain Plan</a>. </p>
<p>DI versi 9i ke bawah, gather statistic dilakukan secara manual dengan package DBMS_STATS. By default di database Oracle 10g, gather statistic ini dilakukan oleh Oracle secara otomatis; selanjutnya kitapun bisa memilih cara melakukan gather statistic ini, apakah secara otomatis atau manual.</p>
<p>Agar Database melakukan gather statistic secara manual, jalankan command berikut di SQL:</p>
<pre>
conn system
BEGIN
  DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
END;
/
</pre>
<p>Untuk mengembalikan gather statistic berjalan otomatic, jalankan command berikut di SQL:</p>
<pre>
BEGIN
  DBMS_SCHEDULER.ENABLE('GATHER_STATS_JOB');
END;
/
</pre>
<p>Untuk mempermudah pekerjaan, saya menyarankan untuk menjalankan gather statistic secara otomatis. Untuk database versi 9i, mau tidak mau kita harus melakukan secara manual karena di 9i belum ada <em>feature </em>gather statistic otomatis. Walaupun manual, kita bisa mensiasatinya dengan menjalankan DBMS_STATS lewat DBMS_JOB.</p>
<p><span id="more-132"></span><strong>Menggunakan DBMS_STATS</strong></p>
<p>Berikut ini procedure yang ada di dalam package DBMS_STATS yang sering digunakan:</p>
<pre>
Procedure 			Collects
========================================================================
GATHER_INDEX_STATS		Index statistics
GATHER_TABLE_STATS		Table, column, and index statistics
GATHER_SCHEMA_STATS		Statistics for all objects in a schema
GATHER_DATABASE_STATS		Statistics for all objects in a database
GATHER_SYSTEM_STATS		CPU and I/O statistics for the system
</pre>
<p>Untuk menjalankan GATHER_INDEX_STATS, GATHER_TABLE_STATS, dan GATHER_SCHEMA_STATS bisa dilakukan oleh user (schema) yang bersangkutan. Kalau saya lebih suka memakai user SYSTEM, untuk mempermudah saja.</p>
<p>Contoh:</p>
<ol>
<li>Gather satistic untuk semua object milik schema DBMON,sample yang diambil statistic 20%.
<pre>
DBMS_STATS.GATHER_SCHEMA_STATS('DBMON',20);
</pre>
<p>Kalau ingin statistic benar-benar valid, kita bisa mengambil sampel 100%. Namun bila tabelnya sangat besar, dan panjang data tiap kolomnya seragam, sebaiknya sampel bisa diperkecil. Sampel yang besar akan memakan waktu gather statistic lebih lama. Mulai versi 9i, berapa besarnya sampel ini bisa kita serahkan ke Oracle; gunakan DBMS_STATS.AUTO_SAMPLE_SIZE.</p>
<pre>
DBMS_STATS.GATHER_SCHEMA_STATS('DBMON',DBMS_STATS.AUTO_SAMPLE_SIZE);
</pre>
<li>Gather statistic tabel TAB_DATAHIST_XLDM milik schema DBMON, partisi NULL karena tidak mempunyai partisi, sample yang diambil statistic adalah 20%, index juga diikutsertakan
<pre>
DBMS_STATS.GATHER_TABLE_STATS('DBMON','TAB_DATAHIST_XLDM',null,20,cascade=>TRUE);
</pre>
<li>Contoh lebih lanjut dan pembahasan lebih detail, silahkan lihat di referensi
</ol>
<p>Beberapa informasi statistic tersebut bisa dilihat di view DBA_TABLES dan DBA_INDEXES.</p>
<p><strong>Referensi</strong><br />
<a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/stats.htm" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/download.oracle.com');">Oracle® Database Performance Tuning Guide 10g Release 2 (10.2) - Managing Optimizer Statistics</a><br />
<a href="http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_stats.htm" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/download.oracle.com');">Oracle® Database PL/SQL Packages and Types Reference 10g Release 2 (10.2) - DBMS_STATS</a></p>

<p><a href="http://feeds.feedburner.com/~a/rohmadnet?a=XZZRDq"><img src="http://feeds.feedburner.com/~a/rohmadnet?i=XZZRDq" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/rohmadnet/~4/400425635" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rohmad.net/2008/09/23/gather-statistic-untuk-performance/feed/</wfw:commentRss>
		<feedburner:origLink>http://rohmad.net/2008/09/23/gather-statistic-untuk-performance/</feedburner:origLink></item>
		<item>
		<title>Mengenal Teknologi Grid</title>
		<link>http://feeds.feedburner.com/~r/rohmadnet/~3/399625312/</link>
		<comments>http://rohmad.net/2008/09/22/mengenal-teknologi-grid/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 09:03:58 +0000</pubDate>
		<dc:creator>rohmadne</dc:creator>
		
		<category><![CDATA[Concept]]></category>

		<category><![CDATA[asm]]></category>

		<category><![CDATA[cluster]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[enterprise manager]]></category>

		<category><![CDATA[grid]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[RAC]]></category>

		<guid isPermaLink="false">http://rohmad.net/?p=130</guid>
		<description><![CDATA[Oracle 10g, g adalah singkatan dari grid. Berikut ini pembahasan mengenai Grid yang saya kutip dari Wikipedia.
Komputasi Grid (grid computing) adalah penggunaan sumber daya yang melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis untuk memecahkan persoalan komputasi dalam skala besar.
Latar belakang grid
Perkembangan kecepatan prosesor berkembang sesuai dengan Hukum Moore, meskipun demikian bandwidth jaringan komputer [...]]]></description>
			<content:encoded><![CDATA[<p>Oracle 10g, <strong>g</strong> adalah singkatan dari <strong>grid</strong>. Berikut ini pembahasan mengenai Grid yang saya kutip dari <a href="http://id.wikipedia.org/wiki/Komputasi_grid" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/id.wikipedia.org');">Wikipedia</a>.</p>
<p>Komputasi Grid (<em>grid computing</em>) adalah penggunaan sumber daya yang melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis untuk memecahkan persoalan komputasi dalam skala besar.</p>
<p><strong>Latar belakang grid</strong></p>
<p>Perkembangan kecepatan prosesor berkembang sesuai dengan Hukum Moore, meskipun demikian bandwidth jaringan komputer berkembang jauh lebih pesat. Semakin cepatnya jalur komunikasi ini membuka peluang untuk menggabungkan kekuatan komputasi dari sumber-sumber komputasi yang terpisah. Perkembangan ini memungkinkan skala komputasi terdistribusi ditingkatkan lebih jauh lagi secara geografis, melintasi batas-batas domain administrasi yang sudah ada.</p>
<p>Pesatnya perkembangan teknologi komputer di negara-negara maju, membuat para penelitinya semakin haus akan tenaga komputasi yang dapat menjawab tantangan dan permasalahan yang mereka hadapi. Walaupun sudah memiliki supercomputer dengan kapasitas yang sangat tinggi , apa yang sudah ada ini pun dirasa tetap kurang, karena mereka berusaha memecahkan permasalahan yang lebih besar lagi. Setelah semua komputer yg dimiliki seorang &#8220;peneliti haus tenaga komputasi&#8221; dipergunakan habis-habisan untuk memecahkan masalahnya, setelah berbagai cara untuk memecahkan masalah dicoba, dan dipilih yang paling efisien, tapi tetap masalahnya belum bisa dipecahkan juga, apa yang harus dia lakukan? Komputasi grid adalah salah satu jawaban dari pertanyaan ini.</p>
<p><strong>Definisi grid</strong></p>
<p>Menurut tulisan singkat [1] oleh Ian Foster ada check-list yang dapat digunakan untuk mengidentifikasi bahwa suatu sistem melakukan komputasi grid yaitu :<br />
<span id="more-130"></span>
<ul>
<li>Sistem tersebut melakukan koordinasi terhadap sumberdaya komputasi yang tidak berada dibawah suatu kendali terpusat. Seandainya sumber daya yang digunakan berada dalam satu cakupan domain administratif, maka komputasi tersebut belum dapat dikatakan komputasi grid.
<li>Sistem tersebut menggunakan standard dan protokol yang bersifat terbuka (tidak terpaut pada suatu implementasi atau produk tertentu). Komputasi grid disusun dari kesepakatan-kesepakatan terhadap masalah yang fundamental, dibutuhkan untuk mewujudkan komputasi bersama dalam skala besar. Kesepakatan dan standar yang dibutuhkan adalah dalam bidang autentikasi, otorisasi, pencarian sumberdaya, dan akses terhadap sumber daya.
<li>Sistem tersebut berusaha untuk mencapai kualitas layanan yang canggih, (nontrivial quality of service) yang jauh diatas kualitas layanan komponen individu dari komputasi grid tersebut.
</ul>
<p><strong>Peluang grid</strong></p>
<p>Dalam buku <em>The Grid:Blue Print for a new computing infrastructure</em> dijelaskan bahwa yang dimaksud dengan komputasi grid adalah infrastruktur perangkat keras dan perangkat lunak yang dapat menyediakan akses yang bisa diandalkan, konsisten, tahan lama dan tidak mahal terhadap kemampuan komputasi mutakhir yang tersedia.</p>
<p><em>&#8220;A computational grid is a hardware and software infrastructure that provides dependable, consistent, pervasive, and inexpensive access to high-end computational capabilities.&#8221;</em></p>
<p>Seandainya kelak di kemudian hari teknologi yang dibutuhkan untuk mewujudkan visi paradigma komputasi grid ini sudah mapan, peluang akan semakin terbuka bagi kerjasama lintas organisasi, lintas benua dan lintas bangsa. Akan terbuka peluang bagi peneliti di Indonesia yang ingin melakukan komputasi yang sangat rumit, dengan menggunakan supercomputer tercepat di dunia, tanpa harus melakukan investasi besar-besaran dalam bidang teknologi informasi.</p>
<p><strong>Produk Grid dari Oracle</strong></p>
<p>Oracle telah membangun software infrastruktur komputasi grid yang mampu membagi dan menyeimbangkan semua beban (<em>workload</em>) di antara server-server yang berbeda, dan me-manage server-server yang berbeda itu sebagai satu kesatuan sistem. </p>
<p>Kemampuan komputasi grid adalah setara dengan mainframe karena semua komponennya (grid) di-cluster. Namun tidak seperti <em>mainframe </em>dan server SMP (<em>symmetric multiprocessing</em>) yang besar, grid bersifat terbuka (<em>open system technologies</em>) yang bisa mencakup system kecil-kecil dengan processor Intel dan OS Linux sehingga biaya jadi jauh lebih murah.</p>
<p>Adapun produk grid dari Oracle adalah:</p>
<ul>
<li>Storage Grid: Automatic Storage Management (ASM)
<li>Database Grid: Real Application Server (RAC)
<li>Application Grid: Oracle Streams
<li>Grid Control: Enterprise Manager Grid Control
</ul>
<p><img src="http://farm4.static.flickr.com/3025/2877922855_d5277be1e7.jpg?v=0" alt="Oracle Grid Products" /></p>

<p><a href="http://feeds.feedburner.com/~a/rohmadnet?a=WjAhzs"><img src="http://feeds.feedburner.com/~a/rohmadnet?i=WjAhzs" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/rohmadnet/~4/399625312" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rohmad.net/2008/09/22/mengenal-teknologi-grid/feed/</wfw:commentRss>
		<feedburner:origLink>http://rohmad.net/2008/09/22/mengenal-teknologi-grid/</feedburner:origLink></item>
		<item>
		<title>Memindahkan atau Me-rename Datafile</title>
		<link>http://feeds.feedburner.com/~r/rohmadnet/~3/394811621/</link>
		<comments>http://rohmad.net/2008/09/17/memindahkan-atau-me-rename-datafile/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 03:29:54 +0000</pubDate>
		<dc:creator>rohmadne</dc:creator>
		
		<category><![CDATA[Administration]]></category>

		<category><![CDATA[Administrasi]]></category>

		<category><![CDATA[alter]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[datafile]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[rename]]></category>

		<category><![CDATA[tablespace]]></category>

		<guid isPermaLink="false">http://rohmad.net/?p=122</guid>
		<description><![CDATA[Kadang kita perlu memindahkan datafile dari satu tempat (disk/file system/directory/drive) ke tempat yang lainnya. Atau kadang juga kita perlu me-rename datafile karena ada salah ketik waktu membuatnya. Baik memindahkan file dari satu tempat ke tempat lain, maupun merename datafile di  tempat yang sama, intinya adalah sama saja.
Misalkan kita ingin memindahkan/me-rename datafile dari &#8216;/oradata/oracle/ts/users01.dbf&#8217; ke [...]]]></description>
			<content:encoded><![CDATA[<p>Kadang kita perlu memindahkan datafile dari satu tempat (disk/file system/directory/drive) ke tempat yang lainnya. Atau kadang juga kita perlu me-rename datafile karena ada salah ketik waktu membuatnya. Baik memindahkan file dari satu tempat ke tempat lain, maupun merename datafile di  tempat yang sama, intinya adalah sama saja.</p>
<p>Misalkan kita ingin memindahkan/me-rename datafile dari &#8216;/oradata/oracle/ts/users01.dbf&#8217; ke &#8216;/oradata/oracle/ts/users02.dbf&#8217;</p>
<p>Pada database yang NOARCHIVELOG:</p>
<ol>
<li>Shutdown database
<pre>
SQL> shutdown immediate
</pre>
<li>Pindahkan/move/rename datafile. Di Windows bisa pakai Windows explorer. Di unix gunakan command ini:
<pre>
mv /oradata/oracle/ts/users01.dbf /oradata/oracle/ts/users02.dbf
</pre>
<li>Startup mount database
<pre>
SQL> startup mount
</pre>
<li>Rename datafile di level database
<pre>
SQL> alter database rename file '/oradata/oracle/ts/users01.dbf'
to '/oradata/oracle/ts/users02.dbf';
</pre>
<li>Setelah itu, open database
<pre>
SQL> alter database open;
</pre>
</ol>
<p><span id="more-122"></span>Pada database yang ARCHIVELOG:</p>
<ol>
<li>Tidak perlu shutdown database. Cukup offline-kan datafile yang bersangkutan
<pre>SQL> alter database datafile '/oradata/oracle/ts/users01.dbf' offline;</pre>
<li>Pindahkan/move/rename datafile. Di Windows bisa pakai Windows explorer. Di unix gunakan command ini:
<pre>mv /oradata/oracle/ts/users01.dbf /oradata/oracle/ts/users02.dbf</pre>
<li>Rename datafile di level database
<pre>
SQL> alter database rename file '/oradata/oracle/ts/users01.dbf'
to '/oradata/oracle/ts/users02.dbf';
</pre>
<li>Setelah itu, recover datafile yang telah di-rename tersebut
<pre>SQL> recover datafile '/oradata/oracle/ts/users02.dbf';</pre>
<li>Terakhir, online-kan datafile yang telah di-rename tersebut
<pre>alter database datafile '/oradata/oracle/ts/users01.dbf' online;</pre>
</ol>
<p>Pada metode pertama di atas (untuk database NOARCHIVELOG), mau tidak mau database tersebut tidak bisa diakses karena harus di-shutdown dulu (ada downtime). </p>
<p>Sementara pada metode kedua (untuk database ARCHIVELOG) database masih bisa diakses (baik query maupun transaksi), kecuali data (bytes) yang secara intrinsik disimpan di datafile tersebut tidak bisa diakses. Misalkan datafile diatas adalah milik tablespace USERS, dan tablespace USERS punya dua datafiles; maka data yang secara intriksik ada di datafile lain (bukan yang di-offline-kan tersebut) masih bisa diakses.</p>

<p><a href="http://feeds.feedburner.com/~a/rohmadnet?a=2dWeJU"><img src="http://feeds.feedburner.com/~a/rohmadnet?i=2dWeJU" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/rohmadnet/~4/394811621" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rohmad.net/2008/09/17/memindahkan-atau-me-rename-datafile/feed/</wfw:commentRss>
		<feedburner:origLink>http://rohmad.net/2008/09/17/memindahkan-atau-me-rename-datafile/</feedburner:origLink></item>
		<item>
		<title>Partitioning Table: Informasi Segment &amp; Tablespace</title>
		<link>http://feeds.feedburner.com/~r/rohmadnet/~3/392569801/</link>
		<comments>http://rohmad.net/2008/09/14/partitioning-table-segment-tablespace/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 20:23:44 +0000</pubDate>
		<dc:creator>rohmadne</dc:creator>
		
		<category><![CDATA[Administration]]></category>

		<category><![CDATA[Performance Tuning]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[index]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[partition]]></category>

		<category><![CDATA[subpartition]]></category>

		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://rohmad.net/?p=119</guid>
		<description><![CDATA[Kadang kita bingung, ketika query TABLESPACE_NAME di view DBA_TABLES, kok nilai TABLESPACE_NAME ada yang NULL (blank/kosong).

SQL> select distinct TABLESPACE_NAME from dba_tables;
TABLESPACE_NAME
------------------------------
SYSTEM
                                   [...]]]></description>
			<content:encoded><![CDATA[<p>Kadang kita bingung, ketika query TABLESPACE_NAME di view DBA_TABLES, kok nilai TABLESPACE_NAME ada yang NULL (blank/kosong).</p>
<pre>
SQL> select distinct TABLESPACE_NAME from dba_tables;
TABLESPACE_NAME
------------------------------
SYSTEM
                                            <--- Kosong/blank/NULL
USERS
SYSAUX
</pre>
<p>Tidak perlu bingung, itu tandanya ada tabel berpartisi di database tersebut. Pada tabel yang berpartisi, data disimpan di dalam partisinya. Contoh, lihat tabel berpartisi PENJUALAN_RANGE yang pernah dibahas di <a href="http://rohmad.net/2008/07/26/partitioning-table-definisi-dan-contoh/">Partitioning Table: Definisi dan Contoh</a>.</p>
<pre>
CREATE TABLE penjualan_range
( no_invoice  NUMBER,
tgl_jual    DATE NOT NULL,
area varchar2(10))
PARTITION BY RANGE (tgl_jual)
(
PARTITION jual_kw1 VALUES LESS THAN (TO_DATE('01-APR-2008','DD-MON-YYYY')) TABLESPACE users,
PARTITION jual_kw2 VALUES LESS THAN (TO_DATE('01-JUL-2008','DD-MON-YYYY')) TABLESPACE users,
PARTITION jual_kw3 VALUES LESS THAN (TO_DATE('01-OCT-2008','DD-MON-YYYY')) TABLESPACE users,
PARTITION jual_kw4 VALUES LESS THAN (TO_DATE('01-JAN-2009','DD-MON-YYYY')) TABLESPACE users
);
</pre>
<p><span id="more-119"></span>Coba lihat, view DBA_TABLES. Hasil query berikut ini adalah 1 record, di mana nilai kolom TABLESPACE_NAME adalah NULL. </p>
<pre>
SQL> select tablespace_name from dba_tables where table_name='PENJUALAN_RANGE';
TABLESPACE_NAME
------------------------------
SQL> select count(*) from dba_tables where table_name='PENJUALAN_RANGE';
  COUNT(*)
----------
         1
</pre>
<p>Sekarang, query view DBA_TAB_PARTITIONS. Tampak bahwa data disimpan di partisi JUAL_KW1, JUAL_KW2, JUAL_KW3, dan JUAL_KW4. </p>
<pre>
SQL> select TABLESPACE_NAME,PARTITION_NAME from DBA_TAB_PARTITIONS where table_name='PENJUALAN_RANGE';

TABLESPACE_NAME                PARTITION_NAME
------------------------------ ------------------------------
USERS                          JUAL_KW1
USERS                          JUAL_KW2
USERS                          JUAL_KW3
USERS                          JUAL_KW4
</pre>
<p>Lihat juga informasi di view DBA_SEGMENTS</p>
<pre>
SQL> select SEGMENT_NAME,PARTITION_NAME,TABLESPACE_NAME
from dba_segments where SEGMENT_NAME='PENJUALAN_RANGE';

SEGMENT_NAME       PARTITION_NAME  TABLESPACE
------------------ --------------- ----------
PENJUALAN_RANGE    JUAL_KW1        USERS
PENJUALAN_RANGE    JUAL_KW2        USERS
PENJUALAN_RANGE    JUAL_KW3        USERS
PENJUALAN_RANGE    JUAL_KW4        USERS
</pre>

<p><a href="http://feeds.feedburner.com/~a/rohmadnet?a=6zO7d1"><img src="http://feeds.feedburner.com/~a/rohmadnet?i=6zO7d1" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/rohmadnet/~4/392569801" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rohmad.net/2008/09/14/partitioning-table-segment-tablespace/feed/</wfw:commentRss>
		<feedburner:origLink>http://rohmad.net/2008/09/14/partitioning-table-segment-tablespace/</feedburner:origLink></item>
		<item>
		<title>Dasar-dasar Tuning</title>
		<link>http://feeds.feedburner.com/~r/rohmadnet/~3/383015832/</link>
		<comments>http://rohmad.net/2008/09/04/dasar-dasar-tuning/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 06:40:04 +0000</pubDate>
		<dc:creator>rohmadne</dc:creator>
		
		<category><![CDATA[Performance Tuning]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false">http://rohmad.net/?p=115</guid>
		<description><![CDATA[Berikut ini pertanyaan-pertanyaan seputar tuning:

Bagian mana yang perlu dituning. Siapa yang melakukan?
Dari sisi aplikasi, apanya yang perlu dituning?
Bagian database yang mana yang perlu dituning?
Darimana kita bisa belajar banyak tentang tuning?

Bagian mana yang perlu dituning? Oleh siapa?

Aplikasi, oleh application designer dan developer
Database, oleh database administrator (DBA)
 System Operasi (OS), oleh system administrator (sysadmin)

Tuning Aplikasi
Tuning aplikasi memberikan [...]]]></description>
			<content:encoded><![CDATA[<p>Berikut ini pertanyaan-pertanyaan seputar tuning:</p>
<ol>
<li>Bagian mana yang perlu dituning. Siapa yang melakukan?
<li>Dari sisi aplikasi, apanya yang perlu dituning?
<li>Bagian database yang mana yang perlu dituning?
<li>Darimana kita bisa belajar banyak tentang tuning?
</ol>
<h3>Bagian mana yang perlu dituning? Oleh siapa?</h3>
<ol>
<li>Aplikasi, oleh application designer dan developer
<li>Database, oleh database administrator (DBA)
<li> System Operasi (OS), oleh system administrator (sysadmin)
</ol>
<h3>Tuning Aplikasi</h3>
<p>Tuning aplikasi memberikan kontribusi tersebar terhadap performa sistem secara keseluruhan. Termasuk bagian-bagian tuning aplikasi adalah:</p>
<ol>
<li>Normalisasi yang tepat
<li>Pemakaian index
<li>Pemakaian hint dalam query SQL atau PL/SQL
<li>Pemanfaatan sharing cursor
<li>dan lain-lain
</ol>
<h3>Bagian database yang mana yang perlu dituning?</h3>
<ol>
<li>Memory -> PGA dan SGA SGA (shared pool, large pool, buffer cache, redo log buffer, sort area size)
<li>I/O -> distributing I/O, striping, multiple DBWn processes, DBWn I/O slaves.
<li>CPU -> CPU utilization.
<li>Network
<li>Space management -> extent allocation dan Oracle block efficiency.
<li>Redo log dan checkpoint -> redo log file configuration, redo entries, dan checkpoint.
<li>Rollback segment -> sizing rollback segments. Mulai versi 9i, banyakbagian yang dibuat automatic
<li>dan lain-lain
</ol>
<h3>Darimana kita bisa belajar banyak tentang tuning?</h3>
<p><span id="more-115"></span>
<ol>
<li><a href="http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a76992/toc.htm" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/download-west.oracle.com');">Oracle8i Designing and Tuning for Performance Release 2 (8.1.6)</a>
<li><a href="http://download.oracle.com/docs/cd/B10501_01/server.920/a96532/toc.htm" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/download.oracle.com');">Oracle9i Database Performance Planning Release 2 (9.2)</a>
<li><a href="http://download.oracle.com/docs/cd/B10501_01/server.920/a96533/toc.htm" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/download.oracle.com');">Oracle9i Database Performance Tuning Guide and Reference Release 2 (9.2)</a>
<li><a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b28051/toc.htm" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/download.oracle.com');">Oracle® Database 2 Day + Performance Tuning Guide 10g Release 2 (10.2)</a>
<li><a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/toc.htm" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/download.oracle.com');">Oracle® Database Performance Tuning Guide 10g Release 2 (10.2)</a>
<li><a href="http://download.oracle.com/docs/cd/B28359_01/server.111/b28275/toc.htm" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/download.oracle.com');">Oracle® Database 2 Day + Performance Tuning Guide 11g Release 1 (11.1)</a>
<li><a href="http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/toc.htm" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/download.oracle.com');">Oracle® Database Performance Tuning Guide 11g Release 1 (11.1)</a>
</ol>

<p><a href="http://feeds.feedburner.com/~a/rohmadnet?a=fZi7WN"><img src="http://feeds.feedburner.com/~a/rohmadnet?i=fZi7WN" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/rohmadnet/~4/383015832" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rohmad.net/2008/09/04/dasar-dasar-tuning/feed/</wfw:commentRss>
		<feedburner:origLink>http://rohmad.net/2008/09/04/dasar-dasar-tuning/</feedburner:origLink></item>
		<item>
		<title>Security database: Administrasi Profile</title>
		<link>http://feeds.feedburner.com/~r/rohmadnet/~3/371725835/</link>
		<comments>http://rohmad.net/2008/08/22/security-database-administrasi-profile/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 09:05:58 +0000</pubDate>
		<dc:creator>rohmadne</dc:creator>
		
		<category><![CDATA[Administration]]></category>

		<category><![CDATA[security]]></category>

		<category><![CDATA[Administrasi]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[keamanan]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[password]]></category>

		<category><![CDATA[profile]]></category>

		<category><![CDATA[resource]]></category>

		<category><![CDATA[user]]></category>

		<guid isPermaLink="false">http://rohmad.net/2008/08/22/security-database-administrasi-profile/</guid>
		<description><![CDATA[Untuk alasan keamanan, pemakaian resource oleh user database perlu dibatasi. Selain itu, otorisasi (password) user juga perlu diperketat. Di database Oracle, pembatasan itu dilakukan oleh profile.
Berikut ini informasi profile (beserta parameter-patameternya) yang ada di database:

SQL> conn system
SQL> SELECT * FROM DBA_PROFILES ORDER BY PROFILE,RESOURCE_TYPE;
PROFILE    RESOURCE_NAME        [...]]]></description>
			<content:encoded><![CDATA[<p>Untuk alasan keamanan, pemakaian <strong>resource </strong>oleh user database perlu dibatasi. Selain itu, otorisasi (<strong>password</strong>) user juga perlu diperketat. Di database Oracle, pembatasan itu dilakukan oleh profile.</p>
<p>Berikut ini informasi profile (beserta parameter-patameternya) yang ada di database:</p>
<pre>
SQL> conn system
SQL> SELECT * FROM DBA_PROFILES ORDER BY PROFILE,RESOURCE_TYPE;
PROFILE    RESOURCE_NAME                    RESOURCE LIMIT
---------- -------------------------------- -------- ----------
DEFAULT    COMPOSITE_LIMIT                  KERNEL   UNLIMITED
DEFAULT    SESSIONS_PER_USER                KERNEL   UNLIMITED
DEFAULT    PRIVATE_SGA                      KERNEL   UNLIMITED
DEFAULT    CONNECT_TIME                     KERNEL   UNLIMITED
DEFAULT    IDLE_TIME                        KERNEL   UNLIMITED
DEFAULT    LOGICAL_READS_PER_CALL           KERNEL   UNLIMITED
DEFAULT    LOGICAL_READS_PER_SESSION        KERNEL   UNLIMITED
DEFAULT    CPU_PER_CALL                     KERNEL   UNLIMITED
DEFAULT    CPU_PER_SESSION                  KERNEL   UNLIMITED
DEFAULT    PASSWORD_VERIFY_FUNCTION         PASSWORD NULL
DEFAULT    PASSWORD_REUSE_MAX               PASSWORD UNLIMITED
DEFAULT    PASSWORD_REUSE_TIME              PASSWORD UNLIMITED
DEFAULT    PASSWORD_LIFE_TIME               PASSWORD UNLIMITED
DEFAULT    FAILED_LOGIN_ATTEMPTS            PASSWORD 10
DEFAULT    PASSWORD_LOCK_TIME               PASSWORD UNLIMITED
DEFAULT    PASSWORD_GRACE_TIME              PASSWORD UNLIMITED
</pre>
<p>Ketika kita membuat database, by default Oracle membuat profile dengan nama DEFAULT. Ketika kita membuat user tanpa menyebutkan profile-nya, maka user tersebut akan di-assign ke profile DEFAULT.</p>
<p><H3><u>Membuat profile</u></h3>
<p>Gambar diambil dari Oracle Documentation.</p>
<p><span id="more-114"></span><u><strong>Format</strong></u><br />
<img src="http://farm4.static.flickr.com/3255/2786492512_ef6519dbac.jpg?v=0" alt="create database profile" /><br />
<u><strong>resource_parameters</strong></u><br />
<img src="http://farm4.static.flickr.com/3285/2785643169_5092c3aef2.jpg?v=0" alt="resource parameter" /><br />
<u><strong>password_parameters</strong></u><br />
<img src="http://farm4.static.flickr.com/3008/2786500966_a64f0b9318.jpg?v=0" alt="password parameter" /></p>
<p>Contoh membuat profile:</p>
<pre>
SQL> CREATE PROFILE profileku LIMIT
   SESSIONS_PER_USER          UNLIMITED
   CPU_PER_SESSION            UNLIMITED
   CPU_PER_CALL               3000
   CONNECT_TIME               45
   LOGICAL_READS_PER_SESSION  DEFAULT
   LOGICAL_READS_PER_CALL     1000
   PRIVATE_SGA                15K
   COMPOSITE_LIMIT            5000000;
</pre>
<p><H3><u>Mengedit profile</u></h3>
<p>Formatnya sama persis dengan CREATE profile, hanya ganti kata CREATE menjadi ALTER. Contoh:</p>
<pre>
SQL> ALTER PROFILE profileku LIMIT
   FAILED_LOGIN_ATTEMPTS 	5
   PASSWORD_LIFE_TIME 		60
   PASSWORD_REUSE_TIME 		60
   PASSWORD_REUSE_MAX 		5
   PASSWORD_LOCK_TIME 		1/24
   PASSWORD_GRACE_TIME 		10;
</pre>
<p><H3><u>Assign profile ke user</u></h3>
<p>Misalkan saya ingin melihat profile dari user TEST</p>
<pre>
SQL> select USERNAME,PROFILE from dba_users
where USERNAME='TEST';
USERNAME                       PROFILE
------------------------------ ----------
TEST                           DEFAULT
</pre>
<p>Saya akan mengubah profile user TEST dari DEFAULT ke PROFILEKU</p>
<pre>
SQL> alter user test profile PROFILEKU;
</pre>
<p><H3><u>Menghapus</u></h3>
<p>Untuk menghapus profile PROFILEKU, gunakan perintah berikut:</p>
<pre>
SQL> drop profile PROFILEKU;
ERROR at line 1:
ORA-02382: profile PROFILEKU has users assigned, cannot drop without CASCADE
</pre>
<p>OO&#8230; Error. Profile PROFILEKU ada yang makai, yaitu user TEST. Kalau begitu tambahkan argument CASCADE:</p>
<pre>
SQL> drop profile PROFILEKU CASCADE;
</pre>
<p>Setelah profile dihapus, user yang di-assign ke profile tersebut akan dikembalikan ke profile DEFAULT.</p>
<p><H3><u>Keterangan</u></h3>
<p>Resource parameter:</p>
<ul>
<li>SESSIONS_PER_USER<br />
Jumlah session paling banyak yang bisa digunakan secara bersamaan (concurrent).</p>
<li>CPU_PER_SESSION<br />
Maksimal CPU per session. Satuan: 10 ms (hundredth of seconds).</p>
<li>CPU_PER_CALL<br />
Maksimal CPU per call (parse, execute, atau fetch). Satuan: 10 ms (hundredths of seconds).</p>
<li>CONNECT_TIME<br />
Maksimal waktu untuk koneksi. Satuan: menit.</p>
<li>IDLE_TIME<br />
Maksimal waktu dalam status INACTIVE (idle). Satuan: menit.</p>
<li>LOGICAL_READS_PER_SESSION<br />
Maksimal block yang boleh dibaca per session, termasuk block dari memori dan disk.</p>
<li>LOGICAL_READS_PER_CALL<br />
Maksimal block yang boleh dibaca per call (parse, execute, atau fetch).</p>
<li>PRIVATE_SGA<br />
Maksimal memory untuk PRIVATE AREA. Hanya berlaku pada &#8220;shared server&#8221;. Satuan: bytes.</p>
<li>COMPOSITE_LIMIT<br />
Total resource cost per session. Satuan: <strong>service</strong>. Dihitung dari jumlah CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION, dan PRIVATE_SGA.</p>
</ul>
<p>Password Parameter:</p>
<ul>
<li>FAILED_LOGIN_ATTEMPTS<br />
Jumlah maksimal berapa kali salah login (password). Setelah mencapai FAILED_LOGIN_ATTEMPTS, user yang bersangkutan akan di-lock.</p>
<li>PASSWORD_LIFE_TIME<br />
Umur password, dalam satuan hari. Password harus diganti sebelum mencapai PASSWORD_LIFE_TIME.</p>
<li>PASSWORD_GRACE_TIME (satuan: hari)<br />
Bila setelah mencapai PASSWORD_LIFE_TIME, namun user masih belum mengubah passwordnya, maka user akan diberi peringatan selama PASSWORD_GRACE_TIME. Bila telah mencapai PASSWORD_GRACE_TIME namun user masih belum mengubah passwordnya, maka password akan expired dan tidak bisa digunakan untuk login. Bila PASSWORD_GRACE_TIME tidak disetting, maka nilainya UNLIMITED, artinya user akan tetap bisa login meskipun telah mencapai PASSWORD_LIFE_TIME.</p>
<li>PASSWORD_REUSE_TIME (satuan hari) dan PASSWORD_REUSE_MAX<br />
Kedua parameter ini dipakai bersamaan. PASSWORD_REUSE_TIME menyatakan berapa hari (sejak password diganti) password boleh dipakai lagi. PASSWORD_REUSE_MAX menyatakan berapa kali password harus berubah (berganti) sebelum memakai password lama yang dulu pernah dipakai itu.</p>
<li>PASSWORD_LOCK_TIME (satuan hari)<br />
Menyatakan berapa hari user akan di-lock setelah gagal login.</p>
<li>PASSWORD_VERIFY_FUNCTION
</ul>
<p><H3><u>Refensi</u></h3>
<ul>
<li>
<a href="http://download.oracle.com/docs/cd/B19306_01/network.102/b14266/admusers.htm" target="_blank">Oracle® Database Security Guide 10g Release 2 (10.2)<br />
Administering User Privileges, Roles, and Profiles</a></p>
<li>
<a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_6010.htm" target="_blank">Oracle® Database SQL Reference 10g Release 2 (10.2)<br />
CREATE PROFILE</a>
</ul>

<p><a href="http://feeds.feedburner.com/~a/rohmadnet?a=n9VGVN"><img src="http://feeds.feedburner.com/~a/rohmadnet?i=n9VGVN" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/rohmadnet/~4/371725835" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rohmad.net/2008/08/22/security-database-administrasi-profile/feed/</wfw:commentRss>
		<feedburner:origLink>http://rohmad.net/2008/08/22/security-database-administrasi-profile/</feedburner:origLink></item>
		<item>
		<title>Memulai Koneksi ke Database</title>
		<link>http://feeds.feedburner.com/~r/rohmadnet/~3/370674483/</link>
		<comments>http://rohmad.net/2008/08/21/memulai-koneksi-ke-database/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 06:39:32 +0000</pubDate>
		<dc:creator>rohmadne</dc:creator>
		
		<category><![CDATA[Administration]]></category>

		<category><![CDATA[connection]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[listener]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[tnsnames]]></category>

		<guid isPermaLink="false">http://rohmad.net/2008/08/21/memulai-koneksi-ke-database/</guid>
		<description><![CDATA[Setelah menginstall Oracle dan membuat database, untuk langkah awal administrasi adalah mulai melakukan koneksi ke database.
Administrasi dilakukan selalu oleh user yang meng-install dan membuat database. Tool native  dari Oracle untuk administrasi database adalah sqlplus, lokasi ada di $ORACLE_HOME/bin. Di Oracle versi 8 ke bawah, tool administrasi tersebut adalah svrmgrl.
Sebelum melakukan koneksi, ada OS parameter [...]]]></description>
			<content:encoded><![CDATA[<p>Setelah <a href="http://rohmad.net/2008/05/21/install-database-oracle-10g-di-windows-xp/">menginstall Oracle</a> dan <a href="http://rohmad.net/2008/05/27/membuat-database-oracle-10g/">membuat database</a>, untuk langkah awal administrasi adalah mulai melakukan koneksi ke database.</p>
<p>Administrasi dilakukan <del datetime="2008-08-21T03:30:08+00:00">selalu</del> oleh user yang meng-install dan membuat database. Tool <em>native </em> dari Oracle untuk administrasi database adalah <code2><strong>sqlplus</strong></code2>, lokasi ada di <code2><strong>$ORACLE_HOME/bin</strong></code2>. Di Oracle versi 8 ke bawah, tool administrasi tersebut adalah <code2><strong>svrmgrl</strong></code2>.</p>
<p>Sebelum melakukan koneksi, ada OS parameter yang perlu disetting. Di Windows, parameter tersebut otomatis sudah dimasukkan ke dalam registry ketika meng-install dan membuat database pakai dbca. Di Unix, setting manual parameter berikut di user profile: ORACLE_HOME, ORACLE_SID, dan PATH.</p>
<p>Misalkan kita pakai shell sh atau ksh. Edit file <code2><strong>.profile</strong></code2>, tambahkan parameter berikut:</p>
<pre>
ORACLE_HOME=/data1/oracle/product/10.2.0; export ORACLE_HOME
ORACLE_SID=ts; export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH; export PATH
</pre>
<p>Setelah mengedit file .profile, jangan lupa untuk relogin atau mengeksekusi file tersebut agar parameter yang disetting terbaca oleh current session. Berikut ini cara mengeksekusi file .profile.</p>
<pre>
. ./.profile
</pre>
<p><span style="text-decoration: underline;"><strong>Koneksi pakai SQLPLus di Mesin server</strong></span></p>
<p>Sekarang, mari kita mulai koneksi ke database. Misalkan saya akan connect pakai user system.</p>
<pre>
sqlplus
</pre>
<p><span id="more-113"></span>Nanti akan diminta memasukkan username dan password. Kalau belum diubah, password system adalah seperti yang <a href="http://farm4.static.flickr.com/3142/2527497638_0bd7cda41c.jpg?v=0" target="blank" onclick="javascript:pageTracker._trackPageview ('/outbound/farm4.static.flickr.com');">ditunjukkan ketika membuat database</a>.</p>
<p>Bisa juga username langsung dimasukkan ke argument-nya SQLPlus, nanti kita cuma diminta memasukkan password saja.</p>
<pre>
sqlplus system
</pre>
<p>Bisa juga langsung memasukkan username dan password. Misalkan password user system adalah oracle:</p>
<pre>
sqlplus system/oracle
</pre>
<p>Koneksi dengan langsung memasukkan username dan password sekaligus ini tidak direkomendasikan, karena password akan tampak ketika di <code2><strong>ps -ef</strong></code2>. Contoh:</p>
<pre>
ps -ef|grep sql
oracle  5742 25612   11:09:49 pts/1 0:00 sqlplus system/oracle
</pre>
<p>Cara lain juga, kita bisa masuk ke SQLPlus prompt tanpa login, kemudian jalankan perintah <code2><strong>connect</strong></code2> atau <code2><strong>conn</strong></code2> di SQL prompt. Contoh:</p>
<pre>
sqlplus /nolog
SQL> conn
</pre>
<p>Sama seperti ketika menjalankan sqlplus dari OS prompt, username dan password bisa disebutkan langsung atau tidak; kalau tidak disebutkan nanti akan ditanyakan.</p>
<pre>
SQL> conn system/oracle
SQL> conn system
</pre>
<p><span style="text-decoration: underline;"><strong>Koneksi pakai user sys </strong></span></p>
<p>User sys adalah merupakan super user, dikenal juga sebagai sysdba. Untuk koneksi pakai user sys, harus ditambahkan argument <code2><strong>as sysdba</strong></code2>. Contoh:</p>
<pre>
SQL> conn sys/oracle as sysdba
</pre>
<p>Bisa juga tanpa menyebutkan user sys, yaitu dengan memakai argument <code2><strong>/</strong></code2>. Contoh:</p>
<pre>
SQL> conn / as sysdba
</pre>
<p>Kalau tidak sebutkan argument as sysdba, akan muncul error berikut:</p>
<pre>
SQL> conn sys/oracle
ERROR:
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
Warning: You are no longer connected to ORACLE.
</pre>
<p>Bisa juga langsung login ketika menjalankan SQLPLUS. Contoh:</p>
<pre>
sqlplus "sys/oracle as sysdba"
sqlplus "/ as sysdba"
</pre>
<p><span style="text-decoration: underline;"><strong>Koneksi dari client ke server</strong></span><br />
Untuk bisa melakukan koneksi client-server, pastikan kita sudah <a href="http://rohmad.net/2008/05/27/membuat-listener/">mensetting dan menjalakan listener</a> di server database, dan <a href="http://rohmad.net/2008/05/27/membuat-mensetting-tns-names/">mensetting TNSNames</a> di client. Kalau belum punya instalasi Oracle client di mesin/komputer/PC lain, kita bisa memanfaatkan database server sebagai client sekaligus. Ketika kita install software database Oracle, by default juga diinstall Oracle client; sehingga nantinya kita bisa melakukan koneksi client-server di mesin server database kita.</p>
<p>Pada koneksi client-server , tambahkan argument <code2><strong>@namatns</strong></code2>. Contoh:</p>
<pre>
sqlplus system@tsprimary
sqlplus system/oracle@tsprimary
sqlplus "sys@tsprimary as sysdba"
sqlplus "sys/oracle@tsprimary as sysdba"
</pre>
<pre>
SQL> conn system@tsprimary
SQL> conn system/oracle@tsprimary
SQL> conn sys@tsprimary as sysdba
SQL> conn sys/oracle@tsprimary as sysdba
</pre>

<p><a href="http://feeds.feedburner.com/~a/rohmadnet?a=IN1Bkk"><img src="http://feeds.feedburner.com/~a/rohmadnet?i=IN1Bkk" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/rohmadnet/~4/370674483" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rohmad.net/2008/08/21/memulai-koneksi-ke-database/feed/</wfw:commentRss>
		<feedburner:origLink>http://rohmad.net/2008/08/21/memulai-koneksi-ke-database/</feedburner:origLink></item>
		<item>
		<title>Menggunakan External Table</title>
		<link>http://feeds.feedburner.com/~r/rohmadnet/~3/365355367/</link>
		<comments>http://rohmad.net/2008/08/15/menggunakan-external-table/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 03:50:29 +0000</pubDate>
		<dc:creator>rohmadne</dc:creator>
		
		<category><![CDATA[Administration]]></category>

		<category><![CDATA[Utilities]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[external]]></category>

		<category><![CDATA[load]]></category>

		<category><![CDATA[loader]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://rohmad.net/2008/08/15/menggunakan-external-table/</guid>
		<description><![CDATA[External table adalah tabel yang datanya ada di luar database, biasanya berupa text file. External table sering digunakan untuk :

membaca file dari database Oracle.
Me-load (import) data dari text file ke database. Sebagai alternatif lain dari SQL*Loader.

Misalkan saya punya file penjualan. dat di direktori /data1/oracle/Users/rohmad/external. 

$ cd /data1/oracle/Users/rohmad/external
$ more penjualan.dat
3286;23-DEC-08;SEMARANG
3287;24-DEC-08;SURABAYA
3288;25-DEC-08;MAKASAR
3289;26-DEC-08;MEDAN
3290;26-DEC-08;MAGELANG TENGAH

Berikut ini langkah-langkah untuk membuat external [...]]]></description>
			<content:encoded><![CDATA[<p><strong>External table</strong> adalah tabel yang datanya ada di luar database, biasanya berupa text file. External table sering digunakan untuk :</p>
<ol>
<li>membaca file dari database Oracle.
<li>Me-load (import) data dari text file ke database. Sebagai alternatif lain dari <a href="http://rohmad.net/2008/08/14/menggunakan-sqlloader/">SQL*Loader</a>.
</ol>
<p>Misalkan saya punya file <code2>penjualan. dat</code2> di direktori <code2>/data1/oracle/Users/rohmad/external</code2>. </p>
<pre>
$ cd /data1/oracle/Users/rohmad/external
$ more penjualan.dat
3286;23-DEC-08;SEMARANG
3287;24-DEC-08;SURABAYA
3288;25-DEC-08;MAKASAR
3289;26-DEC-08;MEDAN
3290;26-DEC-08;MAGELANG TENGAH
</pre>
<p>Berikut ini langkah-langkah untuk membuat external table berdasarkan file tersebut.</p>
<p><strong><u>Persiapan</u></strong><br />
Buat directory di database yang mengarah ke directory file tersebut.</p>
<pre>
SQL> conn / as sysdba
SQL> CREATE OR REPLACE DIRECTORY external_dir
AS '/data1/oracle/Users/rohmad/external';
</pre>
<p>Beri privilege ke user agar bisa membaca dan menulis ke directory tersebut.</p>
<pre>
SQL> GRANT READ ON DIRECTORY external_dir TO test;
SQL> GRANT WRITE ON DIRECTORY external_dir TO test;
</pre>
<p><span id="more-112"></span><strong><u>Membuat External Table</u></strong></p>
<pre>
SQL> conn test
SQL> CREATE TABLE ext_penjualan
    ( no_invoice 	NUMBER,
      tgl_jual    	DATE,
      area 		varchar2(10))
ORGANIZATION EXTERNAL
     (
       TYPE ORACLE_LOADER
       DEFAULT DIRECTORY external_dir
       ACCESS PARAMETERS
       (
         records delimited by newline
         badfile external_dir:'penjualan.bad'
         logfile external_dir:'penjualan.log'
         fields terminated by ';'
         missing field values are null
         ( no_invoice, tgl_jual, area
         )
       )
       LOCATION ('penjualan.dat')
     )
     REJECT LIMIT UNLIMITED;
</pre>
<p><strong><u>Query External Table</u></strong></p>
<pre>
SQL> select * from ext_penjualan;

NO_INVOICE TGL_JUAL  AREA
---------- --------- ----------
      3286 23-DEC-08 SEMARANG
      3287 24-DEC-08 SURABAYA
      3288 25-DEC-08 MAKASAR
      3289 26-DEC-08 MEDAN
</pre>
<p>Dari kelima records yang ada di file penjualan.dat, ada 4 records yang terbaca oleh Oracle. Sekarang kita lihat log-nya, pasti ada error ketika membaca salah satu record tersebut.</p>
<pre>
$ cd /data1/oracle/Users/rohmad/external
$ more penjualan.log
error processing column AREA in row 5 for datafile /data1/oracle/Users/rohmad/external/penjualan.dat
ORA-12899: value too large for column AREA (actual: 15, maximum: 10)
</pre>
<p>Errornya sama persis dengan yang pernah saya bahas di <a href="http://rohmad.net/2008/08/14/menggunakan-sqlloader/">Menggunakan SQL*Loader</a>. Sebagaimana SQL*Loader, record yang tidak diproses ditaruh di BADFILE (penjualan.bad).</p>
<p>Kalau yang salah adalah datanya, misalnya kolomnya kepanjangan, ya datanya yang mesti diedit. Kalau datanya tidak masalah, itu artinya kolom di tabel yang kurang panjang. Kita bisa mengedit external tabel tersebut:</p>
<pre>
SQL> alter table ext_penjualan modify (area varchar2(15));
SQL> select * from ext_penjualan;

NO_INVOICE TGL_JUAL  AREA
---------- --------- ---------------
      3286 23-DEC-08 SEMARANG
      3287 24-DEC-08 SURABAYA
      3288 25-DEC-08 MAKASAR
      3289 26-DEC-08 MEDAN
      3290 26-DEC-08 MAGELANG TENGAH
</pre>
<p><strong><u>Load data dengan external table</u></strong><br />
Nah, sekarang kita bisa me-load (import) data dari file penjualan.dat kedatabase dengan memanfaatkan external table.</p>
<p>Misalkan data akan diload ke tabel history_penjualan:</p>
<pre>
CREATE TABLE history_penjualan
    ( no_invoice 	NUMBER,
      tgl_jual    	DATE,
      area 		varchar2(15));
</pre>
<p>Ya, tinggal insert saja:</p>
<pre>
SQL> insert into history_penjualan select * from ext_penjualan;
SQL> select * from history_penjualan;

NO_INVOICE TGL_JUAL  AREA
---------- --------- ---------------
      3286 23-DEC-08 SEMARANG
      3287 24-DEC-08 SURABAYA
      3288 25-DEC-08 MAKASAR
      3289 26-DEC-08 MEDAN
      3290 26-DEC-08 MAGELANG TENGAH
</pre>
<p><strong><u>Referensi</u></strong><br />
<a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/tables.htm#sthref2445" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/download.oracle.com');">Oracle® Database Administrator&#8217;s Guide 10g Release 2 (10.2) - Managing External Table</a></p>

<p><a href="http://feeds.feedburner.com/~a/rohmadnet?a=WjnwUG"><img src="http://feeds.feedburner.com/~a/rohmadnet?i=WjnwUG" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/rohmadnet/~4/365355367" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rohmad.net/2008/08/15/menggunakan-external-table/feed/</wfw:commentRss>
		<feedburner:origLink>http://rohmad.net/2008/08/15/menggunakan-external-table/</feedburner:origLink></item>
		<item>
		<title>Menggunakan SQL*Loader</title>
		<link>http://feeds.feedburner.com/~r/rohmadnet/~3/364496991/</link>
		<comments>http://rohmad.net/2008/08/14/menggunakan-sqlloader/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 04:45:12 +0000</pubDate>
		<dc:creator>rohmadne</dc:creator>
		
		<category><![CDATA[Utilities]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[export]]></category>

		<category><![CDATA[import]]></category>

		<category><![CDATA[load]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[SQL*Loader]]></category>

		<category><![CDATA[sqlldr]]></category>

		<guid isPermaLink="false">http://rohmad.net/2008/08/14/menggunakan-sqlloader/</guid>
		<description><![CDATA[SQL Loader adalah tool Oracle untuk me-load data dari flat (text) file ke dalam tabel di database Oracle. Program (executable) SQL Loader adalah sqlldr, lokasi ada di $ORACLE_HOME/bin.
SQL Loader sering digunakan untuk mengatasi kendala jaringan. Misalkan perusahaan punya kantor cabang yang tidak tersambung online dengan pusat; data transaksi biasanya dikirim ke pusat dalam bentuk text [...]]]></description>
			<content:encoded><![CDATA[<p>SQL Loader adalah tool Oracle untuk me-load data dari flat (text) file ke dalam tabel di database Oracle. Program (executable) SQL Loader adalah <code2>sqlldr</code2>, lokasi ada di <code2>$ORACLE_HOME/bin</code2>.</p>
<p>SQL Loader sering digunakan untuk mengatasi kendala jaringan. Misalkan perusahaan punya kantor cabang yang tidak tersambung online dengan pusat; data transaksi biasanya dikirim ke pusat dalam bentuk text file; di pusat, data tersebut kemudian di-load ke database pakai SQL Loader.</p>
<p>SQL Loader juga sering digunakan untuk me-load data dari system yang berbeda. Misalkan transaksi di-handle oleh database non Oracle, sementara datawarehouse menggunakan Oracle. Nah, data transaksi dari non Oracle ini kemudian di-export ke dalam text file, dan kemudian di-import ke Oracle pakai SQL*Loader.</p>
<p>Misalkan saya punya file penjualan.dat yang berisi:</p>
<pre>3286;23-DEC-08;SEMARANG
3287;24-DEC-08;SURABAYA
3288;25-DEC-08;MAKASAR
3289;26-DEC-08;MEDAN
3290;26-DEC-08;MAGELANG TENGAH
</pre>
<p>File penjualan.dat tersebut akan saya load ke tabel penjualan:</p>
<pre>
CREATE TABLE penjualan
    ( no_invoice 	NUMBER,
      tgl_jual    	DATE,
      area 		varchar2(10));
</pre>
<p><span id="more-111"></span>Langkap pertama, buat control file yang berisi parameter-parameter untuk SQL Loader. Misalkan saya beri nama penjualan.ctl.</p>
<pre>
load data
APPEND
into table PENJUALAN
fields terminated by ";"
TRAILING NULLCOLS
(no_invoice,tgl_jual,area)
</pre>
<p>Langkah selanjutnya, load data di penjualan.dat ke tabel PENJUALAN. Gunakan perintah berikut:</p>
<pre>
sqlldr USERID=test/test CONTROL=penjualan.ctl, DATA=penjualan.dat, LOG=penjualan.log, BAD=penjualan.bad
</pre>
<p>Parameter untuk sqlldr adalah:</p>
<ol>
<li>USERID: user dan password ke database Oracle
<li>CONTROL: control file yang akan digunakan
<li>DATA: file (data) yang akan di-load
<li>LOG: file untuk menyimpan log dari proses loader
<li>BAD: file untuk menyimpan data yang tidak diprose
</ol>
<p>Setelah menjalankan sqlldr di atas, lihat lognya di file penjualan.log. Oo&#8230; ternyata ada error:</p>
<pre>
Record 5: Rejected - Error on table PENJUALAN, column AREA.
ORA-12899: value too large for column "TEST"."PENJUALAN"."AREA" (actual: 15, maximum: 10)
</pre>
<p>Record (baris) kelima tidak diproses karena lebar kolom AREA hanya 10 karakter, sementara nilai yang dimasukkan panjangnya 15 karakter (MAGELANG TENGAH). Record yang tidak diposes ini ditaruh di file penjualan.bad. Sekarang coba query ke tabel PENJUALAN, data yang masuk hanya 4 record.</p>
<pre>SQL> select * from penjualan;

NO_INVOICE TGL_JUAL  AREA
---------- --------- ----------
      3286 23-DEC-08 SEMARANG
      3287 24-DEC-08 SURABAYA
      3288 25-DEC-08 MAKASAR
      3289 26-DEC-08 MEDAN
</pre>
<p><strong><u>Referensi</u></strong><br />
<a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/part_ldr.htm" target="_blank" onclick="javascript:pageTracker._trackPageview ('/outbound/download.oracle.com');">Oracle® Database Utilities 10g Release 2 (10.2) - SQL*Loader</a></p>

<p><a href="http://feeds.feedburner.com/~a/rohmadnet?a=WbCoMA"><img src="http://feeds.feedburner.com/~a/rohmadnet?i=WbCoMA" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/rohmadnet/~4/364496991" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rohmad.net/2008/08/14/menggunakan-sqlloader/feed/</wfw:commentRss>
		<feedburner:origLink>http://rohmad.net/2008/08/14/menggunakan-sqlloader/</feedburner:origLink></item>
	</channel>
</rss>
