Feeds:
Posts
Comments

Oracle di Win Vista

Setelah susah Install Oracle dari versi Oracle 9i 2 dan Oracle 10 g rel 2

di windows Vista , akhirnya dapat Trik untuk menjalankan

Oracle 10gR2(10.2.0.1) :

Step 1: Disable DEP

  1. Click Start
  2. Click All Programs
  3. Click Accessories
  4. Right Click on Command Prompt
  5. Left click on Run as Administrator
  6. Click the Allow button if it asks you for permission
  7. Type or past the following into the command prompt window: bcdedit.exe /set {current} nx AlwaysOff
  8. Hit enter and you should see the confirmation: Operation Completed Successfully
  9. Reboot and DEP should be off.

Step 2: Set Windows XP Compatibility Mode

  1. Right-click the setup executable setup.exe and choose Properties from the context menu that appears
  2. Click on the Compatibility tab
  3. Check the [ ] Run this program in compatibility mode for: box and select Windows XP (Service Pack 2)
  4. Check Disable visual themes
  5. Check Disable desktop composition
  6. Check Disable display scaling on high DPI settings
  7. Under privilege level check Run this program as an administrator
  8. Click Apply
  9. Click OK

sumber : www.psoug.org

Atau

Bisa langsung menggunakan Oracle khusus MS Vista :

download 10gR2(10.2.0.3) for MS Vista

Artikel ini menjelaskan tahapan Instalasi Oracle Application Server 10g (9.0.4), Oracle’s J2EE Application Server,di Red Hat Enterprise Linux 3 (RHEL3). Tahapan Instalasi :

  • Download Software
  • Unpack Files
  • Hosts File
  • Set Kernel Parameters
  • Setup
  • Installation
  • Post Installation
  • Startup Otomatis
  • Hak Akses

 

Download Software

 

Download Link di bawah ini:

Oracle Application Server 10g (9.0.4) Software

Patch 3006854

 

Unpack Files

Langkah pertama Ekstrak file dibawah ini:

 

gunzip ias904_linux_disk1.cpio.gz

gunzip ias904_linux_disk2.cpio.gz

gunzip ias904_linux_disk3.cpio.gz

gunzip ias904_linux_disk4.cpio.gz

 

Setelah di ekstrak ikuti perintah di bawah ini:

 

cpio -idmv < ias904_linux_disk1.cpio

cpio -idmv < ias904_linux_disk2.cpio

cpio -idmv < ias904_linux_disk3.cpio

cpio -idmv < ias904_linux_disk4.cpio

 

Hosts File

#vi /etc/hosts

<IP-address> <fully-qualified-machine-name> <machine-name>

Set Kernel Parameters

# vi /etc/sysctl.conf file:

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 142

# semaphores: semmsl, semmns, semopm, semmni

kernel.sem = 256 32000 100 142

fs.file-max = 131072

net.ipv4.ip_local_port_range = 20000 65000

kernel.msgmni = 2878

kernel.msgmax = 8192

kernel.msgmnb = 65535

 

Jalankan perintah dibawah ini :

#/sbin/sysctl -p

Tambahkan pada : #vi /etc/security/limits.conf file:

* soft nproc 16384

* hard nproc 16384

* soft nofile 65536

* hard nofile 65536

 

Tambahkan pada : #vi /etc/pam.d/login file,:

session required /lib/security/pam_limits.so

 

Setup

Install dengan paket RPM di bawah ini:

 

# RedHat AS3 Disk 2

cd /mnt/cdrom/RedHat/RPMS

rpm -Uvh setarch-1.3-1.i386.rpm

rpm -Uvh sysstat-4.0.7-4.i386.rpm

 

# RedHat AS3 Disk 3

cd /mnt/cdrom/RedHat/RPMS

rpm -Uvh openmotif21-2.1.30-8.i386.rpm

rpm -Uvh ORBit-0.5.17-10.4.i386.rpm

rpm -Uvh libpng10-1.0.13-8.i386.rpm

rpm -Uvh gnome-libs-1.4.1.2.90-34.1.i386.rpm

rpm -Uvh compat-glibc-7.x-2.2.4.32.5.i386.rpm

compat-gcc-7.3-2.96.122.i386.rpm

compat-gcc-c++-7.3-2.96.122.i386.rpm

compat-libstdc++-7.3-2.96.122.i386.rpm

compat-libstdc++-devel-7.3-2.96.122.i386.rpm

 

Ikuti perintah di bawah ini :

mv /usr/bin/gcc /usr/bin/gcc323

mv /usr/bin/g++ /usr/bin/g++323

ln -s /usr/bin/gcc296 /usr/bin/gcc

ln -s /usr/bin/g++296 /usr/bin/g++

 

Install patch 3006854 :

 

unzip p3006854_9204_LINUX.zip

cd 3006854

sh rhel3_pre_install.sh

 

Membuat user account dan, groups :

groupadd oinstall

groupadd dba

groupadd oper

useradd -g oinstall -G dba -s /bin/ksh oracle

passwd oracle

 

Buat Direktori untuk tempat dimana Software Oracle akan diinstal :

mkdir -p /u01/app/oracle/product/904_j2ee

chown -R oracle.oinstall /u01

Login sebagai root dan ikuti perintah di bawah ini :

xhost +<machine-name>

Login sebagai user oracle user dan tambahkan pada file .profile file:

 

# Oracle Settings

TMP=/tmp; export TMP

TMPDIR=$TMP; export TMPDIR

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/904_j2ee; export ORACLE_HOME

ORACLE_TERM=xterm; export ORACLE_TERM

PATH=/usr/sbin:/opt/IBMJava2-131/bin:$ORACLE_HOME/bin:$PATH; export PATH

PATH=$PATH:$ORACLE_HOME/dcm/bin:$ORACLE_HOME/opmn/bin; export PATH

PATH=$PATH:$ORACLE_HOME/Apache/Apache/bin; export PATH

 

#LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

#CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

 

if [ $USER = “oracle” ]; then

if [ $SHELL = “/bin/ksh” ]; then

ulimit -p 16384

ulimit -n 16384

else

ulimit -u 16384 -n 16384

fi

fi

 

PS1=”`hostname`> “

set -o emacs

set filec

 

Installation

Login sebagai user into the oracle user

 

DISPLAY=<machine-name>:0.0; export DISPLAY

 

Mulai jalankan Oracle Universal Installer (OUI) pada disk1 :

./runInstaller

 





Post Installation

Setelah selesai Instalasi :

  • untuk menjalankan Enterprise Manager Website (http://<nama_computer_server>:1811) dengan logim username “ias_admin” dan isi password sesuai dengan password yang diisi sewaktu proses instalasi. Jika EM tidak aktif maka dapat diaktifkan dengan command “emctl start iasconsole”
  • Mengnonaktifkan enterprise manager dengan command “emctl stop iasconsole”


 

Startup Otomatis

vi /home/oracle/startuporacle.sh

#!/bin/sh

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/904_j2ee; export ORACLE_HOME

dcmctl start

opmnctl start

imctl start iaconsole

Hak akses

chmod +x startuporacle (jalankan dg user yg sama waktu create file ini. jgn sbg root)

login sbg root . buka file rc.local .

$ vi /etc/rc.d/rc.local

tambahkan lines berikut pada bagian akhir (simpan di /home/oracle):
su – oracle -c /home/oracle/startuporacle


Sumber : Oracle-base

Untuk Instalation siapkan minimum 2 G Swap, untuk secure Linux disabled, Defaultnya seperti di bawah ini :

Centos 5.0:

  • GNOME Desktop Environment
  • Editors
  • Graphical Internet
  • Text-based Internet
  • Development Libraries
  • Development Tools
  • Server Configuration Tools
  • Administration Tools
  • Base
  • System Tools
  • X Window System

Download Oracle 11g:

Hosts File

#vi /etc/hosts

<IP-address>  <fully-qualified-machine-name>  <machine-name>

Set Kernel Parameters

kernel.shmall = 2097152
kernel.shmmax = 2147483648 # Smallest of ->
#(Half the size of the physical memory) or (4GB - 1 byte)
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
fs.file-max = 65536 # 512 * PROCESSES
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=4194304
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=262144

Test apakah Nilai Kernel sudah masuk dengan syntak :

/sbin/sysctl -a | grep <param-name>


Tambahkan pada file :

“/etc/sysctl.conf” file.

 
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=4194304
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=262144

Jalankan perintah dibawah ini untuk mengetahui perubahan pada parameter kernel
/sbin/sysctl -p

Tambahkan di #vi/etc/security/limits.conf file:

oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536

Tambahkan di #vi/etc/pam.d/login file,:

session    required     /lib/security/pam_limits.so
session    required     pam_limits.so

Edit Disable secure linux di /etc/selinux/config file

SELINUX=disabled

Setup


# Centos 5 Disk 1
cd /media/cdrom/Server
rpm -Uvh binutils-2.*
rpm -Uvh elfutils-libelf-0.*
rpm -Uvh glibc-2.*
rpm -Uvh glibc-common-2.*
rpm -Uvh libaio-0.*
rpm -Uvh libgcc-4.*
rpm -Uvh libstdc++-4.*
rpm -Uvh make-3.*
cd /
eject
 
# Centos 5 Disk 2
cd /media/cdrom/Server
rpm -Uvh elfutils-libelf-devel-0.*
rpm -Uvh glibc-devel-2.*
rpm -Uvh gcc-4.*
rpm -Uvh gcc-c++-4.*
rpm -Uvh libstdc++-devel-4.*
rpm -Uvh unixODBC-2.*
cd /
eject
 
# Centos 5 Disk 3
cd /media/cdrom/Server
rpm -Uvh compat-libstdc++-33*
cd /
eject

# Centos 5 Disk 4
rpm -Uvh unixODBC-devel-2.*
cd /
eject

# Centos 5 Disk 5
rpm -Uvh libaio-devel-0.*
cd /
eject
 
# Centos 5 Disk 6
cd /media/cdrom/Server
rpm -Uvh sysstat-7.*
cd /
eject

Membuat user account dan, groups :  
 
groupadd oinstall
groupadd dba
groupadd oper
groupadd asmadmin
 
useradd -g oinstall -G dba,oper,asmadmin oracle
passwd oracle

Buatkan  Direktori untuk keperluan Instalasi Oracle : 
 
mkdir -p /u01/app/oracle/product/11.1.0/db_1
chown -R oracle:oinstall /u01
chmod -R 775 /u01


Login sebagai root, ikuti perintah dibawah ini:  
xhost +<machine-name>


Login sebagai user oracle dan tambhkan beberapa syntak dibawah ini

pada file .bash_profile :

 
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
 
ORACLE_HOSTNAME=oel45.localdomain
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1; export ORACLE_HOME
ORACLE_SID=DB11G; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
 
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
 
if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

Installasi

Login sebagai user Oracle, lakukan syntak dibawah ini:

 
DISPLAY=<machine-name>:0.0; export DISPLAY

Mulai jalankan Installer Oracle :

 
./runInstaller
 
  1. Select Installation Method


2. Specify Inventory Directory and Credentials

3.Select Installation Type

4. Install Location


5. Product-Specific Prerequisite Checks

6.Select Configuration Option


7. Select Database Configuration


8. Specify Database Configuration Options


9. Specify Database Configuration Details


10. Select Database Management Option

11. Specify Database Storage Option


12. Specify Backup and Recovery Options


13. Specify Database Schema Passwords


14. Oracle Configuration Manager Registration



15. Summary


16. Install


17. Configuration Assistants


18. Database Configuration Assistant


19. DatabaseConfiguration Assistant Summary

20. Execute Configuration Scripts

21. End of Installation


22. OEM Database Control Login


23. OEM Database Control



Setelah Installasi

Edit e /etc/oratab isikan ‘Y’:

DB11G:/u01/app/oracle/product/11.1.0/db_1:Y
 
Startup Otomatis 
 
vi /home/oracle/startuporacle.sh
 

#!/bin/sh

ORACLE_HOSTNAME=oracleas.pmt.com

ORACLE_BASE=/home/u01/app/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1; export ORACLE_HOME

ORACLE_SID=DB11G; export ORACLE_SID

ORACLE_TERM=xterm; export ORACLE_TERM

PATH=/usr/sbin:$PATH; export PATH

PATH=$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export LD_LIBRARY_PATH

lsnrctl start

sqlplus “/ as sysdba” <<EOF

startup

quit

EOF

emctl start dbconsole

isqlplusctl start

exit

 
               
Hak akses 
 

chmod +x startuporacle (jalankan dg user yg sama waktu create file ini. jgn sbg root)
login sbg root . buka file rc.local .

$ vi /etc/rc.d/rc.local

tambahkan lines berikut pada bagian akhir (simpan di /home/oracle):
su – oracle -c /home/oracle/startuporacle

 

Source : www.oracle-base.com

 
 

Hal ini dilakukan dalam mengimprovisasikan kemampuan enterprise operating system open source. Oracle pun memiliki hubungan khusus dengan Linux. Perusahaan itu pertama kali merilis database yang mampu berjalan pada Linux pada 1998 lalu.

OS tersebut menjamin kepopulerannya kepada para konsumen. Oracle dengan mantap melancarkan serangan dalam wilayah Linux. Aksi terbaru Oracle saat ini adalah program dukungan kontroversi Unbreakable Linux dan aksi pada bulan Januari berupa penyediaan perangkat manajemen Linux.

Oracle membentuk dirinya sebagai pesaing bari distributor Linux terkemuka, Red Hat pada Oktober lalu ketika menggulirkan Unbreakable Linux, program yang memberikan user dukungan penuh untuk distro Red Hat Enterprise Linux (RHEL) dengan harga agresif. Oracle Enterprise Linux kemudian menjadi nama vendor untuk distro berkemampuan RHEL yang disediakan untuk konsumen. Oracle memang masih ragu-ragu dengan banyaknya user pengadopsi Unbreakable Linux.

Pada ajang LinuxWorld, Oracle mengumumkan telah membuat sejumlah proyek yang bekerja untuk peningkatan ketersediaan Linux di bawah GNU General Public License version 2 (GPLv2). GPL memberikan user hak gratis mempelajari, menyalin, memodifikasi, menggunakan kembali, membagi, dan mendistribusi ulang software. GPL versi 3 diperkenalkan pada akhir Juni, dan beberapa ratus proyek open source saat ini telah mengadopsi lisensi barunya.

Widia Yurnalis

sumber : http://www.sda-indo.com

soource lain :

Oracle and Linux

Unbreakable Linux Oracle Unbreakable Linux is a support program that delivers the highest quality support for Linux at significantly lower cost, with indemnification against intellectual property infringement claims.Oracle’s Linux commitment began in 1998 with the first commercial database on Linux. Today, Oracle Database is #1 on Linux with 82.6% of the market. With the strong momentum of Oracle Applications and Oracle Fusion Middleware on Linux, only Oracle provides complete support for the complete software stack on Linux.

 

source : http://www.oracle.com

Dengan meraih sertifikat pelatihan bersifat internasional, selain terbuka peluang kerja yang lebih luas, juga mendorong kepercayaan siap bersaing, meski di mancanegara.

Bina Nusantara (Binus), salah satu lembaga pendidikan komputer yang memiliki reputasi baik di Indonesia dewasa ini, juga secara teratur mampu menyalurkan tenaga kerja, khususnya pekerja TI (melalui Binus Career Center). Untuk lebih mendukung reputasinya, lembaga pendidikan ini juga menjalin lemitraan akademik dengan Cisco System dan Microsoft dalam pelatihan TI bersertifikasi internasional.

Seperti dituturkan Elda S. Tambara, S.Kom., M.Acc, Director Binus Center, kebutuhan terhadap pekerja TI yang memiliki sertifikasi internasional cukup banyak, seperti Cisco CCNA, Microsoft MCSA, MCSD dan sebagainya.

Ketika itu, jumlah pekerja TI yang memiliki sertifikat internasional masih sangat sedikit, kurang dari 100 orang, sehingga kebutuhan yang ada belum terpenuhi dan kalau dilihat dari segi gaji, relatif sangat mahal. Muncul kemudian inisiatif dari kalangan vendor TI untuk menyelenggarakan pendidikan bersertifikat itu, selain untuk memenuhi kebutuhan bisnisnya, juga meningkatkan jumlah pekerja TI yang memiliki keahlian tertentu. Binus sendiri baru memulai pendidikan bersertifikasi internasional ini sekitar tahun 1999 melalui kerjasamanya dengan vendor, antara lain Cisco dan Microsoft.

Vendor lain, Oracle misalnya, juga mengembangkan pelatihan bersertifikat internasional, yakni melalui OCP (Oracle Certified Professional). OCP juga dimaksudkan sebagai measurement sampai seberapa jauh tingkat seseorang agar bisa mengabstraksikan teknologi Oracle. Seperti diakui Mardjuki, Country Education Manager, Oracle University pada PT Oracle Indonesia, teknologi Oracle berkembang sangat pesat. Tak jarang para pelanggan Oracle mengeluh karena kurangnya pekerja TI yang ahli yang dapat mendukung pengoperasian perangkat dan sistem berteknologi tinggi yang mereka sediakan.

Lebih lanjut diungkapkan, karena kebutuhan itu, Oracle menyelenggarakan pendidikan bersetifikasi dan sekaligus untuk meyakinkan pelanggan bahwa mereka didukung oleh pekerja TI yang memiliki standar tertentu dalam mengoperasikan teknologi Oracle. Itu terjadi sejak 5 tahun yang lalu dan mulai besar sekitar tahun 2000.

Meski Orcale merupakan vendor, namun dalam pendidikan ini ia juga menjalin kerjasama dengan pihak lain, khususnya untuk menjalankan program OAEP (Oracle Approved Education Provider). Kemitraan itu dibangun dengan empat institusi, yakni Inixindo, Metrodata, Asaba dan Sisindosat (anak usaha Indosat). “Institusi ini kami tunjuk sebagai perpanjangan tangan Orcale untuk melakukan pendidikan teknologi Oracle dan sekaligus mendapatkan sertifikasi,” ujar Mardjuki.

Diakui, bahwa selain pendidikan ini membutuhkan biaya yang cukup besar, dalam kenyataannya untuk mendapatkan sertifikat juga tidak mudah. Artinya, harus melalui ujian. Di Oracle sendiri ada empat modul (bidang keahlian) yang harus dilalui untuk mendapatkan sertifikasi OCP.

Sejumlah kalangan menilai pendidikan sertifikasi internasional yang diselenggarakan Oracle lebih sulit dibandingkan dengan Cisco atau Microsoft. Contohnya, tingkat kelulusan peserta pelatihan di Inixindo juga berbeda beda, tergantung program yang diambilnya. Untuk Cisco dan Microsoft, misalnya tingkat kelulusannya lebih tinggi dibandingkan dengan Oracle. Menurut General Manager Inixindo, Didik Partono R, tingginya tingkat kelulusan untuk Microsoft dan Cisco disebabkan karena buku-buku tentang kedua software tersebut cukup banyak tersedia.

Selain itu, kebijakan vendor dalam hal sertifikasi ini, juga sangat berpengaruh terhadap tingkat kelulusan. Cisco, misalnya, untuk mendapatkan sertifikasi, hanya diperlukan satu kali tes saja. Berbeda dengan Oracle, siswa harus lulus empat hingga lima jenis ujian. Demikian juga dengan Microsoft, untuk meraih sertifikat dari perusahaan software terbesar ini, peserta harus melalui setidaknya tujuh jenis ujian.

Bagaimana dengan biayanya? Menurut Elda, pendidikan bersertifikasi Cisco yang dilaksanakan Binus membutuhkan biaya tak kurang dari Rp. 7 juta untuk pendidikan selama satu tahun. Tahun 1999, ketika awal melaksanakannya, biayanya baru Rp. 5 juta. “Di Oracle, untuk meraih modul pertama, seorang peserta pendidikan dikenakan biaya sebesar 90 dollar AS (jika US$ 1 = Rp. 9.000, maka besarnya menjadi Rp. 810.000). Sedang tiga modul berikutnya sebesar 125 dollar AS. Bagi yang akan mengikuti ujian, biasanya akan mendapatkan potongan harga sebesar 40 sampai 60 persen,” ujar Mardjuki menjelaskan.

Untuk pendidikan di Binus, pembiayaan yang dibayarkan peserta sudah termasuk biaya koneksi internet selama belajar. Juga tersedia buku-buku yang dibutuhkan. Mereka juga mendapat kesempatan mengikuti tes internasional. “Dengan biaya sebesar itu, kita mengharuskan mereka untuk ikut ujian. Kita mau tahu hasil akhirnya, bahwa selama mengikuti perkuliahan, mereka benar tidak sih bisa lulus di ujian internasional? Karena ending-nya kan di situ,” ujar Elda menambahkan.

Dalam soal biaya ini, akan berbeda penggunaannya dan tergantung kebijakan dari vendor itu sendiri. Seperti diakui Elda, pendidikan sertifikasi internasional yang dilakukan di Binus merupakan kegiatan akademis, yang membekali mahasiswa dengan konsep-konsep dasarnya.

Sedang kalau di luar, bentuknya adalah semacam membahas soal-soal yang akan keluar di ujian dan waktunya lebih singkat. Pesertanya lebih banyak para praktisi. Kalau di luar biayanya hanya sekitar 4 juta – 5 juta itu pun dalam waktu kurang dari satu bulan, sedang di Binus dengan biaya yang ditetapkan waktu belajarnya selama satu tahun, termasuk kesempatan tes sertifikat internasional.

Beberapa kalangan menilai kebutuhan terhadap pekerta TI yang memiliki sertifikat internasional ini merupakan sesuatu yang sangat urgen bagi Indonesia. Banyak investor asing, yang langsung membawa sistem/software sendiri. Sementara, pada saat yang sama, ada tuntutan dari pemerintah setempat harus menggunakan pekerja TI lokal. Tetapi, pekerja TI yang dibutuhkan harus memiliki kualifikasi tertentu. Disitulah peran sertifikasi menjadi sangat penting. Sayangnya, belum banyak pekerja TI lokal yang telah mencapai taraf sertifikasi ini. “Makanya kita sering melakukan promosi dan kegiatan untuk menggairahkan orang untuk mengambil sertifikasi ini,” tambah Mardjuki.

 
 

Namun seperti diakui Mardjuki, dalam pengembangannya di lapangan ada sejumlah kendala yang dihadapi. Pertama, sertifikasi ini tidak mudah. Artinya harus melalui ujian. Kedua, passing grade-nya juga cukup tinggi, sertifikasi Oracle 70 persen, jadi agak tinggi. Ketiga, kebanyakan orang lokal yang bersertifikasi justru berkarya di luar negeri.

Ironis. Kita ingin mereka bersertifikasi di sini dan berkarya di sini. Tetapi itu tuntutan pasar. Mereka mendapatkan kompensasi lebih besar di luar negeri, dan hal itu tidak bisa dicegah. “Dari sekian orang yang bersertifikasi Oracle, hampir 50 %-nya bekerja di luar negeri, antara lain AS, Inggris, Hong Kong dan Singapura. Mereka ikut sertifikasi, salah satu alasannya juga untuk mengejar kompensasi semacam itu,” ujar Mardjuki menambahkan.

Di Indonesia, diperkirakan tak kurang dari 200 orang yang telah berhasil meraih sertifikasi OCP, yakni mereka yang mampu menyelesaikan ujian untuk empat modul. Sedang kalau yang berhasil menyelesaikan modul 1 dan 2 jumlahnya ribuan.

Namun, belakangan ini ada sedikit perubahan. Kalau dulu lulus empat modul baru bisa meraih OCP, tetapi sekarang ini meski baru lulus dua modul, dia sudah berhak meraih OCA (Oracle Certificate Associate). Hal ini dimaksudkan agar lebih menggairahkan para peserta, paling tidak mereka yang telah lulus dua modul dapat dihargai dengan sertifikat.

Saat ini, seperti diungkapkan oleh Mardjuki, yang banyak dibutuhkan di luar negeri, misalnya, Amerika Serikat adalah yang terkategori software developer. Karena, di sana banyak sekali perusahaan software, yang mereka sendiri tak mampu memenuhinya. “Kebanyakan orang India, sebagian dari Indonesia. Di India, pemegang sertifikasi Oracle jumlahnya ribuan,” tambah Mardjuki.

Di bidang solusi vertikal, kita punya database administrator (DBA), application developer dan Java solution. Masing-masing ada modulnya. DBA empat modul, application developer ada empat, java ada lima. Lebih dari 50 persen yang bekerja di luar negeri umumnya memegang sertifikasi OCP Developer, karena mereka yang lebih banyak dicari. Sedang kalau di Indonesia, lebih banyak dibutuhkan DBA.

Kebanyakan perusahaan dari luar negeri, yang menanamkan investasinya di Indonesia, mereka membawa sistem mereka sendiri atau Oracle. Karenanya, yang mereka butuhkan adalah yang bisa mengoperasikan database, mereka membutuhkan administrator. Trendnya, untuk kebutuhan lokal Indonesia, memang DBA. Kalau di luar negeri yang dicari adalah developer. •insa/as

source :  www.ebizzasia.com

Kalangan pendidikan TI di Indonesia tampaknya cukup bingung menghadapi dua ekstrem orientasi pendidikan. Jika terlalu praktis, dituduh “tak ubahnya dengan kursus, cuma menghasilkan pengekor”. Jika terlalu konseptual atau teoretis, dituduh “tinggal di menara gading, dan toh tetap menjadi pengekor”.

Bagaimanakah caranya agar hasil didikan cukup praktis (tapi tidak terlalu), cukup konseptual (tapi tidak terlalu), tak sekadar menjadi pengekor, dan berbeda mutunya dari orang yang belajar secara otodidak? Sampai kini, saya tak menemukan gagasan yang cukup rinci atau operasional. Tulisan ini mencoba mengisi kekosongan tersebut.

Penghindaran Ekstrem

Penghindaran ekstrem pertama, yaitu yang terlalu praktis, dapat dilakukan dengan mengharuskan siswa memakai produk-produk yang di pasaran, tapi sebagai salah satu saja—bukan satu-satunya—perkakas untuk mengkaji teori.

Penghindaran ekstrem kedua, yaitu yang terlalu teoritis, dilakukan dengan mengajukan pertanyaan bermutu kepada siswa, berkenaan dengan kaitan antara teori dan praktek. Lalu dengan mengajukan pertanyaan-pertanyaan yang menggugah agar siswa bisa membedakan mana fakta mana fiksi. Atau dengan mengharuskan siswa mendalami esai-esai komputasi, seperti yang dimuat di buku karangan Frederick P. Brooks [Mythical Man Month—Red.]

Secara operasional, selama 3 tahun siswa belajar dalam laboratorium dan proyek-proyek yang “terkendali”, yang sangat mendukung mereka untuk fokus pada konsep, bukan pada hapalan akan nama-nama operasi (seperti perintah atau fungsi). Dalam setahun terakhir, yaitu tahun keempat, mereka harus mengerjakan proyek di luar kampus, di lingkungan yang lebih “tak terkendali”. Dengan arahan yang baik, lewat kontrasnya pengalaman 3 tahun di dalam kampus versus 1 tahun di luar kampus, siswa bisa membedakan fakta-fiksi.

Beberapa Contoh Pertanyaan Menggugah

Contoh 1. Misalnya agar siswa bisa dengan kritis menguji kebenaran klaim bahwa Unix atau utilitas Unix dirancang dengan tingkat kepaduan konseptual yang tinggi, kita sajikan pertanyaan berikut: apakah memang perlu ada 4 operasi output pada level shell? Dalam menjawab pertanyaan ini, peserta dipersilahkan melihat adanya 4 operasi pada shell Unix yakni echo, cat, more, dan od; memikirkan kemungkinan untuk memadukannya, mencoba memadukan semuanya dalam satu operasi atau program, dan menyajikan argumentasinya. Contoh kemungkinan jawaban: Mungkin tidak perlu. Keempat operasi di atas bisa digabung menjadi satu, sebut saja write.

Contoh 2. Melihat cara-cara pemanggilan SQL. Berapa jumlah maksimum cara menjalankan operasi SQL pada virtual machine SQL? Dalam menjawab pertanyaan ini, peserta dipersilakan melihat implementasi SQL di dBASE IV, Microsoft Access, dan Oracle, misalnya.

Contoh 3. Tentang C++ dan OOP. Apa perbedaan typedef dan class di C++? Apakah sebetulnya keduanya mendefinisikan hal yang sama? Apakah kelas dan tipe (atau bahkan interface) itu semua sama? Jika sama, kenapa di OOP orang terlalu “mendewakan” kelas?

Contoh 4. Kembali masalah SQL. Mengapa sangat jarang—jika memang ada—dibuat DFD (Data Flow Diagram) untuk operasi-operasi SQL? Apakah karena tidak bisa atau tidak mudah? Mengapa tidak bisa atau tidak mudah? Apakah ada gunanya kalau bisa atau mudah dibuat? Usaha apa yang bisa dilakukan untuk menyelesaikan masalah tersebut?

Contoh 5. Kembali soal Unix. Apakah mungkin menyatukan operasi login, telnet, dan su menjadi satu operasi saja? Dalam menjawab pertanyaan ini, siswa harus dengan seksama menyimpulkan berbagai kesamaan dan perbedaan ketiga operasi, membuat satu operasi bagi ketiganya, dan mengajukan argumentasi. Contoh jawaban misalnya: Ya, mungkin. Operasi login, telnet, dan su memiliki satu kesamaan, yaitu untuk mengakses suatu virtual machine. Ketiganya pada hakekatnya memiliki 3 operan: username, password, dan virtual machine name. Pada login dan su, virtual machine dibatasi kepada current/real machine, sedangkan pada telnet tidak demikian. Ketiganya bisa disatukan ke dalam satu operasi saja, misal: login.

Contoh 6. Tentang Oracle. Apa kira-kira alasan Oracle memakai 4 istilah: TNS name, service name, host string, dan connect string? Apakah bisa kita memakai 1 istilah saja? Jika bisa, istilah apa yang paling cocok? Salah satu jawaban yang mungkin: TNS name dipakai karena Oracle melihat sebuah service name adalah nama pada protokol jaringan level TNS. Service name dipakai karena service dipandang sebagai paduan instans dan database. Host string dipakai karena service ini bisa dipandang sebagai host atau virtual machine (persisnya virtual machine SQL). Connect string dipakai karena nama tersebutlah (nama service) yang dipakai untuk connect. Kita bisa memakai 1 istilah saja. Istilah yang paling cocok adalah service name, karena cukup singkat dan akurat (SQL virtual machine name lebih akurat tapi terlalu panjang). Dengan pengertian ini, kita bisa memodelkan service dalam diagram tipe seperti di Gambar 1 (disederhanakan, dianggap protokol yang dipakai adalah TCP/IP, dan penamaan memakai cara Oracle8, bukan Oracle8i). Terlihat bahwa operasi yang berlaku ke service adalah connect, dan disconnect (bisa dicoba di SQL*Plus). Pembaca dipersilahkan memikirkan diagram tipe untuk memodelkan instans dan database pada Oracle.

Contoh 7. Tentang perbedaan OS Unix dan Windows. Apakah pemaduan DOS/Windows-like volume drive dan Unix-like filesystem bisa diwujudkan? Apakah pemaduan tersebut—bila bisa—akan mempermudah end user? Apakah tidak lebih baik mengganti C:\Documents and Settings\USERNAME, /home/USERNAME (atau /export/home/USERNAME pada satu atau lebih varian Unix) sebagai default home folder bagi user dengan /user/USERNAME atau C:\user\USERNAME? Apakah kesamaan dan perbedaan C:\Documents and Settings dengan /export/home? Apakah mungkin untuk membuat struktur direktori yang bahkan lebih sistematis daripada LSB (Linux Standard Base)? Seperti apa kira-kira solusinya?

Salah satu contoh jawabannya misalnya begini: Pemaduan filesystem mungkin. Adanya Samba sebagai perantara filesystem Linux dengan DOS/Windows menyiratkan hal ini. Pemaduan filesystem ini bisa mempermudah end user. Pengalaman mengajar dan belajar dasar-dasar Unix/Linux meyakinkan saya akan hal ini. Mount point relatif lebih sulit dipahami daripada logical drive/physical drive (drive bisa diganti juga dengan disk atau volume). Penggunaan folder user langsung di bawah root juga mungkin mempermudah. Pengalaman mengajar Oracle di Linux/Unix mengindikasikan demikian. Peserta agak sulit melihat bahwa ada folder /export/home/oracle (atau /home/oracle) adalah karena ada user OS bernama oracle (ini disebabkan ada folder lain yang bernama oracle, yang biasanya /u01/app/oracle). Adanya nama home pada /export/home atau /home juga menambah kebingungan dalam membedakannya dengan ORACLE_HOME. Andai foldernya bernama c:/user/oracle, dan nilai ORACLE_HOME misalnya adalah C:\server\oracle maka peserta akan lebih mudah melihat bahwa c:\user\oracle mengindikasikan adanya user OS bernama oracle, sedangkan c:\server\oracle mengindikasikan adanya software server Oracle.

Refleksi

Berbagai pertanyaan di atas sangat menarik dan menantang untuk dijawab. Jawaban atas satu pertanyaan bisa membimbing penemuan jawaban untuk pertanyaan-pertanyaan lain.

Apakah ada guna praktisnya? Banyak, dan contoh-contoh berikut sekaligus menunjukkan nilai lebih yang [berpotensi] membedakan alumni S1 daripada orang yang sekedar kursus atau otodidak. Saya percaya bahwa setiap pengajar harus berusaha agar hasil didikan pendidikan formal memiliki nilai lebih dari seorang otodidak.

Di sini saya hanya akan memberikan analisis dua dari pertanyaan-pertanyaan yang sebelumnya disebutkan.

Pertanyaan Pertama (Operasi Output)

Telah disebutkan bahwa jawaban untuk pertanyaan pertama bisa berupa jawaban ya. Perintah echo, cat, more, dan od bisa disatukan menjadi katakanlah write. Dengan mencoba menyusun sintaks write, kita bisa belajar hal-hal lain. Misalnya, sintaks yang berperilaku seperti echo:

write 5 * 2
write ' Hello '
write 5 * 2; 1.2; 'Hello'
shellvar1 := 10; shellvar2 := ' Hello '; shellvar3 := 1.2
write $(shellvar1); write $(shellvar2); write $(shellvar3)

Dalam contoh-contoh di atas, write berperilaku seperti operasi echo. Contoh-contoh di atas juga menunjukkan suatu ciri umum bahasa skripting yakni weakly-typed: objek-objek (shellvar1 sampai shellvar3) tak perlu dideklarasikan tipenya. Tanda baca ; dipakai sebagai pemisah antarstatement, sementara newline sebagai penutup statement.

Berikut adalah contoh-contoh operasi write berperilaku seperti cat.

write file1
write file1 file2
write file1 file2 > file3

Operasi write akan menafsirkan suatu nama sebagai nama file, bukan nama variabel shell. Itulah sebabnya untuk variable shell dipakai operasi $ sebagai operasi ekstraksi nilai. Hal ini bisa merangsang pemikiran bahwa pemrograman shell berorientasi file. Tanda > dipakai sebagai tanda operasi redireksi output. Hal ini bisa merangsang pemikiran apakah parser shell bisa dibuat sehingga tanda > juga bisa dipakai sebagai tanda operasi pembandingan (seperti di shell C), dan apa kita bisa menyebutnya operation overloading?

Contoh-contoh berikut memperlihatkan perilaku write seperti perilaku operasi more, yang diakomodasi lewat operan -p yang berarti pause.

write -p file1
write -p file1 file2
write -p file1 file2 > file3
write -p 5 * 2

Contoh-contoh berikut memperlihatkan perilaku write seperti perilaku operasi od, yang diakomodasi lewat operand -o (octal).

write -o file1
write –o -p file1
write -o -p file1 file2
write -o -p 5 * 2

Konsekuensi lebih jauh: siswa bisa membedakan operasi output pada pemrograman shell dengan output pada bahasa-bahasa 3GL (generasi ketiga) seperti pada C, Pascal, Java; mengambil kesimpulan perbedaan esensialnya, dan memikirkan seperti apa operasi output pada shell C (yang merupakan hibrida 3GL dan bahasa skripting).

Pertanyaan Kedua (Pemanggilan SQL)

Mungkin hanya ada 3 cara maksimum pemanggilan operasi SQL pada virtual machine SQL. Melihat contoh dBase IV: 1) lewat operasi DO untuk procedure/function yang ada dalam program-file yang sama; 2) lewat operasi DO untuk procedure/function yang ada di program file yang berbeda (eksternal); 3) lewat pemanggilan langsung (SELECT, CREATE, INSERT, DELETE, UPDATE)

Pelajar lalu bisa memeriksa kasusnya untuk Microsoft Access dan Oracle.

Apa efek dari belajar hal ini? Alumni bisa punya perkiraan berapa cara yang akan ia temui saat belajar bahasa baru. Misal, ia belajar HTML. Sebelum mendalami, ia sudah punya ancang-ancang varian-varian pemanggilan HTML operation dalam virtual machine HTML (browser, application server). Ini salah satu bentuk keunggulan hasil didikan dibandingkan orang yang belajar otodidak atau lewat kursus semata, nilai tambah yang ditawarkan program pendidikan formal.

Semoga pembahasan ini bisa menjadi suatu langkah kecil untuk pembaruan besar di pendidikan formal S1 Informatika.

Berna Ridho Hutabarat mantan dosen di STT Telkom, Bandung. Kini memilih menjadi praktisi dan kontraktor. Programer C++, DBA Oracle, dan pencipta bahasa pemrograman Batak. Dapat dihubungi melalui Redaksi di feedback@mwmag.com.

Source

 

By Steve Callan

You may think you know everything there is to know about the Scott schema, but part of its overall usefulness lies in how versatile it is with respect to its ability to illustrate many of Oracle’s and SQL’s features. The illustrative point examined in this article concerns trees and hierarchies. An excellent book by Joe Celko (Joe Celko’s Trees and Hierarchies in SQL for Smarties) shows several means of arranging hierarchical data. This article combines the familiar emp table and some of the examples shown in Celko’s book.

The standard nested hierarchy

A quick search on the Internet yields numerous sites showing you how to get a nested hierarchy of the emp table. Another typical example of this hierarchy is that of parent-child foreign key relationships. Shown below is an example of the typical hierarchy based on the emp table, but with an extra feature (the mgr_key). This example is available at the askTom Web site (you’ll have to add the mgr_lookup function, and the code for that is at the site).

select /*+ first_rows */
rpad( '*', (level-1)*2, '*' ) || 
   ename ename, empno, mgr_key
from emp
start with mgr_lookup(mgr_key) = -1
connect by prior empno = mgr_lookup(mgr_key);
ENAME                EMPNO MGR_KEY
--------------- ---------- --------
KING                  7839 mgr_
**JONES               7566 mgr_7839
****SCOTT             7788 mgr_7566
******ADAMS           7876 mgr_7788
****FORD              7902 mgr_7566
******SMITH           7369 mgr_7902
**BLAKE               7698 mgr_7839
****ALLEN             7499 mgr_7698
****WARD              7521 mgr_7698
****MARTIN            7654 mgr_7698
****TURNER            7844 mgr_7698
****JAMES             7900 mgr_7698
**CLARK               7782 mgr_7839
****MILLER            7934 mgr_7782

Let’s put this into an organization chart (or wire diagram).

tree1.jpg

This chart is courtesy of Visio’s Organization Chart Wizard. The wizard connects to a data source (a database in this case), queries the table you select, and determines the hierarchical relationship of the table’s elements. Aside from presenting an easier means of interpreting the hierarchical relationships within the emp table, the chart leads us into the first example of how to record the relationships by using a nested set model.

The “emp” family

The algorithm for creating a nested set model is pretty simple. Start at the top, enter the next number in the lower left corner of the element’s box, then move down a level if there is one, or across the element, and enter the next number. If there are no lower elements, traverse across that element and enter the next number, then traverse across to the next sibling, and repeat the numbering. Continue until you return to the top element of the current branch. Traverse across to the next branch and repeat. Return to the top-level element when there are no more lower level branches to traverse to and enter the final/last number of the sequence.

Putting an algorithm into words may make it seem confusing, but when applying the steps, the implementation is usually much easier, and even more so when you have an example to go by. We start with King and enter a 1 in the lower left corner. Move down to Clark and enter a 2. Since Clark has a lower level/child element, move down to Miller and enter a 3. Move across Miller and enter a 4, returning to Clark with a 5. Traverse across to Blake and enter a 6, and so on from there.

tree2.jpg

Now that we have an ordered pair identification scheme (e.g., Martin is [9,10]), we can create a new emp table as shown below.

CREATE TABLE EMP_ORG
(EMPNO NUMBER NOT NULL,
LEFT NUMBER NOT NULL,
RIGHT NUMBER NOT NULL);
INSERT INTO EMP_ORG VALUES (7839,1,28);
INSERT INTO EMP_ORG VALUES (7782,2,5);
INSERT INTO EMP_ORG VALUES (7934,3,4);
INSERT INTO EMP_ORG VALUES (7698,6,17);
INSERT INTO EMP_ORG VALUES (7844,7,8);
INSERT INTO EMP_ORG VALUES (7654,9,10);
INSERT INTO EMP_ORG VALUES (7521,11,12);
INSERT INTO EMP_ORG VALUES (7900,13,14);
INSERT INTO EMP_ORG VALUES (7499,15,16);
INSERT INTO EMP_ORG VALUES (7566,18,27);
INSERT INTO EMP_ORG VALUES (7788,19,22);
INSERT INTO EMP_ORG VALUES (7876,20,21);
INSERT INTO EMP_ORG VALUES (7902,23,26);
INSERT INTO EMP_ORG VALUES (7369,24,25);
SQL> select * from emp_org;
     EMPNO       LEFT      RIGHT
---------- ---------- ----------
      7839          1         28
      7782          2          5
      7934          3          4
      7698          6         17
      7844          7          8
      7654          9         10
      7521         11         12
      7900         13         14
      7499         15         16
      7566         18         27
      7788         19         22
      7876         20         21
      7902         23         26
      7369         24         25
14 rows selected.

Following along with an example in the book, the next step is to create a view.

CREATE OR REPLACE VIEW EMP_ORG_VIEW 
(EMPNO, LEVEL_0, LEVEL_1, LEVEL_2)
AS
SELECT A.EMPNO,
  CASE WHEN COUNT(C.EMPNO) = 2
       THEN B.EMPNO
       ELSE NULL END AS LEVEL_0,
  CASE WHEN COUNT(C.EMPNO) = 3
       THEN B.EMPNO
       ELSE NULL END AS LEVEL_1,
  CASE WHEN COUNT(C.EMPNO) = 4
       THEN B.EMPNO
       ELSE NULL END AS LEVEL_2
FROM EMP_ORG A,
     EMP_ORG B,
     EMP_ORG C
WHERE
   A.LEFT BETWEEN B.LEFT AND B.RIGHT
AND
   C.LEFT BETWEEN B.LEFT AND B.RIGHT
AND
   A.LEFT BETWEEN C.LEFT AND C.RIGHT
GROUP BY A.EMPNO, B.EMPNO;       

The final step is to write the query which shows the hierarchical structure of the organization.

SELECT EMPNO,
       MAX(LEVEL_0) "LVL 0",
       MAX(LEVEL_1) "LVL 1",
       MAX(LEVEL_2) "LVL 2"
FROM EMP_ORG_VIEW
GROUP BY EMPNO;
     EMPNO LVL 0 LVL 1 LVL 2
     ----- ----- ----- -----
      7844  7698  7839
      7839
      7782  7839
      7698  7839
      7521  7698  7839
      7902  7566  7839
      7788  7566  7839
      7654  7698  7839
      7934  7782  7839
      7566  7839
      7499  7698  7839
      7876  7788  7566  7839
      7900  7698  7839
      7369  7902  7566  7839
14 rows selected.

As an alternative, you can replace empno with ename (make changes as appropriate for the data type and references), and generate a name display.

ENAME        LVL 0   LVL 1   LVL 2
------------ ------- ------- -------
ALLEN        BLAKE   KING
JONES        KING
FORD         JONES   KING
MILLER       CLARK   KING
CLARK        KING
SMITH        FORD    JONES   KING
WARD         BLAKE   KING
TURNER       BLAKE   KING
MARTIN       BLAKE   KING
ADAMS        SCOTT   JONES   KING
SCOTT        JONES   KING
BLAKE        KING
JAMES        BLAKE   KING
KING

Either way (by empno or ename), the results reflect the same organizational structure, but the ordered representation is somewhat hard to follow. Unfortunately, that is not the worst problem with a nested set. The number one weakness of this model is its inflexibility. What happens if a leaf node/element (Smith) leaves the organization? The structure survives, but what if you need to add a new element? For example, how do you add a new level under Ward?

The “connect by prior” version is indifferent to changes like that. Simply add the new employee, assign a manager (Ward), and the query output reflects the change. In the nested set model, every position after the insertion requires modification. Another real world example of a structure-breaking change is that of adding a new branch/department. Not only is there the reordering issue, but we have now introduced another problem – updating the structure of the view (adding a new level). Clearly, this type of model, although useful for academic purposes, is a maintenance nightmare. In fact, rigid models such as this are analogous to the rigid structure of hierarchical databases before the days of the relational model.

Build in some flexibility

As another example, who says the numbers you use in the ordered pair have to be consecutive? What matters is the relative ordering of the numbers (increasing in value as you walk the chart, but not necessarily increasing by one). Let’s take the ename version and induce a range (multiply each position value by 10).

CREATE TABLE ENAME_BY10_ORG
(ENAME VARCHAR2(12) NOT NULL,
LEFT NUMBER NOT NULL,
RIGHT NUMBER NOT NULL);
INSERT INTO ENAME_BY10_ORG VALUES ('KING',10,280);
INSERT INTO ENAME_BY10_ORG VALUES ('CLARK',20,50);
INSERT INTO ENAME_BY10_ORG VALUES ('MILLER',30,40);
INSERT INTO ENAME_BY10_ORG VALUES ('BLAKE',60,170);
INSERT INTO ENAME_BY10_ORG VALUES ('TURNER',70,80);
INSERT INTO ENAME_BY10_ORG VALUES ('MARTIN',90,100);
INSERT INTO ENAME_BY10_ORG VALUES ('WARD',110,120);
INSERT INTO ENAME_BY10_ORG VALUES ('JAMES',130,140);
INSERT INTO ENAME_BY10_ORG VALUES ('ALLEN',150,160);
INSERT INTO ENAME_BY10_ORG VALUES ('JONES',180,270);
INSERT INTO ENAME_BY10_ORG VALUES ('SCOTT',190,220);
INSERT INTO ENAME_BY10_ORG VALUES ('ADAMS',200,210);
INSERT INTO ENAME_BY10_ORG VALUES ('FORD',230,260);
INSERT INTO ENAME_BY10_ORG VALUES ('SMITH',240,250);

Let’s add someone between Martin and Ward.

INSERT INTO ENAME_BY10_ORG VALUES ('COLE',101,102);

You can see that Cole picks up the same hierarchy as her siblings.

tree3.jpg

So far, so good. Now let’s add someone between Martin and Cole. Oops, we didn’t plan far enough ahead in the insertion/addition scheme because there isn’t any room (numerically speaking, using whole numbers) between 100 (the end of Martin) and 101 (the beginning of Cole). Without having to resort to real numbers (which includes values such as 100.2, 100.74, etc.), one way to preserve the use of whole numbers is to make the range wide enough, and then pack in additions close to the boundary, but not too close so as to leave room for future additions.

With this modification to the nested set model, adding new nodes within existing levels is quite easy due to the increased range of numbers, but we are still faced with the maintenance issue regarding the addition of new levels. You can always create the view with more levels than currently being used, so that helps to minimize the maintenance problem.

Coming back to Oracle

What do connect by prior, start with, and level mean in this query?

select rpad( '*', (level-1)*2, '*' ) || table_name table_name
from temp_constraints
start with fkey_constraint is null
connect by prior pkey_constraint = r_constraint_name;

The SQL Reference guide defines these items as such:

  • START WITH specifies the root row(s) of the hierarchy.
  • CONNECT BY specifies the relationship between parent rows and child rows of the hierarchy. In a hierarchical query, one expression in condition must be qualified with the PRIOR operator to refer to the parent row.
  • LEVEL (pseudocolumn) returns 1 for a root row, 2 for a child of a root, and so on for each row returned by a hierarchical query

“Connect by” is not a SQL-92 ANSI standard, and other versions of SQL use different constructs to perform the same function. You can begin to appreciate the power and usefulness of this feature, especially when faced with having to query hierarchical relationships using nested sets or other set models.

In Closing

One of the hidden tools or algorithms behind hierarchical queries is recursion. The best way to learn to recursion is to first learn recursion. That’s an old joke, but recursion helps drive complex queries, and queries involving hierarchies and trees are certainly among the most complex. Fortunately for us mere mortals, masters of the trade such as Joe Celko and Tom Kyte have reduced the seemingly complex into more understandable chunks of information. Understanding and have some adeptness at using SQL is one of the key requirements for becoming a better DBA.

Source

 

Follow

Get every new post delivered to your Inbox.