joomla templates Data Warehouse Türkiye

Sat08202011

Last update07:32:32 PM GMT

Back Tarihe göre etiket öğelerini görüntüle: veritabanı
Salı, 05 Nisan 2011 20:29

Global Temporary Table Oluşturmak

Oracle’ da tablo create ederken eğer tablonun tipinibelirtmez iseniz default olarak ilişkisel ve kalıcıolarak tablonuzu oluşturacaktır. Create table komutunuziçerisinde global temporary ifadesini kullanırsanıztemporary segmentlerde tutacağınız geçici bir tablocreate etmiş olursunuz. Temporary tabloları normal tablolardan çok farklı olarak düşünmemek gerekir, bildiğimiz yöntem (create table ile ) ile create etmişolduğunu tablolar üzerinde neler yapabiliyorsanız burada da yapabilirsiniz. Temporary olmasından kaynaklıolarak, temporary olarak create edilmiş bir tablo tümsessionlar tarafından görülebilir ve sadece o sessioniçerisinde varlığını idame ettirir, session sonlandığındatemporary table’ da otomatik olarak drop olacaktır.

Kategori Dba
Cumartesi, 02 Nisan 2011 11:26

Canlı Bir Transportable Tablespace Operasyonu

19 Mart 2011Canlı Bir Transportable Tablespace Operasyonu Yazılarımdan da anlaşılacağı üzere bu aralar transportable tablespace’ le yakından ilgileniyorum. Bu konudaki yapmış olduğum tüm testleri ve production ortamlarımızda yapmış olduğumuz operasyonlarla ilgili detaylarıda sizinle buradan paylaşmaya çalışıyorum.  Şimdiye kadar tranportable tablespace ile ilgili çalışma mantığından, kıstlarından bahsettik. Neden bu konu üzerine bu kadar yoğunlaştığımdan bahsedeyim, ileride sizlerde benzer bir durumla karşılaşırsanız diğer yöntemler ile karşılaştırmada yardımcı olacaktır. Production ortamda kullandığımız bazı database’ lerimizi yeni alınmış olan (yeni sunucu ibm p795 serisi) sunucular üzerine taşımaya çalışıyoruz. İlk taşınacak olan database yaklaşık 3 tb  büyüklüğündeki bir database,  bu database’ i migrate etme işini bitirdik. Bugün bu taşıma işlemini transportable tablespace yöntemi kullanarak nasıl yaptığımızdan step by step bahsedeceğim ;  (Şunu belirtmemde fayda aşağıdaki stepler bizim taşımış olduğumuz database’ in özellikleri ile şekillenmiş adımlar yani bu database’ de materialized view yoktu, eğer olsaydı bir stepde bunun için olacaktı)

 • Öncelikle yeni sunucu üzerine db block size, nls ayarları ve sid’ i eski sunucu ile aynı olacak şekilde boş bir instance create edilir. (transportable tablespace gereği) 

 
Sys, ve system dışında SYSTEM tablespace’ inin altında user nesnesi olmaması gerekiyor. (system, sysaux, undo, temp gibi tbs’ ler taşınmayacağından dolayı)

 select owner,segment_name,segment_type, tablespace_name,bytes/1024/1024 boyut from dba_segments where tablespace_name = 'SYSTEM'and owner in (select distinct(owner) from dba_segments where tablespace_name = 'SYSTEM' and owner not in('SYS','SYSTEM','OUTLN') )


Taşınacak olan database’ deki tüm tablespace’ lerin aralarındaki ilişkiler check edilir.  Database’ i full olarak taşıdığımızdan dolayı UNDO, TEMP, SYS, SYSAUX şemalarını hariç geri kalan tüm schemaları taşıyoruz.  (Ben  tüm örneklerdeki tablespace isimlerini değiştirerek yazıyorum) Buradaki amaç bu tablespace’ lerin taşınmayacak olan yukarıda belirtilen  diğer tablespace’ ler ile herhangi bir ilişki olmaması.

 EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('USERS,DENEME,PROD', TRUE);

Procedur çalıştıkdan sonra aşağıdaki select ile kontrol ediyoruz. Sonucun no rows dönmesi gerekiyor. Eğer kayıt dönerse farklı tablepsace’ lerdeki nesneler olması gereken tablespace üzerine taşınır. (nesnelerin nasıl taşınabileceğini daha önceki yazılarından bulabilirsiniz)

 • İlişkileri test ettikden sonra transportable backup’ a hazırlık için expdp alınacağı directory oluşturulur. 
CREATE DIRECTORY  expdp AS '/s4/META_DATA_ISLEM';GRANT READ,WRITE ON DIRECTORY expdp TO SYSTEM;


Atlanmaması gereken bir önemli nokta transportable backup alınmadan önce mutlaka dba_recyclebin purge edilmelidir. Sql>Purge dba_recyclebin;

 • Backup öncesinde taşınacak olan tüm tablespace’ ler read only moda alınır. select 'alter tablespace '||name|| ' read only;' from v$tablespacewhere name not in('SYS','SYSTEM','UNDOTBS1','TEMP','SYSAUX')

Transportable export backupı alınır. expdp "'/ as sysdba'" directory=DWDATA_TT_EXPORT dumpfile=DWDATA_TT_EXPORT.dmp logfile=DWDATA_TT_EXPORT.log transport_tablespaces=USERS,DENEME,PROD

Package, sysnonym, link vs gibi nesnelerin diğer ortama taşınması içinde (bunların scriptleride alınıp manuel diğer tarafa atılabilir ancak private linkleri create  edebilmek için  private linki olan userların şifrelerini bilmeniz gerekir)  no rows  dump alıyoruz.  (burada no rows tablolarında ddl exportunu alacaktır,  bunlar için bir aksiyon almazsanız TABLE ACTION EXIST opsiyonu skip olduğundan var olan tabloyu görüp hata verip devam edecektir.

 Şunu da yapabilirsiniz EXCLUDE=TABLE derseniz tablolara hiç bakma geri kalanı import et de  diyebilirsiniz ki bu mantıklı bir seçim diye düşünüyorum ) Bununla ilgili bir not, exportu schema vermeyip full alıp diğer tarafa schema bazında atabilirsiniz. Atlama olma ihtimalini ortadan kaldırmak için faydası olacaktır.

 Böylelikle ihtiyaç halinde exportu sonrasında tekrar kullanabilirsiniz.expdp "'/ as sysdba'" DIRECTORY=expdp DUMPFILE= metadata_15032011.dmp LOGFILE=metadata_15032011.log  CONTENT=METADATA_ONLY  FULL=Y

Yine bir not, eski ortamda datafile’ lerinizi yeni ortamdaki path’ e taşırken datafile isimlerinizi mutlaka kontrol etmelisiniz, farklı dizinlerde aynı isimle yer alan datafile’ leriniz olabilir, Bunları migration öncesinde rename ile düzeltmeniz faydanıza olacaktır.  (eğer tüm datafile’ leri diğer tarafda aynı lokasyonda tutacaksanız) 

Datafile’ lerin taşınması için OS tarafı için CP scriptlerini oluşturmamız gerekiyor. 
V$datafile’ den name kolonundan datafile’ lerin adı ve pathleri alındıkdan sonra yazılacak bir scp veya rcp komutu ile bu adım yapılabilir. 

Oracle’ ın internel userları haricindeki tüm userlara ait create scriptleri,  role’ lerin create scriptleri oluşturulacak. (Buradan alınacak olan userların default tablespace’ leri not alınır, diğer tarafa create edildiği aşamada tablespace ‘ ler olmayacağı için tüm userların default tablespace’ ini USERS yapıp, işlem bittikden sonra eski haline geri alabilirsiniz. Create scriptleri için toad’ ın generate schema script menüsünü kullanabilirsiniz.  Deafult tablespace’ leri değiştirmek ve eskisinin backupını almak içinse aşağıdaki scriptleri kullanabiliriz.Default tablespace’ leri değiştirmek için; select 'alter user '||username|| ' default tablespace USERS;' from dba_users; Eskisindeki durumu backuplamak için (diğer tarafda işlem bittikden sonra userların default tablespace’ leri orijinal hallerine çevrilmelidir); select 'alter user '||username|| ' default tablespace '||default_tablespace|| ';' from dba_users

 • Eski sistemdeki public dblinkler ile public synonym’ lere ait create scriptleri oluşturulacak. (toad burda da kullanılabilir)

Eski sunucudaki tnsnames.ora dosyasındaki diğer database’ lere ait aliaslar değiştirilmeden diğer tarafa da kopyalanacak. (dblinklerde problem çıkmaması için)Buraya kadar ki olan kısımlar, yapılacak migration öncesinde yapmamız gereken ön hazırlıklardı.

Şimdi operasyona başlıyoruz ;

 • Yeni ortama role’ leri (içleri boş olacak şekilde oluşturuyoruz. Burada henüz hiçbir obje olmadığı için zaten oluşturamayız, ancak create user scriptlerinde role’ lerde olduğundan hata vermemesi için bunları baştan oluşturuyoruz) 

Profile’ leri create ediyoruz. 

Userları create ediyoruz. 

Datafile’ leri taşıyoruz. 

Datafile taşımaları bittikden sonra almış olduğumuz transportable exportu yeni ortama import ediyoruz. impdp system directory=META_DATA_ISLEM dumpfile=DWDATA_TT_EXPORT.dmp logfile=IMP_DWDATA_TT_EXPORT.log  transport_datafiles=/s1/users01.dbf,test01.dbf,prod01.dbf • İmport bittikden sonra no rows exportun importuna geçmeden önce public db linkler ile public synonym’ leri burada create ediyoruz. 

No rows exportu import ediyoruz. 

Artık tablespace’ lerimizi read write moda geri alabiliriz.Normal şartlar altında işimiz bu kadar, artık kontrollerimize başlıyabiliriz. • Yeni sunucunun ip’ si farklı olacağından (tabi diğer sunucuyu kapatıp onun ip’ sini yeni sunucuya vermediyseniz)  diğer sunuculardaki tnsnames.ora dosyalarındaki taşıdığımız instance’ a ait ip (veya hostname hangisini kullanıyor iseniz) bilgisini yenisi ile değiştirmemiz gerekecektir. 

Tüm userların eski ortamda default tablespace’ i ne ise burada da aynısı yapılır. (yukarıda bunun backup scriptini oluşturmuştuk zaten)  

Grantlar kontrol edilir. Eski ortam ile karşılaştırılır. 

User create aşamasından hata almamak için rolleri boş olarak create etmiştik, şimdi o rollerin içini dolduruyoruz.

Burada yapılacak en önemli testi en sona sakladım. Önce user bazında nesne sayılarını her iki ortamda karşılaştırıyoruz. Yenisinde eksik olmamalı. select owner, count(*) from dba_objects  group by owner  order by 1 ;• User bazında yaptığımız karşılaştırmada nesne sayıları eksik çıkan user var ise sadece bu userlar için object type’ ı bazında hangi nesnelerin eksik olduğuna bakılmalıdır. Neden o objenin eksik olduğu araştırılabilir. Eski ortamdan create scripti hazırlanıp yeni ortamda basılarak eksik nesneler tamamlanır. select object_type,count(*) from dba_objects  where owner = ‘NESNESI_EKSIK_OLAN_USER'   group by object_type  order by 1 ;Aslında kontroller sonrasında problem olmadığını düşündüğünüz anda artık yeni sunucu üzerinden database’ imizi diğer kullanıcılara açabiliriz. Bu işlemin süresini etkileyen en önemli kriter database’ inizin büyüklüğü ve iki sunucu arasındaki network bağlantısı olduğunu söyleyebilirim. Zira biz yaklaşık 3 tb’ lik bir database’i bu yöntemle (kontroller dahil)  2,5 saat gibi bir sürede bitirebildik. 

Mihration çalışmalarımız son hızıyla devam ediyor, taşınacak bir sonraki database’ imiz yaklaşık 6 tb, en son Prod database’ imiz ise 19 tb büyüklüğünde, orda da farklı bir durumla karşılaşır isem buradan sizlerle paylaşacağım.

Kategori Dba
Salı, 22 Mart 2011 14:26

SQLite

Bu yazı daha önce saltokunur.org e-dergide yayınlanmıştır.

Şu senaryodaki durum masaüstü uygulamalar geliştiren çaylak-tecrübeli tüm geliştiricilerin başına gelebilir. Benim başına geldi oradan biliyorum :)

 

Programcının Çilesi


Hikâyemizde geliştiricimiz güzel bir program fikri bulur. Fikri gerçekleştirmek için platform, uygulama çatısı (Framework), programın yazılacağı dil... vb hazırdır. Geliştiricimiz programın işleyeceği verileri bir veri tabanında tutup, ilişkisel veri tabanlarının nimetlerinden faydalanmak istemektedir. İşte sorun da tam burada baş gösterir. Veri tabanı sunucusuna nasıl erişecektir? Uygulama masaüstü uygulama olduğu için çalışması için internet bağımlılığının olmaması gerekmektedir. Günümüz Türkiye şartlarında programı kullanan bütün bilgisayarların internete bağlı olamayacağı, olanların da zırt pırt kesilen bağlantı yüzünden programı adam gibi kullanamayacağı açıktır. Hem programcımız bu riski göze alıp, programı sürekli çevrimiçi olan veri tabanı (VT) sunucusuna bağlarsa, ücretsiz dağıttığı bir uygulama için bir VT sunucusu kiralamak zorunda kalacak, gelecekte belki programın kullanıcı kitlesi genişlediğinde o kadar veriyi tutacak VT sunucusu (VTS) bile bulamayabilecektir. Burada bir çözüm VTS'yi localhost'a kurup verileri bu şekilde işlemek olabilir. Ama şöyle bir gerçek var ki son kullanıcıların hepsi bir VT Yöneticisi değil. Düşünün bir kere dünyanın en çok kullanılan (bu yazıdan sonra aslında 2. olduğunu anlayacağınız :) MySQL'i uygulamanızla birlikte dağıttığınızı. Bugün en güncel MySQL 5.1 sürümü 104 MB, bir önceki 5.0 sürümü 22 MB [1]. Bu boyutta bir programı uygulama ile birlikte dağıtmak, kurulum dosyasını şişirmeye yarar, başka bir şeye değil. Hem MySQL'i kurduğumuzu düşünelim, kurmakla bitmiyor ki, root şifresi ayarlanacak, programın kullanacağı VT uygun karakter-kodlamayla oluşturulacak, MySQL hata verdiği zaman takip edilip düzeltilecek, dahası Windows güvenlik duvarı çalışmasına izin vermeyecek, gerekli olan port kullanımda olacak ve MySQL servisi başlatılamayacak. Biraz abartı gelebilir ama bu sorunlarım hepsi Windows üzerinde MySQL çalıştırılmak istenirken çok sık karşılaşılan sorunlar. Son kullanıcı bu sorunların hiçbiriyle baş edemez, onun için sadece "Next" vardır. "Next-Next-Next-(Bazen de Install :)"

Çözüm

Bu sorunun bir çözümü şu olabilir. Tecrübeli programcıların bile "Benden-Uzak-Allah'a-Yakın-Olsun" dediği, verileri bir dosyaya kaydetmek. Evet, çözüm basit gibi gözükse de programın işleyeceği verilerin yapısı karmaşıklaştıkça (bir VT'deki foreign key, trigger, function gibi yapıların getirdiği kolaylıkları düşünün) bunları bir dosya yapısına dökmek çoğu zaman geliştiricileri projelerinden soğutuyor. İşte bu ahval ve şerait içinde şöyle dediğinizi duyar gibiyim: "Keşke şöyle ne internete, ne sunucuya ne de ayara ihtiyaç duyan bir küçük program-kütüphane (library) olsa da, verileri VT biçiminde bir dosyaya kaydetse..."

Aslında yukarıda tırnak içinde yaptığım tanım SQLite için en basit ve anlaşılır tanım oldu. SQLite sunucu olmadan çalışan, hafif, küçük (tek bir dosya ve 500 KB den az), hiçbir ayara ihtiyaç duymayan, hızlı, SQL komutları kullanarak veri alış-verişi yapabilen bir ANSI-C kütüphanesidir. Kullanımı ise çok basittir. SQLite'ın kütüphane dosyasına (sqlite3.dll) SQL komutları gönderirsiniz, o da bu komutları işler ve bir VT dosyasına kaydeder. İstediğiniz zaman da SELECT sorguları çekerek bu dosyadan verilerinizi alabilirsiniz. Bu işlemler için ne bir ayar ne de bir kurulum gereklidir.

SQLite

SQLite, ilk olarak D. Richard Hipp tarafından geliştirilmeye başlandı ve 17 Ağustos 2000 tarihinde ilk sürümü yayınlandı. [2] İlk yayınlandığından bugüne kadar ki geçen zaman içinde temel VT işlemlerinin neredeyse tamamını gerçekleştirebilecek şekilde geliştirildi. Bu yazı yazıldığında en güncel sürümü 3.6.17 idi.

SQLite sadece bir C Kütüphanesi olduğu için, taşınabilirliği çok yüksektir. Günümüzün bilinen tüm platformlarında çalışabilir. Windows, Mac OS X, Linux, BSD, Solaris, UNIX, AmigaOS, Symbian, z/OS 1. [2]Gelecekte başka bir Veri Tabanı Yönetim Sistemi (VTYS)'ne geçilmek istendiğinde basit bir SQL sorgusuyla tüm veri alınıp rahatça diğer bir VTYS’ye geçilebilir.

Lisanslama

SQLite "Halka Açık" bir yazılımdır. Dağıtımı “Public Domain[3] altında yapılmaktadır. Kaynak kodu açıktır. Yani SQLite'i istediğiniz gibi kullanabilir, kodunu değiştirebilir (uygulamanızın kullanmayacağı özellikleri kaldırıp yeni özellikler ekleyebilir), ücretsiz-ticari, açık-kapalı kaynak bütün uygulamalarda hiçbir kısıtlama altına girmeksizin kullanabilir, SQLite ile geliştirdiğiniz bir uygulamadan gelir de elde edebilirsiniz.

Teknik Özellikler [2]

Teknik özelliklerinden bahsetmek gerekirse SQLite için boyundan büyük işler başarıyor diyebiliriz.

  • En Fazla VT dosyası boyutu: 32 TB
  • Bir Tablodaki En Fazla Sütun Sayısı: 32767
  • En Fazla Metin (String-Char) Veri Boyutu: 1 GB
  • En Fazla Blob (Binary) Veri Boyutu: 1 GB
  • En Fazla Number (Int-Double) Veri Boyutu: 64 bit

SQLite’in bir güzel özelliği de tam Unicode desteği sağlamasıdır. UTF-8 ve UTF-16 kodlamayı destekler.

SQLite transactional (işlemsel) bir VT kütüphanesidir. Sık kullanılan birçok ilişkisel SQL cümleciğini destekler. Bunlar: Union, Intersect, Except, Inner join, Outer join, Inner select, Merge join. Ayrıca VT içinde Trigger tanımlamaya da izin verir.

Tarih (date) veri tipini ve data domain, cursor, function, procedure gibi işlemleri desteklememesi SQLite’in şu anki sürümü itibariyle eksik yönleri.

SQLite'in en geniş dağıtıma ulaşmış VT motoru olduğu tahmin ediliyor. Bugün birçok program, işletim sistemi, cep telefonu, PDA hatta Mp3 oynatıcılar bile gömülü olarak SQLite kullanıyor. SQLite siz farkına bile varmadan çoktan bilgisayarınıza girmiş olabilir. Örnek vermek gerekirse, Firefox (120 milyon kopya) internet geçmişinizi tutmak için bir SQLite VT'si kullanıyor. Eğer Windows ortamında Firefox kullanıyorsanız "C:\Program Files\Mozilla Firefox" dizini altında "sqlite3.dll" dosyasını bulabilirsiniz. Ya da bir müzik oynatıcı olan AIMP2 şarkı listelerini yine SQLite VT'sinde tutuyor. Bunun Linux dünyasındaki karşılığı ise KDE kullanıcılarının çok iyi bildiği amorak. Yine amorak playlist'lerini SQLite VT'sinde saklıyor. Örnekler çoğaltılabilir, bugün PHP5 (20 milyon kopya) varsayılan olarak SQLite desteğiyle geliyor. Solaris (10 milyon kopya) sistemi boot ekmek için,  Philips mp3 çalarlar yine playlist'leri saklamak için, Skype (100 milyon kopya), iPhone da SMS’leri saklamak için hep gömülü olarak SQLite kullanıyor. Tüm bu dağıtımların toplamının yaklaşık 300 milyon olduğu tahmin ediliyor. Bu da SQLite’i dünyanın en geniş dağıtımlı SQL motoru yapıyor. [4]

Kullanımı

SQLite harici uygulama olarak çalıştırılacaksa Linux'ta konsoldan ya da Windows'ta komut satırından "SQLite3 vt_dosyasi_adi" komutuyla çalıştırılır. vt_dosyasi_adi dosyası yoksa SQLite kendi oluşturur. Bundan sonra (;) ile biten SQL komutlarını programa girerek normal bir VT sunusu gibi kullanılır.

SQLite’in VT hakkında bilgi veren ve üzerinde çeşitli işlemler yapan, komut satırından çalıştırılan bazı özel komutları da vardır. [8]

  • · Veritabanındaki tabloları görmek: sqlite> .tables
  • · Veritabanı konsolundan çıkmak: sqlite> .exit
  • · Kolon adlarını almak: sqlite> pragma table_info()
  • · Yardım: sqlite> .help
  • · Select çıktısına format vermek:
  • · Otomatik artan kolonun son değerini ele almak: sqlite> select last_insert_rowid();
  • · Veritabanını dışa aktarmak: sqlite> .dump
  • · Veritabanını sql scriptine aktarır:
  • · Konsolda veritabanını kopyalamak:
  • · SQL script ile veritabanında tablolar oluşturmak:

SQLite kütüphanesi bir program içinde gömülü olarak kullanılacaksa "#include " ile SQLite'in başlık dosyası kaynak koda eklenir. sqlite3_open() ile VT dosyası açılır, sqlite3_exec() ile SQL komutu işletilir ve sqlite3_close() ile VT bağlantısı kapatılır. [5]

SQLite'i gömülü olarak kullanmak için ille de C bilmeniz gerekmiyor. SQLite'in bilinen programlama dillerinin neredeyse tamamı için (C#, D, Delphi, Fortran, Java, Perl, PHP, Python, Ruby, Smalltalk…) sarıcı (wrapper) API’leri bulunuyor.[6] Böylece istediğiniz dilde uygulama geliştirirken SQLite’i kullanabiliyorsunuz.

Hız Karşılaştırmaları [7]

SQLite diğer VTYS'lerle karşılaştırıldığında INSERT sorgularında biraz geride kalıyor ama SELECT sorgularında çok daha hızlı sonuçlar veriyor.

Aşağıda SQLite 2.7.6, PostgreSQL 7.1.3 ve MySQL 3.23.41 kullanılarak yapılan hız testlerinin sonuçları yer alıyor. Süreler saniye cinsindendir. SQLite’in Nosync değerleri thread senkronlaması kapatılarak alınmıştır.

25000 INSERT Bir sorguda

100 SELECT indeksiz

1000 UPDATE indeksiz

SELECT’ten INSERT

DELETE indeksli

5000 SELECT indexli

PostgreSQL

4.900

3.629

1.739

61.364

1.316

4.614

MySQL

2.184

2.760

8.410

1.537

2.262

1.270

SQLite

0.914

2.494

0.637

2.787

2.068

1.121

SQLite (nosync)

0.757

2.526

0.638

1.599

0.752

1.162

SQLite üzerinde daha geniş araştırma yapmak isteyenler www.sqlite.org daki wiki'de kullanım, yönetim, bakım hakkında çok yararlı makaleler bulabilirler.

Kaynaklar

[1] www.mysql.com

[2] http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems

[3] http://en.wikipedia.org/wiki/Public_Domain

[4] http://sqlite.org/mostdeployed.html

[5] M. Ali Vardar, Linux ve UNIX Sistemler İçin Açık Kaynak Kodlu Yazılım Geliştirme, Temmuz 2008

[6] http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers

[7] http://www.sqlite.org/speed.html

[8] http://gurcanyavuz.wordpress.com/2009/04/15/sqlite-veritabani/

Hamza Apaydın

Kategori Dba

*.csv Dosyalarının Oracle Veritabanına Yüklenmesi (SQLLDR)

Merhaba,

Takip etmek istediğim konu ile biraz alakasız olacak fakat önemli bir konu ve hiç bahsetmediğim için yazacağım.

Belirli durumlarda Oracle veritabanına external verileri yüklememiz gerekebilir. Yani, bu veriler çoğu zaman bir Java veya C# arayüzünden gelmeyebilir. Bu veriler herhangi bir programlama dilinin arayüzünden gelmediği gibi, uzantıları da farklı olabilir. Bu durumda kullanabileceğimiz Oracle aracına SQL-LOADER diyoruz (komut olarak kullanım şekli ise SQLLDR).

Bir excel dosyasındaki bütün verileri .csv (comma seperated value) olarak değiştirebiliriz. Bu değişikliği yaptıktan sonra kısa bir örnek ile devam edelim. Bu arada sqlldr'ın çalışabilmesi için öncelikle bir control dosyası (.ctl) yaratmamız gerekiyor.

Kategori Dba

 

 

 

Flashback database özelliği, database’ i zaman içerisinde sisteminizin kapasitesi elverdiği ölçüde zamanda ileri veya geri götürmektir diye tanımlayabiliriz. Bu özellik özellikle test database’ leri için ciddi kolaylıklar getirmektedir. Çoğu test ortamları için, çeşitli sebeblerden dolayı test yapıldıkdan sonra da eski haline tekrar çekmek gerekiebiliyor. Test başarısız olduğunda yeni bir test için başlangıç duruma geçmek gerekebiliyor. Şimdi bu işlemi nasıl yapabileceğimizden bahsedelim biraz;

Flashbackle ile ilgili diğer yazılarımda database’ in flashback modda olup olmadığından nasıl kontrol edeceğimizden, flashback modda değil ise nasıl flashback moda alacağımızdan ve hangi parametrelerini set edeceğimizden bahsetmiştik, dolayısıyla burda tekrar bu kısımlardan bahsetmeyeceğim.

Flashback database ile yapılacak operasyonları 3 şekilde yapabiliriz. Birincisi SCN ile, ikincisi adını bizim belirlediğimiz bir restore point noktası ile, üçüncüsü ise tarih belirterek flashback database komutunu çalıştırabiliriz.

Kategori Dba
Salı, 14 Aralık 2010 10:01

IBM'den çevre dostu veritabanı sistemi

IBM'den çevre dostu veritabanı sistemi

IBM’in yeni DB2 veritabanı sürümü, veri saklama altyapılarından kaynaklanan karbon salınımını %75’e varan oranda azaltarak, küresel ısınmayla savaşıyor.

 

ibmlogoyesil_thumb250

IBM, yeni DB2 veritabanında yüksek ölçekli sıkıştırma teknolojisini kullanarak, aynı sabit disk üzerinde 4 kat fazla veri saklamayı mümkün kılıyor. Bu sayede, sürekli çalışan sabit disklerin harcadığı ve ünitelerin soğutulması için kullanılan enerjiyi %75 oranında düşürüyor. DB2, kurumlarda sürekli depolanması ve erişilmesi gereken verilerin yol açtığı karbon salınınımını da aynı oranda azaltıyor. DB2’nin 9.7 sürümü, Haziran ayında satışa sunulacak.

Kategori Diğer
Perşembe, 09 Aralık 2010 09:59

Oracle Veritabanı İpuçları

Merhaba,

Sitenizin çalışmalarını sürekli takip ediyorum.Bu tasarım öncekinden daha güzel olmuş:)Ayrıca Yusuf bey göndermiş olduğunuz dökümanlardan dolayı size teşekkür etmek istedim.Bende siteye katkı amaçlı internette bulduğum temel oracle hakkında ipuçları listeleyeyim dedim.Henüz makale yazacak kadar tecrübem yok ama katkılarınızla olacak gibi:P

ORACLE VERİTABANI İPUÇLARI

- Büyük tablolarınızı, önemli tablolarınızı, bir instance uzerindeki farkli schema bilgilerini, ayrı table space uzerinde tutun. Ozellikle restore işleminde daha az sorun yaşarsınız. Restore ederken tum DB yerine sadece istediginiz tablespace geri donebilirsiniz.

Kategori Dba

Oracle'ın Yüksek Kullanılabilirliği(High Availability/HA) Çözüm Yığını


 

 

Paylaşılan Depolama Seçenekleri


 

  1. NFS Monte Depolama (Netapp)
  2. SCSI Paylaşılan depolama; OCFS, OFS, Raw Cihazlar ile
  3. Yapı Mimarisi ile Fiber Kanal depolama
Kategori Dba
Çarşamba, 08 Aralık 2010 20:18

RAC(Real Application Cluster) Architecture(Mimarisi)

 

 

 

 

 

 

İKİ NODE MİMARİSİ, KORUMASIZ

Kategori Dba
Salı, 02 Kasım 2010 22:31

Oracle Day Istanbul


Sizleri 4 Kasim 2010 tarihinde Istanbul Lütfi Kirdar Kongre Merkez’inde gerçeklestirecegimiz ve konusunda yilin en büyük etkinligi olan Oracle Day’e davet ediyoruz. Her sene oldugu gibi bu yil da Teknoloji ve Is Uygulamalari alaninda her seviyede yöneticiler ve kullanicilar için, farkli sektörlere özel fonksiyonel ve teknik içerikli oturumlarin bulundugu essiz bir bilgi paylasim ortami olusturmayi hedefliyoruz.

Etkinligimizin açilisinda, Oracle'in stratejik Software, Hardware, Complete vizyonu ve bu vizyonun isletmenize saglayacagi sayisiz avantajlara yer verip, ardindan, paralel oturumlarda is uygulamalari, veritabani, orta katman, is zekasi, kurumsal performans yönetimi, sunucular, veri depolama ve Oracle Exadata hakkinda detayli bilgiler sunacagiz.

Kategori Duyrular

Sayfa 1 / 2