TROUG. Oracle Streams. [Oracle 11g Veritabanları için Yüksek Erişilebilirliğe Giriş Serisi] Ergem PEKER
|
|
- Sanaz Ece
- 8 yıl önce
- İzleme sayısı:
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 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 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 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 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Đ 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 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 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 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 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'
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 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 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 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
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
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 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 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.
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?
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ş 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 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.
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.
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.
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
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 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İŞ 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 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 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. 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 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 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 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) 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ş 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ı
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) 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.
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 -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 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. 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 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.
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İ
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 ) 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'
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 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) 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
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İ
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) 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, , 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 (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.
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 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
Ç 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 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ı 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 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 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 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 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
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) 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 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 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 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) 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) 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ş 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 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 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 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.
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
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?
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 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 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:
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)
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
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ı - 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ı 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 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 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 (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
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 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ı 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.
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. 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İ 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ı 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 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 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 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 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 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 İç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)
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ı