Kayıtlar

Oracle Lock Modların Tipleri 0 - NONE: lock requested but not yet obtained 1 - NULL 2 - ROWS_S (SS): Row Share Lock 3 - ROW_X (SX): Row Exclusive Table Lock 4 - SHARE (S): Share Table Lock 5 - S/ROW-X (SSX): Share Row Exclusive Table Lock 6 - Exclusive (X): Exclusive Table Lock EXCLUSIVE MODE: Bu seçenek tüm tabloyu LOCK eder ve tablo üzerinde DML işlemlerine tek bir satır için bile izin vermez. Bu tablo üzerinde sadece SELECT sorgularına izin verilir. Tablo üzerinde işlem yapılabilmesi için LOCK kaldırılmalıdır ROW SHARE MODE: Bu seçenek tablo üzerinde DML ve SELECT işlemlerine izin verir. Tablonun tamamını LOCK edilmesini izin vermez ROW EXCLUSIVE MODE: Bu seçenek Oracle’ın varsayılan LOCK mekanizmasıdır. DML işlemlerindeki ROW LOCK bu metot ile yapılır SHARE MODE: Bu seçenek tabloya SELECT sorgusu atılmasına izin verilir fakat DML işlemlerine izin vermez. INDEX oluşturulurken kullanılan yöntemdir SHARE ROW EXCLUSIVE MODE: BU seçe...

Window Group, Window kullanarak DB Job çalıştırma

-- Window Group Drop Etme begin DBMS_SCHEDULER.drop_window_group (     group_name => 'UC_BES_YEDI_GROUP',     force       => TRUE); end;   / -- Window Drop Etme begin DBMS_SCHEDULER.drop_window (     window_name => 'TEST_WINDOW_BES,TEST_WINDOW_YEDI',     force       => TRUE); end; / -- DB job Drop Etme BEGIN DBMS_SCHEDULER.drop_job (job_name => 'OTOMATIK_MAIL_JOB_20,OTOMATIK_MAIL_JOB_25,OTOMATIK_MAIL_JOB_LAST'); end; / begin DBMS_SCHEDULER.create_window (     window_name     => 'TWENTIETH_DAY_WINDOW',     resource_plan   => null,     repeat_interval => 'FREQ=MONTHLY; BYMONTHDAY=20; BYHOUR=09',     duration    => INTERVAL '1' HOUR,     comments        => 'Her ayın 20''sinde saat 9''da çalışacak işler için kullanılır.'); end;   / begin DBMS_SCHEDULE...

PL/SQL ile Data Mining

Bu yazı  ileride tamamlanacaktır. Dbms_Data_Mining paketinin nasıl kullanılabileceği ile alakalı bir yazı olacak.

Explain Plan Kullanımı ve PLAN_TABLE'ı tekrar oluşturma

Resim
Hazırladığımız sorgunun hangi indexleri kullandığı vs. gibi nasıl bir plan ile çalışacağını incelemek için explain plan kullanırız. Aşağıda kod örneğimi paylaşıyorum. EXPLAIN PLAN FOR select * from emp_table where emp_no=180;  SELECT * FROM TABLE(dbms_xplan.display); Bu sorgu size aşağıdaki gibi bir sonuç dönecektir.  Sonucu yorumlamak başka bir yazımın konusu olacağı için bu kısmı geçiyorum. Peki aşağıdaki gibi bir hata alırsak ne yapacağız. Plan_table'da bir problem var :)  Seçenek 1)   SQL> drop table  plan_table; Table dropped. SQL> @$ORACLE_HOME/rdbms/admin/utlxplan.sql Table created. ile plan_table'ı tekrar oluşturmayı deneyebilirsiniz. Tabi gerçekten utlxplan.sql dosyasını bulabilirseniz. Seçenek 2) Kolları sıvayıp bu işi siz yapabilirsiniz, benim gibi drop table PLAN_TABLE;  create table PLAN_TABLE (         statement_id       varchar2(30...

Drop Edilen Tabloyu Geri Getirme

Eğer drop ettiğiniz bir tabloyu geri getirmek isterseniz; Aşağıdaki sorgu ile drop ettiğiniz tabloları, indexleri vs sorgulayabilirsiniz. Select Object_Name, Original_Name, Type, Operation, Droptime From User_Recyclebin; FLASHBACK TABLE <table_name> TO BEFORE DROP komut satırı ile drop ettiğiniz tabloyu flashback'ten dönebilirsiniz. Aşağıda kod örneğim var. F LASHBACK TABLE drop_ettigim_tablo TO BEFORE DROP;

Windows 10 Oracle Forms Çalıştırma

Resim
Windows 7/Vista/10 kullanırken Oracle Forms kullanan menüye bağlanırken aşağıdaki şekilde bir hata alıyorsanız yapmanız gerekenleri aşağıda anlatmaya çalışacağım. 1- Öncelikle C:\Program Files (x86)\Oracle\JInitiator 1.3.1.22\bin\hotspot altındaki jvm.dll dosyasının yedeğini alın. 2- C:\Program Files (x86)\Java\j2re1.4.2_11\bin\client altındaki jvm.dll dosyasını kopyalayın ve C:\Program Files (x86)\Oracle\JInitiator 1.3.1.22\bin\hotspot altına kopyalayın. Not: orjinal jvm.dll dosyasını alacağınız jre versiyonunuz farklı olabilir. 3- IE'dan tekrar denediğiniz zaman problem çözülmüş olacaktır.

ORA-20001

DBMS_SCHEDULER job işlemlerinde alınan hata  Bu hata işlem yapılmak istenen job'ta herhangi bir özel karakter varsa oluşuyor. BEGIN DBMS_SCHEDULER.DROP_JOB( job_name => 'cyurter.borclari?guncelle' ); END ; ORA-20001: comma-separated list invalid near T ORA-06512: in "SYS.DBMS_UTILITY" , regel 236 ORA-06512: in "SYS.DBMS_UTILITY" , regel 272 ORA-06512: in "SYS.DBMS_SCHEDULER" , regel 623 ORA-06512: in line 2 "?" özel karakter olduğu için hata olşuyor. Çözüm için kodu aşağıdaki gibi " kullanarak düzenleyebilirsiniz. BEGIN DBMS_SCHEDULER.DROP_JOB( job_name => 'cyurter."borclari?guncelle"' ); END ;

Oracle 12C New Features for Developers

Developerlar için 12C ile gelen özelliklerin anlatıldı güzel bir makale http://allthingsoracle.com/oracle-database-12c-new-features-part-4/ Diğer makalelere de göz atmak da fayda var, okumanızı tavsiye ederim.

Web Util Configuration

Configuring WebUtil at OS: 1.Download WebUtil http://www.oracle.com/technology/software/products/forms/files/webutil/webutil_106.zip 2. Download Java Com Library  http://prdownloads.sourceforge.net/jacob-project/jacob_18.zip 3. Extract both zips to some directory. 4. Copy   File  frmwebutil.jar   From folder: webutil_106\webutil_106\java  To: $ORACLE_HOME/forms/java   File:  jacob.jar    From folder: jacob_18  To: $ORACLE_HOME/forms/java   File:  d2kwut60.dll, JNIsharedstubs.dll   From folder: webutil_106\webutil_106\webutil To: $ORACLE_HOME/forms/webutil   File:  jacob.dll  From folder: jacob_18 To: $ORACLE_HOME/forms/webutil   File:  forms_base_ie.js, forms_ie.js - From folder: webutil_106\webutil_106\java To: $ORACLE_HOME/forms/java  File:  webutil.olb, webutil.pll and create_webutil_db.sql  From folder: webutil_106\webutil_106 To: $ORACLE_HOME/forms  ...
SQL Developer Dil Ayarları IncludeConfFile ../../ide/bin/ide.conf SetJavaHome ../../jdk AddVMOption  -Doracle.ide.util.AddinPolicyUtils.OVERRIDE_FLAG=true AddVMOption -Dsun.java2d.ddoffscreen=false AddVMOption -Dwindows.shell.font.languages= AddVMOption  -XX:MaxPermSize=128M AddVMOption -Duser.language=en  AddVMOption -Duser.region=US AddVMOption -Doracle.jdbc.mapDateToTimestamp=false IncludeConfFile  sqldeveloper-nondebug.conf
DBMS_SQL paketinin kullanılması DECLARE Source_Cursor      INTEGER; Num_Rows_Processed Integer; BEGIN Source_Cursor := Dbms_Sql.Open_Cursor;      Dbms_Sql.Parse(Source_Cursor, 'select * from dba_source where object_name =  ', 1);      Num_Rows_Processed := Dbms_Sql.EXECUTE(Source_Cursor);      Dbms_Sql.Close_Cursor(Source_Cursor); end;

DBMS_SCHEDULER_JOBS İnceleme

SELECT * FROM dba_scheduler_jobs where job_name=:job_name; SELECT * FROM dba_scheduler_job_log WHERE job_name=:job_name ; SELECT * FROM dba_scheduler_job_run_details where job_name=:job_name; SELECT 'SELECT * FROM '||object_name||';' FROM dba_objects where OBJECT_name like 'DBA_SCHEDULER%' and object_type='VIEW';

Farklı Databaselerdeki Indexleri Oluşturma

declare CURSOR c1 IS   SELECT p.index_owner,p.table_owner,p.table_name,p.index_name, wm_concat(p.column_name) kolonlar    FROM   DBA_IND_COLUMNS p    WHERE table_name =:TABLE_NAME    AND NOT EXISTS           (SELECT 1 FROM dba_ind_columns@diger_db r            WHERE p.index_name=r.index_name            AND p.index_owner=r.index_owner )    GROUP BY p.index_owner,p.table_owner,p.table_name,p.index_name; BEGIN FOR r1 IN c1 loop   dbms_output.put_line('CREATE INDEX '||r1.index_owner||'.'||r1.index_name||' ON '||r1.table_owner||'.'||r1.table_name||' ('||r1.kolonlar||');' ); end loop; end;

DBA SCHEDULER JOB

DBA SCHEDULER JOB OLUŞTURMA BEGIN     SYS.DBMS_SCHEDULER.CREATE_JOB (             job_name => 'isci',             job_type => 'PLSQL_BLOCK',             job_action => 'BEGIN islemi_yapacak_prosedur; END;',             job_class => 'DEFAULT_JOB_CLASS', repeat_interval => 'FREQ=DAILY; byhour=7',             enabled => true,             comments => 'Bu program gunluk olarak  calisacak'); END; /*******   Değiştirme  ******/ BEGIN DBMS_SCHEDULER.set_attribute (     NAME      => 'ISCI',     ATTRIBUTE => 'repeat_interval',     VALUE     => 'FREQ=DAILY; byhour=9'); END; BEGIN dbms_scheduler.DISABLE ('ISCI'); END; /*******  Çalıştırma ve Durdurma ******/ BEGI...

Case kullanarak Update

UPDATE table A SET (A.cikis_tarihi,A.giris_tarihi)=                             (SELECT  CASE        WHEN b.sekli in ('H','O','N') THEN b.alma_tarihi+1 WHEN b.type='K' AND  b.user_id IS NOT NULL THEN b.alma_tarihi+5 WHEN b.type='K' AND  b. user_id is null THEN b.alma_tarihi+6  END AS cikis_tarihi,                                           b.tarih AS  giris_tarihi FROM table b                                 WHERE  b.tarih=to_date('01092012','ddmmyyyy') AND A.ROWID=b.ROWID                               ) WHERE tarih=to_date('01092012','ddmmyyyy') and hata=0 ;

Parallel select

select /*+ PARALLEL(t,4) */ count(*) from emp t;  show parameter parallel;  show parameter cpu;  ALTER SYSTEM SET parallel_max_servers=8;  alter session enable parallel dml; select /*+ PARALLEL(t,4) */ count(*) from emp t;

TABLE OF kullanımı

DECLARE TYPE harfler IS TABLE OF CHAR(1); alfabe harfler := harfler ('a','b','c','d','e'); l_st harfler := harfler ('A','c'); BEGIN IF l_st SUBMULTISET OF alfabe THEN dbms_output.put_line('BULDUM'); ELSE    dbms_output.put_line('OLMADI'); END If; END;

Join ile Update

UPDATE t1    SET t1.data = (SELECT t2.data                 FROM  t2                WHERE t1.a=t2.a AND t1.b=t2.b AND t1.c=t2.c AND t2.d=1 and t2.e='01062012' AND t1.f=t2.f AND t1.h=t2.h --and rownum=1 ) WHERE t1.d=0 AND t1.e='01062012' and t1.i=0;

Materialized View Kullanımı

--Önce kullanacağımız tablo ve materialized VIEW varsa onları bir DROP edelim de problem çıkarmasınlar. DROP TABLE tablo1 ; DROP materialized VIEW mv_tablo1; DROP MATERIALIZED VIEW LOG ON tablo1; /*Elimizde bulunan kaynak tablodaki dataları kullanacağımız tabloya aktarıyoruz. Çünkü MATERIALIZED VIEW güncellemesini görebilmek için kullandığımız bu tablo1 tablosunda veri değişikliği yapacağız*/ CREATE TABLE tablo1 AS SELECT fis_numarasi, islem_tarihi, brut_tahsilat, referans FROM kaynak_tablo WHERE islem_tarihi = to_date('01062012', 'ddmmyyy') ; SELECT * FROM tablo1 ; -- tabloya kayıtlar atıldı ALTER TABLE tablo1 ADD CONSTRAINT tablo1_pk PRIMARY KEY(referans) ; -- Tablo1'e primary key ekliyoruz,Kayıt değişikliklerini loglamak için kullanacak -- tablo1 deki data değişikliklerini loglaması CREATE MATERIALIZED VIEW LOG ON tablo1 WITH (fis_numarasi, brut_tahsilat), rowid including NEW VALUES ; ALTER MATERIALIZED VIEW LOG ON tablo1 ; /*Niha...

Windows 7/ Windows Vista Oracle DevSuite 10g kurulumu

Internet Explorer note:  On Windows Vista, IE CANNOT be used to run the Web Forms runtime.  It crashes immediately when you try to run a form.  Instead, I can use either Firefox (Firefox 2,  NOT Firefox 3 ) or Netscape, as long as they are set to disable java.  [ Correction:  IE7 on Vista now runs the Forms 10g forms.  You just need to add "?config=jpi" to the browser URL when starting the Web Forms session.  More IE/Vista info:  Vista JInitiator Problem  ]   The Oracle Developer Suite download page:      http://www.oracle.com/technology/software/products/ids/index.html Oracle Developer Suite Installation Guide:      http://download.oracle.com/docs/cd/B25016_07//doc/dl/core/B16012_04/toc.htm The steps below are those I followed to install Forms 10g (version 10.1.2.0.2) I.   Preliminary system changes in Windows When I started installing, I got the following error message: Insta...