Selasa, 15 April 2008

Mengatasi error file *. trc dan rollback segment

Permasalahan :
Saya pake Oracle 9i berjalan di platform Win XP. Ketika saya login user ada error ORA-27101 : share memory realm does not exist. pas login sebagai sysdba dia connect to an idle instance!!! Saya sudah coba restart Service trus dah coba startup Database tapi gak bisa juga???? Saya check di alert lognya ketika saya restart Service , terjadi error di file berextension *.trc dan rollback segment??

Apa yang harus saya lakukan terhadap error file *. trc dan rollback segment ?
Setelah saya mengganti parameter undo management yg tadinya AUTO saya ubah menjadi MANUAL hal tersebut bisa diatasi. Tetapi apakah ada pengaruhnya ??

Solusi :
Coba dicek error detailnya. Prediksi saya, karena undo tablespace yg diset pada parameter UNDO_TABLESPACE tidak sesuai/tidak ada.

Kalau anda menggunakan Automatic Undo Management, maka parameter UNDO_TABLESPACE harus diisi dengan nama salah satu UNDO tablespace yg ada.

Misal, asumsinya posisi DB sekarang masih menggunakan undo management MANUAL

SQL> conn / as sysdba
SQL> show parameter UNDO

SQL> SELECT tablespace_name FROM dba_tablespace
WHERE contents = 'UNDO';


-- catat salah satu nama undo tablespace yg ada, sbg kandidat undo tablespace pada undo management AUTOMATIC
-- Kalau belum ada, coba buat yg baru dgn, misalnya:

SQL> CREATE UNDO TABLESPACE my_undo
DATAFILE 'C:\direktori\ my_undo.dbf' SIZE 50M;

SQL> ALTER SYSTEM SET UNDO_TABLESPACE = nama_undo_tablespac e
SCOPE=SPFILE;


atau
SQL> ALTER SYSTEM SET UNDO_TABLESPACE = my_undo SCOPE=SPFILE;

SQL> ALTER SYSTEM SET UNDO_MANAGEMENT = AUTO SCOPE=SPFILE;

SQL> startup force

Cara membuat koneksi dengan 2 database pada 2 komputer yang berbeda

(Sumber : indo-oracle)

Misal:
Server 1, nama Database Instance-nya "SID1", dengan Service : "SID1" juga.
Server 2, nama Database Instance-nya "SID2", dengan Service : "SID2" juga.
Di client, sudah ada connect string di tnsnames.ora, berturut2 SID1 (koneksi ke Server1:SID1) & SID2 (koneksi ke Server2:SID2) .

Kalau dari komputer client ingin meng-query data di SID1 & SID2 dengan menggunakan sebuah koneksi, entah itu dari Server1:SID1 atau Server2:SID2, maka dblink harus dibuat di server1:SID1 & Server2:SID2.

Asumsikan juga, di Server1 & Server2 sudah diset connect stringnya (di dalam file tnsnames.ora, dengan isi yg sama dengan tnsnames.ora yg ada di client)

Kemudian, buat database link nya
----------------------------------
Di Server1:SID1
----------------------------------
SQL> conn / as sysdba
SQL> GRANT CREATE DATABASE LINK to user_di_SID1;

SQL> conn user_di_SID1/ password_ nya

SQL> CREATE DATABASE LINK SID2_link CONNECT TO user_di_SID2
IDENTIFIED BY password_nya USING 'SID2';


----------------------------------
Di Server2:SID2
----------------------------------
SQL> conn / as sysdba
SQL> GRANT CREATE DATABASE LINK to user_di_SID2;

SQL> conn user_di_SID2/ password_ nya

SQL> CREATE DATABASE LINK SID1_link CONNECT TO user_di_SID1
IDENTIFIED BY password_nya USING 'SID1';


Nah , dari client, misal konek ke Server1:SID1, dan mengakses table
yg ada di Server2:SID2

SQL> connect user_di_SID1/ password_ nya@SID1
SQL> SELECT * FROM tbl_name@SID2_ link;


atau sebaliknya, konek ke Server2:SID2 dan akses ke table yg ada di
Server1:SID1

SQL> connect user_di_SID2/ password_ nya@SID2
SQL> SELECT * FROM tbl_name@SID1_ link;

Tips agar Firewall Windows XP tidak menutup akses ke Server Database Oracle 10g

(sumber : ORAID)

Contoh kasus :
Kami menginstall Database Oracle 10g di kompi dengan Sistem Operasi Windows XP Service Pack 2 (bukan orgi). Kalau firewall di aktifkan, maka kami tidak bisa akses data di server tersebut dari client (kompi lain) yang sudah online. Tapi kalau windows firewall dinonaktifkan, maka akses ke server dapat berjalan dengan baik...

Kami sudah mencoba dengan membuat exception di windows firewall terhadap port maupun program oracle, tetap tidak bisa...

Info : Port Untuk Listener = 1521, untuk OEM 5500.

Solusi :

Windows firewall bisa dibuat exception berdasarkan *port* dan *program*. Listener menggunakan port 1521 untuk menerima request pertama dari client yang akan membuat spawn user-process. User process ini yang menggunakan port cukup acak. Tapi ketika dilihat dari Task Manager hanya ada dua buah program yaitu "oracle.exe" dan "tnslsnr.exe" . Jadi bisa menggunakan exception secara program.

Langkah yang bisa dicoba sebagai berikut :
1. tambahkan port 1521 ke dalam firewall menggunakan "Add Port"
2. tambahkan program "oracle.exe" dan "tnslsnr.exe" menggunakan "Add
Program" --> "Browse"

Reorder Field

Berikut adalah beberapa cara untuk reorder field tanpa menghapus data atau create ulang table
(sumber : indo-oracle)

1. Pakai features ONLINE-TABLE- REDEFINITION. Silakan baca dokumentasinya.

2. Kalau data tidak terlalu banyak/besar:
- catat semua constraints & index dari table
- rename table
- buat table yg baru pakai CTAS (CREATE TABLE AS SELECT)
- drop old table

Contoh:
Misal urutan column table1 (a,b,c,d), akan di reorder menjadi (a,d,c,b)

SQL> rename table1 to OLD_TABLE1;
SQL> CREATE TABLE table1 AS SELECT a,d,c,b FROM old_table1;


3. alternatif lain, buat view dgn nama yg sama dgn nama table-nya
- rename table
- buat view dgn nama table yg lama

Contoh:
Misal urutan column table1 (a,b,c,d), akan di reorder menjadi
(a,d,c,b)

SQL> rename table1 to OLD_TABLE1;
SQL> CREATE VIEW table1 AS SELECT a,d,c,b FROM old_table1;

CaTaTaN GaK PeNtInG.........

Satu lagi blog aku buat, tapi kayanya juga bakalan g kopen (terawat) kaya blog-blog yang telah aku buat sebelumnya. Yach semoga saja yang ini bisa lain, karena emang ada beberapa hal yang ingin aku bagikan khususnya sedikit ilmu yang telah aku dapatkan.

So, enjoy your life brow....