Silinen kayıtları ayrı bir tabloda takip etmek

          Bazı kritik önemdeki tablolarımızda silinen kayıtları takip etmek isteyebiliriz. Bir anlamda windowstaki çöp kutusu gibi. Bu amaçla aşağıdaki prosedürü yazdım. Bu prosedüre parametreolarak silinen kayıtları takip etmek istediğimiz tablonun adını geçiriyoruz. Prosedür önce silinen kayıtları atacağı tabloyu tablo adının sonuna “__cop” ekleyerek oluşturuyor. Ayrıca silinen kayıtların atılacağı tabloya orjinal tablo yapısından farklı olarak DELETE_USER,DELETE_PC,DELETE_DATE,DELETE_OS_USER kolonlarını ekliyor. Bu kolonlarda isimlerinden anlaşılacağı gibi, kaydı silen kullanıcı adı, silindiği pc ismi,silindiği tarih ve silinen pc nin işletim sistemi kullanıcı adları tutuluyor.

Devamını Oku.. »

Bir tabloyla aynı yapıda yeni boş bir tablo oluşturmak

Bazen bir tabloyla aynı yapıda ama boş bir tablo oluşturmak gerekebilir. Bunun için izleyeceğimiz en kısa yol şu komutu çalıştırmaktır.

CREATE TABLE bosKopyaTablo AS SELECT * FROM kopyalananTablo WHERE 3=5 ;

3=5 eşitliği sürekli false olarak gerçekleneceği için tablomuz hiç bir veri içermeden oluşturulmuş olacaktır. Aynı şekilde constraint ler, index ler de orjinal tablomuzdan kopyalanmayacaktır.

Sayıyı “yazıyla” yazdırma fonksiyonu

bu fonksiyon sayıları “yazıyla” denilen hale dönüştürür.

public static string[] arrBirler = { "", "BİR", "İKİ", "ÜÇ", "DÖRT", "BEŞ", "ALTI", "YEDİ", "SEKİZ", "DOKUZ" };
public static string[] arrOnlar = { "", "ON", "YİRMİ", "OTUZ", "KIRK", "ELLİ", "ALTMIŞ", "YETMİŞ", "SEKSEN", "DOKSAN" };
public static string[] arrYuzler = { "", "YÜZ", "İKİYÜZ", "ÜÇYÜZ", "DÖRTYÜZ", "BEŞYÜZ", "ALTIYÜZ", "YEDİYÜZ", "SEKİZYÜZ", "DOKUZYÜZ" };
public static string[] arrKatlar = { "", "BİN", "MİLYON", "MİLYAR", "TRİLYON", "KATTRİLYON", "TRİLYAR", "KATTRİLYAR" };

public static string Yaziyla(double lnSayi)
{
long lGecici = Convert.ToInt64(lnSayi); // 0..9,223,372,036,854,775,807
string strHedef = (lGecici == 0) ? ("SIFIR") : ("");
short snKatlnSayi = 0;

while (lGecici > 0)
{
strHedef = (((snKatlnSayi == 1) && (lGecici % 1000) == 1) ? ("") : (arrYuzler[(lGecici % 1000) / 100] + arrOnlar[(lGecici % 100) / 10] + arrBirler[lGecici % 10])) + arrKatlar[snKatlnSayi++] + strHedef;
lGecici = Convert.ToInt64(lGecici / 1000);
}
return strHedef;
}

Oracle Database SID değiştirme

DBNEWID kullanmadan veritabanının SID sini değiştirmenin tek yolu controfile ların yeniden oluşturulmasıdır. Şimdi varolan bir veritabanımızın (SEKER) ismini ve SID sini değiştirecez. Yeni SID VE db_name (BORDRO) olacak.

Öncelikle varitabanımızı clean shutdown dediğimiz bir metotla kapatmamız gerekiyor

Shutdown IMMEDIATE

MOUNT modda yeniden başlatıyoruz.

Devamını Oku.. »

Apex admin şifresini resetlemek

Benim gibi unutkan birisi iseniz şifrelerle aranız pek iyi olmayabilir. Oracle Application Express in admin şifresini unuttuysanız çok endişenlenmeye gerek yok, apex in root klasörünün altında

 apxxepwd.sql

scriptini çalıştırırarak apex admin şifresini resetleyebiliriz.

14 Mart 2011 • Kategori:: Apex • Yorum Yapılmamış

Oracle data dictionary view leri görmek

Oracle v$ performans view leri ( dinamik performans view) leri görmek için şu sorguları çalıştırabiliriz.

SELECT kqfvinam name FROM x$kqfvi ORDER BY kqfvinam;
SELECT * FROM PUBLICSYN WHERE sname LIKE 'V$%' ORDER BY 3,1;
SELECT table_name FROM DICTIONARY WHERE table_name LIKE 'V$%' ORDER BY 1

oracle data dictionary view ler için : http://ss64.com/orad/oracle
v$ performans view ler için : http://ss64.com/orav/index.html

Cold backuptan veritabanını klonlama

Production database in bir klonunu oluşturmak çoğu zaman test ve development işlemleri açısından işe yarayıcı olabilir.

Bu işlemler adım adım şu şekilde yapılır:

1.ADIM:
Production database e sqlplus üzerinden sysdba yetkisi olan bir kullanıcı ile bağlanıp şu komutu çalıştırıyoruz.

ALTER DATABASE backup CONTROLFILE TO trace

bu komut içinde database create syntaxini içeren bir dosya oluşturulur. Dosyanın oluşturulacağı yer trace file directory sidir. Bu directory i öğrenmek için user_dump_dest parametresine bakılmalıdır.

show parameter user_dump_dest

Devamını Oku.. »