ORA-01034 : ORACLE not available

ORA-01034: ORACLE not available
Cause: Oracle was not started up. Possible causes include the following:

- The SGA requires more space than was allocated for it.

- The operating-system variable pointing to the instance is improperly defined.

The operating-system variable pointing to the instance is improperly defined.. Hal ini yg dimaksud adalah ketidak cocokan dari ORACLE_HOME atau ORACLE_SID di dalam oracle dengan yang ada di /home/oracle/.bash_profile .

.bash_profile :
ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/10gR2
ORACLE_SID=orcl
LD_LIBRARY_PATH=$ORACLE_HOME/lib
PATH=$PATH:$ORACLE_HOME/bin

*note: dalam file ini bersifat case sensitive :)

nah ini nih yang ngebuat oracle saya jadi error :( . kebiasaan di windows yang otomatis diubah ke huruf kapital, pas nyoba di linux ternyata g otomatis, timbulah masalah ga mau open. ternyata ORACLE_SID yang seharusnya orcl saya tulis jadi ORCL :mrgreen:

implicit commit

Mungkin selama ini saya kira klo setting autocommit off (set autocommit off) di oracle menyebabkan proses commit baru dijalankan kalo user sendiri yang menuliskan perintah commit. Seperti:
tabel – tabel ini saya ambil dari skemanya hr..

1. sql> set autocommit off;
2. sql> create table employees as select * from hr.employees;
3. sql> select count(*) from employees;

COUNT(*)
----------
107

4. sql> delete from employees where employee_id in(189,199);
5. sql> select count(*) from employees;

COUNT(*)
----------
105

6. rollback;
7. sql> select count(*) from employees;

COUNT(*)
----------
107

Dalam transaksi ditunjukkan jika kita setting autocommit off, maka oracle akan melakukan commit secara manual. Ini ditunjukkan pada Jumlah row ketika awal dan setelah rollback hasilnya masih sama( Hal ini karena proses rollback akan mengembalikan nilai pada posisi setelah dicommit). Tapi ternyata oracle juga melakukan implicit commit, kasusnya seperti ini:

1. sql> set autocommit off;
2. sql> create table employees as select * from hr.employees;
3. sql> select count(*) from employees;

COUNT(*)
----------
107

4. sql> delete from employees where employee_id in(189,199);
5. sql> select count(*) from employees;

COUNT(*)
----------
105

6. Misalnya tiba2 admin disuruh membuat user oleh atasannya:
sql> create user test identified by test;
7. Setelah itu admin sadar jika dia telah melakukan kesalahan dengan menghapus employee_id 189 dan 199(pada point 5) sehingga dia ingin merollbacknya kembali.
sql> rollback
8. sql> select count(*) from employees;

COUNT(*)
----------
105

Dalam transaksi ini ternyata admin gagal dalam merollback. Karena oracle melakukan proses implicit commit pada proses “create user”, sehingga ketika dilakukan rollback, maka system akan mengembalikan pas setelah pembuatan user itu terjadi.

Implicit commit adalah commit yang dilakukan secara otomatis oleh sistem pada proses – proses DDL dan DCL. Proses-prosesnya yaitu:
*DDL:
a. Create object
b. alter object
c. drop object
d. truncate table

Object- object yang dimaksud adalah table, view, sequence, index, synonym, dll

Sedangkan perintah DCL yaitu perintah- perintah dalam pengontrolan seperti grant privilege, grant role dan lain lain..

Oracle Intermedia

Untuk Zaman sekarang yg katanya zaman modern ini dengan haiteknya :) , file-file multimedia sudah mulai banyak digunakan dalam menunjang proses bisnis sebuah perusahaan. Seperti youtube yang hadir dengan content video streamingnya, rapidshare dengan tempat penyimpanan segala jenis filenya, hingga rumah sakit yang menggunakan data image, audio, maupun video untuk menyimpan data pasiennya.

Mungkin oleh sebagian besar programmer dalam hal penyimpanan data multimedia masih menyimpan data mutimedia tersebut di dalam file type(direktori OS). Mungkin cara inilah yang termudah, tetapi jika kebutuhan semakin meningkat dan data multimedia yang digunakan semakin besar tentunya ini akan menyulitkan khususnya dalam hal maintenance. Serem juga kan klo misalnya data rumah sakit ketuker-ketuker gitu( yang datanya harusnya sakit panu malah ketuker datanya jadi sakit kanker kulit! hehe :) )

Dalam kasus ini salah satu solusinya, penyimpanan data tersebut dapat dilakukan di dalam database. Oracle mempunyai fitur yang dinamakan Oracle Intermedia. walaupun fitur ini udah ada dari dulu sejak oracle 8 (dan sekarang oracle udh 11g), tapi apa salahnya sedikit kita ulas yak :) , mari kita mulai serius..

Kenapa disimpan di database?

Dengan disimpan di dalam database, kita punya beberapa keunggulan seperti:

  1. Manageability
    Dengan menyimpan di oracle Intermedia data tersebut dapat dimanipulasi, di konversi ke tipe lain, dicopykan, dan terhubung langsung dengan metada sehingga metadatanya dapat diambil.
  2. Security
    Dengan menyimpan data di dalam database, maka hanya user-user tertentu yang dapat mengakses data tersebut.
  3. Backup/Recovery
    Tentunya jika kita membackup database, otomatis data mulmed ini juga terbackup :)
  4. Extensibility
    Data yang disimpan tentunya dapat diindex sehinggam mempercepat pencarian. Jika data yg disimpan dalam bentuk teks, maka kita dapat mencari kata di dalam teks tersebut.

Ada ga sih kelemahan dari Oracle intermedia?

Yup, tentunya ada kekurangan dari intermedia ini, diantaranya yaitu:

  1. Ukuran size yang dibutuhkan menjadi lebih besar
    Dengan penyimpanan di dalam database, setidaknya dibutuhkan ukuran tambahan untuk indexing dan ukuran redo log yang besar juga.
  2. Akses menjadi lebih lambat
    Walaupun ini belum saya buktikan :mrgreen: , tapi menurut asumsi saya intermedia masih lebih lambat dibandingkan lewat file type
  3. Yang lain dan tak bukan yaitu licensi oracle itu yang mahal! :mrgreen: . jadi klo mau yang murah atau gratis, ya  g bisa dipake.hehe

Cara menggunakan Oracle Intermedia ?

Penyimpanan dengan multimedia mengunakan tipe yang berbeda, yaitu ORDIMAGE, ORDAUDIO, ORDVIDEO, dan ORDDOC. tipe file yang di dukung hampir sama dengan namaya seperti ORDIMAGE yang digunakan untuk menyimpan data image, ORDAUDIO untuk gambar. Tapi ada yang buat bingung disini! ternyata ORDOC itu bukan khusus buat nyimpen dokumen seperti .txt, ataupun .PDF tapi tipe ini digunakan untuk menyimpan segala jenis file di dalam satu table.

contoh table yang menggunakan intermedia !
Sebenarnya intermedia menyimpan data tersebut menggunakan tipe BLOB, penggunaan ORDIMAGE, ORDAUDIO, ORDVIDEO, dan ORDDOC ini dikhususkan jika kita ingin mengambil metadata dari file tersebut.

create table ordGambar(
id int constraint pk_ordGambar primary key,
namaImage varchar2(30),
namaFile varchar2(40),
image ordsys.ordiMage
);

Jika kita ingin mengambil query dari file tersebut :

select a.id,
a.image.getwidth() as width,
a.image.getheight() as height,
a.image.compressionformat as compression,
a.image.getMimeType() as MimeType,
a.image.getUpdateTime() as updateTime
from ordGambar a
;

Cara untuk meretrieve atau insert data tersebut ke dalam database?

tunggu posting selanjutnya yah :)

Mungkin untuk lebih jelasnya, disini