19 Aralık 2010 Pazar

Calling Unix command from Oracle database with java

We can use java to calling unix command from database.

there are 2 object for this purpose.


--create java object with below source.
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "unixCommand" AS
import java.io.*;
public class unixCommand{

public static String Run(String Command){

try {
String strReturn = "";
Process proc = Runtime.getRuntime().exec(Command);

BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); 
String output = "";
String currentLine = null; 
while((currentLine = in.readLine()) != null) { 
output += currentLine + "\n";
}
in.close();

if(output != "") 
strReturn = "[O]" + output;

in = new BufferedReader(new InputStreamReader(proc.getErrorStream()));  
String error = "";
currentLine = null; 
while((currentLine = in.readLine()) != null) {  
error += currentLine + "\n";  

}
in.close();

if(error != "") 
strReturn += "[E]" + error;

return strReturn;

} catch (Exception e){
System.out.println("[E]Error running command: " + Command + "\n" + e.getMessage());
return(e.getMessage());
}
}
}
-- create db function.
CREATE or REPLACE FUNCTION unixCommand_Run(Command IN STRING)
RETURN VARCHAR2 IS
LANGUAGE JAVA
NAME 'unixCommand.Run(java.lang.String) return java.lang.String';

--sample
select unixCommand_Run('ls -l') from dual;

23 Temmuz 2010 Cuma

11g de IO performansı ölçümü

Tim Hall Oracle 11g ile bir özelliği sitesinde paylaşmış. Storage performansı veritabanı için büyük önem taşıyor. Performansı etkileyen pek çok etken olduğundan net olarak sonucu göstermeyebilir fakat fikir edinmek açısından kullanılabilir.
DBMS_RESOURCE_MANAGER.CALIBRATE_IO ve ORION kullanılarak yapılmış.

Measuring Storage Performance For Oracle Systems

1 Temmuz 2010 Perşembe

Birden fazla import için shell script

Bir dizinde içindeki dump dosyalarını import etmem gerekti(yaklaşık 500 dosya).
Bunun için basit bir script yazdım. Arayanlar için paylaşmak istedim.
Script tabloyu import ediyor ve dosya adı ile yeniden anlandırıyor.
dosya isimleri şöyle TABLE1_A29012009.dmp
Tablonun adı TABLE1 yeniden isimlendirilecek tablo adı da TABLE1_A29012009 oluyor.

-----------------


#!/bin/bash
touser=expuser
fromuser=appuser
echo "Asagidakileri calistirir..."
echo "imp \$kullanici/\$sifre@$dbname fromuser=\$fromuser touser=$touser commit=y file=\$dosya.dmp log=\$dosya.imp.log"
echo "rename \$edosya to \$onek\$dosya;"
echo
echo
read -p "Username:" kullanici
echo
read -p "Database:" dbname
echo
echo -n "Password: "
stty -echo
read sifre
stty echo
echo
echo
read -p "tablo on eki(eski_):" onek


#for file in $(pwd)/*.txt
for file in $(ls -l *.dmp | awk '{print $9}')
do
edosya=${file%_*}
dosya=${file%.*}
imp $kullanici/$sifre@$dbname fromuser=$fromuser touser=$touser commit=y file=$dosya.dmp log=$dosya.imp.log
sqlplus -s $kullanici/$sifre@$dbname << EOF
--rename $edosya to $onek$dosya;
set echo on
alter table $touser.$edosya rename to $onek$dosya;
grant select on $onek$dosya to r_ofsdata;
exit
EOF
done


23 Haziran 2010 Çarşamba

Move to Oracle Database 11g – The whole Story

Geçen hafta 11g ye geçiş için nasıl bir yol izlemeliyiz konulu bir seminere katıldım. Seminer teknik bir seminerdi ve içeriği gerçekten doluydu. Aslında 2 günlük bir seminer hızlandırılmış olarak 1 günde bitirildi. Semineri Oracle Almanya ofisinden Mike Dietrich sundu. Mike, Database Upgrade Development ekibinin bir üyesi ve gerçekten anlatımı etkileyiciydi.
Yaklaşık 590 sayfalık uzun bir sunumdu. Özellikle upgrade yol haritası anlamında faydalı olacağını düşündüğüm için paylaşmak istedim. Sunumda bir çok trickde mevcut. İlgili sunum dökümanına bu adresden erişebilirsiniz.



17 Mart 2010 Çarşamba

Excel to insert sql

Zaman zaman hepimize bu tarz bir uygulama lazım olmuştur.

Tablo formatındaki bir verinin insert ifadelerinin oluşturulması :)

http://tools.perceptus.ca/text-wiz.php?ops=7

Örnek Tablo:
apple
types color size
golden yellow's my favorite colour large
mac reddish medium
golden red varies
gala yellowish small

Returns:

INSERT INTO apple (types,color,size) VALUES ('golden','yellow\'s my favorite colour','large');
INSERT INTO apple (types,color,size) VALUES ('mac','reddish','medium');
INSERT INTO apple (types,color,size) VALUES ('golden','red','varies');
INSERT INTO apple (types,color,size) VALUES ('gala','yellowish','small');