TROUG. Oracle Streams. [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] Ergem PEKER

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "TROUG. Oracle Streams. [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] Ergem PEKER"

Transkript

1 [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] Oracle Streams Ergem PEKER

2 Giriş Oracle yüksek erişilebilirlik ürünlerinden bahsederken akla ilk gelen ürünler Oracle RAC, Dataguard, RMAN ürünleridir. Streams her ne kadar bir replikasyon çözümü olsada yüksek erişilebilirlik amacıylada kullanılabilir. Aslında Streams, Oracle Logical Standby teknolojisinin altyapısını oluşturmaktadır, dolayısıyla kendisi bir yüksek erişilebilirlik çözümü sayılmasa bile bir başka yüksek erişilebilirlik çözümüne altyapı sağlamaktadır. Esnek yapısı sayesinde bu teknolojiyi tüm veritabanı veya bazı veritabanı yapılarını bir diger veritabanına replike etmek için kullanabiliyoruz. Temel olarak Streams in altyapısına baktığımız zaman Advanced Queue ve Log Miner teknolojilerini kullandığını görecegiz. Her ne kadar Streams bu teknolojileri son kullanıcıya hissettirmeden kullanmaya calışsa da, bu döküman içerisinde sıkça varlığını hissedeceğimiz teknolojilerdir. Bir diğer önemli teknoloji ise Oracle veritabanının logshipping özelliği. Logshipping özelliğinin düzgün şekilde ayarlanması son kullanıcıya bırakıldığı için bu konuya detaylıca değineceğiz. Eğer yukarıda bahsettiğimiz teknolojileri cümle içinde kullanarak Streams i özetlemek istersek; Streams, veritabanı arşivlog larını Logminer ile tarayıp, kaynak veritabanında çalışmış olan SQL komutlarını belirli kural ve filtrelerden geçirerek Advanced Queue kuyruklarında biriktirip, daha sonra bu komutların yine bazı kural ve filtrelerden geçirerek hedef veritabanında çalıştıran bir teknolojidir. Temel Kavramlar Streams temel olarak; Capture, Propagate ve Apply adı verilen üç farklı süreçten oluşur. Capture süreci, arşiv loglarından SQL komutlarını tarayıp, toplayıp LCR (Logical Change Record) kayıtları halinde capture kuyruğuna yazar. Propagate süreci ise capture kuyruğuna gelen LCR kayıtlarını capture kuyruğundan alıp apply kuyruğuna yazan bir süreçtir. Apply sureci ise apply kuyruğunda bekleyen LCR kayitlarını hedef veritabanı üzerinde çalıştıran süreçtir. Teorik olarak bu süreçlerin herbirisini farklı veritabanlarında çalıştırabilirsiniz. Örneğin; Capture süreci kaynak veritabanında çalışır ve bir veya birden fazla veritabanına Propagate süreci ile LCR kayıtlarını gönderir ve Apply süreci bu hedef veritaban(lar)ında calışarak kendi kuyruğuna propagate süreci ile yazılmış olan LCR ları işleyebilir. Bu özel duruma Upstream Capture adı verilir ve arşivlog taşınması gerektirmez. Üretilen LCR kayıtları 1

3 propagation süreci ile hedef veritabanına taşınırken, arşivlog taranması yükü kaynak veritabanına yüklenmiş olur. Upstream Capture Eğer Capture süreci hedef veritabanında çalışır ve yine aynı veritabanındaki Apply süreci ile degisikler uygulanır ise bu duruma Downstream Capture adı verilir ve arşivlog tarama işlemleri hedef veritabanında yapıldığından, kaynak veritabanına herhangi bir yük teşkil etmez. Bu şekilde kurulacak olan bir yapıda Propagation sürecinede gerek yoktur, zira Capture ve Apply kuyrukları aynı kuyruk yapısını kullanacak şekilde ayarlanabilir. Diğer yandan bunun gibi bir yapı arşivlog ların hedef veritabanına taşınmasını gerektirir ki bu konuyu ileride yakından inceleyeceğiz. 2

4 Downstream Capture - 1 Downstream Capture - 2 Oracle Streams i kullanarak tekil tabloları replike edebileceğimiz gibi bir schema içerisinde bulunan tüm tablolarında replikasyonunuda sağlayabiliriz. Uygulama kısmında görüleceği üzere her Capture sürecini sadece tek bir tablo için kullanabileceğimiz gibi, aynı Capture sürecini birden fazla tablo içinde kullanabiliriz. 3

5 Aynı şekilde bir schema altında bulunan tüm tabloların replikasyonunu tek bir Capture ve Apply süreci ile sağlayanabilir. Ayrıca kural kümeleri (rulesets) ile bir schema replikasyonundan bir veya birden fazla tablonun replike olmasını engellenebilir Konsept olarak streams tüm veritabanını, diğer bir veritabanına replike etmek için de kullanılabilir. Diğer yandan bu şekildeki bir tasarım sonucu elde edilen çözüm aslında Logical Standby veritabanı kurulumundan pek te farklı değildir. Gerekli Altyapı Ayarları Streams kullanmaya başlamadan önce bazi ayarlarin önceden yapilması gerekir. Her Streams ortamında bu ayarların yapılması zorunludur, aksi halde Streams paket ve prosedürleri hata alacaktır. Streams Yönetici Hesabının oluşturulması Streams süreçlerinin çalışacağı, süreçlerin ihtiyaç duyacağı kuyruk ve kuyruk tablosu gibi veritabanı nesnelerinin sahibi olacağı bir veritabanı kullanıcısının yaratılması gerekmektedir. Bu kullanıcı halihazırda var olan bir kullanıcı da olabilir. Aşağıdaki kod bloğunda kullanıcının ihtiyacı olan haklar ve kullanıcı yaratma kodu bulunabilir. Burada dikkat edilmesi gereken iki husus var. Birincisi; DBA yetkileri. Streams Yönetici Hesabının DBA yetkilerine sahip olması gerektiği Oracle Dökümantasyonunda var, dolayisiyla bu yetkileri atamak durumundayız. Diğer yandan da güvenlik açısından dikkat edilmesi gerekmektedir. İkincisi; Streams Yönetici Hesabı kullanıcı adının mümkün olduğu kadar kısa tutulması. Bu kullanıcı adı, streams paketleri (DBMS_STREAMS_ADM) içerisinde otomatik nesne isimleri oluştururken kullanılabiliyor. Böyle bir durumda herhangi bir nesne ismi 32 karakterden uzun olduğunda çalıştırılmak istenilen prosedür hata alabilir. create user STRM identified by "<password>"; grant connect, resource to STRM; grant create database link to STRM; grant create any directory to STRM; grant dba to STRM; exec DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('STRM',TRUE); 4

6 Dblink tanımlarının yapılması Tabloların ilk eşitliğinin sağlanması (first instantiation) için veritabanının Dblink ler üzerinden iletişim kurulması gerekmektedir. İleriki bölümlerde bahsediliyor olsa da burada da değinmekte fayda var. Streams prosedürleri tablo eşitliğini sağlarken arka planda datapump teknolojisini kullanır. Tablo eşitliği sağlandıktan sonrada arşivlog lar üzerinden Streams süreçleri başlar. Fakat hangi anda tam olarak eşitlemenin başladığını işaretleyebilmek gerekmektedir, zira hangi andan itibaren değişiklikler hedef veritabanına uygulanmaya başlamalıdır sorusu önemlidir. Streams bu soruyu cevaplamak için SCN (system change number) değerini kullanır. Bu değeri almak için ise Dblink üzerinden kaynak veritabanındaki SCN değerini alır ve hedef veritabanındaki tablonun SCN değerini günceller. Dolayısıyla yeni güncellemeler bu SCN numarasından daha büyük değerler (eşitlemeden sonraki daha güncel değişiklikler) ise yapılır. Yine bu bölümde de dikkat edilmesi gereken bazı önemli noktalar vardır. Bunlardan birincisi; Dblink tanımlarının Streams yöneticisi schema sı içerisinde olması gerektiğidir. İkincisi ise; Dblink isimlerinin bağlı oldukları veritabanları ile aynı olması gerektiğidir. Aşağıdaki kod bloğunda veritabanı global isminin nasıl elde edileceği ve Dblink yaratma scriptleri görülebilir. select * from global_name; select * from v$parameter where name in ('db_name','db_domain'); select * from dba_db_links where owner='<streams_admin_username>'; connect strm/"<password>"@<source_db>; CREATE DATABASE LINK <target_db_name> CONNECT TO <streams_admin_username> IDENTIFIED BY "<password>" USING '<tns_alias>'; connect strm/"<password>"@<target_db>; CREATE DATABASE LINK <source_db_name> CONNECT TO <streams_admin_username> IDENTIFIED BY "<password>" USING '<tns_alias>'; Streams Klasörlerinin tanımlanması Streams paket leri ileride bahsedeceğimiz bazı opsiyonlarını kullanabilmek için işletim sistemi üzerinde bazı klasörlere ihtiyaç duyar. Bu opsiyonlar kullanılmayacak ise bu bölümdeki klasörlere ihtiyaç yoktur. Bu döküman içerisinde bahsedilen opsiyonlar kullanılacağı için gerekli olan Streams klasörlerini yaratmak uygun gözüküyor. Her 5

7 veritabanı klasörü için işletim sisteminde farklı klasörler tanımlayabileceğiniz gibi aşağıdaki şekilde tek bir işletim sistemi klasörü de kullanabilirsiniz. connect strm/<password>; --drop directory script_directory_object; --drop directory source_directory_object; --drop directory destination_directory_object; CREATE OR REPLACE DIRECTORY script_directory_object AS '/oracle/scripts/streams/'; CREATE OR REPLACE DIRECTORY source_directory_object AS '/oracle/scripts/streams/'; CREATE OR REPLACE DIRECTORY destination_directory_object AS '/oracle/scripts/streams/'; select * from dba_directories; Streams yapısına karar verilmesi Temel altyapı nesneleri oluşturulduktan sonra nasıl bir Streams mimarisi yapılandırılması gerektiğine karar vermek gerekir. Downstream Capture süreci mi yoksa Upstream Capture süreci mi yapılandırılması gerektiğine ilgili sistemsel mimariye göre karar verilmelidir. Eğer Downstream Capture süreci planlanacak ise bu durumda arşivlog ların taşınması gündeme gelecektir. Diğer yandan hangi veritabanı nesnelerinin replike edilecekleride önemlidir. İlgili ortam için Schema bazında mı bir replikasyon mu yoksa tablo bazında bir replikasyon mu daha uygun olacak sorusununda cevabını vermek gerekir. Bu aşamada Downstream Capture sürecinin kullanılacağını varsayarak arşivlog taşıma sürecinin ayarlarının nasıl yapılacağını inceleyebiliriz. Arşivlog ların Hedef veritabanına taşınması Streams Capture süreci arşivlog lar üzerinde çalıştığından dolayı, eğer bir Downstreams Capture yapılandırması planlanıyor ise bu durumda arşivlog ların kaynak veritabanından hedef veritabanına taşınması gerekir. Bunun için Oracle veritabanının Redo Transport Services özelliği kullanılır. Redo Transport Services, log_archive_dest_n parametresi kullanılarak ayarlanabilir. Arşivleme süresinin yerel dosya sistemine arşivlenmesini istediğimiz durumlarda bu parametreye LOCATION değeri ile yer bildirimi yaparken, hedef veritabanına yerel ağ üzerinden arşivlog göndermek için aynı sistem parametresine SERVICE bildirimi ile tns 6

8 alias belirterek arşivlerin gönderilmesi gereken uzak veritabanı bildirebilir. Redo Transport Servisi LGWR servisi ile gerçeklenebileceği gibi ARCn servisi ilede gerçeklenebilir. SERVICE=ORCL2 bildirimi, arşivlog ları tns alias ı ORCL2 olan uzak bir veritabanına taşınması gerektiğini belirtiyor ($ORACLE_HOME/network/admin/tnsnames.ora dosyasında ORCL2 isimli bir kayıt yok ise bu bildirim hata alacaktır). Birden fazla kaynak veritabanından, tek bir hedef veritabanına streams kurulumu yapılabilir. Fakat böyle bir durumda her kaynak veritabanından gelecek olan arşivlog lar birbirlerine karışabilir. Kullanıcı kolaylığı açısından TEMPLATE bildirimi ile birlikte hedef veritabanına gönderilecek olan arşivlog ların derli toplu bir hiyerarşide tutulması sağlanabilir. Eğer, Redo transport servislerinin Log writer süreci üzerinden çalıştırılması planlanıyor ise bu durumda log_archive_dest_2 parametresi içerisine LGWR bildirimini eklemek gerekir. Diğer yandan redo transport servisinin çok daha detaylı ve esnek bir yapısı vardır. Fakat bu dökümanın asıl konusu streams ürünü olduğundan, bu detaylı anlatıma girmeyeceğiz, zira arşivlog ların hedef veritabanına taşınması probleminin çözümü, içerisinde bulunduğumuz durum için yeterlidir. Okuyucu daha detaylı bilgiyi dataguard dökümanlarından elde edebilir. Bu dökümanda arşivlog ları ARCn sürecini kullanarak asenkron olarak hedef veritabanına belirli bir template belirleyerek göndermekteyiz. SQL> alter system set log_archive_dest_2='service=orcl2 ASYNC NOREGISTER TEMPLATE=+DATA/ORCL2/ARCHIVELOG/FROM_ORCL/%t_%s_%r.dbf DB_UNIQUE_NAME=ORCL2' scope=both; SQL> alter system set log_archive_dest_state_2='enable'; SQL> alter system switch logfile; SQL> show parameter log_archive_dest_2; NAME TYPE VALUE log_archive_dest_2 string SERVICE=ORCL2 ASYNC NOREGISTER VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) TEMPLATE=+DATA/ORCL2/ARCHIVELOG/FROM_ORC L/%t_%s_%r.dbf DB_UNIQUE_NAME=ORCL2 7

9 Streams Tablo Replikasyonu Tablo replikasyonunu başlatmak için DBMS_STREAMS_ADM paketi içerisindeki MAINTAIN_TABLES prosedürü kullanılabilir. Bu prosedür bir tablo replikasyonu için gerekli olan her adımı otomatik olarak yapar. Bu adımları özetlemek gerekirse; Replike edilecek tablo için kaynak veritabanında Supplemental Logging ayarlarının yapılması İlgili tablo için ilk başlangıç ayarlarının yapılandırılması Capture sürecinin ve kurallarının yaratılması Tablonun hedef veritabanında yaratılması ve kaynak veritabanı ile aynı noktasına getirilmesi Propagation sürecinin yaratılması Apply sürecinin ve kurallarının yaratılması Yukarıda listelenen adımların tek tek manuel yapılandırılması da söz konusu olabilir. Hatta bazı özel durumlarda manuel yapılandırma mecburi bir hale gelebilir. Dolayısıyla aşağıdaki prosedürler ile yaratılabilecek bir streams ortamını manuel yaratmak için gerekli olan adımlarıda detaylı şekilde incelemek gerekir. Böylece bir streams ortamı da daha detaylı bir şekilde anlaşılabilir. Öncelikle DBMS_STREAMS_ADM.MAINTAIN_TABLES prosedürünün argümanlarından bahsetmek gerekir. Daha sonra ise bu prosedürün neler yaptığını daha detaylı bir şekilde inceleyebiliriz. table_names: replikasyon sürecine dahil edilecek bir veya birden fazla tablonun <schema_adı>.<tablo_adı> formatında girdi alan değişkendir. Tek bir tablo için varchar2 tipi bir değişken alabileceği gibi aşağıdaki sekildeki kullanımında da görüldüğü üzere bir varchar2 array i şeklinde de override edilmiş bir versiyonu bulunmaktadır. source_directoy_object/destination_directory_object: daha önceki bölümde yarattığımız klasörler tanımlarını burada kullanabilirsiniz. Eğer instantiation parametresi DBMS_STREAMS_ADM.INSTANTIATION_TABLE değerine ayarlı ise bu durumda ilk tablo eşitlemesi datapump aracılığıyla yapılır. Datapump export u destination_directory_object klasörüne alınırken, datapump import u ise source_directory_object ile belirlenmiş olan klasörden okuma yapar. Aşağıdaki örnekte bu parametrelerin NULL olarak atanmasının sebebi instantiation parametresinin DBMS_STREAMS_ADM.INSTANTIATION_TABLE_ NETWORK olarak ayarlanmış olmasıdır. Bu değer streams in ilk tablo eşitlemesi yaparken yine datapump ın network üzerinden export/import işlemi yapmasını, dolayısıyla dosya 8

10 sistemine herhangi bir dosya yazma gereksinimi olmamasını sağlamaktadır (bkz. datapump, source_database/destination_database: kaynak ve hedef veritabanlarının isimleri. Veritabanı isimleri ile aynı olan dblink kayıtlarınında yaratılmış ve çalışıyor olması gerekmektedir. capture_name/apply_name: Capture ve Apply süreçlerinin isimleri. Dictionary sorgularında göreceğimiz gibi, MAINTAIN_TABLES prosedürünün yaratacağı kural, kural kümeleri, kuyruk ve kuyruk tabloları burada verilecek olan capture ve apply isimlerine bağlanacaklar. capture_queue_name/apply_queue_name: Capture ve Apply süreçlerinin advanced Queue isimleri. Önemli: Eğer Downstream Capture mimarisi planlanıyorsa Capture ve Apply süreçleri aynı kuyruğa bağlanabilir. Böyle bir durumda Propagation Sürecinede gerek yoktur. capture_queue_user/apply_queue_user: Capture ve Apply süreçlerinin advanced queue kuyruklarının ve kuyruk tablolarının hangi schema altında yaratılması gerektiğini bildirir. propagation_name: Eğer Capture ve Apply süreçlerini birbirinden farklı kuyruklar kullanıyor ise bu durumda iki kuyruk arasındaki LCR kayıtlarının taşınması için gereklidir ve değerin atanması mecburidir. perform_actions/script_directory_object/script_name: Bu üç değişken birbirlerine bağlı olduğu için tek başlık altında incelemek daha doğru olacak. perform_actions değişkeni iki farklı değer alabilir. Birincisi TRUE, MAINTAIN_TABLES prosedürünün gerekli işlemleri yapmasını ve tabloların senkronize olmasını sağlaması için kullanılıyor. İkincisi ise FALSE, bu durumda MAINTAIN_TABLES prosedürü veritabanı üzerinde herhangi bir işlem yapmıyor, bunun yerine uygulamadığı işlemleri script_directory_object değişkeni ile belirlenen klasöre, script_name adı ile bir script yaratıyor. Bu scripti sqlplus ile çalıştırdığınız taktirde perform_actions değerinin TRUE olması durumunda MAINTAIN_TABLES prosedürünün arkaplan da çalıştırması gereken işlemlerin tamamını menuel olarak çalıştırmış oluruz. Eğer gerekirse MAINTAIN_TABLE prosedürünün bu scripti yaratması sağlanıp, script ozellestirilip ortama özel Streams yapılandırma süreci sağlanabilir. Aşağıdaki iki örnekte hem propagation süreci yaratarak hemde propagation süreci olmadan yaratılabilecek Streams tablo replikasyonu örnekleri görmekteyiz. Örnekteki scriptler hedef veritabanında çalıştırıldığı zaman bir Downstream Capture yapısı elde edilebilir. Eğer kaynak veritabanında çalıştırılır ise, o halde Upstream Capture yapısı elde edilir, fakat bu durumda propagation süreci mutlaka yaratılmalıdır. 9

11 DECLARE tables DBMS_UTILITY.UNCL_ARRAY; BEGIN tables(1) := '<table_owner>.<table_name>'; DBMS_STREAMS_ADM.MAINTAIN_TABLES( table_names => tables, source_directory_object => NULL, destination_directory_object => NULL, source_database => '<source_database_name>', destination_database => '<target_database_name>', capture_name => '<capture_name>', capture_queue_name => '<capture_queue_name>', capture_queue_user => '<capture_queue_owner>', propagation_name => '<propagation_name>', apply_name => '<apply_name>', apply_queue_name => '<apply_queue_name>', apply_queue_user => '<apply_queue_owner>', perform_actions => TRUE, script_directory_object => 'script_directory_object', script_name => 'perform_actions.sql', bi_directional => FALSE, include_ddl => TRUE, instantiation => DBMS_STREAMS_ADM.INSTANTIATION_TABLE_NETWORK); END; DECLARE tables DBMS_UTILITY.UNCL_ARRAY; BEGIN tables(1) := '<table_owner>.<table_name>'; DBMS_STREAMS_ADM.MAINTAIN_TABLES( table_names => tables, source_directory_object => NULL, destination_directory_object => NULL, source_database => '<source_database_name>', destination_database => '<target_database_name>', capture_name => '<capture_name>, capture_queue_name => '<queue_name>', capture_queue_user => '<capture_queue_owner>', propagation_name => NULL, apply_name => '<apply_name>', apply_queue_name => '<queue_name>', apply_queue_user => '<apply_queue_owner>', perform_actions => TRUE, script_directory_object => 'script_directory_object', script_name => 'perform_actions.sql', bi_directional => FALSE, include_ddl => TRUE, instantiation => DBMS_STREAMS_ADM.INSTANTIATION_TABLE_NETWORK); END; 10

12 Streams veritabanı nesnelerinin sorgulanması: DBMS_STREAMS_ADM.MAINTAIN_TABLES prosedürü çalıştırıp Streams tablo replikasyonu ortamı kurulduktan sonra yaratılan veritabanı yapılarını sorgulayabilir, Streams süreçlerinin aşamalarını izleyebilir ve muhtemel problemleri çözebilirsiniz. Apply ve Capture tanımlarının detaylarını izlemek için dba_apply ve dba_capture view ları kullanılabilir. Propagation detayları için ise dba_propagation view ı görüntülenebilir fakat bu örnekte downstream capture kullandığımız için propagation sürecinin getireceği fazladan yük ve süreci ortadan kaldırmak adına bu süreci hiç kullanmamak tercih edildi. Ayrıca, apply ve capture parametrelerinin değerlerini görmek için ise all_apply_parameters ve all_capture_parameters view ları kullanılabilir. SELECT apply_name, apply_user, queue_owner '.' queue_name as queue_name, rule_set_owner '.' rule_set_name as rule_set_name, status FROM dba_apply ORDER BY apply_name; /* APPLY_NAME APPLY_USER QUEUE_NAME RULE_SET_NAME STATUS APPL_TABLE_GRP01 STRM STRM.TABLE_GRP01_Q STRM.RULESET$_445 DISABLED APPL_TABLE_GRP02 STRM STRM.TABLE_GRP02_Q STRM.RULESET$_467 DISABLED APPL_TABLE_GRP03 STRM STRM.TABLE_GRP03_Q STRM.RULESET$_435 DISABLED APPL_TABLE_GRP04 STRM STRM.TABLE_GRP04_Q STRM.RULESET$_419 DISABLED APPL_TABLE_GRP05 STRM STRM.TABLE_GRP05_Q STRM.RULESET$_397 DISABLED */ SELECT capture_name, capture_user, queue_owner '.' queue_name as queue_name, rule_set_owner '.' rule_set_name as rule_set_name, status FROM dba_capture ORDER BY capture_name; /* CAPTURE_NAME CAPTURE_USER QUEUE_NAME RULE_SET_NAME STATUS CAPT_TABLE_GRP01 STRM STRM.TABLE_GRP01_Q STRM.RULESET$_442 DISABLED CAPT_TABLE_GRP02 STRM STRM.TABLE_GRP02_Q STRM.RULESET$_464 DISABLED CAPT_TABLE_GRP03 STRM STRM.TABLE_GRP03_Q STRM.RULESET$_432 DISABLED CAPT_TABLE_GRP04 STRM STRM.TABLE_GRP04_Q STRM.RULESET$_416 DISABLED CAPT_TABLE_GRP05 STRM STRM.TABLE_GRP05_Q STRM.RULESET$_394 DISABLED */ 11

13 select * from all_apply_parameters where apply_name='appl_table_grp01'; /* APPLY_NAME PARAMETER VALUE SET_BY_USER APPL_TABLE_GRP01 PARALLELISM 2 YES APPL_TABLE_GRP01 STARTUP_SECONDS 0 NO APPL_TABLE_GRP01 TRACE_LEVEL 0 NO APPL_TABLE_GRP01 TIME_LIMIT INFINITE NO APPL_TABLE_GRP01 TRANSACTION_LIMIT INFINITE NO APPL_TABLE_GRP01 MAXIMUM_SCN INFINITE NO APPL_TABLE_GRP01 WRITE_ALERT_LOG Y NO APPL_TABLE_GRP01 DISABLE_ON_LIMIT N NO APPL_TABLE_GRP01 DISABLE_ON_ERROR N YES APPL_TABLE_GRP01 COMMIT_SERIALIZATION FULL NO APPL_TABLE_GRP01 ALLOW_DUPLICATE_ROWS N NO APPL_TABLE_GRP01 TXN_LCR_SPILL_THRESHOLD NO */ select * from all_capture_parameters where capture_name='capt_table_grp01'; /* CAPTURE_NAME PARAMETER VALUE SET_BY_USER CAPT_TABLE_GRP01 PARALLELISM 2 YES CAPT_TABLE_GRP01 STARTUP_SECONDS 0 NO CAPT_TABLE_GRP01 TRACE_LEVEL 0 NO CAPT_TABLE_GRP01 TIME_LIMIT INFINITE NO CAPT_TABLE_GRP01 MESSAGE_LIMIT INFINITE NO CAPT_TABLE_GRP01 _CHECKPOINT_FREQUENCY 100 YES CAPT_TABLE_GRP01 _SGA_SIZE 100 YES CAPT_TABLE_GRP01 MAXIMUM_SCN INFINITE NO CAPT_TABLE_GRP01 WRITE_ALERT_LOG Y NO CAPT_TABLE_GRP01 DISABLE_ON_LIMIT N NO CAPT_TABLE_GRP01 _CHECKPOINT_FORCE N YES CAPT_TABLE_GRP01 DOWNSTREAM_REAL_TIME_MINE N NO */ select apply_name, apply_time, applied_message_create_time from dba_apply_progress order by apply_name; /* APPLY_NAME APPLY_TIME APPLIED_MESSAGE_CREATE_TIME APPL_TABLE_GRP01 27/12/ :56 27/12/ :50 APPL_TABLE_GRP02 27/12/ :56 27/12/ :50 APPL_TABLE_GRP03 27/12/ :56 27/12/ :50 APPL_TABLE_GRP04 27/12/ :57 27/12/ :53 APPL_TABLE_GRP05 27/12/ :56 27/12/ :50 */ 12

14 Yukarida Apply ve Capture süreçlerini görebiliyoruz, fakat bu süreçlerin hangi tablolari replike ettiğini görmek için daha önceki bölümde de bahsedilen kuralları incelemek gerekir. Her Capture ve Apply sürecinin bir RULE_SET_NAME değeri tanımlıdır. RULE_SET tanımı ise içerisinde RULE ları barındıran mantıksal bir yapıdır, dolayısıyla RULSE_SET view ı ile RULE view ının birlikte kullanılması gerekmektedir. RULE bilgileri DBA_RULES view ında bulunurken, RULE_SET tanımları DBA_RULESETS view ında bulunur. Fakat bu iki view ı birleştiren bir diger view ise DBA_RULE_SET_RULES dur. Aşağıdaki sorgular Apply ve Capture süreçlerinin kurallarını göstermektedir. Burada dikkat edilmesi gereken her tablo için iki kural bulunduğudur. Bunun sebebi DML ve DDL kurallarının birbirlerinden farklı kurallar tarafından içerilmesidir. select t1.apply_name, t1.queue_name, t1.status, t1.status_change_time, t2.rule_set_name, t2.rule_set_rule_enabled, t3.rule_name from dba_apply t1, dba_rule_set_rules t2, dba_rules t3 where t1.rule_set_name=t2.rule_set_name and t2.rule_name = t3.rule_name; select t1.capture_name, t1.queue_name, t1.status, t1.status_change_time, t2.rule_set_name, t2.rule_set_rule_enabled, t3.rule_name from dba_capture t1, dba_rule_set_rules t2, dba_rules t3 where t1.rule_set_name=t2.rule_set_name and t2.rule_name = t3.rule_name; 13

15 Apply ve Capture süreçlerinin izlenmesi Az önceki bölümde tanımlarını gördüğümüz süreçleri eğer çalışıyor durumda ise bellek değerleri incelenebilir. Capture süreci için v$streams_capture view ı incelenebilirken, Apply süreci için üç faklı view incelenmelidir. Bunlar v$streams_apply_server, v$streams_apply_reader ve v$streams_apply_coordinator dır. Reader süreci advanced queue den capture sürecinin yazdığı LCR kayıtlarını okurken, server süreci ise bu LCR kayıtlarını tablolalar üzerinde uygulamakla sorumludur. İçerisinde bulunduğumuz özel durumda her Apply süreci için iki adet kayıt vardır. Bunun sebebi Apply süreçlerinin parallel değerlerinin 2 olarak ayarlanmış olmasıdır. Propagation süreçleri için ise v$propagation_sender ve v$propagation_receiver view lerı incelenebilir fakat bu döküman içerisinde propagation süreci kullanılmadığı için bu view ler herhangi bir kayıt dönmeyecektir. NOT: Eğer süreçler halihazırda çalışmıyor ise bu durumda aşağıdaki sorgu sonuçları herhangi bir kayıt gözükmeyecektir. NOT2: Sorgu sonuçları alan yetersizliğinden kısaltılmıştır. select sid, serial#, capture_name, logminer_id, startup_time, state, capture_time, capture_message_create_time, total_messages_created, total_messages_enqueued from v$streams_capture order by capture_name; /* SID SERIAL# CAPTURE_NAME LOGMINER_ID STARTUP_TIME STATE CAPT_TABLE_GRP /12/ :01 WAITING FOR REDO: CAPT_TABLE_GRP /12/ :01 WAITING FOR REDO: CAPT_TABLE_GRP /12/ :01 WAITING FOR REDO: CAPT_TABLE_GRP /12/ :01 WAITING FOR REDO: CAPT_TABLE_GRP /12/ :01 WAITING FOR REDO:... */ 14

16 select sid, serial#, state, apply_name, total_errors from v$streams_apply_coordinator; /* SID SERIAL# STATE APPLY_NAME TOTAL_ERRORS IDLE APPL_TABLE_GRP IDLE APPL_TABLE_GRP IDLE APPL_TABLE_GRP IDLE APPL_TABLE_GRP IDLE APPL_TABLE_GRP05 0 */ select sid, serial#, apply_name, state, total_messages_dequeued from v$streams_apply_reader order by apply_name; /* SID SERIAL# APPLY_NAME STATE TOTAL_MESSAGES_DEQUEUED APPL_TABLE_GRP01 DEQUEUE MESSAGES APPL_TABLE_GRP02 DEQUEUE MESSAGES APPL_TABLE_GRP03 DEQUEUE MESSAGES APPL_TABLE_GRP04 DEQUEUE MESSAGES APPL_TABLE_GRP05 DEQUEUE MESSAGES */ select sid, serial#, apply_name, server_id, state from v$streams_apply_server order by apply_name; 15

17 /* SID SERIAL# APPLY_NAME SERVER_ID STATE APPL_TABLE_GRP01 1 IDLE APPL_TABLE_GRP01 2 IDLE APPL_TABLE_GRP02 1 IDLE APPL_TABLE_GRP02 2 IDLE APPL_TABLE_GRP03 1 IDLE APPL_TABLE_GRP03 2 IDLE APPL_TABLE_GRP04 1 IDLE APPL_TABLE_GRP04 2 IDLE APPL_TABLE_GRP05 2 IDLE APPL_TABLE_GRP05 1 IDLE */ Apply ve Capture Süreçlerinin Advanced Queue kuyruk yapıları ile çalıştıklarını yukarıda belirtmiştik. Her kuyruk yapısınında bir kuyruk tablosu olduğunu yine yukarıda belirtmiştik. Bazı özel durumlarda bu tablolara manuel operasyon gerekebiliyor. Bunların en başında, fragmantasyonu engellemek amaçlı düzenli rebuild scriptleri gelirken, yine bazı durumlarda Streams configrasyonunu kaldırdıktan sonra kuyruk tablolarını manuel olarak silmek gerekebiliyor. Apply ve Capture süreçlerinin kuyruk ve kuyruk tablolarına aşağıdaki gibi ulaşılabilir. select t2.capture_name, t1.owner '.' t1.name as queue, t1.queue_table from dba_queues t1, dba_capture t2 where t1.name=t2.queue_name and t1.owner='strm' order by 1; /* CAPTURE_NAME QUEUE QUEUE_TABLE CAPT_TABLE_GRP01 STRM.TABLE_GRP01_Q COREP$QT$GRP1 CAPT_TABLE_GRP02 STRM.TABLE_GRP02_Q COREP$QT$GRP2 CAPT_TABLE_GRP03 STRM.TABLE_GRP03_Q COREP$QT$GRP3 CAPT_TABLE_GRP04 STRM.TABLE_GRP04_Q COREP$QT$GRP4 CAPT_TABLE_GRP05 STRM.TABLE_GRP05_Q COREP$QT$GRP5 */ 16

18 Streams Tablo Replikasyonun Detayları DBMS_STREAMS_ADM.MAINTAIN_TABLES prosedürünü kullanmadan da Streams Tablo replikasyonu sağlanabilir. Her ne kadar gerekli veritabanı nesnelerinin manuel yaratılması ve tablo eşitlemesinin manuel olarak ele alınması daha zahmetli bir iş olsa da, yine de bazı özel durumlarda mecburi olarak bu yola başvurmak gerekebiliyor. Aşağıdaki kod bloğunda kaynak veritabanında yapılması gereken işlemler görülebilir. Eğer senkronize edilecek tablo üzerinde primary key var ise bu durumda sadece primary key alanı üzerinden bir supplemental logging ayarı yapmak yeterli olacaktır. Eğer tablo üzerinde bir primary key veya bir unique constraint tanımı yok ise bu durumda tüm alanlar üzerinde bir supplemental logging yaratmak gerekecektir. dbms_capture_adm.build dictionary export unun redolog lara yazılmasını ve bu log transport servisiyle bu export un arşivlog lar ile hedef veritabanına taşınmasını sağlar (Streams ın altyapısında log miner kullanıldığından bahsetmiştik). dbms_capture_adm.prepare_table_instantiation prosedürü, tablonun ilk eşitlemesi başlamadan önceki son SCN numarasını kaydetmek için kullanılır. Böylece capture süreci hangi SCN numarasından itibaren gelen değişikliklere kuyruk kayıtları arasına atması gerektiğini bilir. dbms_apply_adm.set_table_instantiation hedef veritabanındaki apply süreci, kaynak veritabanındaki değişikliklerin SCN numaralarının, hedef veritabanının SCN numarasından daha büyük olduğu olduğu durumlardaki değişiklikleri uygulamaktadır. Fakat mantıksal bir yapıda hedef veritabanı SCN numarası, kaynak veritabanından daha büyük olabilir. Bu olasılığı bertaraf edebilmek için ilgili tabloya bağlı SCN numarası eşitlenerek apply sürecinin değişiklik kaydını kaçırması engellenir. connect begin execute immediate 'alter table <table_name> add supplemental log data (PRIMARY KEY) columns'; execute immediate 'alter table <table_name> add supplemental log data (UNIQUE) columns'; execute immediate 'alter table <table_name> add supplemental log data (FOREIGN KEY) columns'; execute immediate 'alter table <table_name> add supplemental log data (ALL) columns;'; exception when others then null; end; 17

19 / --select * from dba_log_groups order by table_name, log_group_type; BEGIN dbms_capture_adm.build; dbms_capture_adm.prepare_table_instantiation( table_name => 'URN.WF_PROCESS_LOG_BAG'); END; / --select * from dba_capture_prepared_tables DECLARE iscn NUMBER; -- Variable to hold instantiation SCN value BEGIN iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER(); DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@ODS( source_object_name => 'URN.WF_PROCESS_LOG_BAG', source_database_name => 'COREP', instantiation_scn => iscn); END; / --select * from dba_apply_instantiated_objects connect <user>/"<password>"@<target_db>; Eğer daha önceden yaratılmış bir Apply ve Capture sürecine yeni bir tablo replikasyonu eklenmek isteniyor ise, bu durumda hali hazirda çalışan süreçleri kapatmak iyi bir fikir olabilir. BEGIN dbms_apply_adm.stop_apply('appl_table_grp01'); dbms_capture_adm.stop_capture('capt_table_grp01'); exception when others then null; END; / Capture sürecinin advanced queue kuyruklarını ve daha sonrada Capture sürecinin kendisi yaratmak gereklidir, daha sonrada gerekli kurallar capture sürecine eklenecektir. Aşağıdaki kod bloğunda, eğer bahsedilen capture süreci var ise o halde sadece eklenmesi planlanan yeni tablonun kuralları capture sürecine eklenerek ilgili tabloya ait değişikliklerinde taranması sağlanır aksi halde advanced queue, capture process ve kurallar sırasıyla yaratılır. 18

20 DECLARE v_max_scn number; i_ctl number; i_ctl2 number; BEGIN select count(*) into i_ctl from dba_queues where owner='strm' and name='table_grp01_q'; select count(*) into i_ctl2 from dba_capture where capture_name='capt_table_grp01'; if i_ctl=0 then dbms_streams_adm.set_up_queue( queue_table => '"STRM"."COREP$QT$GRP1"', storage_clause => NULL, queue_name => '"STRM"."TABLE_GRP01_Q"', queue_user => '"STRM"'); end if; if i_ctl2=0 then SELECT MAX(first_change#) into v_max_scn FROM WHERE dictionary_begin = 'YES' AND first_change# <= (SELECT MAX(first_change#) FROM v$archived_log@<source_db_name> WHERE dictionary_end = 'YES'); dbms_capture_adm.create_capture( queue_name=> '"STRM"."TABLE_GRP01_Q"', capture_name=> '"CAPT_TABLE_GRP01"', use_database_link => FALSE, first_scn => v_max_scn, source_database=> 'COREP'); end if; DBMS_STREAMS_ADM.ADD_TABLE_RULES ( table_name => '<TABLE_OWNER>.<TABLE_NAME>', streams_type => 'CAPTURE', streams_name => 'CAPT_TABLE_GRP01', queue_name => 'TABLE_GRP01_Q', include_dml => true, include_ddl => true, source_database => '<SOURCE_DB_NAME>', inclusion_rule => true --specifies the negative rule set ); END; / 19

21 Apply sürecini yaratmak Capture sürecine göre daha kolay. Fazladan kontrole gerek kalmadan aşağıdaki prosedür gerekli kuralları var olan Apply sürecine ekler, eğer ilgili Apply süreci yok ise bu durumda belirtilen isimdeki süreci yaratarak ilgili tablonun kurallarını bu sürece ekler. BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES ( table_name => '<TABLE_OWNER>.<TABLE_NAME>', streams_type => 'APPLY', streams_name => 'APPL_TABLE_GRP01', queue_name => 'TABLE_GRP01_Q', include_dml => true, include_ddl => true, include_tagged_lcr => true, source_database => '<SOURCE_DB_NAME>', inclusion_rule => true --specifies the negative rule set ); END; / Capture ve Apply süreçleri hazır olduğuna göre tablo eşitlemesini tamamlayıp süreçleri çalıştırabiliriz. Tablo eşitlemesi herhangi bir şekilde yapılabilir. Eğer datapump ile yapılması planlanıyorsa DBMS_STREAMS_ADM.MAINTAIN_TABLES prosedürü de kullanılabilirdi. Aşağıda bazı performans problemlerini çözebilecek bazı parametre değişiklikleri görülebilir. BEGIN DBMS_CAPTURE_ADM.SET_PARAMETER (CAPTURE_NAME => '<CAPTURE_NAME>, PARAMETER=>'PARALLELISM', VALUE=>'2'); DBMS_APPLY_ADM.SET_PARAMETER( APPLY_NAME => '<APPLY_NAME>', PARAMETER=>'PARALLELISM', VALUE=>'2'); dbms_capture_adm.set_parameter('<capture_name>','_checkpoint_frequency','100'); dbms_capture_adm.set_parameter('<capture_name>','_sga_size','100'); 20

22 dbms_capture_adm.set_parameter('<capture_name>','_checkpoint_force','y'); DBMS_CAPTURE_ADM.ALTER_CAPTURE( capture_name => '<CAPTURE_NAME>', checkpoint_retention_time => 1); DBMS_APPLY_ADM.SET_PARAMETER('<APPLY_NAME>','DISABLE_ON_ERROR','N'); dbms_apply_adm.start_apply('<apply_name>'); dbms_capture_adm.start_capture('<capture_name>'); exception when others then null; END; / Streams Operasyonları ve Hata giderme Streams konfigurasyonunu sıfirlama DBMS_STREAMS_ADM.MAINTAN_TABLES veya DBMS_STREAMS_ADM.MAINTAIN_ SCHEMAS prosedürlerinin çalışması esnasında bazı hatalar almak mümkün. Özellikle veritabanı nesneleri yaratırken hatalı parametre girişleri ve/veya daha önce bahsettiğimiz nesne isimleri uzunluğunun 32 karakterden daha uzun olması sonucu veya hedef ve kaynak veritabanlarına erişim problemleri yaşandığında prosedür hata alabilir. Bu gibi durumlarda aşağıdaki view ı inceleyerek problemi adresleyerek çözüm yoluna gidilebilir ve hata alan süreç yeniden çalıştırılabilir. SELECT * FROM DBA_RECOVERABLE_SCRIPT_ERRORS; exec DBMS_STREAMS_ADM.RECOVER_OPERATION('<SCRIPT_ID>','PURGE'); exec DBMS_STREAMS_ADM.RECOVER_OPERATION('<SCRIPT_ID>','ROLLBACK'); exec DBMS_STREAMS_ADM.RECOVER_OPERATION('<SCRIPT_ID>','FORWARD'); Bazı problemli durumlarda tüm streams konfigrasyonunu temizlemekde gerekebilir. Bunun için DBMS_STREAMS_ADM.REMOVE_STREAMS_CONFIGURATION prosedürü kullanılabilir. Fakat burada dikkat edilmesi gereken durum, eğer daha önceden var olan bir konfigurasyona ekleme yapılıyorsa bahsedilen script var olan konfigurasyonuda temizler ve Streams açısından temiz bir veritabanı ortamı yaratır. Bazı durumlarda manuel temizlemede gerekebilir. 21

23 exec DBMS_STREAMS_ADM.REMOVE_STREAMS_CONFIGURATION(); veya declare cursor c1 is select * from dba_queue_tables where owner='strm'; cursor c2 is select * from dba_queues where owner='strm'; cursor c3 is select * from dba_rulesets where owner='strm'; r1 c1%rowtype; r2 c2%rowtype; r3 c3%rowtype; begin for r1 in c1 loop begin DBMS_AQADM.DROP_QUEUE_TABLE(r1.queue_table,TRUE); exception when others then null; end; end loop; for r2 in c2 loop DBMS_AQADM.STOP_QUEUE(r2.name,TRUE) ; DBMS_AQADM.DROP_QUEUE(r2.name,TRUE) ; end loop; for r3 in c3 loop DBMS_RULE_ADM.DROP_RULE_SET(r3.ruleset_name,TRUE) ; end loop; end; Hata Giderme Apply sürecinin herhangi bir sebepten dolayı capture sürecinin kaydettiği LCR kayıtlarını işleyemediği durumlar ortaya çıkabilir. Bu gibi durumları DBA_APPLY view ının ERROR_NUMBER ve ERROR_MESSAGE alanlarından takip edebilirsiniz. 22

24 Hata hakkında daha detaylı bilgiye ise DBA_APPLY_ERROR view ından elde edebilirsiniz. Eğer hata sistemsel bir nedenden dolayı meydana geliyorsa, problem giderilip DBMS_APPLY_ADM_EXECUTE_ALL_ERRORS veya sadece tek bir hata için DBMS_APPLY_ADM.EXECUTE_ERROR prosedürleri kullanılabilir. select apply_name, local_transaction_id, error_number, error_message from dba_apply_error; /* APPLY_NAME LOCAL_TRANSACTION_ID ERROR_NUMBER ERROR_MESSAGE APPL_TABLE_GRP ORA-01403: no data found APPL_TABLE_GRP ORA-01403: no data found APPL_TABLE_GRP ORA-01403: no data found */ Arşivloglarının düzenli temizlenmesi Hedef veritabanına gönderilen arşivlerin düzenli olarak silinmemesi durumunda gereksiz disk kullanımı dolayısıyla dosyasisteminde boş disk alanı kalmaması problemi yaşanabilir. Dolayısıyla hedef veritabanındaki arşivlog ların düzenli olarak silinmesi gerekir. Fakat Capture sürecinin ihtiyacı olan bir arşivin silinmesi Streams süreçlerinin hata almasına ve/veya donmasına sebep olabilir. Hangi arşivlog dan daha önceki arşivlog ların silinmesi gerektiğini aşağıdaki sorgulardan bulabilirsiniz. İlk sorgu bir capture sürecinin yeniden açılması için gerekli olan ilk arşivlog ı listeler. Dolayısıyla arşivlog temizleme prosedürünüzde aşağıdaki SCN değerlerinden sonraki arşivlog ların silinmemesine dikkat etmelisiniz. select capture_name, required_checkpoint_scn from dba_capture order by capture_name; /* CAPTURE_NAME REQUIRED_CHECKPOINT_SCN CAPT_TABLE_GRP

25 CAPT_TABLE_GRP CAPT_TABLE_GRP CAPT_TABLE_GRP CAPT_TABLE_GRP */ Ayrıca 10gR2 den sonra aşağıdaki script i kullanarak Capture süreci için gerekli olan ilk arşiv log dosyasını ve tarihinide elde edebilirsiniz. DECLARE hscn NUMBER := 0; lscn NUMBER := 0; sscn NUMBER; ascn NUMBER; alog VARCHAR2 (1000); BEGIN SELECT MIN (start_scn), MIN (applied_scn) INTO sscn, ascn FROM dba_capture; DBMS_OUTPUT.ENABLE (2000); FOR cr IN ( SELECT DISTINCT (a.ckpt_scn) FROM SYSTEM.logmnr_restart_ckpt$ a WHERE a.ckpt_scn <= ascn AND a.valid = 1 AND EXISTS (SELECT * FROM SYSTEM.logmnr_log$ l WHERE a.ckpt_scn BETWEEN l.first_change# AND l.next_change#) ORDER BY a.ckpt_scn DESC) LOOP IF (hscn = 0) THEN hscn := cr.ckpt_scn; ELSE lscn := cr.ckpt_scn; EXIT; END IF; END LOOP; IF lscn = 0 THEN 24

26 lscn := sscn; END IF; DBMS_OUTPUT.put_line ( 'Capture will restart from SCN ' lscn ' in the following file:'); FOR cr IN ( SELECT name, first_time FROM DBA_REGISTERED_ARCHIVED_LOG WHERE lscn BETWEEN first_scn AND next_scn ORDER BY thread#) LOOP DBMS_OUTPUT.put_line (cr.name ' (' cr.first_time ')'); END LOOP; END; / /* Capture will restart from SCN in the following file: +DG_DB_ASM/ods/archivelog/from_corep/1_288531_ dbf (28-DEC-11) +DG_DB_ASM/ods/archivelog/from_corep/1_288531_ dbf (28-DEC-11) PL/SQL procedure successfully completed. */ 25

27 Kaynakça Oracle Streams Concepts and Administration Guide Oracle Streams Replication Administration Guide 26

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri ORACLE DA KÜRSÖRLER Gerekli sistem değişkenleri SQL%ISOPEN : kürsör açıksa değeri true, kapalı ise değeri false SQL%ROWCOUNT : sql ile işlem gören kayıt sayısı bulunur. SQL%FOUND : sql işlemi sonucu, en

Detaylı

SAKLI YORDAM (Stored Procedure) Sibel Somyürek

SAKLI YORDAM (Stored Procedure) Sibel Somyürek SAKLI YORDAM (Stored Procedure) Sibel Somyürek Saklı Yordam Saklı yordamlar veritabanı kataloğunda saklanan SQL kod bloklarının tanımlanmasıdır. Mesela, iki sayı alıp bunların toplamlarını hesaplayan bir

Detaylı

ORACLE TNS (TRANSPARENT NETWORK SUBSTRATE) LISTENER YAPILANDIRMASI

ORACLE TNS (TRANSPARENT NETWORK SUBSTRATE) LISTENER YAPILANDIRMASI ORACLE TNS (TRANSPARENT NETWORK SUBSTRATE LISTENER YAPILANDIRMASI 1 Farklı ortamlardan, kurduğunuz veritabanına bağlanılması listener yapılandırmasıyla sağlanır. Genellikle standart olan ayarlarla 1521

Detaylı

VERİTABANI Veritabanı Yönetimi

VERİTABANI Veritabanı Yönetimi VERİTABANI Veritabanı Yönetimi YAPILANDIRILMIŞ SORGULAMA DİLİ (SQL) Veritabanı yönetimi, veritabanının yapısal özelliklerini belirtmek ve değiştirmek, veritabanına kullanıcı erişimlerini ve yetkilerini

Detaylı

DĐNAMĐK ve STATĐK SQL KULLANMANIN PERFORMANSA ETKĐSĐ

DĐNAMĐK ve STATĐK SQL KULLANMANIN PERFORMANSA ETKĐSĐ DĐNAMĐK ve STATĐK SQL KULLANMANIN PERFORMANSA ETKĐSĐ 1 İçindekiler 1. SQL Yazımında Dikkat Edilecekler... 3 2. TAMAMEN DİNAMİK SQL ÖRNEĞİ... 4 3. DİNAMİK SQL İÇİN CURSOR_SHARING I FORCE ETMEK... 5 4. DİNAMİK

Detaylı

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU Ders Tanıtım Sunumu Database Managegement II Elbistan Meslek Yüksek Okulu 2016 2017 Güz Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU 08 Eyl. 2016 SQL Server 2008 veritabanlarının grafiksel arayüzden yönetimi ve

Detaylı

SQL Komutları (2) Uzm. Murat YAZICI

SQL Komutları (2) Uzm. Murat YAZICI SQL Komutları (2) Uzm. Murat YAZICI Sıralama Sıralama işlemi için SELECT ifadesinde ORDER BY kullanılır. Bu ifadede ASC kelimesi kullanılırsa sıralama küçükten büyüğe doğru (A-Z), DESC kullanılırsa büyükten

Detaylı

PostgreSQL ve PL/pgSQL

PostgreSQL ve PL/pgSQL PostgreSQL ve PL/pgSQL Adnan DURSUN Uygulama tasarım ve geliştiricisi @ : adnandursun.at.asrinbilisim.com.tr : +AdnanDURSUN Sunum Akışı PL/pgSQL nedir PL/pgSQL neden kullanmalıyız PL/pgSQL in yapısı Saklı

Detaylı

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1 5 SQL- Yapısal Sorgulama Dili Veritabanı 1 SQL- Yapısal Sorgulama Dili SQL ifadeleri yapısal olarak üç gruba ayrılır. Veri Tanımlama Dili (DDL - Data Definition Language) Veri İşleme Dili (DML - Data Manipulation

Detaylı

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim' Bu Derste Öğrenecekleriniz: 1- Veri Tabanı Adı Değiştirme 2- Nesnelerin Adını Değiştirme a. Tablo Adı Değiştirme b. Alan Adı Değiştirme c. Constraint (Kısıtlama) Adı Değiştirme 3- Tablo Düzenleme Komutları

Detaylı

PostgreSQL ve PL/pgSQL

PostgreSQL ve PL/pgSQL PostgreSQL ve PL/pgSQL Adnan DURSUN Uygulama tasarımcı ve geliştirici adnandursun@asrinbilisim.com.tr 30.04.2011 İstanbul 1. PostgreSQL Türkiye Konferansı 1 Akış PL/pgSQL nedir PL/pgSQL neden kullanmalıyız

Detaylı

Oracle 11gR2 Üzerine Dataguard Kurulumu Türkçe

Oracle 11gR2 Üzerine Dataguard Kurulumu Türkçe Oracle 11gR2 Üzerine Dataguard Kurulumu Türkçe 1. Primary veritabanının arşiv modda olduğu doğrulanır, değilse arşiv moda alınır. SQL> archive log list Database log mode Archive Mode Automatic archival

Detaylı

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Ara Öğr. Gör. Murat KEÇECĠOĞLU

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Ara Öğr. Gör. Murat KEÇECĠOĞLU Elbistan Meslek Yüksek Okulu 2015 2016 GÜZ Yarıyılı 28-29 Ara. 2015 Öğr. Gör. Murat KEÇECĠOĞLU Indexler İndeks, tablolardan veri çekmek için gerekli sorgular çalıştırılırken gereken süreyi azaltmak amacıyla

Detaylı

VERİ TABANI YÖNETİM SİSTEMLERİ I

VERİ TABANI YÖNETİM SİSTEMLERİ I BÖLÜM 12 12. SQL de YÖNETİMSEL FONKSİYONLAR 12.1. VIEWS ( Tablo Görünümü) Tablo görünümleri veri tabanında tanımı olan tablolardan sorgulama sonucunda elde edilir. Tabloların tersine fiziksel bir yer tutmazlar.

Detaylı

VERİ TABANI YÖNETİM SİSTEMLERİ I

VERİ TABANI YÖNETİM SİSTEMLERİ I BÖLÜM 7 7. TEMEL SQL KOMUTLARI-I SQL (Structured Query Language) kendisi bir programlama dili olmamasına rağmen bir çok kişi tarafından programlama dili olarak bilinir. SQL herhangi bir veri tabanı ortamında

Detaylı

Oracle da kullanılan veri tipleri:

Oracle da kullanılan veri tipleri: ORACLE A GİRİŞ Oracle ile SQL Server ı karşılaştıralım, 1 Oracle da veritabanı yerine kullanıcı oluşturulur. Kullanıcılar veritabanı gibi davranır. 2 Tablo oluşturma, yapısını değiştirme, silme kodları

Detaylı

Veritabanı Tasarımı. Alt Sorgu Temelleri

Veritabanı Tasarımı. Alt Sorgu Temelleri Veritabanı Tasarımı Alt Sorgu Temelleri Konular Verilerin elde edilmesi için alt sorguların tanımlanması ve açıklanması WHERE yantümcesinde tek satır alt sorgu oluşturulması ve çalıştırılması Tek satır

Detaylı

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir.

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir. Oracle (Devam) SELECT INTO Deyimi Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir. Genel ifade: SELECT kolonisimler INTO

Detaylı

2- Total de 8000 byte yer tutup 4000 karakter olarak kullanabildiğimiz tip aşağıdakilerden hangisidir?

2- Total de 8000 byte yer tutup 4000 karakter olarak kullanabildiğimiz tip aşağıdakilerden hangisidir? 1- ' select cast ('500' as nvarchar) + cast ('250' as nvarchar) sorgusunun sonucu olarak aşağıdakilerden hangisi döner? a) 750 b) 250 c) 500250 d) 500 e)250500 2- Total de 8000 byte yer tutup 4000 karakter

Detaylı

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler SQL'e Giriş SQL komutları kullanılarak aşağıdaki işlemler yapılabilir: Veritabanı nesnelerinin oluşturulması ve bu nesnelerle ilgili işlemlerin yapılması Bilgilerin istenilen koşullara göre görüntülenmesi

Detaylı

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme Veritabanı Tasarımı Kullanıcı Erişimini Kontrol Etme Konular Nesne ayrıcalıkları ve sistem ayrıcalıkları arasındaki farkı karşılaştırma Bir kullanıcının bir veritabanınaerişimini etkinleştirmek için gerekli

Detaylı

Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır.

Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır. KULLANICI TANIMLI FONKSİYONLAR Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır. Fonksiyonları veritabanı programlamada

Detaylı

Basit SQL Sorguları Veritabanından verilerin SELECT cümleleri ile alınması işlemine sorgulama denir.

Basit SQL Sorguları Veritabanından verilerin SELECT cümleleri ile alınması işlemine sorgulama denir. SQL SELECT CÜMLELERİ Oracle birçok kullanışlı ve güçlü özellikleri olan bir veritabanıdır. Bu özelliklerinin birçoğu SQL ile ilgilidir. VTYS lerinin çoğunluğunda veriler ile çalışmak için SQL kullanılmaktadır.

Detaylı

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır. 18 SQL SORGU DİLİ SQL (Structured Query Language) yapısal sorgu dili, veritabanı yönetim sistemlerinin standart programlama dili olarak bilinmektedir. SQL dilinin Access içinde sorgu pencerelerinde veya

Detaylı

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon ORACLE GİRİŞ Oracle ile SQL Server ın karşılaştıralım. 1 Oracleda veritabanı yerine kullanıcı oluşturulur. Kullanıcılar veritabanı gibi davranır. 2 Tablo oluşturma, değiştirme ve silme kodları aynı. 3

Detaylı

Üst Düzey Programlama

Üst Düzey Programlama Üst Düzey Programlama JDBC (Java Database Connectivity) Üst Düzey Programlama-ders07/ 1 JDBC JDBC ilişkisel veritabanlarına erişim için Java dilinde kullanılan standart bir kütüphanedir. Bu kütüphanedeki

Detaylı

BLGM 354 DENEY 1 * GİRİŞ

BLGM 354 DENEY 1 * GİRİŞ BLGM 354 DENEY 1 * GİRİŞ Amaçlar 1. Oracle istemcisi kurulumu 2. Veritabanı bağlantısı 3. SQL geliştirme ortamında çalışma Oracle İstemcisinin Kurulumu Oracle istemcisi bölümün FTP sunucusundan (ftp://ftp.cmpe.emu.edu.tr)

Detaylı

VERİ TABANI YÖNETİM SİSTEMLERİ-II

VERİ TABANI YÖNETİM SİSTEMLERİ-II VERİ TABANI YÖNETİM SİSTEMLERİ-II 3. MİCROSOFT SQL SERVER ARAYÜZ HİTİT ÜNİVERSİTESİ SUNGURLU MESLEK YÜKSEKOKULU BİLGİSAYAR TEKNOLOJİLERİ BÖLÜMÜ BİLGİSAYAR PROGRAMCILIĞI / 2. SINIF-GÜZ DÖNEMİ SQL Server

Detaylı

YAPISAL SORGULAMA DİLİ. BARIŞ ARIBURNU barisariburnu.com

YAPISAL SORGULAMA DİLİ. BARIŞ ARIBURNU barisariburnu.com YAPISAL SORGULAMA DİLİ BARIŞ ARIBURNU barisariburnu.com barisariburnu.@gmail.com SQL, insanların veritabanı sistemleri ile konuşmasını sağlayan popüler bir dildir. SQL, tüm veritabanı programlarında kullanılabilir.

Detaylı

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır. SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır. Bu dersimizde biz Microsoft SQL Server veritabanı sistemini kullanmayı öğreneceğiz. SQL Nedir? SQL Structured Query Language

Detaylı

SQL Deyimleri. Öğr.Gör.Volkan ALTINTAŞ Volkanaltintas.com

SQL Deyimleri. Öğr.Gör.Volkan ALTINTAŞ Volkanaltintas.com SQL Deyimleri Öğr.Gör.Volkan ALTINTAŞ Volkanaltintas.com SQL NEDİR? SQL bir veri tabanıyla iletişim kurmak için kullanılır. ANSI standardına göre ilişkisel veri tabanı yönetim sistemlerinin standart dilidir.

Detaylı

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011 Veritabanına Giriş Oğuzhan Ceylan 19 Eylül 2011 Outline Veritabanı MYSQL Mysql Sorgu Komutları Bir veritabanı yaratmak ve kullanmak Veritabanı Veritabanı Verittabanı hangi alanlarda kullanılıyor. Web sitesi

Detaylı

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı Data Programming SQL Language Elbistan Meslek Yüksek Okulu 2015 2016 Bahar Yarıyılı Öğr.Gör. Murat KEÇECĠOĞLU 15 Mar 2016 1 SQL deyimleri veritabanları üzerinde çeşitli işlemleri yerine getirirler. Veritabanından

Detaylı

KULLANICI TANIMLI FONKSİYONLAR (Devam)

KULLANICI TANIMLI FONKSİYONLAR (Devam) KULLANICI TANIMLI FONKSİYONLAR (Devam) Skaler değerli fonksiyon örneği: Parametre müşteri grubu olacak, eğer grubu parametresi değeri NULL olursa, tüm müşteri sayısını, NULL değilse girilen gruptaki müşteri

Detaylı

Veri Tabanı Programlamaya Giriş

Veri Tabanı Programlamaya Giriş Veri Tabanı Programlamaya Giriş Kitap özeti Veri Tabanı Programlamaya Giriş SQL insanların veritabanı sistemleri ile konuşmasını sağlayan popüler bir dildir. Bu dil sayesinde, bir veritabanından kayıtları

Detaylı

Veritabanına Uygulanması

Veritabanına Uygulanması Add, Alter Drop, Alter Change, Alter Sql komutları ve açıklamaları CREATE CREATE TABLE Üzerinde çalışma yapılan veritabanı içerisinde yeni bir tablonun oluşturulmasını sağlar. CREATE TABLE tablo_adı (alan_adı1

Detaylı

KULLANICI TANIMLI FONKSİYONLAR (Devam)

KULLANICI TANIMLI FONKSİYONLAR (Devam) KULLANICI TANIMLI FONKSİYONLAR (Devam) Skaler değerli fonksiyon örneği: Parametre müşteri grubu olacak, eğer grubu parametresi değeri NULL olursa tüm müşteri sayısını, NULL değilse verilen gruptaki müşteri

Detaylı

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir, aksi durumda hata olur.

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir, aksi durumda hata olur. Oracle (Devam) SELECT INTO deyimi Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir, aksi durumda hata olur. Genel ifade; SELECT koloisimleri INTO değişkenisimleri

Detaylı

Bölüm 4: DDL Veri Tanımlama Dili

Bölüm 4: DDL Veri Tanımlama Dili Bölüm 4: DDL Veri Tanımlama Dili -43- Dr. Serkan DİŞLİTAŞ DDL (Data Definition Language Veri Tanımlama Dili : Bu kategorideki SQL komutları ile veritabanları, tablo, görünüm ve indekslerin yaratılması,

Detaylı

BÖLÜM- 9: KULLANICI ERİŞİMLERİNİ YÖNETMEK

BÖLÜM- 9: KULLANICI ERİŞİMLERİNİ YÖNETMEK BÖLÜM- 9: KULLANICI ERİŞİMLERİNİ YÖNETMEK Sistem yetkileri Nesne yetkileri Tablolar uzerinde verilebilecek yetkiler Roller Roller ve yetkiler aras.ndaki farklar KULLANICI ERİŞİMLERİ Kullanıcılar bir Username

Detaylı

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım. DAO İLE SQL KOMUTLARI Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım. SQL-1 SELECT En basit SQL cümleciği oluşturmak için SELECT sözcüğü

Detaylı

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir. SQL PROGRAMLAMA BATCH Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı deyimidir. SELECT. UPDATE...... DELETE.. BATCH BATCH Özellikleri 1- Bir batch içinde bir deyimde yazım hatası olduğunda

Detaylı

Scream! e gelen veri akışlarından bazılarını diğer bir kurum yada bilgisayarla paylaşmak için kullanılabilir.

Scream! e gelen veri akışlarından bazılarını diğer bir kurum yada bilgisayarla paylaşmak için kullanılabilir. Eş zamanlı Scream! kullanımı Scream!, sismik ağın güçlü bir parçası olacak şekilde tasarlanmıştır. Varsayılan yapılandırma dosyası scream.ini dir ve ilk kullanım sırasında kendini otomatik olarak oluşturur.

Detaylı

Startup ve Shutdown Yöntemleri. ORACLE STARTUP ve SHUTDOWN YÖNTEMLERİ

Startup ve Shutdown Yöntemleri. ORACLE STARTUP ve SHUTDOWN YÖNTEMLERİ ORACLE STARTUP ve SHUTDOWN YÖNTEMLERİ 1 Contents 1.Giriş... 3 2.Oracle Başlangıç Modları... 3 3.Restricted Mode... 3 4.Oracle Kapanma Modları... 5 5. Oracle Kapanma Sorunları... 6 2 1.Giriş Oracle ı farklı

Detaylı

ORACLE PARAMETRE DOSYALARI ( PFILE & SPFILE )

ORACLE PARAMETRE DOSYALARI ( PFILE & SPFILE ) ORACLE PARAMETRE DOSYALARI ( PFILE & SPFILE ) 1 Contents 1.Giriş... 3 2. Oracle PFILE (Parameter File)... 3 3. Oracle SPFILE (Server Parameter File)... 3 4. PFILE (Parameter File) ve SPFILE (Server Parameter

Detaylı

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim' Bu Derste Öğrenecekleriniz: 1- Veri Tabanı Adı Değiştirme 2- Nesnelerin Adını Değiştirme a. Tablo Adı Değiştirme b. Alan Adı Değiştirme c. Constraint (Kısıtlama) Adı Değiştirme 3- Tablo Düzenleme Komutları

Detaylı

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz. Fonksiyonlar tamamen işimizi kolaylaştırmak adına sürekli olarak tekrarladığımız sql sorgularına tek bir noktadan erişmemizi sağlar. Buda bize hızlı bir erişim imkanı,hızlı bir hata kontrol mekanizması,

Detaylı

STORED PROCEDURE LER (Saklı Yordamlar)

STORED PROCEDURE LER (Saklı Yordamlar) STORED PROCEDURE LER (Saklı Yordamlar) Eskiden yazılımlar, sadece prosedür denilen kod parçalarından oluşurdu. Her prosedür belli bir işlevi yerine getirmek için yazılmış kod parçalarıdır. Mesela, 2 sayı

Detaylı

BlackBerry Admin Service

BlackBerry Admin Service SOFTWARE-TURK BlackBerry Admin Service BlackBerry Server Üzerinde Kullanıcı İşlemleri Arda Eralp 3/5/2009 www.software-turk.com BLACKBERRY SERVER ÜZERİNDE KULLANICI İŞLEMLERİ Blackeberry server üzerinde

Detaylı

VERİ TABANI YÖNETİM SİSTEMLERİ II. 3. SQL PROGRAMLAMA BLOKLARI ve AKIŞ DENETİMİ

VERİ TABANI YÖNETİM SİSTEMLERİ II. 3. SQL PROGRAMLAMA BLOKLARI ve AKIŞ DENETİMİ BÖLÜM 3 3. SQL PROGRAMLAMA BLOKLARI ve AKIŞ DENETİMİ 3.1 SQL PROGRAMLAMA BLOKLARININ YAPISI Birbirinden çok az farklarla ayrılan PL/SQL ve T-SQL e ikisini de kapsayacak şekilde SQL programlama demiştik

Detaylı

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language) Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language) Konular Yapısal SQL Komutları Gruplama İşlemi SQL Fonksiyonları Kaynaklar 2 SQL (Structured Query Language) SQL Carlos

Detaylı

Bunyamin Demir, <bunyamindemir at gmail dot com>, webguvenligi.org, 20/01/2011 ORACLE VERĠTABANI TRAFĠĞĠNĠN GÜVENLĠĞĠ

Bunyamin Demir, <bunyamindemir at gmail dot com>, webguvenligi.org, 20/01/2011 ORACLE VERĠTABANI TRAFĠĞĠNĠN GÜVENLĠĞĠ Bunyamin Demir, , webguvenligi.org, 20/01/2011 ORACLE VERĠTABANI TRAFĠĞĠNĠN GÜVENLĠĞĠ Oracle veritabanında, veritabanına yetkili erişim olmadan verinin elde edilebilmesi

Detaylı

ACCESS PLATFORMUNDA SQL

ACCESS PLATFORMUNDA SQL ACCESS PLATFORMUNDA SQL (STRUCTURED QUERY LANGUAGE) KODLAMA ÖRNEKLERİ DISTINCT : Bir alanda birbirinin aynı kayıtlar bulunabilir. Öğrenciler tablosundaki aynı isimde öğrencilerin bulunması durumunda aynı

Detaylı

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir. VERİ BÜTÜNLÜĞÜ VTYS lerde veri bütünlüğünü sağlamanın iki temel yolu vardır; Tanımlanabilir veri bütünlüğü ve prosedürel veri bütünlüğü. Tanımlanabilir veri bütünlüğü, tanımlanan nesnelerin kendi özellikleri

Detaylı

IPACK LADDER. Arayüz Dökümantasyonu

IPACK LADDER. Arayüz Dökümantasyonu IPACK LADDER Arayüz Dökümantasyonu I. Giriş Bu dökümantasyon IPack Ladder yazılımının arayüz kullanımını, kullanılan model ile ilişkilerini ve işlevsel açıklamaları kapsamak üzere hazırlanmıştır. II. Dökümantasyon

Detaylı

1 ORACLE 11G DATABASE SERVER LE

1 ORACLE 11G DATABASE SERVER LE Ç NDEK LER 1 ORACLE 11G DATABASE SERVER LE TANIfiALIM 1 Veritaban Sistemleri 1 Genel Bak fl 1 Relational Database ( liflkisel Veritaban ) Sistemleri 3 Neden Oracle Database Server? 5 Verileri Normallefltirme

Detaylı

T.C GAZİ ÜNİVERSİTESİ BİLİŞİM ENSTİTÜSÜ YÖNETİM BİLİŞİM SİSTEMLERİ ANA BİLİM DALI MS SQL KOMUTLARI VE MS SQL KOMUTLARI İLE İLGİLİ UYGULAMALAR

T.C GAZİ ÜNİVERSİTESİ BİLİŞİM ENSTİTÜSÜ YÖNETİM BİLİŞİM SİSTEMLERİ ANA BİLİM DALI MS SQL KOMUTLARI VE MS SQL KOMUTLARI İLE İLGİLİ UYGULAMALAR T.C GAZİ ÜNİVERSİTESİ BİLİŞİM ENSTİTÜSÜ YÖNETİM BİLİŞİM SİSTEMLERİ ANA BİLİM DALI MS SQL KOMUTLARI VE MS SQL KOMUTLARI İLE İLGİLİ UYGULAMALAR YÜKSEK LİSANS PROJESİ Mehmet Emin AKKAYA Danışman: Yrd. Doç.

Detaylı

Veri Tabanı SQL Server ve Management Studio kurulum linkleri: https://www.microsoft.com/en-us/download/details.aspx?id=42299

Veri Tabanı SQL Server ve Management Studio kurulum linkleri: https://www.microsoft.com/en-us/download/details.aspx?id=42299 Veri Tabanı 1 1. SQL Server ve Management Studio kurulum linkleri: https://www.microsoft.com/en-us/download/details.aspx?id=42299 2. SQL Management Studio açılış ekranı: Server Type: reporting, analysis

Detaylı

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi 20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi 1) Aşağıdaki SQL Server sürümlerinden hangisi ana sürümlerden bir tanesidir? a) Parallel Data Warehouse b) Express c) Standart d) Developer

Detaylı

Veritabanı Tasarımı. Tablo Değiştirme

Veritabanı Tasarımı. Tablo Değiştirme Veritabanı Tasarımı Tablo Değiştirme Konular Tabloyu değiştirme neden önemlidir açıklama ALTER, DROP, RENAME ve TRUNCATE DDL komutlarının etkisini tablolar ve sütunlar üzerinde görme ALTER TABLE komutlarıadd,

Detaylı

BLG4134 Görsel Programlama III. Öğr. Grv. Aybike ŞİMŞEK

BLG4134 Görsel Programlama III. Öğr. Grv. Aybike ŞİMŞEK BLG4134 Görsel Programlama III Öğr. Grv. Aybike ŞİMŞEK CV_EKLE isimli bir veritabanı oluşturun. CV isimli tabloyu aşağıdaki şekilde oluşturun. Aşağıdaki kod ile bir stored procedure oluşturun. Bunun için

Detaylı

Veritabanı Tasarımı. Veritabanı Hareketleri

Veritabanı Tasarımı. Veritabanı Hareketleri Veritabanı Tasarımı Veritabanı Hareketleri Konular Veri hareketleri ile ilgili olarak COMMIT, ROLLBACK ve SAVEPOINT terimlerini tanımlamak COMMIT, ROLLBACK ve SAVEPOINT ifadelerinin üç avantajını listelemek

Detaylı

Turquaz Windows kurulum dökümanı. ftp://ftp.mirror.ac.uk/sites/ftp.postgresql.org/binary/v7.3.1/windows/pgsql731wina1.exe

Turquaz Windows kurulum dökümanı. ftp://ftp.mirror.ac.uk/sites/ftp.postgresql.org/binary/v7.3.1/windows/pgsql731wina1.exe 1. Giriş Turquaz programını windows üzerinde çalıştırmak için öncelikle bilgisayarınızda postgresql ve Java nın kurulu olması gerekli. Aşağıdaki bilgi ve dökümanlar windows 2000 işletim sistemi üzerinde

Detaylı

YAPISAL SORGULAMA DİLİ (SQL)

YAPISAL SORGULAMA DİLİ (SQL) YAPISAL SORGULAMA DİLİ (SQL) OGRENCI Tablosu 1234 Zeynep Makina K 23.06.1984 1. Cad 3.4 CREATE TABLE VERİ TANIMLAMA DİLİ (VTD) Veritabanında yeni bir tablonun oluşturulmasını sağlar. Yukarıda tanımlanan

Detaylı

Windows Server 2012 Active Directory Kurulumu

Windows Server 2012 Active Directory Kurulumu Windows Server 2012 Active Directory Kurulumu Active Directory(A.D): Merkezi yönetim yapmamızı sağlayan servisin adı. Windows 2000 Server ile gelen özelliklerin basında "Active Directory" gelir. Active

Detaylı

BÖLÜM- 8: DİĞER ŞEMA NESNELERİNİ OLUŞTURMA

BÖLÜM- 8: DİĞER ŞEMA NESNELERİNİ OLUŞTURMA BÖLÜM- 8: DİĞER ŞEMA NESNELERİNİ OLUŞTURMA View oluşturma View lardan veri getirme Sequence oluşturma ve kullanma İndex oluşturma ve kullanma Synonym oluşturma ve kullanma VIEW Bir veya birden fazla tablodan

Detaylı

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler Genel Kavramlar Veri Nedir? Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar Veri Tabanı Nedir? Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler Veritabanı Yönetim Sistemi (DBMS)Nedir?

Detaylı

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301) Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301) GENEL DERS BİLGİLERİ Öğretim Elemanı : Öğr. Gör. Erdal GÜVENOĞLU Ofis : MUH 313 Ofis Saatleri : Pazartesi: 10.00-12.00,

Detaylı

KISITLAMALAR (CONSTRAINT)

KISITLAMALAR (CONSTRAINT) KISITLAMALAR (CONSTRAINT) Tablo alanlarına veri girişini kontrol etmeyi amaçlayan düzenlemelerdir. Bir alana girilen değerleri sınırlayan bu düzenlemeler kullanıcı hataları açısından önemlidir. Verilerin

Detaylı

SQL'e Giriş. SELECT Deyimi. SQL Komutları. 1. DDL (Data Definition Language - Veri Tanımlama Dili)

SQL'e Giriş. SELECT Deyimi. SQL Komutları. 1. DDL (Data Definition Language - Veri Tanımlama Dili) SQL'e Giriş SQL komutları kullanılarak aşağıdaki işlemler yapılabilir: Veritabanı nesnelerinin oluşturulması ve bu nesnelerle ilgili işlemlerin yapılması Bilgilerin istenilen koşullara göre görüntülenmesi

Detaylı

Mysql Veritabanı Komutları

Mysql Veritabanı Komutları Mysql Veritabanı Komutları Mysql Veri Tabanı Komutları Hazırlayan : M. Başar ACAROĞLU Kaynaklar: http://www.hrzafer.com/sql-dersleri http://www.w3schools.com/sql/default.asp Veri Tabanı Nedir? Mysql Veritabanı

Detaylı

KULLANICI TANIMLI FONKSİYONLAR

KULLANICI TANIMLI FONKSİYONLAR KULLANICI TANIMLI FONKSİYONLAR Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır. Fonksiyonları veritabanı programlamada

Detaylı

BÖLÜM -7: TABLOLARI OLUŞTURMA VE YÖNETME

BÖLÜM -7: TABLOLARI OLUŞTURMA VE YÖNETME BÖLÜM -7: TABLOLARI OLUŞTURMA VE YÖNETME Ana veritabanı nesnelerini sınıflandırmak Tablo yapısını inceleme Tablo sütunlarının veri tiplerini listeleme Basit bir tablo oluşturma Constraint oluşturma Şema

Detaylı

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir. T-SQL KODLARİ İÇERİSİNE AÇIKLAMA EKLEME Bir veya daha fazla satırın çalıştırılmasını Önlemek için veya /*... */" ifadeleri kullanılır. -- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak

Detaylı

DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri

DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri LOGO PROGRAM KURULUMU VE AYARLARI Logo programlarının yüklemesi için kullanılacak,setup dosyaları ftp://download.logo.com.tr/ adresinden indirilerek yapılır. Örneğin Kobi ürünleri için; ftp://download.logo.com.tr/windows/kobi/guncel/go_plus/klasöründen

Detaylı

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir? 1) I. Tablo Oluşturma II. Veri Güncelleme III. Veri Silme IV. Veri Ekleme V. Tablo Silme Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir? a) I, IV ve V b) II, III ve IV

Detaylı

MOBİL UYGULAMA GELİŞTİRME

MOBİL UYGULAMA GELİŞTİRME MOBİL UYGULAMA GELİŞTİRME PELİN YILDIRIM FATMA BOZYİĞİT YZM 3214 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Bu Derste Veri Saklama 2 Veri Saklama Veri Saklama her appnin ihtiyaci

Detaylı

SQL Stored Procedure

SQL Stored Procedure SQL Server'daki Stored procedure'lar aynı diğer programlama dillerindeki procedure'lara benzer. SQL deyimlerini içeren komut doayaları hazırlanır ve sunucu üzerinde saklanır. Stored procedure aracılığıyla

Detaylı

1. Hafta MS SQL Server 2008 Kurulum ve Tanıtımı BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: Kurulum:

1. Hafta MS SQL Server 2008 Kurulum ve Tanıtımı BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: Kurulum: Bu Derste Öğrenecekleriniz: 1- MS SQL Server 2008 Kurulumu ve Tanıtımı 2- Komut Kullanarak Veritabanı Oluşturma ve Silme 3- SQL Yazım Kuralları Kurulum: Sistem gereksinimleri: Desteklenen işletim sistemleri:

Detaylı

SQL TRIGGERS (Tetikleyiciler)

SQL TRIGGERS (Tetikleyiciler) Trigger kelime anlamı olarak tetikleyici demektir. Trigger, SQL de bir sorgu çalıştırdığımızda, başka bir sorgunun çalışmasını sağlamak için yazılan koddur. Mesela bir tablodan kayıt sildiğimizde, başka

Detaylı

Veritabanı Yönetim Sistemleri I HAFTA 1

Veritabanı Yönetim Sistemleri I HAFTA 1 0- SQL dilinde açıklama satırı. -- Bir satırlık açıklama için kullanılır /* */ Çok satırlı açıklama için kullanılır 1- Ms SQL Server 2005 Veritabanı oluşturmak Sql Server daki veritabanının genel davranışı

Detaylı

Veri Tabanı Hafta Dersi

Veri Tabanı Hafta Dersi Veri Tabanı - 1 7. Hafta Dersi Dersin Hedefleri SQL Yapısal Sorgulama Dili Veri Tanımlama Dili (DDL) Create Alert Drop Veri tanımlama dili verinin ne olduğundan çok verinin tipi ile ilgilenir. Veri tabanı

Detaylı

EXISTS VE NOT EXISTS fonksiyonları

EXISTS VE NOT EXISTS fonksiyonları EXISTS VE NOT EXISTS fonksiyonları Kullanımı EXISTS (sorgu) : eğer sorgudan bir yada daha fazla kayıt dönerse değeri true (doğru), hiç kayıt dönmez ise değeri false (yanlış) tır. NOT EXISTS : exists fonksiyonunun

Detaylı

VIEW LERDE SQL HINT KULLANIMI

VIEW LERDE SQL HINT KULLANIMI VIEW LERDE SQL HINT KULLANIMI 1 1. Çalışma Verisi Hazırlama View larda hint kullanımı problemli olabiliyor. Oracle kompleks yapıdaki view lerin içine 'default' olarak hint i yaymıyor. Kompleks view larda

Detaylı

VERİ TABANI UYGULAMALARI

VERİ TABANI UYGULAMALARI VERİ TABANI UYGULAMALARI VERİ TABANI NEDİR? Bir konuyla ilgili çok sayıda verinin tutulmasına, depolanmasına ve belli bir mantık içerisinde gruplara ayrılmasına veri tabanı denir. Veri tabanı programları;

Detaylı

SQL e Giriş. Uzm. Murat YAZICI

SQL e Giriş. Uzm. Murat YAZICI SQL e Giriş Uzm. Murat YAZICI SQL (Structured Query Language) - SQL Türkçe de Yapısal Sorgulama Dili anlamına gelmektedir ve ilişkisel veritabanlarında çok geniş bir kullanım alanına sahiptir. - SQL ile

Detaylı

DESTEK DOKÜMANI. Ürün : GO/TIGER2/UNITY2 Bölüm : Sistem Đşletmeni

DESTEK DOKÜMANI. Ürün : GO/TIGER2/UNITY2 Bölüm : Sistem Đşletmeni FĐRMA BAZINDA VERĐ TABANI SQL Server üzerinde tutulan dataların firma bazında ayrı ayrı takip edilmesi için Sistem işletmeninde Firmalar içerisinde Veritabanı alanı eklenmiştir. LOGO nun Sistem Đşletmeni

Detaylı

Veritabanı Tasarımı. Tablo Oluşturma

Veritabanı Tasarımı. Tablo Oluşturma Veritabanı Tasarımı Tablo Oluşturma Konular Ana veritabanı nesnelerini listeleme ve kategorize etme Bir tablo yapısını inceleme Şema nesnelerinin Oracle veritabanı tarafından nasıl kullanıldığını açıklama

Detaylı

1. Oracle Data Miner 11g Release 2 Kurulumu Aşamaları

1. Oracle Data Miner 11g Release 2 Kurulumu Aşamaları 1. Oracle Data Miner 11g Release 2 Kurulumu Aşamaları Uyarı 1: Kuruluma başlamadan önce Oracle 11g Release 2 veritabanı kurulumunu eksiksiz bir şekilde gerçekleştirmiş olmanız beklenmektedir. İlgili kurulum

Detaylı

"SQL Server Management Studio" yazılımını yüklemek için alttaki resmi sitesinden 180 günlük deneme sürümünü indirebilirsiniz.

SQL Server Management Studio yazılımını yüklemek için alttaki resmi sitesinden 180 günlük deneme sürümünü indirebilirsiniz. Microsoft SQL Server 2008 R2 Kurulumu "SQL Server Management Studio" yazılımını yüklemek için alttaki resmi sitesinden 180 günlük deneme sürümünü indirebilirsiniz. http://www.microsoft.com/sqlserver/en/us/get-sql-server/try-it.aspx

Detaylı

TRIGGER. Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir.

TRIGGER. Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir. TRIGGER Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir. DML ve DDL trigger lar olarak ikiye ayırmak mümkündür. DML (Data Manipulation

Detaylı

BOTAŞ EBT BİLGİ YÖNETİM SİSTEMİ WEB SERVİSLERİ

BOTAŞ EBT BİLGİ YÖNETİM SİSTEMİ WEB SERVİSLERİ BOTAŞ EBT BİLGİ YÖNETİM SİSTEMİ WEB SERVİSLERİ KULLANIM KLAVUZU 21.10.2013 Sürüm: 2.2.1 (27.12.2013) Sayfa 1 / 11 Güncellenen Bölümler Sürüm 2.2.1 Yayınlanma Tarihi 27.12.2013 Güncellenen Bölümler GUNSONUAKISGONDER

Detaylı

Veritabanı. Ders 2 VERİTABANI

Veritabanı. Ders 2 VERİTABANI Veritabanı Veritabanı Nedir? Birbiri ile ilişkili verilerin bir arada uzun süreli bulundurulmasıdır. Veritabanı bazen Veritabanı Yönetim sistemi veya Veritabanı Sistemi yerine de kullanılır. Gerçek dünyanın

Detaylı

Exchange Server 2010 Sertifika Oluşturma

Exchange Server 2010 Sertifika Oluşturma Exchange Server 2010 Sertifika Oluşturma Bildiğimiz üzere Exchange Server 2003 ve 2007 de default olarak SSL oluşturulup kullanılıyordu. Ancak bir müddet sonra sertifikanın süresi dolduğu için artık çalışmayacaktı.

Detaylı

Sorun Giderme. Genel. Disk. Aygıt Sürücüleri 3

Sorun Giderme. Genel. Disk. Aygıt Sürücüleri 3 Sorun Giderme Genel 2 Servis Paketleri 2 Disk Alanı 2 Page File 2 Aygıt Sürücüleri 3 Log Dosyaları 3 Snapshot Alınamıyor 3 Backup İmajı Yazma Hatası 4 Tanılama Aracı 5 Genel Servis Paketleri Çeşitli işletim

Detaylı

Veritabanı Tasarımı. Sütun Değerlerini Güncelleme ve Satırları Silme

Veritabanı Tasarımı. Sütun Değerlerini Güncelleme ve Satırları Silme Veritabanı Tasarımı Sütun Değerlerini Güncelleme ve Satırları Silme Konular UPDATE komutunu oluşturmak ve çalıştırmak DELETE komutunu oluşturmak ve çalıştırmak Tabloda güncelleme yapmak ya da veri silmek

Detaylı

SORGULAR. Öğr.Gör.Volkan Altıntaş

SORGULAR. Öğr.Gör.Volkan Altıntaş SORGULAR Öğr.Gör.Volkan Altıntaş SORGULAR VE ÇEŞİTLERİ Seçme Sorguları: En sık kullanılan sorgu türüdür. Seçme sorguları, bilgileri veri sayfası görünümü nde gösteren veri tabanı nesnesi türüdür. Sorgu,

Detaylı

Veritabanlarına ve SQL'e Giriş. Devrim GÜNDÜZ. Teknoloji Destek Merkezi -- www.tdmsoft.com. devrim@gunduz.org

Veritabanlarına ve SQL'e Giriş. Devrim GÜNDÜZ. Teknoloji Destek Merkezi -- www.tdmsoft.com. devrim@gunduz.org Veritabanlarına ve SQL'e Giriş Devrim GÜNDÜZ Teknoloji Destek Merkezi -- www.tdmsoft.com devrim@gunduz.org http://seminer.linux.org.tr http://www.gunduz.org Giriş Bu seminerde, aşağıdaki konular anlatılacaktır:

Detaylı

İNTERNET PROGRAMCILIĞI 2 10. HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

İNTERNET PROGRAMCILIĞI 2 10. HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir. İNTERNET PROGRAMCILIĞI 2 10. HAFTA İçindekiler MYSQL - PHPMYADMIN Mysql Nedir PhpMyAdmin Nedir PhpMyAdmin Arayüzü Hedefler Mysql' in görevini söyleyebilir PhpMyAdmin' in kullanım amacını söyler Hazırlayan

Detaylı

HB1002: ORACLE 10G VERĐTABANI PL/SQL ile PROGRAMLAMA (32 saat)

HB1002: ORACLE 10G VERĐTABANI PL/SQL ile PROGRAMLAMA (32 saat) Sayfa: 1 / 5 HB1002: ORACLE 10G VERĐTABANI PL/SQL ile PROGRAMLAMA (32 saat) Eğitimin Amacı Bu eğitim SQL dilinin içermediği (döngü, if/else, hata yakalama, vb.) programlama dili özelliklerini içeren PL/SQL

Detaylı