Sintax
bash> ftp Ip_server tujuan
--> masukan username
--> masukan password
ftp>
ftp> pwd
ftp> cd /.../....
untuk copy file
ftp> mput file1 file2
Rabu, 03 November 2010
Minggu, 05 September 2010
script consume memory
proses yg meng-consume memory :
select program, pga_alloc_mem from v$process order by 2 desc;
select program, pga_alloc_mem from v$process order by 2 desc;
Jumat, 03 September 2010
script free memory
SELECT pool, name, ROUND(bytes/1024, 2) "Kbytes" FROM v$sgastat
WHERE LOWER(pool) = 'large pool' AND LOWER(name) IN ('free memory');
SELECT pool, name, ROUND(bytes/1024, 2) "Kbytes" FROM v$sgastat
WHERE LOWER(pool) = 'shared pool' AND LOWER(name) IN ('free memory');
SELECT pool, name, ROUND(bytes/1024, 2) "Kbytes" FROM v$sgastat
WHERE LOWER(pool) = 'java pool' AND LOWER(name) IN ('free memory');
WHERE LOWER(pool) = 'large pool' AND LOWER(name) IN ('free memory');
SELECT pool, name, ROUND(bytes/1024, 2) "Kbytes" FROM v$sgastat
WHERE LOWER(pool) = 'shared pool' AND LOWER(name) IN ('free memory');
SELECT pool, name, ROUND(bytes/1024, 2) "Kbytes" FROM v$sgastat
WHERE LOWER(pool) = 'java pool' AND LOWER(name) IN ('free memory');
Selasa, 24 Agustus 2010
EXP-00008 dan ORA-00904
Pada Waktu export ditemukan error.
Error sbb:
About to export specified tables via Conventional Path ...
Current user changed to SSP
. . exporting table BODES_BLACKLIST
EXP-00008: ORACLE error 904 encountered
ORA-00904: : invalid identifier
Periksa:
SQL> select instance_name, status from v$instance;
package yang invalid statusnya artinya harus di patch ulang
dengan menjalankan dua script terakhir
utluxxx dan catpatch
Error sbb:
About to export specified tables via Conventional Path ...
Current user changed to SSP
. . exporting table BODES_BLACKLIST
EXP-00008: ORACLE error 904 encountered
ORA-00904: : invalid identifier
Periksa:
SQL> select instance_name, status from v$instance;
package yang invalid statusnya artinya harus di patch ulang
dengan menjalankan dua script terakhir
utluxxx dan catpatch
Sabtu, 14 Agustus 2010
Oracle 10g Dbconsole: ERROR: NMO not setuid-root
Jalankan sebagai root
cd $ORACLE_HOME (your OEM HOME directory)
chmod 6750 bin/nm?
chmod 700 bin/emdctl
chmod 700 bin/emagent
chown root bin/nm?
sbagai oem user:
emctl stop agent
emctl start agent
cd $ORACLE_HOME (your OEM HOME directory)
chmod 6750 bin/nm?
chmod 700 bin/emdctl
chmod 700 bin/emagent
chown root bin/nm?
sbagai oem user:
emctl stop agent
emctl start agent
Jumat, 13 Agustus 2010
Langkah-langkah migrasi dari Oracle 9i ke oracle 10g dengan menggunakan dbua
1. Install Oracle 10g
a. Pada level OS membuat user baru untuk install oracle 10g, misalnya oracle10
b. Buat direktori baru khusus untuk oracle base dari oracle 10g
c. Ikuti langkah-langkah instalasi oracle 10g.
d. install juga oracle 10g companion untuk meng-install oracle ultra search.
2. Berikan permission 775 / 777 secara recursive kepada:
a. direktori oracle base oracle 9i
b. direktori oracle base oracle 10g
c. direktory yang menyimpan data-data file, redo log, control files dan
undo tablespace database di oracle 9i
3. Aktifkan database dalam oracle 9i (startup open).
4. Copy script utlu102i.sql ke direktory yang dapat dikases baik dari user oracle untuk
oracle 9i dan user untuk oracle 10g (dalam level OS).
5. Masuk ke SQL plus di oracle 9i.
SQL> spool info.log
SQL> @utlu102i.sql
SQL> spool off
6. Periksa hasil spool dan lakukan perbaikan sesuai dengan saran yang diberikan oleh
hasil verifikasi dari script yang baru saja dijalankan.
7. Sysaux tablespace dan setting initial parameter streams_pool_size akan dilakukan
secara otomatis oleh dbua.
8. Jalankan query berikut ini:
SELECT grantee FROM dba_role_privs
WHERE granted_role = 'CONNECT' and
grantee NOT IN (
'SYS', 'OUTLN', 'SYSTEM', 'CTXSYS', 'DBSNMP',
'LOGSTDBY_ADMINISTRATOR', 'ORDSYS',
'ORDPLUGINS', 'OEM_MONITOR', 'WKSYS', 'WKPROXY',
'WK_TEST', 'WKUSER', 'MDSYS', 'LBACSYS', 'DMSYS',
'WMSYS', 'OLAPDBA', 'OLAPSVR', 'OLAP_USER',
'OLAPSYS', 'EXFSYS', 'SYSMAN', 'MDDATA',
'SI_INFORMTN_SCHEMA', 'XDB', 'ODM');
9. Query diatas digunakan untuk melihat user-user mana saja dalam database yang mempunyai
role connect. Role connect di oracle 10g hanya mempunyai create session privilege.
10.Setelah upgrade selesai, user-user dari query diatas perlu di periksa apakah masih
memerlukan privilege lain dalam role connect.
11.Supaya proses migrasi cepat, lakukan
grant analyze any to sys;
exec dbms_stats.gather_schema_stats('WMSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('MDSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('CTXSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('XDB',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('WKSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('LBACSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('OLAPSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('DMSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('ODM',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('ORDSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('ORDPLUGINS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('SI_INFORMTN_SCHEMA',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('OUTLN',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('DBSNMP',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('SYSTEM',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('SYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
12.Hal ini dilakukan karena selama upgrade, oracle 10g akan menghitung statistik dari optimizer oracle 9i. agar proses migrasi cepat, perhitungan statistik
optimizer dilakukan sebelum proses migrasi.
13.Jalankan dbua.
14.Pilih option backup, jika belum dilakukan full backup physical.
15.Bila tidak muncul direktory database yang akan di migrasi, periksa list /etc/oratab
SID:direkri_database=N
16.Setelah proses migrasi selesai, buat tnsname di oracle10g.
a. Pada level OS membuat user baru untuk install oracle 10g, misalnya oracle10
b. Buat direktori baru khusus untuk oracle base dari oracle 10g
c. Ikuti langkah-langkah instalasi oracle 10g.
d. install juga oracle 10g companion untuk meng-install oracle ultra search.
2. Berikan permission 775 / 777 secara recursive kepada:
a. direktori oracle base oracle 9i
b. direktori oracle base oracle 10g
c. direktory yang menyimpan data-data file, redo log, control files dan
undo tablespace database di oracle 9i
3. Aktifkan database dalam oracle 9i (startup open).
4. Copy script utlu102i.sql ke direktory yang dapat dikases baik dari user oracle untuk
oracle 9i dan user untuk oracle 10g (dalam level OS).
5. Masuk ke SQL plus di oracle 9i.
SQL> spool info.log
SQL> @utlu102i.sql
SQL> spool off
6. Periksa hasil spool dan lakukan perbaikan sesuai dengan saran yang diberikan oleh
hasil verifikasi dari script yang baru saja dijalankan.
7. Sysaux tablespace dan setting initial parameter streams_pool_size akan dilakukan
secara otomatis oleh dbua.
8. Jalankan query berikut ini:
SELECT grantee FROM dba_role_privs
WHERE granted_role = 'CONNECT' and
grantee NOT IN (
'SYS', 'OUTLN', 'SYSTEM', 'CTXSYS', 'DBSNMP',
'LOGSTDBY_ADMINISTRATOR', 'ORDSYS',
'ORDPLUGINS', 'OEM_MONITOR', 'WKSYS', 'WKPROXY',
'WK_TEST', 'WKUSER', 'MDSYS', 'LBACSYS', 'DMSYS',
'WMSYS', 'OLAPDBA', 'OLAPSVR', 'OLAP_USER',
'OLAPSYS', 'EXFSYS', 'SYSMAN', 'MDDATA',
'SI_INFORMTN_SCHEMA', 'XDB', 'ODM');
9. Query diatas digunakan untuk melihat user-user mana saja dalam database yang mempunyai
role connect. Role connect di oracle 10g hanya mempunyai create session privilege.
10.Setelah upgrade selesai, user-user dari query diatas perlu di periksa apakah masih
memerlukan privilege lain dalam role connect.
11.Supaya proses migrasi cepat, lakukan
grant analyze any to sys;
exec dbms_stats.gather_schema_stats('WMSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('MDSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('CTXSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('XDB',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('WKSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('LBACSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('OLAPSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('DMSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('ODM',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('ORDSYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('ORDPLUGINS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('SI_INFORMTN_SCHEMA',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('OUTLN',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('DBSNMP',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('SYSTEM',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
exec dbms_stats.gather_schema_stats('SYS',options=>'GATHER', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);
12.Hal ini dilakukan karena selama upgrade, oracle 10g akan menghitung statistik dari optimizer oracle 9i. agar proses migrasi cepat, perhitungan statistik
optimizer dilakukan sebelum proses migrasi.
13.Jalankan dbua.
14.Pilih option backup, jika belum dilakukan full backup physical.
15.Bila tidak muncul direktory database yang akan di migrasi, periksa list /etc/oratab
SID:direkri_database=N
16.Setelah proses migrasi selesai, buat tnsname di oracle10g.
Rabu, 11 Agustus 2010
contoh query time different beda hari dalam detik yang dihitung jumlahnya
select beda_wkt, count(beda_wkt)
from
(
select (case when to_date(dtm2,'DD-MM-YYYY') <> to_date(dtm1,'DD-MM-YYYY') and to_date(dtm2,'DD-MM-YYYY') = to_date(dtm1,'DD-MM-YYYY')+1 then (to_number(to_char(dtm2,'SSSSS')) - to_number(to_char(dtm1,'SSSSS')))+86400 else to_number(to_char(dtm2,'SSSSS')) - to_number(to_char(dtm1,'SSSSS')) end) as beda_wkt from test2
)
group by beda_wkt;
from
(
select (case when to_date(dtm2,'DD-MM-YYYY') <> to_date(dtm1,'DD-MM-YYYY') and to_date(dtm2,'DD-MM-YYYY') = to_date(dtm1,'DD-MM-YYYY')+1 then (to_number(to_char(dtm2,'SSSSS')) - to_number(to_char(dtm1,'SSSSS')))+86400 else to_number(to_char(dtm2,'SSSSS')) - to_number(to_char(dtm1,'SSSSS')) end) as beda_wkt from test2
)
group by beda_wkt;
contoh query time different beda hari dalam detik
select (case when to_date(dtm2,'DD-MM-YYYY') <> to_date(dtm1,'DD-MM-YYYY') and to_date(dtm2,'DD-MM-YYYY') = to_date(dtm1,'DD-MM-YYYY')+1 then (to_number(to_char(dtm2,'SSSSS')) - to_number(to_char(dtm1,'SSSSS')))+86400 else to_number(to_char(dtm2,'SSSSS')) - to_number(to_char(dtm1,'SSSSS')) end) as beda_wkt from test2;
Selasa, 10 Agustus 2010
Patch oracle 10g ke release oracle 10g yang lebih tinggi
Langkah-langkahnya sbb:
1. Download patch
2. unzip patch tersebut.
Prinsip yang perlu diperhatikan:
Patch selalu pada orale home yang sama.
Migras1 selalu harus membuat oracle home yang baru
3. Matikan listener dari oracle database yang akan di patch.
4. Shutdown database yang yang akan di patch.
5. Masuk ke direktory patch diatas /Disk1
6. Jalankan ./runInstaller
7. Klik dan pilih option yang ditampilkan dari installer.
8. Jalankan script yang harus dijalankan dari root (spt root.sh)
9. Listener dijalankan
10. Startup database migrate
SQL> startup upgrade
Pada oracle 9i gunakan
SQL> startup migrate
11.Jalankan script berikut ini:
SQL> spool upgrade_info.log
SQL> @?/rdbms/admin/utlu102i.sql
SQL spool off
12.Bila telah selesai menjalankan script ini,perhatikan dari log
apakah terdapat error atau tidak. Bila terdapat error, ulangi
lagi proses menjalankan script ini. Bila ada table yg di lock,
maka kill/logout dari sesi itu.
13. Jalankan script berikut:
SQL> SPOOL patch.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> spool off
14.Bila telah selesai menjalankan script ini,perhatikan dari log
apakah terdapat error atau tidak. Bila terdapat error, ulangi
lagi proses menjalankan script ini. Bila ada table yg di lock,
maka kill/logout dari sesi itu.
13.shutdown database
14.startup database
15.jalankan script berikut ini utk memerika object yg invalid
SQL> @?/rdbms/admin/utlrp.sql
16.Memeriksa hasil patch
SQL> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;
COMP_NAME
SQL> select * from v$version;
1. Download patch
2. unzip patch tersebut.
Prinsip yang perlu diperhatikan:
Patch selalu pada orale home yang sama.
Migras1 selalu harus membuat oracle home yang baru
3. Matikan listener dari oracle database yang akan di patch.
4. Shutdown database yang yang akan di patch.
5. Masuk ke direktory patch diatas /Disk1
6. Jalankan ./runInstaller
7. Klik dan pilih option yang ditampilkan dari installer.
8. Jalankan script yang harus dijalankan dari root (spt root.sh)
9. Listener dijalankan
10. Startup database migrate
SQL> startup upgrade
Pada oracle 9i gunakan
SQL> startup migrate
11.Jalankan script berikut ini:
SQL> spool upgrade_info.log
SQL> @?/rdbms/admin/utlu102i.sql
SQL spool off
12.Bila telah selesai menjalankan script ini,perhatikan dari log
apakah terdapat error atau tidak. Bila terdapat error, ulangi
lagi proses menjalankan script ini. Bila ada table yg di lock,
maka kill/logout dari sesi itu.
13. Jalankan script berikut:
SQL> SPOOL patch.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> spool off
14.Bila telah selesai menjalankan script ini,perhatikan dari log
apakah terdapat error atau tidak. Bila terdapat error, ulangi
lagi proses menjalankan script ini. Bila ada table yg di lock,
maka kill/logout dari sesi itu.
13.shutdown database
14.startup database
15.jalankan script berikut ini utk memerika object yg invalid
SQL> @?/rdbms/admin/utlrp.sql
16.Memeriksa hasil patch
SQL> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;
COMP_NAME
SQL> select * from v$version;
Patch Oracle 9.2.0.4 ke Oracle 9.2.0.8
Langkah-langkahnya sbb:
1. Download patch p4547809_92080_linux
2. unzip patch tersebut.
Prinsip yang perlu diperhatikan:
Patch selalu pada orale home yang sama.
Migrasu selalu harus membuat oracle home yang baru
3. Matikan listener dari oracle database yang akan di patch.
4. Shutdown database yang yang akan di patch.
5. Masuk ke direktory patch diatas /Disk1
6. Jalankan ./runInstaller
7. Klik dan pilih option yang ditampilkan dari installer.
8. Jalankan script yang harus dijalankan dari root (spt root.sh)
9. Listener dijalankan
10. Startup database migrate
SQL> startup migrate
Pada oracle 10g gunakan
SQL> startup upgrade
11.Jalankan script berikut ini:
SQL> spool patch.log
SQL> @?/rdbms/admin/catpatch.log
12.Bila telah selesai menjalankan script ini,perhatikan dari log
apakah terdapat error atau tidak. Bila terdapat error, ulangi
lagi proses menjalankan script ini. Bila ada table yg di lock,
maka kill/logout dari sesi itu.
13.shutdown database
14.startup database
15.jalankan script berikut ini
SQL> @?/rdbms/admin/utlrp.sql
16.Memeriksa hasil patch
SQL> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;
COMP_NAME
SQL> select * from v$version;
1. Download patch p4547809_92080_linux
2. unzip patch tersebut.
Prinsip yang perlu diperhatikan:
Patch selalu pada orale home yang sama.
Migrasu selalu harus membuat oracle home yang baru
3. Matikan listener dari oracle database yang akan di patch.
4. Shutdown database yang yang akan di patch.
5. Masuk ke direktory patch diatas /Disk1
6. Jalankan ./runInstaller
7. Klik dan pilih option yang ditampilkan dari installer.
8. Jalankan script yang harus dijalankan dari root (spt root.sh)
9. Listener dijalankan
10. Startup database migrate
SQL> startup migrate
Pada oracle 10g gunakan
SQL> startup upgrade
11.Jalankan script berikut ini:
SQL> spool patch.log
SQL> @?/rdbms/admin/catpatch.log
12.Bila telah selesai menjalankan script ini,perhatikan dari log
apakah terdapat error atau tidak. Bila terdapat error, ulangi
lagi proses menjalankan script ini. Bila ada table yg di lock,
maka kill/logout dari sesi itu.
13.shutdown database
14.startup database
15.jalankan script berikut ini
SQL> @?/rdbms/admin/utlrp.sql
16.Memeriksa hasil patch
SQL> SELECT COMP_NAME, VERSION, STATUS FROM SYS.DBA_REGISTRY;
COMP_NAME
SQL> select * from v$version;
Minggu, 08 Agustus 2010
script utk mengetahui job yang sedang berjalan
set linesize 250
col log_user for a10
col job for 9999999 head 'Job'
col broken for a1 head 'B'
col failures for 99 head "fail"
col last_date for a18 head 'Last|Date'
col this_date for a18 head 'This|Date'
col next_date for a18 head 'Next|Date'
col interval for 9999.000 head 'Run|Interval'
col what for a60
select j.log_user,
j.job,
j.broken,
j.failures,
j.last_date||':'||j.last_sec last_date,
j.this_date||':'||j.this_sec this_date,
j.next_date||':'||j.next_sec next_date,
j.next_date - j.last_date interval,
j.what
from (select dj.LOG_USER, dj.JOB, dj.BROKEN, dj.FAILURES,
dj.LAST_DATE, dj.LAST_SEC, dj.THIS_DATE, dj.THIS_SEC,
dj.NEXT_DATE, dj.NEXT_SEC, dj.INTERVAL, dj.WHAT
from dba_jobs dj) j;
col log_user for a10
col job for 9999999 head 'Job'
col broken for a1 head 'B'
col failures for 99 head "fail"
col last_date for a18 head 'Last|Date'
col this_date for a18 head 'This|Date'
col next_date for a18 head 'Next|Date'
col interval for 9999.000 head 'Run|Interval'
col what for a60
select j.log_user,
j.job,
j.broken,
j.failures,
j.last_date||':'||j.last_sec last_date,
j.this_date||':'||j.this_sec this_date,
j.next_date||':'||j.next_sec next_date,
j.next_date - j.last_date interval,
j.what
from (select dj.LOG_USER, dj.JOB, dj.BROKEN, dj.FAILURES,
dj.LAST_DATE, dj.LAST_SEC, dj.THIS_DATE, dj.THIS_SEC,
dj.NEXT_DATE, dj.NEXT_SEC, dj.INTERVAL, dj.WHAT
from dba_jobs dj) j;
script untuk mengetahui session dan sql statement yg sedang berjalan
col sid format '9999'
col serial format '999'
col username format a9
col TIME format a20
col status format a8
col program format a28
col sql_text format a40
select a.sid, a.Serial#, a.username,
to_char(a.logon_time,'DD-MM-YYYY hh:mm:ss') as TIME,
a.status, a.program,
b.sql_text
from v$session a, v$sqlarea b
where
a.sql_address=b.address
and
a.username is not NULL
order by 4 desc;
col serial format '999'
col username format a9
col TIME format a20
col status format a8
col program format a28
col sql_text format a40
select a.sid, a.Serial#, a.username,
to_char(a.logon_time,'DD-MM-YYYY hh:mm:ss') as TIME,
a.status, a.program,
b.sql_text
from v$session a, v$sqlarea b
where
a.sql_address=b.address
and
a.username is not NULL
order by 4 desc;
Jumat, 06 Agustus 2010
script mengetahui job
set linesize 250
col log_user for a10
col job for 9999999 head 'Job'
col broken for a1 head 'B'
col failures for 99 head "fail"
col last_date for a18 head 'Last|Date'
col this_date for a18 head 'This|Date'
col next_date for a18 head 'Next|Date'
col interval for 9999.000 head 'Run|Interval'
col what for a60
select j.log_user,
j.job,
j.broken,
j.failures,
j.last_date||':'||j.last_sec last_date,
j.this_date||':'||j.this_sec this_date,
j.next_date||':'||j.next_sec next_date,
j.next_date - j.last_date interval,
j.what
from (select dj.LOG_USER, dj.JOB, dj.BROKEN, dj.FAILURES,
dj.LAST_DATE, dj.LAST_SEC, dj.THIS_DATE, dj.THIS_SEC,
dj.NEXT_DATE, dj.NEXT_SEC, dj.INTERVAL, dj.WHAT
from dba_jobs dj) j;
col log_user for a10
col job for 9999999 head 'Job'
col broken for a1 head 'B'
col failures for 99 head "fail"
col last_date for a18 head 'Last|Date'
col this_date for a18 head 'This|Date'
col next_date for a18 head 'Next|Date'
col interval for 9999.000 head 'Run|Interval'
col what for a60
select j.log_user,
j.job,
j.broken,
j.failures,
j.last_date||':'||j.last_sec last_date,
j.this_date||':'||j.this_sec this_date,
j.next_date||':'||j.next_sec next_date,
j.next_date - j.last_date interval,
j.what
from (select dj.LOG_USER, dj.JOB, dj.BROKEN, dj.FAILURES,
dj.LAST_DATE, dj.LAST_SEC, dj.THIS_DATE, dj.THIS_SEC,
dj.NEXT_DATE, dj.NEXT_SEC, dj.INTERVAL, dj.WHAT
from dba_jobs dj) j;
script persentase free tablespace (lanjutan 2)
SET LINESIZE 135
SET PAGESIZE 9999
SET VERIFY OFF
COLUMN status FORMAT a9 HEADING 'Status'
COLUMN name FORMAT a15 HEADING 'Tablespace Name'
COLUMN type FORMAT a12 HEADING 'TS Type'
COLUMN extent_mgt FORMAT a10 HEADING 'Ext. Mgt.'
COLUMN segment_mgt FORMAT a9 HEADING 'Seg. Mgt.'
COLUMN ts_size FORMAT 9,999,999,999,999 HEADING 'Tablespace Size'
COLUMN used FORMAT 9,999,999,999,999 HEADING 'Used (in bytes)'
COLUMN free FORMAT 9,999,999,999,999 HEADING 'Free (in bytes)'
COLUMN pct_used FORMAT 999 HEADING 'Pct. Used'
BREAK ON report
COMPUTE SUM OF ts_size ON report
COMPUTE SUM OF used ON report
COMPUTE SUM OF free ON report
COMPUTE AVG OF pct_used ON report
SELECT
d.status status
, d.tablespace_name name
, d.contents type
, d.extent_management extent_mgt
, d.segment_space_management segment_mgt
, NVL(a.bytes, 0) ts_size
, NVL(a.bytes - NVL(f.bytes, 0), 0) used
-- , NVL(f.bytes, 0) free
, NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0) pct_used
FROM
sys.dba_tablespaces d
, ( select tablespace_name, sum(bytes) bytes
from dba_data_files
group by tablespace_name
) a
, ( select tablespace_name, sum(bytes) bytes
from dba_free_space
group by tablespace_name
) f
WHERE
d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = f.tablespace_name(+)
AND NOT (
d.extent_management like 'LOCAL'
AND
d.contents like 'TEMPORARY'
)
UNION ALL
SELECT
d.status status
, d.tablespace_name name
, d.contents type
, d.extent_management extent_mgt
, d.segment_space_management segment_mgt
, NVL(a.bytes, 0) ts_size
, NVL(t.bytes, 0) used
-- , NVL(a.bytes - NVL(t.bytes,0), 0) free
, NVL(t.bytes / a.bytes * 100, 0) pct_used
FROM
sys.dba_tablespaces d
, ( select tablespace_name, sum(bytes) bytes
from dba_temp_files
group by tablespace_name
) a
, ( select tablespace_name, sum(bytes_cached) bytes
from v$temp_extent_pool
group by tablespace_name
) t
WHERE
d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = t.tablespace_name(+)
AND d.extent_management like 'LOCAL'
AND d.contents like 'TEMPORARY'
/
SET PAGESIZE 9999
SET VERIFY OFF
COLUMN status FORMAT a9 HEADING 'Status'
COLUMN name FORMAT a15 HEADING 'Tablespace Name'
COLUMN type FORMAT a12 HEADING 'TS Type'
COLUMN extent_mgt FORMAT a10 HEADING 'Ext. Mgt.'
COLUMN segment_mgt FORMAT a9 HEADING 'Seg. Mgt.'
COLUMN ts_size FORMAT 9,999,999,999,999 HEADING 'Tablespace Size'
COLUMN used FORMAT 9,999,999,999,999 HEADING 'Used (in bytes)'
COLUMN free FORMAT 9,999,999,999,999 HEADING 'Free (in bytes)'
COLUMN pct_used FORMAT 999 HEADING 'Pct. Used'
BREAK ON report
COMPUTE SUM OF ts_size ON report
COMPUTE SUM OF used ON report
COMPUTE SUM OF free ON report
COMPUTE AVG OF pct_used ON report
SELECT
d.status status
, d.tablespace_name name
, d.contents type
, d.extent_management extent_mgt
, d.segment_space_management segment_mgt
, NVL(a.bytes, 0) ts_size
, NVL(a.bytes - NVL(f.bytes, 0), 0) used
-- , NVL(f.bytes, 0) free
, NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0) pct_used
FROM
sys.dba_tablespaces d
, ( select tablespace_name, sum(bytes) bytes
from dba_data_files
group by tablespace_name
) a
, ( select tablespace_name, sum(bytes) bytes
from dba_free_space
group by tablespace_name
) f
WHERE
d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = f.tablespace_name(+)
AND NOT (
d.extent_management like 'LOCAL'
AND
d.contents like 'TEMPORARY'
)
UNION ALL
SELECT
d.status status
, d.tablespace_name name
, d.contents type
, d.extent_management extent_mgt
, d.segment_space_management segment_mgt
, NVL(a.bytes, 0) ts_size
, NVL(t.bytes, 0) used
-- , NVL(a.bytes - NVL(t.bytes,0), 0) free
, NVL(t.bytes / a.bytes * 100, 0) pct_used
FROM
sys.dba_tablespaces d
, ( select tablespace_name, sum(bytes) bytes
from dba_temp_files
group by tablespace_name
) a
, ( select tablespace_name, sum(bytes_cached) bytes
from v$temp_extent_pool
group by tablespace_name
) t
WHERE
d.tablespace_name = a.tablespace_name(+)
AND d.tablespace_name = t.tablespace_name(+)
AND d.extent_management like 'LOCAL'
AND d.contents like 'TEMPORARY'
/
script persentase free tablespace (lanjutan 1)
tti "Space Usage for Database in Meg"
SELECT Total.name "Tablespace Name",
nvl(Free_space, 0) Free_space,
nvl(total_space-Free_space, 0) Used_space,
total_space
FROM
(select tablespace_name, sum(bytes/1024/1024) Free_Space
from sys.dba_free_space
group by tablespace_name
) Free,
(select b.name, sum(bytes/1024/1024) TOTAL_SPACE
from sys.v_$datafile a, sys.v_$tablespace B
where a.ts# = b.ts#
group by b.name
) Total
WHERE Free.Tablespace_name(+) = Total.name
ORDER BY Total.name
/
tti off
SELECT Total.name "Tablespace Name",
nvl(Free_space, 0) Free_space,
nvl(total_space-Free_space, 0) Used_space,
total_space
FROM
(select tablespace_name, sum(bytes/1024/1024) Free_Space
from sys.dba_free_space
group by tablespace_name
) Free,
(select b.name, sum(bytes/1024/1024) TOTAL_SPACE
from sys.v_$datafile a, sys.v_$tablespace B
where a.ts# = b.ts#
group by b.name
) Total
WHERE Free.Tablespace_name(+) = Total.name
ORDER BY Total.name
/
tti off
script persentase free tablespace
clear buffer
clear columns
clear breaks
set linesize 500
set pagesize 5000
column a1 heading 'Tablespace' format a15
column a2 heading 'Data File' format a45
column a3 heading 'Total|Space [MB]' format 99999.99
column a4 heading 'Free|Space [MB]' format 99999.99
column a5 heading 'Free|%' format 9999.99
break on a1 on report
compute sum of a3 on a1
compute sum of a4 on a1
compute sum of a3 on report
compute sum of a4 on report
SELECT a.tablespace_name a1,
a.file_name a2,
a.avail a3,
NVL(b.free,0) a4,
NVL(ROUND(((free/avail)*100),2),0) a5
FROM (SELECT tablespace_name,
SUBSTR(file_name,1,45) file_name,
file_id,
ROUND(SUM(bytes/(1024*1024)),3) avail
FROM sys.dba_data_files
GROUP BY tablespace_name,
SUBSTR(file_name,1,45),
file_id) a,
(SELECT tablespace_name,
file_id,
ROUND(SUM(bytes/(1024*1024)),3) free
FROM sys.dba_free_space
GROUP BY tablespace_name, file_id) b
WHERE a.file_id = b.file_id (+)
ORDER BY 1, 2
/
clear columns
clear breaks
set linesize 500
set pagesize 5000
column a1 heading 'Tablespace' format a15
column a2 heading 'Data File' format a45
column a3 heading 'Total|Space [MB]' format 99999.99
column a4 heading 'Free|Space [MB]' format 99999.99
column a5 heading 'Free|%' format 9999.99
break on a1 on report
compute sum of a3 on a1
compute sum of a4 on a1
compute sum of a3 on report
compute sum of a4 on report
SELECT a.tablespace_name a1,
a.file_name a2,
a.avail a3,
NVL(b.free,0) a4,
NVL(ROUND(((free/avail)*100),2),0) a5
FROM (SELECT tablespace_name,
SUBSTR(file_name,1,45) file_name,
file_id,
ROUND(SUM(bytes/(1024*1024)),3) avail
FROM sys.dba_data_files
GROUP BY tablespace_name,
SUBSTR(file_name,1,45),
file_id) a,
(SELECT tablespace_name,
file_id,
ROUND(SUM(bytes/(1024*1024)),3) free
FROM sys.dba_free_space
GROUP BY tablespace_name, file_id) b
WHERE a.file_id = b.file_id (+)
ORDER BY 1, 2
/
lokasi data file
select file_name, tablespace_name
from
dba_data_files
order by 1 asc;
select file_name
from
dba_data_files
order by 1 asc;
from
dba_data_files
order by 1 asc;
select file_name
from
dba_data_files
order by 1 asc;
Query busy connection
SQL> SELECT
2 name s_name
3 , ROUND(busy / (busy + idle) * 100, 2) s_busy
4 FROM v$shared_server
5 ORDER BY name;
S_NA S_BUSY
---- ----------
S000 100
S001 99.68
S002 99.89
S003 100
S004 99.92
S005 99.78
S006 99.97
S007 99.98
S008 99.96
S009 99.95
S010 99.86
S_NA S_BUSY
---- ----------
S011 99.84
S012 99.87
S013 99.8
S014 99.82
S015 99.93
S016 99.7
S017 99.98
S018 99.99
S019 99.98
20 rows selected.
2 name s_name
3 , ROUND(busy / (busy + idle) * 100, 2) s_busy
4 FROM v$shared_server
5 ORDER BY name;
S_NA S_BUSY
---- ----------
S000 100
S001 99.68
S002 99.89
S003 100
S004 99.92
S005 99.78
S006 99.97
S007 99.98
S008 99.96
S009 99.95
S010 99.86
S_NA S_BUSY
---- ----------
S011 99.84
S012 99.87
S013 99.8
S014 99.82
S015 99.93
S016 99.7
S017 99.98
S018 99.99
S019 99.98
20 rows selected.
Create dblink
create public database link
mylink
connect to
remote_username
identified by
mypassword
using 'tns_service_name';
mylink
connect to
remote_username
identified by
mypassword
using 'tns_service_name';
Kamis, 05 Agustus 2010
Deteksi Lock
set linesize 150
set pages 100
col name for a21 head "Locked Object"
col session_id for 99999 head SID
col serial# for 99999 head SER#
col oracle_username for a12 head "Locking User"
col lock_type for a12 head "Lock Type"
col mode_held for a12 head "Mode Held"
col event for a30
SELECT a.session_id, b.serial#, a.oracle_username, c.name,
decode(d.type,
'MR', 'Media Recovery',
'RT', 'Redo Thread',
'UN', 'User Name',
'TX', 'Transaction',
'TM', 'DML',
'UL', 'PL/SQL User Lock',
'DX', 'Distrib Xaction',
'CF', 'Control File',
'IS', 'Instance State',
'FS', 'File Set',
'IR', 'Instance Recovery',
'ST', 'Disk Space Transaction',
'TS', 'Temp Segment',
'IV', 'Library Cache Invalidation',
'LS', 'Log Start or Switch',
'RW', 'Row Wait',
'SQ', 'Sequence Number',
'TE', 'Extend Table',
'TT', 'Temp Table',
d.type) lock_type,
decode(d.lmode,
0, 'None', /* Mon Lock equivalent */
1, 'Null', /* N */
2, 'Row-S (SS)', /* L */
3, 'Row-X (SX)', /* R */
4, 'Share', /* S */
5, 'S/Row-X (SSX)', /* C */
6, 'Exclusive', /* X */
to_char(d.lmode)) mode_held,
e.event, e.SECONDS_IN_WAIT "Wait(Seconds)"
FROM sys.obj$ c, v$session b, v$locked_object a,
sys.v_$lock d, v$session_wait e
WHERE a.session_id=b.sid
AND b.sid=e.sid
AND c.obj#=a.object_id
AND a.object_id=d.id1
AND b.sid=d.sid
order by e.SECONDS_IN_WAIT desc
;
set pages 100
col name for a21 head "Locked Object"
col session_id for 99999 head SID
col serial# for 99999 head SER#
col oracle_username for a12 head "Locking User"
col lock_type for a12 head "Lock Type"
col mode_held for a12 head "Mode Held"
col event for a30
SELECT a.session_id, b.serial#, a.oracle_username, c.name,
decode(d.type,
'MR', 'Media Recovery',
'RT', 'Redo Thread',
'UN', 'User Name',
'TX', 'Transaction',
'TM', 'DML',
'UL', 'PL/SQL User Lock',
'DX', 'Distrib Xaction',
'CF', 'Control File',
'IS', 'Instance State',
'FS', 'File Set',
'IR', 'Instance Recovery',
'ST', 'Disk Space Transaction',
'TS', 'Temp Segment',
'IV', 'Library Cache Invalidation',
'LS', 'Log Start or Switch',
'RW', 'Row Wait',
'SQ', 'Sequence Number',
'TE', 'Extend Table',
'TT', 'Temp Table',
d.type) lock_type,
decode(d.lmode,
0, 'None', /* Mon Lock equivalent */
1, 'Null', /* N */
2, 'Row-S (SS)', /* L */
3, 'Row-X (SX)', /* R */
4, 'Share', /* S */
5, 'S/Row-X (SSX)', /* C */
6, 'Exclusive', /* X */
to_char(d.lmode)) mode_held,
e.event, e.SECONDS_IN_WAIT "Wait(Seconds)"
FROM sys.obj$ c, v$session b, v$locked_object a,
sys.v_$lock d, v$session_wait e
WHERE a.session_id=b.sid
AND b.sid=e.sid
AND c.obj#=a.object_id
AND a.object_id=d.id1
AND b.sid=d.sid
order by e.SECONDS_IN_WAIT desc
;
Lock session?
SELECT a.sid "Locking Sid (yang nge-lock)",
b.sid "Locked SID (Sedang Menunggu)"
FROM v$lock a , v$lock b
WHERE a.id1=b.id1
AND a.id2=b.id2
AND a.request=0
AND b.lmode=0
;
b.sid "Locked SID (Sedang Menunggu)"
FROM v$lock a , v$lock b
WHERE a.id1=b.id1
AND a.id2=b.id2
AND a.request=0
AND b.lmode=0
;
Blocking Session?
SELECT SUBSTR(TO_CHAR(session_id),1,5) "SID",
SUBSTR(lock_type,1,15) "Lock Type",
SUBSTR(mode_held,1,15) "Mode Held",
SUBSTR(blocking_others,1,15) "Blocking?"
FROM dba_locks
/
SUBSTR(lock_type,1,15) "Lock Type",
SUBSTR(mode_held,1,15) "Mode Held",
SUBSTR(blocking_others,1,15) "Blocking?"
FROM dba_locks
/
Rabu, 04 Agustus 2010
contoh pivoting dan case when (table berbentuk matrix)
select categori,
jam1_2,
jam2_3
from
(
select categori,
count(case when dtm between (trunc(sysdate)+1/24) and (trunc(sysdate)+2/24) then 'A' else null end) as jam1_2,
count(case when dtm between (trunc(sysdate)+2/24) and (trunc(sysdate)+3/24) then 'B' else null end) as jam2_3
from test1
group by categori
);
jam1_2,
jam2_3
from
(
select categori,
count(case when dtm between (trunc(sysdate)+1/24) and (trunc(sysdate)+2/24) then 'A' else null end) as jam1_2,
count(case when dtm between (trunc(sysdate)+2/24) and (trunc(sysdate)+3/24) then 'B' else null end) as jam2_3
from test1
group by categori
);
Selasa, 20 Juli 2010
Query untuk Detail tanggal dan waktu
Dari query sbb:
SELECT COUNT (*) FROM BODES_SUBSCRIPTION WHERE NEXT_RENEWAL between to_date('20100719 000000','YYYYMMDD HH24MISS')and to_date('20100719 235959','YYYYMMDD HH24MISS') AND SUBSCRIPTION_STATUS = 'ACTIVE'
Supaya menjadi otomatis mengeluarkan query perhari, maka querynya diubah menjadi sbb:
SELECT COUNT (*) FROM BODES_SUBSCRIPTION
WHERE NEXT_RENEWAL
between trunc(sysdate) and trunc(sysdate+1)
AND
SUBSCRIPTION_STATUS = 'ACTIVE'
SELECT COUNT (*) FROM BODES_SUBSCRIPTION WHERE NEXT_RENEWAL between to_date('20100719 000000','YYYYMMDD HH24MISS')and to_date('20100719 235959','YYYYMMDD HH24MISS') AND SUBSCRIPTION_STATUS = 'ACTIVE'
Supaya menjadi otomatis mengeluarkan query perhari, maka querynya diubah menjadi sbb:
SELECT COUNT (*) FROM BODES_SUBSCRIPTION
WHERE NEXT_RENEWAL
between trunc(sysdate) and trunc(sysdate+1)
AND
SUBSCRIPTION_STATUS = 'ACTIVE'
Senin, 19 Juli 2010
script full backup offline dari sqlplus
set feedback off
set heading off
set verify off
set trimspool off
set pagesize 0
set linesize 200
define dir = '/..../.../..'
define fil = '/..../.../..'
prompt *** spooling to &fil
spool &fil
select 'host cp '|| name ||' &dir' from v$datafile order by 1;
select 'host cp '|| member ||' &dir' from v$logfile order by 1;
select 'host cp '|| name ||' &dir' from v$controlfile order by 1;
select 'host cp '|| name ||' &dir' from v$tempfile order by 1;
spool off;
shutdown immediate;
@fil
startup
set heading off
set verify off
set trimspool off
set pagesize 0
set linesize 200
define dir = '/..../.../..'
define fil = '/..../.../..'
prompt *** spooling to &fil
spool &fil
select 'host cp '|| name ||' &dir' from v$datafile order by 1;
select 'host cp '|| member ||' &dir' from v$logfile order by 1;
select 'host cp '|| name ||' &dir' from v$controlfile order by 1;
select 'host cp '|| name ||' &dir' from v$tempfile order by 1;
spool off;
shutdown immediate;
@fil
startup
shell script untuk export
#!/bin/sh
exp system/oracle@vasmdb1 file=/oracle/index6/vascore0100719bag1.dmp log=/oracle/index6/vascore20100719bag1.log tables=('VASMCORE.TBLTRANSMITTER','VASMCORE.16.507','VASMCORE.16.599292','VASMCORE.90.196619','VASMCORE.21.11','VASMCORE.21.19','VASMCORE.21.27');
Script diatas dijalankan dengan background proses
nohup nama_file.sh &
exp system/oracle@vasmdb1 file=/oracle/index6/vascore0100719bag1.dmp log=/oracle/index6/vascore20100719bag1.log tables=('VASMCORE.TBLTRANSMITTER','VASMCORE.16.507','VASMCORE.16.599292','VASMCORE.90.196619','VASMCORE.21.11','VASMCORE.21.19','VASMCORE.21.27');
Script diatas dijalankan dengan background proses
nohup nama_file.sh &
scrip backup level 0 / full online backup dengan RMAN
export ORACLE_SID=orcl
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
BCK=`date "+%Y%m%d"`
mkdir /home/oracle/backup/BACKUP_FULL/backup_full_$BCK
mkdir /home/oracle/backup/BACKUP_FULL/backup_full_$BCK/datafile
mkdir /home/oracle/backup/BACKUP_FULL/backup_full_$BCK/cfile
mkdir /home/oracle/backup/BACKUP_FULL/backup_full_$BCK/archive
/u01/app/oracle/product/10.2.0/db_1/bin/rman target / LOG=/home/oracle/backup/BACKUP_FULL/LOG_BACKUP/backup_full_$BCK.log << EOF
run
{
allocate channel bck1 type disk;
allocate channel bck2 type disk;
allocate channel bck3 type disk;
backup
incremental level 0
tag full_backup
format '/home/oracle/backup/BACKUP_FULL/backup_full_$BCK/datafile/df_full_%T_d%d_p%p_u%u_c%c.bak'
(database);
backup
incremental level 0
tag full_backup
format '/home/oracle/backup/BACKUP_FULL/backup_full_$BCK/cfile/cf_full_%T_d%d_p%p_u%u_c%c.bak'
(current controlfile);
backup
tag full_backup
format '/home/oracle/backup/BACKUP_FULL/backup_full_$BCK/archive/arclog_full_%T_d%d_p%p_u%u_c%c.bak'
(archivelog all);
release channel bck1;
release channel bck2;
release channel bck3;
DELETE NOPROMPT OBSOLETE;
}
EOF
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
BCK=`date "+%Y%m%d"`
mkdir /home/oracle/backup/BACKUP_FULL/backup_full_$BCK
mkdir /home/oracle/backup/BACKUP_FULL/backup_full_$BCK/datafile
mkdir /home/oracle/backup/BACKUP_FULL/backup_full_$BCK/cfile
mkdir /home/oracle/backup/BACKUP_FULL/backup_full_$BCK/archive
/u01/app/oracle/product/10.2.0/db_1/bin/rman target / LOG=/home/oracle/backup/BACKUP_FULL/LOG_BACKUP/backup_full_$BCK.log << EOF
run
{
allocate channel bck1 type disk;
allocate channel bck2 type disk;
allocate channel bck3 type disk;
backup
incremental level 0
tag full_backup
format '/home/oracle/backup/BACKUP_FULL/backup_full_$BCK/datafile/df_full_%T_d%d_p%p_u%u_c%c.bak'
(database);
backup
incremental level 0
tag full_backup
format '/home/oracle/backup/BACKUP_FULL/backup_full_$BCK/cfile/cf_full_%T_d%d_p%p_u%u_c%c.bak'
(current controlfile);
backup
tag full_backup
format '/home/oracle/backup/BACKUP_FULL/backup_full_$BCK/archive/arclog_full_%T_d%d_p%p_u%u_c%c.bak'
(archivelog all);
release channel bck1;
release channel bck2;
release channel bck3;
DELETE NOPROMPT OBSOLETE;
}
EOF
Rabu, 07 Juli 2010
Merubah nilai parameter SGA_MAX_SIZE dan SGA_TARGET
Merubah nilai parameter SGA_MAX_SIZE dan SGA_TARGET
Perubahan alokasi memory di oracle database versi 10g ke atas di tentukan oleh
parameter sga_max_size dan sga_target.
Sebelum parameter ini dirubah, perlu diperhatikan hal-hal sbb:
1. Periksa kapasitas memory dari server tsb.
2. Periksa nilai shmmax dari kernel.
3. Perhitungkan alokasi penggunaan memory untuk oracle dan OS.
Apabila dalam server tersebut disatukan dengan applikasi,
maka perhitungkan kebutuhan applikasi, oracle dan OS.
4. Aturan dasar alokasi memory oracle di OS adalah sbb:
Nilai shmmax di kernel merupakan jumlah maksimal memory yang
dialokasikan untuk oracle database.
5. SGA_MAX_SIZE sebaiknya di tetapkan pada nilai lebih kecil
atau sama dengan nilai shmmax.
6. SGA_TARGET adalah parameter oracle yang mengalokasikan
jumlah maksimal memory yang di manage secara otomatis oleh
oracle.
7. Nilai dari SGA_TARGET sebaiknya ditetapkan lebih kecil atau
sama dengan SGA_MAX_SIZE.
8. Komponen memory yang di manage secara otomatis oleh oracle
melalui parameter SGA_TARGET adalah sbb:
a. DB_CACHE_SIZE,
b. SHARED_POOL_SIZE,
c. LARGE_POOL_SIZE,
d. JAVA_POOL_SIZE,
e. STREAMS_POOL_SIZE
9. Bila SGA_TARGET di set pada nilai 0, maka oracle tidak akan
memanage memory secara otomatis. Parameter berikut ini
harus di set secara manual
a. DB_CACHE_SIZE,
b. SHARED_POOL_SIZE,
c. LARGE_POOL_SIZE,
d. JAVA_POOL_SIZE,
e. STREAMS_POOL_SIZE
Perubahan parameter SGA_MAX_SIZE dan dan SGA_TARGET
memerlukan restart database. Prosesnya adalah sbb:
1. SQL> show parameter sga
2. Perintah diatas untuk memastikan nilai parameter SGA sekarang.
3. SQL> alter system set sga_max_size=5000M scope=spfile;
4. SQL> alter system set sga_target=5000M scope=spfile;
5. Create pfile dari spfile agar nilai dari parameter-parameter yang telah
dilakukan perubahan secara dinamis dapat di catat pada pfile.
SQL> create pfile='/opt/mnt3/dbs/initSID.ora' from spfile;
6. Restart database
SQL> shutdown immediate
SQL> startup
7. Bila proses restart database hang, maka nilai parameter
SGA_MAX_SIZE yang telah di set terlampau besar dan
melebihi kapasitas memory yang ada.
8. Bila hal ini terjadi,
a. Shut down abort database
SQL> shutdown abort;
b. Edit initial parameter yang telah dibuat pada tahap no.5.
Turunkan nilai SGA_MAX_SIZE dan SGA_TARGET.
c. Startup database dengan menggunakan pfile.
SQL> startup pfile='/opt/mnt3/dbs/iniSID.ora'
d. Setelah database dalam mode 'open'
(1) Periksa alokasi memory.
SQL> show parameter sga
(2) Membuat spfile dari pfile, agar oracle dapat di startup
dengan menggunakan spfile.
SQL> create spfile from pfile;
(3) Restart database
SQL> shutdown immediate
(4) Starup database
SQL> startup
(5) Periksa nilai parameter
SQL> show parameter sga
Perubahan alokasi memory di oracle database versi 10g ke atas di tentukan oleh
parameter sga_max_size dan sga_target.
Sebelum parameter ini dirubah, perlu diperhatikan hal-hal sbb:
1. Periksa kapasitas memory dari server tsb.
2. Periksa nilai shmmax dari kernel.
3. Perhitungkan alokasi penggunaan memory untuk oracle dan OS.
Apabila dalam server tersebut disatukan dengan applikasi,
maka perhitungkan kebutuhan applikasi, oracle dan OS.
4. Aturan dasar alokasi memory oracle di OS adalah sbb:
Nilai shmmax di kernel merupakan jumlah maksimal memory yang
dialokasikan untuk oracle database.
5. SGA_MAX_SIZE sebaiknya di tetapkan pada nilai lebih kecil
atau sama dengan nilai shmmax.
6. SGA_TARGET adalah parameter oracle yang mengalokasikan
jumlah maksimal memory yang di manage secara otomatis oleh
oracle.
7. Nilai dari SGA_TARGET sebaiknya ditetapkan lebih kecil atau
sama dengan SGA_MAX_SIZE.
8. Komponen memory yang di manage secara otomatis oleh oracle
melalui parameter SGA_TARGET adalah sbb:
a. DB_CACHE_SIZE,
b. SHARED_POOL_SIZE,
c. LARGE_POOL_SIZE,
d. JAVA_POOL_SIZE,
e. STREAMS_POOL_SIZE
9. Bila SGA_TARGET di set pada nilai 0, maka oracle tidak akan
memanage memory secara otomatis. Parameter berikut ini
harus di set secara manual
a. DB_CACHE_SIZE,
b. SHARED_POOL_SIZE,
c. LARGE_POOL_SIZE,
d. JAVA_POOL_SIZE,
e. STREAMS_POOL_SIZE
Perubahan parameter SGA_MAX_SIZE dan dan SGA_TARGET
memerlukan restart database. Prosesnya adalah sbb:
1. SQL> show parameter sga
2. Perintah diatas untuk memastikan nilai parameter SGA sekarang.
3. SQL> alter system set sga_max_size=5000M scope=spfile;
4. SQL> alter system set sga_target=5000M scope=spfile;
5. Create pfile dari spfile agar nilai dari parameter-parameter yang telah
dilakukan perubahan secara dinamis dapat di catat pada pfile.
SQL> create pfile='/opt/mnt3/dbs/initSID.ora' from spfile;
6. Restart database
SQL> shutdown immediate
SQL> startup
7. Bila proses restart database hang, maka nilai parameter
SGA_MAX_SIZE yang telah di set terlampau besar dan
melebihi kapasitas memory yang ada.
8. Bila hal ini terjadi,
a. Shut down abort database
SQL> shutdown abort;
b. Edit initial parameter yang telah dibuat pada tahap no.5.
Turunkan nilai SGA_MAX_SIZE dan SGA_TARGET.
c. Startup database dengan menggunakan pfile.
SQL> startup pfile='/opt/mnt3/dbs/iniSID.ora'
d. Setelah database dalam mode 'open'
(1) Periksa alokasi memory.
SQL> show parameter sga
(2) Membuat spfile dari pfile, agar oracle dapat di startup
dengan menggunakan spfile.
SQL> create spfile from pfile;
(3) Restart database
SQL> shutdown immediate
(4) Starup database
SQL> startup
(5) Periksa nilai parameter
SQL> show parameter sga
Selasa, 06 Juli 2010
Bagaimana menyelesaikan permasalahan ORA-00604 dan ORA-00018?
Bila user tidak bisa melakukan koneksi ke database baik dari applikasi maupun sqlplus,
dengan error sbb:
1. Dari sqplus.
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Jul 7 09:47:03 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
ERROR:
ORA-01075: you are currently logged on
2. Dari alert log.
Wed Jul 7 10:02:05 2010
Errors in file /rdbms/oracle/admin/maddb/bdump/maddb_smon_19067.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-00018: maximum number of sessions exceeded
3. Dari RMAN
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04005: error from target database:
ORA-00604: error occurred at recursive SQL level 1
ORA-00018: maximum number of sessions exceeded
Maka DBA perlu memeriksa hal-hal sbb:
1. Periksa arti dari ORA-00604 dan ORA-00018.
Dokumentasi oracle yang bisa di download dari OTN, dapat kita pergunakan untuk
mengetahui arti dari pesan error ini atau bisa juga dengan cara mencari
informasi pesan error ini melalui google.
Berikut ini adalah arti dari pesan error ORA-00064 dan ORA-00018:
ORA-00604: error occurred at recursive SQL level 1
Cause: An error occurred while processing a recursive SQL statement.
A recursive SQL statement is one that applies to internal
dictionary tables.
Action: If the situation described in the next message on the stack can
be corrected, do so; otherwise, contact customer support.
ORA-00018: maximum number of sessions exceeded
Cause: An operation requested a resource that was unavailable.
The maximum number of sessions is specified by the
initialization parameter SESSIONS.
When this maximum is reached, no more requests are processed.
Action: Try the operation again in a few minutes.
If this message occurs often, shut down Oracle, increase the
SESSIONS parameter in the initialization parameter file, and
restart Oracle.
2. Penjelasan dari pesan error itu berdasarkan metalink doc.id 419130.1 adalah sbb:
sesi (oracle session) dari seluruh user telah mendekati atau sama dengan
nilai session pada initial parameter.
Untuk memeriksa hal ini, lakukan hal-hal sbb:
SQL> show parameter sessions
SQL> show parameter processes
Parameter sessions menunjukkan maksimal session yang bisa terhubung ke database.
SQL> select count(*) from v$session;
Query ini digunakan untuk menghitung banyaknya sesi (oracle session) yang sedang
terhubung ke oracle database.
Error ini akan muncul pada kondisi sbb:
nilai dari ( select count(*) from v$session ) mendekati atau sama dengan ( show parameter
sessions ).
3. Bila kondisi diatas (pada point no.2) terpenuhi, maka solusinya adalah merubah nilai
parameter session pada initial parameter.
Parameter session berhubungan erat dengan parameter processes. Bila parameter
processes dirubah, maka sistem oracle secara otomatis menghitung nilai optimal
untuk parameter sessions.
SQL> alter system set processes=300 scope=spfile;
Default dari parameter processes adalah 150.
SQL> create pfile='/opt/u1/oracle/dbs/iniSID.ora' from spfile;
Perintah ini memerintahkan oracle untuk membuat parameter file dari spfile.
File ini dipergunakan sebagai backup / cadangan bila file spfile mengalami
kerusakan pada waktu startup database dan semua nilai dari dynamic
parameter spfile telah tercatat juga di parameter file (pfile).
Perubahan parameter ini memerlukan restart database.
SQL> shutdown immediate;
SQL> startup
Periksa hasil perubahan parameter tadi dengan query sbb:
SQL> show parameter processes
SQL> show parameter session
4. Bila kondisi pada point no.2 tidak dipenuhi, maka lakukan hal-hal sbb:
SQL> select count(*) from x$ksuse where bitand(ksspaflg,1) !=0 ;
Bandingkan hasil query diatas dengan
SQL> select count(*) from v$session;
Nilai dari x$ksuse mendekati sama dengan v$session.
5. Rekomendasi dari oracle adalah sbb:
a. Nilai parameter processes / sessions harus 2x dari procesess / session
yang diperkirakan akan terhubung ke database.
6. Query untuk memeriksa utilisasi parameter processes di oracle database adalah
sbb:
SQL> select * from v$resource_limit where resource_name='processes';
7. Alternatif lain untuk melihat utilisasi session bila kondisi point no.2 tidak
terpenuhi adalah sbb:
SQL> select SESSIONS_MAX , SESSIONS_WARNING, SESSIONS_CURRENT,
SESSIONS_HIGHWATER, USERS_MAX from v$license;
Bila user tidak bisa melakukan koneksi ke database baik dari applikasi maupun sqlplus,
dengan error sbb:
1. Dari sqplus.
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Jul 7 09:47:03 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
ERROR:
ORA-01075: you are currently logged on
2. Dari alert log.
Wed Jul 7 10:02:05 2010
Errors in file /rdbms/oracle/admin/maddb/bdump/maddb_smon_19067.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-00018: maximum number of sessions exceeded
3. Dari RMAN
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04005: error from target database:
ORA-00604: error occurred at recursive SQL level 1
ORA-00018: maximum number of sessions exceeded
Maka DBA perlu memeriksa hal-hal sbb:
1. Periksa arti dari ORA-00604 dan ORA-00018.
Dokumentasi oracle yang bisa di download dari OTN, dapat kita pergunakan untuk
mengetahui arti dari pesan error ini atau bisa juga dengan cara mencari
informasi pesan error ini melalui google.
Berikut ini adalah arti dari pesan error ORA-00064 dan ORA-00018:
ORA-00604: error occurred at recursive SQL level 1
Cause: An error occurred while processing a recursive SQL statement.
A recursive SQL statement is one that applies to internal
dictionary tables.
Action: If the situation described in the next message on the stack can
be corrected, do so; otherwise, contact customer support.
ORA-00018: maximum number of sessions exceeded
Cause: An operation requested a resource that was unavailable.
The maximum number of sessions is specified by the
initialization parameter SESSIONS.
When this maximum is reached, no more requests are processed.
Action: Try the operation again in a few minutes.
If this message occurs often, shut down Oracle, increase the
SESSIONS parameter in the initialization parameter file, and
restart Oracle.
2. Penjelasan dari pesan error itu berdasarkan metalink doc.id 419130.1 adalah sbb:
sesi (oracle session) dari seluruh user telah mendekati atau sama dengan
nilai session pada initial parameter.
Untuk memeriksa hal ini, lakukan hal-hal sbb:
SQL> show parameter sessions
SQL> show parameter processes
Parameter sessions menunjukkan maksimal session yang bisa terhubung ke database.
SQL> select count(*) from v$session;
Query ini digunakan untuk menghitung banyaknya sesi (oracle session) yang sedang
terhubung ke oracle database.
Error ini akan muncul pada kondisi sbb:
nilai dari ( select count(*) from v$session ) mendekati atau sama dengan ( show parameter
sessions ).
3. Bila kondisi diatas (pada point no.2) terpenuhi, maka solusinya adalah merubah nilai
parameter session pada initial parameter.
Parameter session berhubungan erat dengan parameter processes. Bila parameter
processes dirubah, maka sistem oracle secara otomatis menghitung nilai optimal
untuk parameter sessions.
SQL> alter system set processes=300 scope=spfile;
Default dari parameter processes adalah 150.
SQL> create pfile='/opt/u1/oracle/dbs/iniSID.ora' from spfile;
Perintah ini memerintahkan oracle untuk membuat parameter file dari spfile.
File ini dipergunakan sebagai backup / cadangan bila file spfile mengalami
kerusakan pada waktu startup database dan semua nilai dari dynamic
parameter spfile telah tercatat juga di parameter file (pfile).
Perubahan parameter ini memerlukan restart database.
SQL> shutdown immediate;
SQL> startup
Periksa hasil perubahan parameter tadi dengan query sbb:
SQL> show parameter processes
SQL> show parameter session
4. Bila kondisi pada point no.2 tidak dipenuhi, maka lakukan hal-hal sbb:
SQL> select count(*) from x$ksuse where bitand(ksspaflg,1) !=0 ;
Bandingkan hasil query diatas dengan
SQL> select count(*) from v$session;
Nilai dari x$ksuse mendekati sama dengan v$session.
5. Rekomendasi dari oracle adalah sbb:
a. Nilai parameter processes / sessions harus 2x dari procesess / session
yang diperkirakan akan terhubung ke database.
6. Query untuk memeriksa utilisasi parameter processes di oracle database adalah
sbb:
SQL> select * from v$resource_limit where resource_name='processes';
7. Alternatif lain untuk melihat utilisasi session bila kondisi point no.2 tidak
terpenuhi adalah sbb:
SQL> select SESSIONS_MAX , SESSIONS_WARNING, SESSIONS_CURRENT,
SESSIONS_HIGHWATER, USERS_MAX from v$license;
Langganan:
Komentar (Atom)