Security database: Administrasi Profile
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 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
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.
Membuat profile
Contoh membuat profile:
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;
Mengedit profile
Formatnya sama persis dengan CREATE profile, hanya ganti kata CREATE menjadi ALTER. Contoh:
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;
Assign profile ke user
Misalkan saya ingin melihat profile dari user TEST
SQL> select USERNAME,PROFILE from dba_users
where USERNAME='TEST';
USERNAME PROFILE
------------------------------ ----------
TEST DEFAULT
Saya akan mengubah profile user TEST dari DEFAULT ke PROFILEKU
SQL> alter user test profile PROFILEKU;
Menghapus
Untuk menghapus profile PROFILEKU, gunakan perintah berikut:
SQL> drop profile PROFILEKU;
ERROR at line 1:
ORA-02382: profile PROFILEKU has users assigned, cannot drop without CASCADE
OO… Error. Profile PROFILEKU ada yang makai, yaitu user TEST. Kalau begitu tambahkan argument CASCADE:
SQL> drop profile PROFILEKU CASCADE;
Setelah profile dihapus, user yang di-assign ke profile tersebut akan dikembalikan ke profile DEFAULT.
Keterangan
Resource parameter:
SESSIONS_PER_USER
Jumlah session paling banyak yang bisa digunakan secara bersamaan (concurrent).
CPU_PER_SESSION
Maksimal CPU per session. Satuan: 10 ms (hundredth of seconds).
CPU_PER_CALL
Maksimal CPU per call (parse, execute, atau fetch). Satuan: 10 ms (hundredths of seconds).
CONNECT_TIME
Maksimal waktu untuk koneksi. Satuan: menit.
IDLE_TIME
Maksimal waktu dalam status INACTIVE (idle). Satuan: menit.
LOGICAL_READS_PER_SESSION
Maksimal block yang boleh dibaca per session, termasuk block dari memori dan disk.
LOGICAL_READS_PER_CALL
Maksimal block yang boleh dibaca per call (parse, execute, atau fetch).
PRIVATE_SGA
Maksimal memory untuk PRIVATE AREA. Hanya berlaku pada “shared server”. Satuan: bytes.
COMPOSITE_LIMIT
Total resource cost per session. Satuan: service. Dihitung dari jumlah CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION, dan PRIVATE_SGA.
Password Parameter:
FAILED_LOGIN_ATTEMPTS
Jumlah maksimal berapa kali salah login (password). Setelah mencapai FAILED_LOGIN_ATTEMPTS, user yang bersangkutan akan di-lock.
PASSWORD_LIFE_TIME
Umur password, dalam satuan hari. Password harus diganti sebelum mencapai PASSWORD_LIFE_TIME.
PASSWORD_GRACE_TIME (satuan: hari)
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.
PASSWORD_REUSE_TIME (satuan hari) dan PASSWORD_REUSE_MAX
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.
PASSWORD_LOCK_TIME (satuan hari)
Menyatakan berapa hari user akan di-lock setelah gagal login.
PASSWORD_VERIFY_FUNCTION
Selasa, 26 Agustus 2008
Jumat, 22 Agustus 2008
Memulai SQL PLUS
Memulai Koneksi ke Database
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 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.
Misalkan kita pakai shell sh atau ksh. Edit file .profile, tambahkan parameter berikut:
ORACLE_HOME=/data1/oracle/product/10.2.0; export ORACLE_HOME
ORACLE_SID=ts; export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH; export PATH
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.
. ./.profile
Koneksi pakai SQLPLus di Mesin server
Sekarang, mari kita mulai koneksi ke database. Misalkan saya akan connect pakai user system.
sqlplus
Nanti akan diminta memasukkan username dan password. Kalau belum diubah, password system adalah seperti yang ditunjukkan ketika membuat database.
Bisa juga username langsung dimasukkan ke argument-nya SQLPlus, nanti kita cuma diminta memasukkan password saja.
sqlplus system
Bisa juga langsung memasukkan username dan password. Misalkan password user system adalah oracle:
sqlplus system/oracle
Koneksi dengan langsung memasukkan username dan password sekaligus ini tidak direkomendasikan, karena password akan tampak ketika di ps -ef. Contoh:
ps -ef|grep sql
oracle 5742 25612 11:09:49 pts/1 0:00 sqlplus system/oracle
Cara lain juga, kita bisa masuk ke SQLPlus prompt tanpa login, kemudian jalankan perintah connect atau conn di SQL prompt. Contoh:
sqlplus /nolog
SQL> conn
Sama seperti ketika menjalankan sqlplus dari OS prompt, username dan password bisa disebutkan langsung atau tidak; kalau tidak disebutkan nanti akan ditanyakan.
SQL> conn system/oracle
SQL> conn system
Koneksi pakai user sys
User sys adalah merupakan super user, dikenal juga sebagai sysdba. Untuk koneksi pakai user sys, harus ditambahkan argument as sysdba. Contoh:
SQL> conn sys/oracle as sysdba
Bisa juga tanpa menyebutkan user sys, yaitu dengan memakai argument /. Contoh:
SQL> conn / as sysdba
Kalau tidak sebutkan argument as sysdba, akan muncul error berikut:
SQL> conn sys/oracle
ERROR:
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
Warning: You are no longer connected to ORACLE.
Bisa juga langsung login ketika menjalankan SQLPLUS. Contoh:
sqlplus "sys/oracle as sysdba"
sqlplus "/ as sysdba"
Koneksi dari client ke server
Untuk bisa melakukan koneksi client-server, pastikan kita sudah mensetting dan menjalakan listener di server database, dan mensetting TNSNames 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.
Pada koneksi client-server , tambahkan argument @namatns. Contoh:
sqlplus system@tsprimary
sqlplus system/oracle@tsprimary
sqlplus "sys@tsprimary as sysdba"
sqlplus "sys/oracle@tsprimary as sysdba"
SQL> conn system@tsprimary
SQL> conn system/oracle@tsprimary
SQL> conn sys@tsprimary as sysdba
SQL> conn sys/oracle@tsprimary as sysdba
Tags: connection, Database, listener, oracle, tnsnames
Berselancar Lebih Cepat dengan Fasterfox
Firefox oleh banyak orang dianggap sebagai browser yang cukup cepat. Namun, ada saja yang menganggap masih kurang cepat, untungnya telah banyak upaya yang dilakukan untuk mempercepat kinerja firefox yang sudah cepat ini. Salah satunya adalah melalui plug-ins Fasterfox.
Karena sifat firefox yang opensource, banyak orang ‘pintar’ yang dapat ikut andil dalam mengembangkan kinerja si Rubah Api ini. Salah satu upaya untuk meningkatkan kinerja firefox adalah dengan melakukan tweaking. Itulah yang dilakukan oleh plug-ins fasterfox. Fasterfox mempercepat proses browsing dengan memanfaatkan Prefect links dan Network Tweaking. Melalui Prefect Links, tidak ada lagi bandwith menganggur karena firefox akan mengambil dan menyimpan halaman web sebagai cache. Proses transfer halaman web ini dilakukan dilatar belakang sehingga tidak mengganggu aktifitas browsing anda.
Tweaking Network dilakukan pada seting untuk rendering halaman, koneksi simultan, pipelining,cache, DNS-cache, dan IPD (initial paint delay). Selain itu di dalam fasterfox juga telah terintegrasi sebuah pop-up blocker untuk pop-up yang dihasilkan oleh objek flash.
Untuk menginstalasikan plug-ins fasterfox anda dapat mendownloadnya di http://fasterfox.mozdev.org/ , Setelah plug-ins terinstalasi, restart firefox untuk mengaktifkannya. Buka menu Tools | Add-ons, lalu klik ganda plug-ins fasterfox untuk membuka option yang tersedia. Fasilitas tersebut adalah pilihan Default, Courteous, Optimized, Turbo Charged, dan Custom.
Pilihan default akan mengembalikan semua setingan ke kondisi semula. Pilihan Courteous hanya melakukan tweaking pada proses rendering sehingga tidak akan membebani webserver. Pilihan Optimized akan melakukan tweaking optimum dalam batasan yang diizinkan oleh RFC. Pilihan Turbo Charged adalah pilihan yang paling ekstrem, ia akan melakukan tweaking seoptimal mungkin dengan mengabaikan batasan yang diizinkan.
Turbo Charged dapat menjadi pilihan utama bagi anda yang berbagi jalur internet, sedang jika anda seorang yang bijaksana, Courteous dan Optimized adalah pilihan yang tepat. Dengan memilih custom anda dapat mengatur aspek-aspek tweaking secara lebih terperinci. Disini anda dapat mengatur langsung besarnya cache yang akan digunakan, banyaknya koneksi simultan ke sebuah web server, jumlah pipelining, banyaknya halaman fastback, dan menghidupkan/mematikan pop-up blocker.
(telkom.net)
2 Metode Mempercepat Browser Firefox
Bagi pengguna Firefox yang ingin menambah kecepatan browser, metode-metode berikut ini bisa dicoba :
Metode 1:
1. Buka browser Mozilla Firefox.
2. Ketik 'about:config' pada address bar, lalu tekan enter.
3. Turunkan halaman sampai Anda menemukan kalimat 'browser.tabs.showSingleWindowsModePrefs', lalu double klik sehingga settingannya menjadi 'true'.
4. Turunkan lagi halaman Firefox sampai Anda menemukan baris berbunyi 'network.http.pipelining', lalu double klik sehingga settingannya juga menjadi 'true'.
5. Terakhir, turunkan lagi halaman Firefox dan carilah baris yang berbunyi 'network.http.pipelining.maxrequests', lalu double klik. Anda akan disuguhi sebuah window pop up. Ubahlah angka di pop up itu menjadi 60. Kemudian tekanlah 'Ok'.
6. Tutup Firefox lalu coba buka kembali. Jika tidak ada masalah, Firefox Anda akan terbuka 10-40 persen lebih cepat daripada sebelumnya dengan langkah-langkah seperti di atas.
Metode 2:
Langkah mujarab lain untuk meningkatkan kecepatan Firefox adalah dengan menggunakan add-on untuk Firefox bernama FasterFox. FasterFox ini membuat pemakaian bandwidth lebih efektif sehingga bisa mempercepat performa Firefox. Anda bisa mendownload FasterFox di alamat: http://fasterfox.mozdev.org.
Trik Mempercepat proses shutdown Windows XP
Proses Turn Off Komputer anda lama ? Simak tips berikut untuk mengatasi masalah tersebut tanpa menggunakan software Utility.
1. Klik tombol “Start | Run“
2. Ketik : Regedit
3. Cari key : HKEY_CURRENT_USERControl PanelDesktop
4. Dobel Klik pada nilai : HungAppTimeOut
5. Rubah nilainya menjadi 4000, nilai sebelumnya kemungkinan 5000 atau 20000.
6. Langkah selanjutnya cari key : KEY_LOCAL_MACHINESystemCurrentControlSetControl
7. Dobel Klik pada : WaitToKillServiceTimeOut
8. dan rubah nilainya menjadi : 4000
Sekarang tutup jendela regedit dan Matikan komputer Anda untuk melihat perubahan yang dihasilkan.
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 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.
Misalkan kita pakai shell sh atau ksh. Edit file .profile, tambahkan parameter berikut:
ORACLE_HOME=/data1/oracle/product/10.2.0; export ORACLE_HOME
ORACLE_SID=ts; export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH; export PATH
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.
. ./.profile
Koneksi pakai SQLPLus di Mesin server
Sekarang, mari kita mulai koneksi ke database. Misalkan saya akan connect pakai user system.
sqlplus
Nanti akan diminta memasukkan username dan password. Kalau belum diubah, password system adalah seperti yang ditunjukkan ketika membuat database.
Bisa juga username langsung dimasukkan ke argument-nya SQLPlus, nanti kita cuma diminta memasukkan password saja.
sqlplus system
Bisa juga langsung memasukkan username dan password. Misalkan password user system adalah oracle:
sqlplus system/oracle
Koneksi dengan langsung memasukkan username dan password sekaligus ini tidak direkomendasikan, karena password akan tampak ketika di ps -ef. Contoh:
ps -ef|grep sql
oracle 5742 25612 11:09:49 pts/1 0:00 sqlplus system/oracle
Cara lain juga, kita bisa masuk ke SQLPlus prompt tanpa login, kemudian jalankan perintah connect atau conn di SQL prompt. Contoh:
sqlplus /nolog
SQL> conn
Sama seperti ketika menjalankan sqlplus dari OS prompt, username dan password bisa disebutkan langsung atau tidak; kalau tidak disebutkan nanti akan ditanyakan.
SQL> conn system/oracle
SQL> conn system
Koneksi pakai user sys
User sys adalah merupakan super user, dikenal juga sebagai sysdba. Untuk koneksi pakai user sys, harus ditambahkan argument as sysdba. Contoh:
SQL> conn sys/oracle as sysdba
Bisa juga tanpa menyebutkan user sys, yaitu dengan memakai argument /. Contoh:
SQL> conn / as sysdba
Kalau tidak sebutkan argument as sysdba, akan muncul error berikut:
SQL> conn sys/oracle
ERROR:
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
Warning: You are no longer connected to ORACLE.
Bisa juga langsung login ketika menjalankan SQLPLUS. Contoh:
sqlplus "sys/oracle as sysdba"
sqlplus "/ as sysdba"
Koneksi dari client ke server
Untuk bisa melakukan koneksi client-server, pastikan kita sudah mensetting dan menjalakan listener di server database, dan mensetting TNSNames 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.
Pada koneksi client-server , tambahkan argument @namatns. Contoh:
sqlplus system@tsprimary
sqlplus system/oracle@tsprimary
sqlplus "sys@tsprimary as sysdba"
sqlplus "sys/oracle@tsprimary as sysdba"
SQL> conn system@tsprimary
SQL> conn system/oracle@tsprimary
SQL> conn sys@tsprimary as sysdba
SQL> conn sys/oracle@tsprimary as sysdba
Tags: connection, Database, listener, oracle, tnsnames
Berselancar Lebih Cepat dengan Fasterfox
Firefox oleh banyak orang dianggap sebagai browser yang cukup cepat. Namun, ada saja yang menganggap masih kurang cepat, untungnya telah banyak upaya yang dilakukan untuk mempercepat kinerja firefox yang sudah cepat ini. Salah satunya adalah melalui plug-ins Fasterfox.
Karena sifat firefox yang opensource, banyak orang ‘pintar’ yang dapat ikut andil dalam mengembangkan kinerja si Rubah Api ini. Salah satu upaya untuk meningkatkan kinerja firefox adalah dengan melakukan tweaking. Itulah yang dilakukan oleh plug-ins fasterfox. Fasterfox mempercepat proses browsing dengan memanfaatkan Prefect links dan Network Tweaking. Melalui Prefect Links, tidak ada lagi bandwith menganggur karena firefox akan mengambil dan menyimpan halaman web sebagai cache. Proses transfer halaman web ini dilakukan dilatar belakang sehingga tidak mengganggu aktifitas browsing anda.
Tweaking Network dilakukan pada seting untuk rendering halaman, koneksi simultan, pipelining,cache, DNS-cache, dan IPD (initial paint delay). Selain itu di dalam fasterfox juga telah terintegrasi sebuah pop-up blocker untuk pop-up yang dihasilkan oleh objek flash.
Untuk menginstalasikan plug-ins fasterfox anda dapat mendownloadnya di http://fasterfox.mozdev.org/ , Setelah plug-ins terinstalasi, restart firefox untuk mengaktifkannya. Buka menu Tools | Add-ons, lalu klik ganda plug-ins fasterfox untuk membuka option yang tersedia. Fasilitas tersebut adalah pilihan Default, Courteous, Optimized, Turbo Charged, dan Custom.
Pilihan default akan mengembalikan semua setingan ke kondisi semula. Pilihan Courteous hanya melakukan tweaking pada proses rendering sehingga tidak akan membebani webserver. Pilihan Optimized akan melakukan tweaking optimum dalam batasan yang diizinkan oleh RFC. Pilihan Turbo Charged adalah pilihan yang paling ekstrem, ia akan melakukan tweaking seoptimal mungkin dengan mengabaikan batasan yang diizinkan.
Turbo Charged dapat menjadi pilihan utama bagi anda yang berbagi jalur internet, sedang jika anda seorang yang bijaksana, Courteous dan Optimized adalah pilihan yang tepat. Dengan memilih custom anda dapat mengatur aspek-aspek tweaking secara lebih terperinci. Disini anda dapat mengatur langsung besarnya cache yang akan digunakan, banyaknya koneksi simultan ke sebuah web server, jumlah pipelining, banyaknya halaman fastback, dan menghidupkan/mematikan pop-up blocker.
(telkom.net)
2 Metode Mempercepat Browser Firefox
Bagi pengguna Firefox yang ingin menambah kecepatan browser, metode-metode berikut ini bisa dicoba :
Metode 1:
1. Buka browser Mozilla Firefox.
2. Ketik 'about:config' pada address bar, lalu tekan enter.
3. Turunkan halaman sampai Anda menemukan kalimat 'browser.tabs.showSingleWindowsModePrefs', lalu double klik sehingga settingannya menjadi 'true'.
4. Turunkan lagi halaman Firefox sampai Anda menemukan baris berbunyi 'network.http.pipelining', lalu double klik sehingga settingannya juga menjadi 'true'.
5. Terakhir, turunkan lagi halaman Firefox dan carilah baris yang berbunyi 'network.http.pipelining.maxrequests', lalu double klik. Anda akan disuguhi sebuah window pop up. Ubahlah angka di pop up itu menjadi 60. Kemudian tekanlah 'Ok'.
6. Tutup Firefox lalu coba buka kembali. Jika tidak ada masalah, Firefox Anda akan terbuka 10-40 persen lebih cepat daripada sebelumnya dengan langkah-langkah seperti di atas.
Metode 2:
Langkah mujarab lain untuk meningkatkan kecepatan Firefox adalah dengan menggunakan add-on untuk Firefox bernama FasterFox. FasterFox ini membuat pemakaian bandwidth lebih efektif sehingga bisa mempercepat performa Firefox. Anda bisa mendownload FasterFox di alamat: http://fasterfox.mozdev.org.
Trik Mempercepat proses shutdown Windows XP
Proses Turn Off Komputer anda lama ? Simak tips berikut untuk mengatasi masalah tersebut tanpa menggunakan software Utility.
1. Klik tombol “Start | Run“
2. Ketik : Regedit
3. Cari key : HKEY_CURRENT_USERControl PanelDesktop
4. Dobel Klik pada nilai : HungAppTimeOut
5. Rubah nilainya menjadi 4000, nilai sebelumnya kemungkinan 5000 atau 20000.
6. Langkah selanjutnya cari key : KEY_LOCAL_MACHINESystemCurrentControlSetControl
7. Dobel Klik pada : WaitToKillServiceTimeOut
8. dan rubah nilainya menjadi : 4000
Sekarang tutup jendela regedit dan Matikan komputer Anda untuk melihat perubahan yang dihasilkan.
Jumat, 15 Agustus 2008
Partitioning Table: Definisi dan Contoh
Partitioning Table: Definisi dan Contoh
Filosofi partisi adalah memecah tabel ke dalam beberapa segment (partisi atau subpartisi), di mana tabel konvensional hanya mempunyai satu segment.
Misalkan kita punya tabel PENJUALAN dengan 8 juta records, kita ingin query data untuk quartal pertama tahun ini. Pada tabel konvensional (non partition), query akan men-scan keseluruhan 8 juta records data tersebut karena berada dalam 1 segment. Nah, kalau tabel itu dipartisi (by range untuk kolom tanggal penjualan) maka query akan men-scan khusus segment di mana data itu berada; tidak semua 8 juta records data itu di-scan, sehingga proses query lebih cepat.
Manfaat lain dari partitioning adalah tiap-tiap segment (partisi atau subpartisi) bisa ditaruh di tablespace yang berbeda, sehingga kita mendapat manfaat dari spreading (menyebar) tablespace, yaitu penyebaran I/O dan mengurangi resiko loss data karena tablespace corrupt.
Ada 3 metode utama partisi, dan ada 2 macam composite (gabungan):
Range partitioning
List partitioning
Hash partitioning
Composite range-list partitioning
Composite range-hash partitioning
Misalkan saya punya tabel penjualan yang punya kolom no_invoice, tgl_jual, dan area.
CREATE TABLE penjualan
( no_invoice NUMBER,
tgl_jual DATE,
area varchar2(10));Dalam artikel ini saya juga akan memberi contoh macam-macam partisi yang bisa dilakukan pada tabel penjualan tersebut.
Range Partition
Pada range partition, data dikelompokkan berdasarkan range (rentang) nilai yang kita tentukan. Range partition ini cocok digunakan pada kolom yang nilainya terdistribusi secara merata. Contoh yang paling sering adalah kolom tanggal.
Berikut ini contoh membuat table PENJUALAN dengan partisi range pada kolom tgl_jual (untuk menegaskan bahwa ini adalah contoh range partition, tabel saya beri nama PENJUALAN_RANGE):
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
);Dalam contoh di atas, spesifikasi tablespace ada pada tiap segment (partisi). Yang seperti ini (spesifikasi tablespace pada tiap segment) biasanya dilakukan kalau tiap segment (partisi) ditempatkan pada tablespace yang berbeda. Karena keterbatasan tablespace, dalam contoh ini saya taruh dalam satu tablespace yang sama, yaitu tablespace USERS.
List Partition
Pada list partition, data dikelompokkan berdasarkan nilainya. Cocok untuk kolom yang variasi nilainya tidak banyak. Saya masih menggunakan contoh table penjualan. Yang cocok dengan list partition adalah kolom area.
Berikut ini contoh membuat table PENJUALAN dengan partisi list pada kolom area (untuk membedakan dengan contoh range partition, tabel saya beri nama PENJUALAN_LIST):
CREATE TABLE penjualan_list
( no_invoice NUMBER,
tgl_jual DATE NOT NULL,
area varchar2(10))
PARTITION BY LIST (area)
(
PARTITION daerah_barat VALUES ('JAKARTA','MEDAN','BANDUNG') ,
PARTITION daerah_timur VALUES ('SEMARANG','SURABAYA','MAKASAR')
) TABLESPACE users;Definisi tablespace bisa didefinisikan di level partisi ataupun tabel. Dalam contoh di atas, karena semua partisi ditaruh di tablespace yang sama, maka definisi tablespace cukup ditaruh di definisi tabel (tidak perlu di tiap partisi).
Hash Partition
Jika kita ingin melakukan partisisi namun tidak cocok dengan RANGE ataupun LIST, maka kita bisa menggunakan HASH partition. Penentuan “nilai mana di taruh di partisi mana” itu diatur secara internal oleh Oracle (berdasarkan hash value).
Kenapa kita memaksakan memakai partisi sementara tidak cocok dengan RANGE ataupun LIST? Lha, ya itu tadi, kita ingin mendapat manfaat dari filosofi PARTITIONING di mana data disebar ke segment-segment yang berbeda.
Untuk tabel penjualan, kolom yang cocok dengan HASH partitioning adalah kolom no_invoice. Berikut ini contohnya (tabel saya beri nama PENJUALAN_HASH):
CREATE TABLE penjualan_hash
( no_invoice NUMBER,
tgl_jual DATE NOT NULL,
area varchar2(10))
PARTITION BY HASH (no_invoice)
PARTITIONS 4 tablespace users;Secara otomatis Oracle akan membuat 4 partisi (sesuai dengan nilai dari parameter PARTITIONS). Dalam contoh di atas, definisi tablespace ditaruh di definisi tabel, yang berarti semua partisi (segment) di taruh di tablespace yang sama (tablespace USERS).
Kita bisa menaruh definisi tablespace di tiap partisi bila kita ingin tiap partisi (segment) disimpan di tablespace yang berbeda. Karena keterbatasan tablespace, dalam contoh ini semua partisi ditaruh di tablespace Users:
CREATE TABLE penjualan_hash
( no_invoice NUMBER,
tgl_jual DATE NOT NULL,
area varchar2(10))
PARTITION BY HASH (no_invoice)
PARTITIONS 4 STORE IN (users, users, users, users);Composite range-list partition
Dengan karakteristik yang seperti itu, tabel PENJUALAN bisa kita partisi pada kolom TGL_JUAL dan AREA. Berikut ini contohnya (untuk membedakan dengan contoh-contoh sebelumnya, tabel saya beri nama PENJUALAN_RANGE_LIST):
CREATE TABLE PENJUALAN_RANGE_LIST
( no_invoice NUMBER,
tgl_jual DATE NOT NULL,
area varchar2(10))
PARTITION BY RANGE (tgl_jual)
SUBPARTITION BY LIST (area)
(
PARTITION jual_kw1 VALUES LESS THAN (TO_DATE('01-APR-2008','DD-MON-YYYY')) TABLESPACE users
(SUBPARTITION kw1_barat VALUES ('JAKARTA','MEDAN','BANDUNG'),
SUBPARTITION kw1_timur VALUES ('SEMARANG','SURABAYA','MAKASAR')
),
PARTITION jual_kw2 VALUES LESS THAN (TO_DATE('01-JUL-2008','DD-MON-YYYY')) TABLESPACE users
(SUBPARTITION kw2_barat VALUES ('JAKARTA','MEDAN','BANDUNG'),
SUBPARTITION kw2_timur VALUES ('SEMARANG','SURABAYA','MAKASAR')
),
PARTITION jual_kw3 VALUES LESS THAN (TO_DATE('01-OCT-2008','DD-MON-YYYY')) TABLESPACE users
(SUBPARTITION kw3_barat VALUES ('JAKARTA','MEDAN','BANDUNG'),
SUBPARTITION kw3_timur VALUES ('SEMARANG','SURABAYA','MAKASAR')
),
PARTITION jual_kw4 VALUES LESS THAN (TO_DATE('01-JAN-2009','DD-MON-YYYY'))
(SUBPARTITION kw4_barat VALUES ('JAKARTA','MEDAN','BANDUNG') TABLESPACE users ,
SUBPARTITION kw4_timur VALUES ('SEMARANG','SURABAYA','MAKASAR') TABLESPACE users
)
);Dalam contoh di atas, definisi tablespace ada yang di level PARTISI dan ada yang level di SUBPARTISI.
Composite range-hash partition
Kitapun bisa mempartisi tabel PENJUALAN pada kolom TGL_JUAL dan NO_INVOICE. Berikut ini contohnya (untuk membedakan dengan contoh-contoh sebelumnya, tabel saya beri nama PENJUALAN_RANGE_HASH):
CREATE TABLE penjualan_range_hash
( no_invoice NUMBER,
tgl_jual DATE NOT NULL,
area varchar2(10))
PARTITION BY RANGE (tgl_jual)
SUBPARTITION BY HASH (no_invoice)
SUBPARTITIONS 4 STORE IN (users, users, users, users)
(
PARTITION jual_kw1 VALUES LESS THAN (TO_DATE('01-APR-2008','DD-MON-YYYY')),
PARTITION jual_kw2 VALUES LESS THAN (TO_DATE('01-JUL-2008','DD-MON-YYYY')),
PARTITION jual_kw3 VALUES LESS THAN (TO_DATE('01-OCT-2008','DD-MON-YYYY')),
PARTITION jual_kw4 VALUES LESS THAN (TO_DATE('01-JAN-2009','DD-MON-YYYY'))
);Urutan tablespace
Berikut ini hirarki untuk alokasi tablespace:
Kalau di definisi SUBPARTITION tidak disebutkan tablespacenya, maka SUBPARTITION akan ditaruh di tablespace yang didefinisikan di PARTITION.
Kalau di definisi PARTITION tidak disebutkan tablespacenya, maka PARTITION akan ditaruh di tablespace yang didefinisikan di TABLE
Kalau tablespacenya tidak disebutkan (baik di level SUPPARTITION, PARTITION, maupun TABLE) maka, semua segment (baik SUPPARTITION maupun PARTITION) ditaruh di default tablespace dari user (schema) yang bersangkutan.
VIEW (data dictionary)
Beberapa contoh VIEW yang sering dipakai untuk melihat informasi PARTISI dan SUBPARTISI adalah DBA_TABLES, DBA_TAB_PARTITIONS, DBA_TAB_SUBPARTITIONS, DBA_INDEXES, DBA_IND_PARTITIONS, DBA_IND_SUBPARTITIONS.
Untuk melihat VIEW-VIEW yang lain, bisa query ke DICT:
SQL> select table_name from dict
where table_name like '%PARTITION%' order by table_name;Referensi
Oracle® Database Administrator’s Guide 10g Release 2 (10.2)
Managing Partitioned Tables and Indexes
Filosofi partisi adalah memecah tabel ke dalam beberapa segment (partisi atau subpartisi), di mana tabel konvensional hanya mempunyai satu segment.
Misalkan kita punya tabel PENJUALAN dengan 8 juta records, kita ingin query data untuk quartal pertama tahun ini. Pada tabel konvensional (non partition), query akan men-scan keseluruhan 8 juta records data tersebut karena berada dalam 1 segment. Nah, kalau tabel itu dipartisi (by range untuk kolom tanggal penjualan) maka query akan men-scan khusus segment di mana data itu berada; tidak semua 8 juta records data itu di-scan, sehingga proses query lebih cepat.
Manfaat lain dari partitioning adalah tiap-tiap segment (partisi atau subpartisi) bisa ditaruh di tablespace yang berbeda, sehingga kita mendapat manfaat dari spreading (menyebar) tablespace, yaitu penyebaran I/O dan mengurangi resiko loss data karena tablespace corrupt.
Ada 3 metode utama partisi, dan ada 2 macam composite (gabungan):
Range partitioning
List partitioning
Hash partitioning
Composite range-list partitioning
Composite range-hash partitioning
Misalkan saya punya tabel penjualan yang punya kolom no_invoice, tgl_jual, dan area.
CREATE TABLE penjualan
( no_invoice NUMBER,
tgl_jual DATE,
area varchar2(10));Dalam artikel ini saya juga akan memberi contoh macam-macam partisi yang bisa dilakukan pada tabel penjualan tersebut.
Range Partition
Pada range partition, data dikelompokkan berdasarkan range (rentang) nilai yang kita tentukan. Range partition ini cocok digunakan pada kolom yang nilainya terdistribusi secara merata. Contoh yang paling sering adalah kolom tanggal.
Berikut ini contoh membuat table PENJUALAN dengan partisi range pada kolom tgl_jual (untuk menegaskan bahwa ini adalah contoh range partition, tabel saya beri nama PENJUALAN_RANGE):
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
);Dalam contoh di atas, spesifikasi tablespace ada pada tiap segment (partisi). Yang seperti ini (spesifikasi tablespace pada tiap segment) biasanya dilakukan kalau tiap segment (partisi) ditempatkan pada tablespace yang berbeda. Karena keterbatasan tablespace, dalam contoh ini saya taruh dalam satu tablespace yang sama, yaitu tablespace USERS.
List Partition
Pada list partition, data dikelompokkan berdasarkan nilainya. Cocok untuk kolom yang variasi nilainya tidak banyak. Saya masih menggunakan contoh table penjualan. Yang cocok dengan list partition adalah kolom area.
Berikut ini contoh membuat table PENJUALAN dengan partisi list pada kolom area (untuk membedakan dengan contoh range partition, tabel saya beri nama PENJUALAN_LIST):
CREATE TABLE penjualan_list
( no_invoice NUMBER,
tgl_jual DATE NOT NULL,
area varchar2(10))
PARTITION BY LIST (area)
(
PARTITION daerah_barat VALUES ('JAKARTA','MEDAN','BANDUNG') ,
PARTITION daerah_timur VALUES ('SEMARANG','SURABAYA','MAKASAR')
) TABLESPACE users;Definisi tablespace bisa didefinisikan di level partisi ataupun tabel. Dalam contoh di atas, karena semua partisi ditaruh di tablespace yang sama, maka definisi tablespace cukup ditaruh di definisi tabel (tidak perlu di tiap partisi).
Hash Partition
Jika kita ingin melakukan partisisi namun tidak cocok dengan RANGE ataupun LIST, maka kita bisa menggunakan HASH partition. Penentuan “nilai mana di taruh di partisi mana” itu diatur secara internal oleh Oracle (berdasarkan hash value).
Kenapa kita memaksakan memakai partisi sementara tidak cocok dengan RANGE ataupun LIST? Lha, ya itu tadi, kita ingin mendapat manfaat dari filosofi PARTITIONING di mana data disebar ke segment-segment yang berbeda.
Untuk tabel penjualan, kolom yang cocok dengan HASH partitioning adalah kolom no_invoice. Berikut ini contohnya (tabel saya beri nama PENJUALAN_HASH):
CREATE TABLE penjualan_hash
( no_invoice NUMBER,
tgl_jual DATE NOT NULL,
area varchar2(10))
PARTITION BY HASH (no_invoice)
PARTITIONS 4 tablespace users;Secara otomatis Oracle akan membuat 4 partisi (sesuai dengan nilai dari parameter PARTITIONS). Dalam contoh di atas, definisi tablespace ditaruh di definisi tabel, yang berarti semua partisi (segment) di taruh di tablespace yang sama (tablespace USERS).
Kita bisa menaruh definisi tablespace di tiap partisi bila kita ingin tiap partisi (segment) disimpan di tablespace yang berbeda. Karena keterbatasan tablespace, dalam contoh ini semua partisi ditaruh di tablespace Users:
CREATE TABLE penjualan_hash
( no_invoice NUMBER,
tgl_jual DATE NOT NULL,
area varchar2(10))
PARTITION BY HASH (no_invoice)
PARTITIONS 4 STORE IN (users, users, users, users);Composite range-list partition
Dengan karakteristik yang seperti itu, tabel PENJUALAN bisa kita partisi pada kolom TGL_JUAL dan AREA. Berikut ini contohnya (untuk membedakan dengan contoh-contoh sebelumnya, tabel saya beri nama PENJUALAN_RANGE_LIST):
CREATE TABLE PENJUALAN_RANGE_LIST
( no_invoice NUMBER,
tgl_jual DATE NOT NULL,
area varchar2(10))
PARTITION BY RANGE (tgl_jual)
SUBPARTITION BY LIST (area)
(
PARTITION jual_kw1 VALUES LESS THAN (TO_DATE('01-APR-2008','DD-MON-YYYY')) TABLESPACE users
(SUBPARTITION kw1_barat VALUES ('JAKARTA','MEDAN','BANDUNG'),
SUBPARTITION kw1_timur VALUES ('SEMARANG','SURABAYA','MAKASAR')
),
PARTITION jual_kw2 VALUES LESS THAN (TO_DATE('01-JUL-2008','DD-MON-YYYY')) TABLESPACE users
(SUBPARTITION kw2_barat VALUES ('JAKARTA','MEDAN','BANDUNG'),
SUBPARTITION kw2_timur VALUES ('SEMARANG','SURABAYA','MAKASAR')
),
PARTITION jual_kw3 VALUES LESS THAN (TO_DATE('01-OCT-2008','DD-MON-YYYY')) TABLESPACE users
(SUBPARTITION kw3_barat VALUES ('JAKARTA','MEDAN','BANDUNG'),
SUBPARTITION kw3_timur VALUES ('SEMARANG','SURABAYA','MAKASAR')
),
PARTITION jual_kw4 VALUES LESS THAN (TO_DATE('01-JAN-2009','DD-MON-YYYY'))
(SUBPARTITION kw4_barat VALUES ('JAKARTA','MEDAN','BANDUNG') TABLESPACE users ,
SUBPARTITION kw4_timur VALUES ('SEMARANG','SURABAYA','MAKASAR') TABLESPACE users
)
);Dalam contoh di atas, definisi tablespace ada yang di level PARTISI dan ada yang level di SUBPARTISI.
Composite range-hash partition
Kitapun bisa mempartisi tabel PENJUALAN pada kolom TGL_JUAL dan NO_INVOICE. Berikut ini contohnya (untuk membedakan dengan contoh-contoh sebelumnya, tabel saya beri nama PENJUALAN_RANGE_HASH):
CREATE TABLE penjualan_range_hash
( no_invoice NUMBER,
tgl_jual DATE NOT NULL,
area varchar2(10))
PARTITION BY RANGE (tgl_jual)
SUBPARTITION BY HASH (no_invoice)
SUBPARTITIONS 4 STORE IN (users, users, users, users)
(
PARTITION jual_kw1 VALUES LESS THAN (TO_DATE('01-APR-2008','DD-MON-YYYY')),
PARTITION jual_kw2 VALUES LESS THAN (TO_DATE('01-JUL-2008','DD-MON-YYYY')),
PARTITION jual_kw3 VALUES LESS THAN (TO_DATE('01-OCT-2008','DD-MON-YYYY')),
PARTITION jual_kw4 VALUES LESS THAN (TO_DATE('01-JAN-2009','DD-MON-YYYY'))
);Urutan tablespace
Berikut ini hirarki untuk alokasi tablespace:
Kalau di definisi SUBPARTITION tidak disebutkan tablespacenya, maka SUBPARTITION akan ditaruh di tablespace yang didefinisikan di PARTITION.
Kalau di definisi PARTITION tidak disebutkan tablespacenya, maka PARTITION akan ditaruh di tablespace yang didefinisikan di TABLE
Kalau tablespacenya tidak disebutkan (baik di level SUPPARTITION, PARTITION, maupun TABLE) maka, semua segment (baik SUPPARTITION maupun PARTITION) ditaruh di default tablespace dari user (schema) yang bersangkutan.
VIEW (data dictionary)
Beberapa contoh VIEW yang sering dipakai untuk melihat informasi PARTISI dan SUBPARTISI adalah DBA_TABLES, DBA_TAB_PARTITIONS, DBA_TAB_SUBPARTITIONS, DBA_INDEXES, DBA_IND_PARTITIONS, DBA_IND_SUBPARTITIONS.
Untuk melihat VIEW-VIEW yang lain, bisa query ke DICT:
SQL> select table_name from dict
where table_name like '%PARTITION%' order by table_name;Referensi
Oracle® Database Administrator’s Guide 10g Release 2 (10.2)
Managing Partitioned Tables and Indexes
External table
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 table berdasarkan file tersebut.
Persiapan
Buat directory di database yang mengarah ke directory file tersebut.
SQL> conn / as sysdba
SQL> CREATE OR REPLACE DIRECTORY external_dir
AS '/data1/oracle/Users/rohmad/external';
Beri privilege ke user agar bisa membaca dan menulis ke directory tersebut.
SQL> GRANT READ ON DIRECTORY external_dir TO test;
SQL> GRANT WRITE ON DIRECTORY external_dir TO test;
Membuat External Table
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;
Query External Table
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
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.
$ 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)
Errornya sama persis dengan yang pernah saya bahas di Menggunakan SQL*Loader. Sebagaimana SQL*Loader, record yang tidak diproses ditaruh di BADFILE (penjualan.bad).
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:
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
Load data dengan external table
Nah, sekarang kita bisa me-load (import) data dari file penjualan.dat kedatabase dengan memanfaatkan external table.
Misalkan data akan diload ke tabel history_penjualan:
CREATE TABLE history_penjualan
( no_invoice NUMBER,
tgl_jual DATE,
area varchar2(15));
Ya, tinggal insert saja:
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
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 table berdasarkan file tersebut.
Persiapan
Buat directory di database yang mengarah ke directory file tersebut.
SQL> conn / as sysdba
SQL> CREATE OR REPLACE DIRECTORY external_dir
AS '/data1/oracle/Users/rohmad/external';
Beri privilege ke user agar bisa membaca dan menulis ke directory tersebut.
SQL> GRANT READ ON DIRECTORY external_dir TO test;
SQL> GRANT WRITE ON DIRECTORY external_dir TO test;
Membuat External Table
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;
Query External Table
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
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.
$ 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)
Errornya sama persis dengan yang pernah saya bahas di Menggunakan SQL*Loader. Sebagaimana SQL*Loader, record yang tidak diproses ditaruh di BADFILE (penjualan.bad).
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:
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
Load data dengan external table
Nah, sekarang kita bisa me-load (import) data dari file penjualan.dat kedatabase dengan memanfaatkan external table.
Misalkan data akan diload ke tabel history_penjualan:
CREATE TABLE history_penjualan
( no_invoice NUMBER,
tgl_jual DATE,
area varchar2(15));
Ya, tinggal insert saja:
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
Menggunakan SQL*Loader
Menggunakan SQL*Loader
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 file; di pusat, data tersebut kemudian di-load ke database pakai SQL Loader.
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.
Misalkan saya punya file penjualan.dat yang berisi:
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
File penjualan.dat tersebut akan saya load ke tabel penjualan:
CREATE TABLE penjualan
( no_invoice NUMBER,
tgl_jual DATE,
area varchar2(10));
Langkap pertama, buat control file yang berisi parameter-parameter untuk SQL Loader. Misalkan saya beri nama penjualan.ctl.
load data
APPEND
into table PENJUALAN
fields terminated by ";"
TRAILING NULLCOLS
(no_invoice,tgl_jual,area)
Langkah selanjutnya, load data di penjualan.dat ke tabel PENJUALAN. Gunakan perintah berikut:
sqlldr USERID=test/test CONTROL=penjualan.ctl, DATA=penjualan.dat, LOG=penjualan.log, BAD=penjualan.bad
Parameter untuk sqlldr adalah:
USERID: user dan password ke database Oracle
CONTROL: control file yang akan digunakan
DATA: file (data) yang akan di-load
LOG: file untuk menyimpan log dari proses loader
BAD: file untuk menyimpan data yang tidak diprose
Setelah menjalankan sqlldr di atas, lihat lognya di file penjualan.log. Oo… ternyata ada error:
Record 5: Rejected - Error on table PENJUALAN, column AREA.
ORA-12899: value too large for column "TEST"."PENJUALAN"."AREA" (actual: 15, maximum: 10)
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.
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
Referensi
Oracle® Database Utilities 10g Release 2 (10.2) - SQL*Loader
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 file; di pusat, data tersebut kemudian di-load ke database pakai SQL Loader.
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.
Misalkan saya punya file penjualan.dat yang berisi:
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
File penjualan.dat tersebut akan saya load ke tabel penjualan:
CREATE TABLE penjualan
( no_invoice NUMBER,
tgl_jual DATE,
area varchar2(10));
Langkap pertama, buat control file yang berisi parameter-parameter untuk SQL Loader. Misalkan saya beri nama penjualan.ctl.
load data
APPEND
into table PENJUALAN
fields terminated by ";"
TRAILING NULLCOLS
(no_invoice,tgl_jual,area)
Langkah selanjutnya, load data di penjualan.dat ke tabel PENJUALAN. Gunakan perintah berikut:
sqlldr USERID=test/test CONTROL=penjualan.ctl, DATA=penjualan.dat, LOG=penjualan.log, BAD=penjualan.bad
Parameter untuk sqlldr adalah:
USERID: user dan password ke database Oracle
CONTROL: control file yang akan digunakan
DATA: file (data) yang akan di-load
LOG: file untuk menyimpan log dari proses loader
BAD: file untuk menyimpan data yang tidak diprose
Setelah menjalankan sqlldr di atas, lihat lognya di file penjualan.log. Oo… ternyata ada error:
Record 5: Rejected - Error on table PENJUALAN, column AREA.
ORA-12899: value too large for column "TEST"."PENJUALAN"."AREA" (actual: 15, maximum: 10)
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.
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
Referensi
Oracle® Database Utilities 10g Release 2 (10.2) - SQL*Loader
Minggu, 10 Agustus 2008
Profesi Pendidikan ( Masalah-masalah)
Contoh penyelesaian masalah kebijakan
by Tina F.Hrp
Contoh kasus:
Komite sekolah yang didukung oleh Kpela Sekolah menetapkan bahwa SMA Negeri X di kota A memungut uang pembangunan kepada siswa baru, tiap siswa Rp. 3.000.000,- dengan dicicil 2X (dua kali bayar). Sedangkan SPP/DSP setiap siswa lama dan baru ditetapkan rata-rata Rp. 25.000,-/bulan
Setelah ortu siswa menerima pengumuman untuk segera membayar uang tersebut, awal bulan Agustus para orangtua siswa merasa resah. Sebagian mereka menghimpun kekuatan untuk berunjuk rasa dan ada juga yang menyampaikan protes melalui Koran dan surat kepada Pemkot dengan tembusan kepada Dinas pendidikan Kota.
Sebelum ada perhatian, para orangtua siswa sepakat tidak akan memenuhi penetapan itu.
Solusi :
1. Undang para orangtua siswa untuk membicarakan persoalan bersama-sama, sehingga pihak komite sekolah dan kepala sekolah dan pihak orangtua dapat menyampaikan pendapatnya masing-masing serta apa yang dipersoalkan sesungguhnya
2. Pihak komite dan kepala sekolah menyampaikan kebijakannya di hadapan orangtua siswa disertai dengan alasan yang logis mengapa diambil kebijakan seperti itu agar orangtua menjadi paham maksud dan tujuannya. Jika kemudian pihak orangtua menerima berarti permasalahannya sudah dapat diselesaikan.
3. Jika orangtua tidak menyepakatinya, berikan kesempatan kepada para orangtua siswa untuk menyampaikan pendapatnya, kritikan, saran serta kalau mereka berkeberatan dipersilahkan untuk menyampaikan apa yang menjadi keberatan orangtua dengan kebijakan itu.
4. Adakan dialog antara kedua pihak dengan penuh kekeluargaan dan bicarakan/ diskusikan persoalan dengan musyawarah. Kalau kebijakan itu logis disertai dengan dasar pertimbangan yang kuat tentunya pihak orangtua akan menerima. Demikian juga sebaliknya jika alasan yang dikemukakan orangtua memiliki dasar pertimbangan yang lebih kuat, cobalah cari solusinya bersama.
5. Buatlah alternatif pemecahan masalah (solusi) yang memungkinkan kedua belah pihak tidak merasa dirugikan (win-win solution), kemudian pilihlah solusi yang paling tepat yang dapat diterima kedua belah pihak.
6. Jika permasalahan tidak tuntas, cobalah diadakan pendekatan yang lebih intens dengan pihak orangtua dan jika mengalami jalan buntu, tentunya pihak dinas pendidikan kota (eksekutif) bersama-sama DPRD bidang pendidikan, diminta atau pun tidak diminta perlu turun tangan menyelesaikan persoalan ini.
Tambahan: ada satu hal yang cukup kontradiktif dalam kasus ini yaitu pihak komite sekolah. Dalam kasus ini komite bersebrangan dengan keinginan orangtua, padahal mereka dipilih dan mewakili orangtua. Semestinya dalam membuat kebijakan pihak komite sekolah terlebih dahulu mempertimbangkan apa yang menjadi aspirasi para orangtua yang diwakilinya. Tentunya juga dengan mempertimbangkan pihak sekolah sehingga tidak sampai merugikan institusi yang akan penyelenggara pendidikan bagi anaknya.
by Tina F.Hrp
Contoh kasus:
Komite sekolah yang didukung oleh Kpela Sekolah menetapkan bahwa SMA Negeri X di kota A memungut uang pembangunan kepada siswa baru, tiap siswa Rp. 3.000.000,- dengan dicicil 2X (dua kali bayar). Sedangkan SPP/DSP setiap siswa lama dan baru ditetapkan rata-rata Rp. 25.000,-/bulan
Setelah ortu siswa menerima pengumuman untuk segera membayar uang tersebut, awal bulan Agustus para orangtua siswa merasa resah. Sebagian mereka menghimpun kekuatan untuk berunjuk rasa dan ada juga yang menyampaikan protes melalui Koran dan surat kepada Pemkot dengan tembusan kepada Dinas pendidikan Kota.
Sebelum ada perhatian, para orangtua siswa sepakat tidak akan memenuhi penetapan itu.
Solusi :
1. Undang para orangtua siswa untuk membicarakan persoalan bersama-sama, sehingga pihak komite sekolah dan kepala sekolah dan pihak orangtua dapat menyampaikan pendapatnya masing-masing serta apa yang dipersoalkan sesungguhnya
2. Pihak komite dan kepala sekolah menyampaikan kebijakannya di hadapan orangtua siswa disertai dengan alasan yang logis mengapa diambil kebijakan seperti itu agar orangtua menjadi paham maksud dan tujuannya. Jika kemudian pihak orangtua menerima berarti permasalahannya sudah dapat diselesaikan.
3. Jika orangtua tidak menyepakatinya, berikan kesempatan kepada para orangtua siswa untuk menyampaikan pendapatnya, kritikan, saran serta kalau mereka berkeberatan dipersilahkan untuk menyampaikan apa yang menjadi keberatan orangtua dengan kebijakan itu.
4. Adakan dialog antara kedua pihak dengan penuh kekeluargaan dan bicarakan/ diskusikan persoalan dengan musyawarah. Kalau kebijakan itu logis disertai dengan dasar pertimbangan yang kuat tentunya pihak orangtua akan menerima. Demikian juga sebaliknya jika alasan yang dikemukakan orangtua memiliki dasar pertimbangan yang lebih kuat, cobalah cari solusinya bersama.
5. Buatlah alternatif pemecahan masalah (solusi) yang memungkinkan kedua belah pihak tidak merasa dirugikan (win-win solution), kemudian pilihlah solusi yang paling tepat yang dapat diterima kedua belah pihak.
6. Jika permasalahan tidak tuntas, cobalah diadakan pendekatan yang lebih intens dengan pihak orangtua dan jika mengalami jalan buntu, tentunya pihak dinas pendidikan kota (eksekutif) bersama-sama DPRD bidang pendidikan, diminta atau pun tidak diminta perlu turun tangan menyelesaikan persoalan ini.
Tambahan: ada satu hal yang cukup kontradiktif dalam kasus ini yaitu pihak komite sekolah. Dalam kasus ini komite bersebrangan dengan keinginan orangtua, padahal mereka dipilih dan mewakili orangtua. Semestinya dalam membuat kebijakan pihak komite sekolah terlebih dahulu mempertimbangkan apa yang menjadi aspirasi para orangtua yang diwakilinya. Tentunya juga dengan mempertimbangkan pihak sekolah sehingga tidak sampai merugikan institusi yang akan penyelenggara pendidikan bagi anaknya.
Sabtu, 09 Agustus 2008
Membuat Aplikasi Report dengan Wizard
Aplikasi Report pada OracleXE.
Membuat Aplikasi Report dengan Wizard
Misalkan kita ingin membuat report sederhana terhadap semua pegawai dengan menampilkan informasi nama pegawai, nomor telepon, jabatan dan gaji. Langkah yang harus dilakukan adalah :
1. Login sebagai user HR
2. Pilih menu Application Builder*Create Application. Kemudian ikuti langkah-langkah wizard.
3. pada wizard method, pilih opsi create application.
4. pada wizard name, masukkan nama aplikasi employee report. Biarkan opsi lain dengan nilai defaultnya (tidak perlu diubah ubah).
5. pada wizard pages, pilih tipe aplikasi sebagai report. Kemudian pada kolom page source, pilih opsi SQL query. Lalu pada kolom page name, masukkan nama report Employee List. Setelah itu, pada kolom query, ketikkan SQL berikut:
select
e.first_name, e.last_name,
e.phone_number, j.job_title, e.salary
from employees e, jobs j
where j.job_id = e.job_id
kemudian tekan menu Add Page
6. lalu pada wizard tabs, pilih opsi one level of tabs
7. pada wizard shared component, pilih opsi no.
8. pada wizard attributes, pilih opsi no authentication, pada kolom authentication scheme. Biarkan opsi lain dengan nilai defaultnya (tidak perlu diubah)
9. pada wizard user interface, pilih theme 1.
10. pada wizard confirm, tekan create untuk menyelesaikan wizard.
Modifikasi Template pada Report
Tampilan report di atas di tentukan oleh sebuah template yang telah didefinisikan sebelumnya. Untuk memodifikasi tampilan tersebut, kita dapat memilih atau mengubah template yang ada, atau bahkan membuat template baru.
Sebagai contoh kita akan memodifikasi template yang sudah ada untuk memberikan warna dasar kuning terhadap data pegawai yang memiliki gaji di ata 8000. untuk itu kita akan membuat template yang sudah ada. Kemudian barulah modifikasi dilakukan terhadap template baru tersebut.
Tahapan untuk melihat jenis template pada suatu report adalah:
1. Dari menu Application Builder, pilih aplikasi employee report yang dibuat pada tahap sebelumnya.
2. pilih halaman pertama berjudul 1 – Employee List.
3. pada bagian Region di Page Rendering, klik sekali pada report Employee List.
4. pilih tab Report Attribute (disamping tab Region Definition).
5. pada bagian Layout and Pagination, perhatikan bahwa kolom report template memiliki nilai template: 1. Standard. Ini adalah template standar yang akan diubah setelah kita membuat template baru.
Kini marilah kita mencoba membuat salinan (copy) template baru berdasarkan template yang sudah ada. Tahapannya adalah :
1. Dari menu Application Builder, pilih aplikasi Employee Report.
2. pilih menu shared components*userinterface*templates.
3. klik sekali pada tombol create untuk membuat template baru, lalu ikuti wizard berikut.
4. pada wizard template type, pilih tipe template report.
5. pada wizard creation method pilih opsi as a copy of an existing template.
6. pada wizard copy from, biarkan nilainya secara default (tidak perlu diubah)
7. pada wizard identify theme, biarkan nilainya default (tidak perlu diubah)
8. pada wizard new templates, pilih template yang disalin/dicopy (dalam contoh ini pilih yang bernama standard). Lalu pada kolom to name ketikkan nama template baru standard custom. Pada kolom copy? Pilih opsi yes. Lalu tekan tombol copy report templates.
9. apabila berhasil, anda akan melihat standard custom berada pada list template yang ada.
Setelah proses penyalinan (copy) berhasil dilakukan, kini mari kita mencoba melakukan modifikasi template standard.
Langkah langkahnya adalah:
1. setelah tahap di atas selesai, pilih template baru standard custom untuk disunting.
2. masukkan kebagian colum templates. Lalu masukkan nilai pada column template 1, column template 1 condition, column template 1 expresion dan column template 2.
3. tekan tombol apply changes utnuk mengaktifkan perubahan.
4. setelah melakukan modifikasi, template tersebut bisa di pakai di dalam report employee list. Dengan mengikuti tahapan sebelumnya (tahapan untuk melihat jenis template pada suatu report), ubah jenis template dari template 1. standar menjadi template 1 custom, lalu tekan tombol apply changes.
Menambah Grafik pada report
Untuk meperkaya tampilan report kita bisa menambahkan berbagai jenis grafik dengan data yang berasal dari SQL query. Langkah-langkah untuk membuatnya adalah :
1. Dari menu Application builder, pilih aplikasi employee report.
2. pilih halaman pertama berjudul 1 – Employee list.
3. pada bagina regions tekan tombol untuk menambah region baru. Lalu ikuti wizard berikutnya.
4. pada wizard regions tekan tombol untuk menambah region baru, pilih tipe chart.
5. kemudian pilih tipe grafik bar (html).
6. pada wizard display attributes, ketikkan job summary pada kolom title.
7. pada wizard source, ketikkan SQL berikut:
select null link, j.job_title, count(*) emp_count
from employees e, jobs j
where j.job_id = e.job_id
group by null, j.job_title
lalu tekan ‘create region’ untuk menyelesaikan wizard
Membuat Aplikasi Web pada OracleXE
Applicaion builder di oracleXE dapat ditemukan diversi lain database oracle dengan nama oracle application express. Dulunya lebih dikenal dengan istilah HTML DB.
Dengan menggunakan utility Application Builder dari OracleXE, kita dapat membangun aplikasi web yang terintegrasi dengan database dengan beberapa kemudahan seperti:
1. Login sebagai user HR.
2. Pilih menu application builder*create Application, kemudian ikuti langkah langkah wizard berikut.
3. wizard method menyediakan 3 pilihan cara pembuatan aplikasi, aplikasi baru dari table, dari spreadsheet, atau menginstall contoh aplikasi. Pilih opsi pertama.
4. wizard name meminta nama aplikasi yang unik misalkan diisi myemployees, kemudian tekan menu add page.
5. wizard pages menyediakan 5 tipe halaman web, pilih tipe ke-5: report and form. Pada kolom table name, masukkan nama table employees, kemudian tekan menu add page.
6. wizard tabs menyediakan 3 pilihan tab, pilih opsi One Level of Tabs
7. wizard shared component memungkinkan anda menambahkan komponen dari aplikasi lain ke aplikasi yang akan dibuat. Pilih opsi No.
8. wizard attributes menyediakan pilihan untuk mengubah cara otentikasi dan alternatif bahasa, pada kolom authentication scheme, pilih no authentication. Biarkan opsi lain dengan nilai default.
9. wizard user interface menyediakan berbagai variasi tema tampilan halaman web. Disini penulis memilih theme 2.
10. wizard confirm akan mengkonfirmasi opsi yang anda pilih. Tekan create untuk menyelesaikan wizard.
Menjalankan aplikasi.
Untuk menjalankan aplikasi baru tersebut:
1. pilih menu Application builder*view Application.
2. dari daftar aplikasi yang ada, pilih aplikasi bernama MyEmplyees. Disini anda bisa melihat, menambah, dan mengubah halaman2 aplikasi yang tlah dibuat oleh wizard.
3. untuk menjalankan aplikasi, pilih menu Run Aplication. Contoh tampilan aplikasi dapat dilihat pada gambar 1.1 utiliti search otomatis dapat melakukan pencarian pada kolom bertipe data karakter. Selain terdapat tombol create, dan link edit untuk menambah dan mengubah data pegawai.
4. untuk mengubah data pegawai, klik sekali pada tombol edit yang terletak pada kolom paling kiri. Otomatis anda akan diarahkan kehalaman kehalaman seperti pada gambar 1.2 perhatikan bahwa kolom-kolom yang harus diisi secara otomatis ditandai dengan sebuah lingkaran, kolom bertipe data tanggal otomatis memiliki tombol tambahan untuk memilih tanggal dari lookup.
5. untuk menambah data pegawai, klik sekali pada tombol create di gambar 1. otomatis anda akan diarahkan kehalaman yang mirip dengan gambar 2, tetapi dengan semua kolom kosong.
Kustomisasi Aplikasi
Aplikasi yang dihasilkan oleh wizard kadang-kadang perlu diubah untuk memudahkan pemakaian. Contohnya pada gambar 1.2 diatas, terlihat bahwa kolom department_id memiliki nilai berupa angka sehingga menyulitkan pemakai untuk mengisi data kolom tersebut.
Untuk itu kita akan melakukan kustomisasi untuk mendapatkan tampilan yang lebih user friendly, dimana kolom department_id akan ditampilkan sebagai menu dropdown yang berisi nama departemen. Untuk itu ada 2 tahapan yang perlu dilakukan :
1. membuat obyek bertipe list of value(LOV) dari table departments.
2. mengkustomasi kolom department_id untuk memakai obyek LOV di atas.
Install database oracle 10g di Windows XP
Install database oracle 10g di Windows XP
Secara umum, guide ini berlaku untuk semua instalasi Oracle. Di semua OS, proses instalasi itu sama, hanya sedikit berbeda di pre-installation requisite-nya.
Download software Database Oracle dulu. Free, alias gratis… tis.. Sebelumnya anda harus punya account di Oracle. Kalau belum punya, membuatnya gampang sekali, yang penting punya email. Ikuti saja proses “sign up”. Kalau diminta memasukkan pin OPN, dan anda tidak punya pin OPN karena company anda bukan partner-nya Oracle, kosongkan saja.
Berikut ini panduan download “Oracle Database 10g Release 2 (10.2.0.1.0)”:
Buka link (page) untuk download di sini
http://www.oracle.com/technology/software/products/database/index.html
Pilih versi database dan tipe OS
Dalam hal ini saya memilih “Oracle Database 10g Release 2 (10.2.0.1.0) for Microsoft Windows”
Kemudian muncul pilihan berikut
- Oracle Database 10g Release 2 (10.2.0.1.0)
- Oracle Database 10g Companion CD Release 2 (10.2.0.1.0)
- Oracle Database 10g Client Release 2 (10.2.0.1.0)
- Oracle Clusterware Release 2 (10.2.0.1.0)
- Oracle Gateways 10g Release 2 (10.2.0.1.0) (10.2.0.1.0)
Pilihlah option pertama. Kalau hanya untuk sekedar belajar database, anda cukup milih option pertama saja.
PC yang saya gunakan dalam instalasi ini adalah:
- Microsoft Windows XP Professional Version 2002 Service Pack 2
- CPU: intel 2 Ghz
- Memory: 1G
- Virtual (page) memory: 1,5G
Dengan spesifikasi tersebut, jelas PC saya sangat (lebih dari cukup) memenuhi syarat. Lebih detail tentang spesifikasi komputer yang bisa diinstall, lihat dokumentasi (installation guide) yang ada di paket software yang telah di download. Secara umum, berikut ini spesifikasinya:
Hardware:
- Physical memory (RAM) : 256 MB minimum, 512 MB recommended
- Virtual memory: dua kali RAM
- Disk space: kira-kira 5 G
- Video (monitor) adapter: 256 colors
- Processor : 550 MHz
Operating system (OS)
- Windows 2000 with service pack 1 or later. All editions, including Terminal Services and Microsoft Windows 2000 MultiLanguage Edition (MLE)
- Windows Server 2003 - all editions
- Windows XP Professional
- Windows NT is not supported.
Berikut ini langkah-langkahnya:
Jalankan command “setup.exe” yang ada di paket software yang telah di download
Kemudian muncul Install wizard (GUI). Lihat gambarnya di sini
- Pilih option “Basic Installation”
- Masukkan directory “Oracle Home Location”
- Pilih “Installation Type”
- Jangan pilih “Create Starter Database”
- Klik button “Next”
Oracle installer akan mengecek OS kita, apakah requirement-nya dipenuhi atau tidak. Lihat gambarnya di sini Pastikan semua statusnya “Succeeded”. Kalau ada warning, atau statusnya bukan Succeed, bereskan dulu OS-nya. Kemudian klik button “Next”
Dalam proses installati, Oracle akan menjalankan program java. Bila firewall PC anda memblock java, dan muncul alert “Windows Security Alert”, kilk tombol “Unblock”. Lihat gambarnya di sini
Muncul summary komponen Oracle Database 10g yang siap kita install. Lihat gambarnya di sini. Kemudian klik tombol “Install”
Installation progress ditunjukkan oleh gambar ini.
Setelah itu akan dilakukan konfigurasi tambahan oleh Oracle Installer. Kita cukup perhatikan saja. Lihat gambarnya di sini. Setelah konfigurasi selesai, klik tombol “Next”. Kadang-kadang kita tidak perlu kilk tombol Next tersebut, secara otomatis wizard menuju ke berikutnya.
Akhirnya instalasi selesai. Lihat gambarnya di sini. Setelah itu klik tombol “Exit”
Secara umum, guide ini berlaku untuk semua instalasi Oracle. Di semua OS, proses instalasi itu sama, hanya sedikit berbeda di pre-installation requisite-nya.
Download software Database Oracle dulu. Free, alias gratis… tis.. Sebelumnya anda harus punya account di Oracle. Kalau belum punya, membuatnya gampang sekali, yang penting punya email. Ikuti saja proses “sign up”. Kalau diminta memasukkan pin OPN, dan anda tidak punya pin OPN karena company anda bukan partner-nya Oracle, kosongkan saja.
Berikut ini panduan download “Oracle Database 10g Release 2 (10.2.0.1.0)”:
Buka link (page) untuk download di sini
http://www.oracle.com/technology/software/products/database/index.html
Pilih versi database dan tipe OS
Dalam hal ini saya memilih “Oracle Database 10g Release 2 (10.2.0.1.0) for Microsoft Windows”
Kemudian muncul pilihan berikut
- Oracle Database 10g Release 2 (10.2.0.1.0)
- Oracle Database 10g Companion CD Release 2 (10.2.0.1.0)
- Oracle Database 10g Client Release 2 (10.2.0.1.0)
- Oracle Clusterware Release 2 (10.2.0.1.0)
- Oracle Gateways 10g Release 2 (10.2.0.1.0) (10.2.0.1.0)
Pilihlah option pertama. Kalau hanya untuk sekedar belajar database, anda cukup milih option pertama saja.
PC yang saya gunakan dalam instalasi ini adalah:
- Microsoft Windows XP Professional Version 2002 Service Pack 2
- CPU: intel 2 Ghz
- Memory: 1G
- Virtual (page) memory: 1,5G
Dengan spesifikasi tersebut, jelas PC saya sangat (lebih dari cukup) memenuhi syarat. Lebih detail tentang spesifikasi komputer yang bisa diinstall, lihat dokumentasi (installation guide) yang ada di paket software yang telah di download. Secara umum, berikut ini spesifikasinya:
Hardware:
- Physical memory (RAM) : 256 MB minimum, 512 MB recommended
- Virtual memory: dua kali RAM
- Disk space: kira-kira 5 G
- Video (monitor) adapter: 256 colors
- Processor : 550 MHz
Operating system (OS)
- Windows 2000 with service pack 1 or later. All editions, including Terminal Services and Microsoft Windows 2000 MultiLanguage Edition (MLE)
- Windows Server 2003 - all editions
- Windows XP Professional
- Windows NT is not supported.
Berikut ini langkah-langkahnya:
Jalankan command “setup.exe” yang ada di paket software yang telah di download
Kemudian muncul Install wizard (GUI). Lihat gambarnya di sini
- Pilih option “Basic Installation”
- Masukkan directory “Oracle Home Location”
- Pilih “Installation Type”
- Jangan pilih “Create Starter Database”
- Klik button “Next”
Oracle installer akan mengecek OS kita, apakah requirement-nya dipenuhi atau tidak. Lihat gambarnya di sini Pastikan semua statusnya “Succeeded”. Kalau ada warning, atau statusnya bukan Succeed, bereskan dulu OS-nya. Kemudian klik button “Next”
Dalam proses installati, Oracle akan menjalankan program java. Bila firewall PC anda memblock java, dan muncul alert “Windows Security Alert”, kilk tombol “Unblock”. Lihat gambarnya di sini
Muncul summary komponen Oracle Database 10g yang siap kita install. Lihat gambarnya di sini. Kemudian klik tombol “Install”
Installation progress ditunjukkan oleh gambar ini.
Setelah itu akan dilakukan konfigurasi tambahan oleh Oracle Installer. Kita cukup perhatikan saja. Lihat gambarnya di sini. Setelah konfigurasi selesai, klik tombol “Next”. Kadang-kadang kita tidak perlu kilk tombol Next tersebut, secara otomatis wizard menuju ke berikutnya.
Akhirnya instalasi selesai. Lihat gambarnya di sini. Setelah itu klik tombol “Exit”
Melihat Informasi Current Session
Melihat Informasi Current Session
Melihat informasi session bisa dilakukan dengan query ke VIEW V$SESSION. Namun tidak semua user bisa query ke VIEW ini. Yang bisa hanya user-user yang punya privilege berikut :
DBA (sys, system, dan lain-lain)
select on v_$session
select any dictionary
Meskipun untuk melihat informasi session kita sendiri, kalau tidak punya salah satu dari ketiga privilege di atas, ya tetep tidak bisa query ke VIEW v$session.
Untuk bisa melihat informasi session sendiri, selain melalui VIEW v$session, Oracle menyediakan tool/function SYS_CONTEXT.
Formatnya adalah SYS_CONTEXT( ‘USERENV’ , ‘PARAMETER’)
Untuk melihat informasi session yang kita kehendaki, kita tinggal memanggil function SYS_CONTEXT dan memasukkan parameter yang sesuai.
Contoh:
Melalui SQLPlus, melihat informasi hostname dan osuser dari mana current session berasal:
SQL> col "Os User" for a20
SQL> col "Hostname" for a35
SQL> select sys_context( 'USERENV','OS_USER') "Os User", sys_context( 'USERENV','HOST') "Hostname" from dual;
Os User Hostname
-------------------- ----------------------------------
rohmadp INTRANET\LOCALUSER_ROHMADPContoh kalau melalui PL/SQL
set serveroutput on
DECLARE
v_hostname varchar2(20);
v_os_user varchar2(35);
BEGIN
v_os_user:=sys_context('USERENV','OS_USER');
v_hostname:=sys_context('USERENV','HOST');
dbms_output.put_line('Os User = '||v_os_user);
dbms_output.put_line('Hostname = '||v_hostname);
END;
/
Os User = rohmadp
Hostname = INTRANET\LOCALUSER_ROHMADP***
Informasi apa saja yang bisa diambil dari SYS_CONTEXT?
Berikut ini beberapa contoh informasi yang bisa kita ambil. Lebih lengkapnya silahkan lihat referensi.
PARAMETER INFORMASI SESSION
=================================================================
OS_USER User OS dari mana client melakukan koneksi
HOST Komputer/mesin dari mana client melakukan koneksi
CURRENT_USER User database yang dipakai untuk koneksi
DB_NAME Nama database yang dikoneksi
Dan lain-lain Silahkan lihat ReferensiReferensi
Oracle® Database SQL Reference 10g Release 2 (10.2) - SYS_CONTEXT
Oracle9i SQL Reference Release 2 (9.2) - SYS_CONTEXT
Tags: Database, oracle, session
Melihat informasi session bisa dilakukan dengan query ke VIEW V$SESSION. Namun tidak semua user bisa query ke VIEW ini. Yang bisa hanya user-user yang punya privilege berikut :
DBA (sys, system, dan lain-lain)
select on v_$session
select any dictionary
Meskipun untuk melihat informasi session kita sendiri, kalau tidak punya salah satu dari ketiga privilege di atas, ya tetep tidak bisa query ke VIEW v$session.
Untuk bisa melihat informasi session sendiri, selain melalui VIEW v$session, Oracle menyediakan tool/function SYS_CONTEXT.
Formatnya adalah SYS_CONTEXT( ‘USERENV’ , ‘PARAMETER’)
Untuk melihat informasi session yang kita kehendaki, kita tinggal memanggil function SYS_CONTEXT dan memasukkan parameter yang sesuai.
Contoh:
Melalui SQLPlus, melihat informasi hostname dan osuser dari mana current session berasal:
SQL> col "Os User" for a20
SQL> col "Hostname" for a35
SQL> select sys_context( 'USERENV','OS_USER') "Os User", sys_context( 'USERENV','HOST') "Hostname" from dual;
Os User Hostname
-------------------- ----------------------------------
rohmadp INTRANET\LOCALUSER_ROHMADPContoh kalau melalui PL/SQL
set serveroutput on
DECLARE
v_hostname varchar2(20);
v_os_user varchar2(35);
BEGIN
v_os_user:=sys_context('USERENV','OS_USER');
v_hostname:=sys_context('USERENV','HOST');
dbms_output.put_line('Os User = '||v_os_user);
dbms_output.put_line('Hostname = '||v_hostname);
END;
/
Os User = rohmadp
Hostname = INTRANET\LOCALUSER_ROHMADP***
Informasi apa saja yang bisa diambil dari SYS_CONTEXT?
Berikut ini beberapa contoh informasi yang bisa kita ambil. Lebih lengkapnya silahkan lihat referensi.
PARAMETER INFORMASI SESSION
=================================================================
OS_USER User OS dari mana client melakukan koneksi
HOST Komputer/mesin dari mana client melakukan koneksi
CURRENT_USER User database yang dipakai untuk koneksi
DB_NAME Nama database yang dikoneksi
Dan lain-lain Silahkan lihat ReferensiReferensi
Oracle® Database SQL Reference 10g Release 2 (10.2) - SYS_CONTEXT
Oracle9i SQL Reference Release 2 (9.2) - SYS_CONTEXT
Tags: Database, oracle, session
Login ke Database dengan User Lain
Login ke Database dengan User Lain
Sebagai DBA, kadang kita ingin login ke database dengan user lain sementara kita tidak tahu passwordnya. Contoh, kita diminta untuk mengubah password dari db link di schema TEST. Nama db link tersebut adalah TSREPLINK. Namun sayangnya, orang yang tahu password untuk user TEST sedang tidak di kantor, di telpon pun tidak diangkat. Padahal untuk mengubah db link harus dilakukan oleh user (schema) yang punya db link tersebut. Gimana kah caranya?
Misalkan definisi database link tersebut adalah berikut ini:
SQL> create database link TSREPLINK
connect to ROHMAD identified by ROHMADPASS using 'TSREP';Sekarang password user ROHMAD di database TSREP diganti menjadi ROHMADNEW. Mau gak mau kita khan mesti me-recreate database link tersebut dengan password yang baru.
Tapi kalau tidak tahu password user TEST, kita khan tidak bisa connect pakai user TEST tersebut. Mau melakukannya pakai user SYSTEM, ya gak bisa; kalau gak percaya, coba aja:
SQL> conn system
SQL> drop database link TEST.TSREPLINK;
ORA-02024: database link not foundMenghapus tabel atau index bisa seperti itu, sebutkan nama owner dan nama objectnya (tabel atau index). Tapi menghapus db link tidak seperti itu, harus pakai user (schema) yang punya. Harusnya begini caranya:
SQL> connect TEST
SQL> drop database link TSREPLINK;
SQL> create database link TSREPLINK
connect to ROHMAD identified by ROHMADNEW using 'TSREP';BEGINI CARANYA
Yang perlu kita lakukan adalah mengubah password user TEST. Kemudian buka session baru pakai user TEST dengan password yang baru. Kemudian kembalikan lagi password yang diubah tadi itu.
Lihat password user TEST (ini adalah password yang telah di-encrypt oleh Oracle; dan dengan cara apapun kita tidak bisa men-decrypt-nya). Jalankan query berikut, catat hasilnya. SQL> conn SYSTEM
SQL> select PASSWORD from dba_users
where username='TEST';
PASSWORD
------------------------------
7A0F2B316C212D67Setelah itu, ubah password user TEST SQL> alter user TEST identified by TEST_TEMP_PASS;Catatan: walaupun password diganti, session (dari user TEST) tetep establish, tidak terpengaruh apa-apa. Hanya saja kita tidak bisa login pakai user TEST dengan password yang lama. Oleh karena itu, segera buru-buru ke langkah selanjutnya.
Buka sesssion baru dengan dengan user TEST dan password yang baru SQL> conn TEST/TEST_TEMP_PASSKembali ke session SYSTEM. Kembalikan password user TEST ke password yang lama. SQL> alter user TEST
identified by values '7A0F2B316C212D67';Walaupun password diubah lagi (dikembalikan ke semula), session yang connect dengan password baru tersebut masih establish dan bisa melakukan aktifitas biasa.
Sekarang dengan session user TEST yang masih establish itu, tinggal kira recreate database link tersebut:
SQL> drop database link TSREPLINK;
SQL> create database link TSREPLINK
connect to ROHMAD identified by ROHMADNEW using 'TSREP';
Tags: Database, login, oracle,
Sebagai DBA, kadang kita ingin login ke database dengan user lain sementara kita tidak tahu passwordnya. Contoh, kita diminta untuk mengubah password dari db link di schema TEST. Nama db link tersebut adalah TSREPLINK. Namun sayangnya, orang yang tahu password untuk user TEST sedang tidak di kantor, di telpon pun tidak diangkat. Padahal untuk mengubah db link harus dilakukan oleh user (schema) yang punya db link tersebut. Gimana kah caranya?
Misalkan definisi database link tersebut adalah berikut ini:
SQL> create database link TSREPLINK
connect to ROHMAD identified by ROHMADPASS using 'TSREP';Sekarang password user ROHMAD di database TSREP diganti menjadi ROHMADNEW. Mau gak mau kita khan mesti me-recreate database link tersebut dengan password yang baru.
Tapi kalau tidak tahu password user TEST, kita khan tidak bisa connect pakai user TEST tersebut. Mau melakukannya pakai user SYSTEM, ya gak bisa; kalau gak percaya, coba aja:
SQL> conn system
SQL> drop database link TEST.TSREPLINK;
ORA-02024: database link not foundMenghapus tabel atau index bisa seperti itu, sebutkan nama owner dan nama objectnya (tabel atau index). Tapi menghapus db link tidak seperti itu, harus pakai user (schema) yang punya. Harusnya begini caranya:
SQL> connect TEST
SQL> drop database link TSREPLINK;
SQL> create database link TSREPLINK
connect to ROHMAD identified by ROHMADNEW using 'TSREP';BEGINI CARANYA
Yang perlu kita lakukan adalah mengubah password user TEST. Kemudian buka session baru pakai user TEST dengan password yang baru. Kemudian kembalikan lagi password yang diubah tadi itu.
Lihat password user TEST (ini adalah password yang telah di-encrypt oleh Oracle; dan dengan cara apapun kita tidak bisa men-decrypt-nya). Jalankan query berikut, catat hasilnya. SQL> conn SYSTEM
SQL> select PASSWORD from dba_users
where username='TEST';
PASSWORD
------------------------------
7A0F2B316C212D67Setelah itu, ubah password user TEST SQL> alter user TEST identified by TEST_TEMP_PASS;Catatan: walaupun password diganti, session (dari user TEST) tetep establish, tidak terpengaruh apa-apa. Hanya saja kita tidak bisa login pakai user TEST dengan password yang lama. Oleh karena itu, segera buru-buru ke langkah selanjutnya.
Buka sesssion baru dengan dengan user TEST dan password yang baru SQL> conn TEST/TEST_TEMP_PASSKembali ke session SYSTEM. Kembalikan password user TEST ke password yang lama. SQL> alter user TEST
identified by values '7A0F2B316C212D67';Walaupun password diubah lagi (dikembalikan ke semula), session yang connect dengan password baru tersebut masih establish dan bisa melakukan aktifitas biasa.
Sekarang dengan session user TEST yang masih establish itu, tinggal kira recreate database link tersebut:
SQL> drop database link TSREPLINK;
SQL> create database link TSREPLINK
connect to ROHMAD identified by ROHMADNEW using 'TSREP';
Tags: Database, login, oracle,
Langganan:
Postingan (Atom)