Archive for the ‘Oracle Bilgi’ Category

LISTAGG YAN YANA

Kasım 19, 2015

SELECT PERSONEL_ID, LTRIM(LISTAGG(PERIOD, ‘,’) WITHIN GROUP (ORDER BY PERIOD),’,’) PERIODS
FROM PERSONEL_INF0
WHERE PERSONEL_ID =317
AND CREATED_TIMESTAMP >= sysdate-100
GROUP BY PERSONEL_ID
ORDER BY PERSONEL_ID;

PERSONEL_ID PERIODS
——– —-
1 David
1 John
1 Alan
1 David
2 Julie
2 Charles
And I want the following result:

PERSONEL_ID PERIODS
——– —–
1 ‘Alan, David, John’
2 ‘Charles, Julie’

======================= ** 2 ** =========================

with my_tabe as
(
select ‘M01’ as scycle, ‘1’ as sdate from dual union
select ‘M01’ as scycle, ‘2’ as sdate from dual union
select ‘M02’ as scycle, ‘1’ as sdate from dual
)
select scycle, ltrim(sys_connect_by_path(sdate, ‘,’), ‘,’)
from
(
select distinct sdate,
scycle,
count(1) over (partition by scycle) as cnt,
row_number() over (partition by scycle order by sdate) as rn
from my_tabe
)
where rn = cnt
start with rn = 1
connect by prior rn + 1 = rn
and prior scycle = scycle

 

Reklamlar

Toad for Oracle – Configuring a TSNAMES file for Oracle Instant Client

Kasım 7, 2013

1- Instant Client for Microsoft Windows (32-bit)
Download : instantclient-basic-nt-12.1.0.1.0.zip (60,582,453 bytes) (cksum – 788170417)
NOTE : Establish a connection, select the desired database driver.

2- instantclient-basic-nt-12.1.0.1.0.zip export
c:\instantclient-basic-nt-12.1.0.1.0

3- My Computer rihgt click and Properties > advanced system settings > Environment Variables
System Variables
a- Path : …;c:\instantclient-basic-nt-12.1.0.1.0 edit
b- button add TNS_ADMIN : c:\instantclient-basic-nt-12.1.0.1.0

4- tnsnames.ora file copy in c:\instantclient-basic-nt-12.1.0.1.0\ directory

5- Restart Toad

Cluster Mimarisi Hakkında

Ekim 3, 2013

Cluster kelime anlamıyla “kümelenmek” servis ve uygulamalara erişebilirliği ve uygulamaların verimliliğini arttırmak için oluşan birlikte çalışan bilgisayar gruplarıdır. Sunuculardan birisi down olduğu zaman üzerindeki servis veya uygulamanın devamlılığını sağlamak için diğer sunucunun bu görevleri ve logical unitleri üzerine alarak yani Failover yaparak hizmetteki kesintinin en az süreye indirilmesi ve hizmet devamlılığının sağlanması amaçlanmaktadır.
Oracle Cluster
Oracle RAC
Oracle Data Guard

Kaynak
http://www.cozumpark.com/blogs/windows_server/archive/2010/01/17/windows-server-2008-cluster-mimarisi.aspx

Oracle Sql Commands

Eylül 18, 2013

*Veri tabanı versiyonu …vs
select * from product_component_version; veya
select * from v$version ;
========================================
NLSRTL 11.2.0.2.0 Production
Oracle Database 11g Enterprise Edition 11.2.0.2.0 64bit Production
PL/SQL 11.2.0.2.0 Production
TNS for Linux: 11.2.0.2.0 Production

*Mevcut tüm şema, tablo, fieldlar ve özelliklerini listeler.
select * from all_tab_columns

Oracle Flashback Data Archive(Oracle Total Recall)

Haziran 25, 2013

SELECT versions_xid,versions_starttime,versions_operation,empname,salary FROM emp VERSIONS BETWEEN SCN minvalue AND maxvalue;

SELECT versions_xid,versions_starttime,versions_operation,empname,salary FROM emp VERSIONS BETWEEN
TIMESTAMP TO_TIMESTAMP('2013-06-25 17:30:00', 'YYYY-MM-DD HH24:MI:SS') AND
TO_TIMESTAMP('2013-06-25 18:00:00', 'YYYY-MM-DD HH24:MI:SS');

Flashback Data Archive ya da diğer adıyla Total Recall teknolojisi Oracle 11g ile birlikte gelmiştir.
Flashback Data Archive ya da diğer adıyla Total Recall teknolojisi Oracle 11g ile birlikte gelmiştir.

Flashback Data Archive kritik tablolarda yapılan DML işlemlerini tablespace’de saklamamızı sağlayan teknolojidir.Peki kritik tablolar üzerinde yapılan DML işlemlerini saklamamızın bize sagladığı avantajlara örnek verecek olursak kullanıcıların hatalı DML işlemleri yaptığında hatalı DML işlemini görüp düzeltebiliriz,kritik tablolar üzerinde bir nevi loglama yaparak kritik verilerimizi korumak,geçmişe yönelik raporlamayla değişikliklerin takip edilmesi vs..

Denilebilir ki UNDO tablespace’lede eski verilere ulaşabilirim niye Flashback Data Archive kullanıp bir tablespace oluşturup işimi daha da uzatayim. Doğrudur da eger kritik tablolar üzerinde kısa zamanlı DML işlemlerini görmemiz bizim için yeterli ise flashback version query’i kullanıp DML işlemlerini görebiliriz ama flashback version query UNDO tablespace’i kullandığı için ancak UNDO tablespace’in büyüklüğü kadar geriye gidip yapılan DML işlemlerini görebiliriz bunun da uzun bir zaman olduğunu sanmıyorum(UNDO tablespace’in büyüklüğünü undo_retention parametresinden görebiliriz).Denilebilir ki burada UNDO tablespace’i büyütebilirim ama UNDO tablespace’in esas görevi değiştirilen verileri geçmişe yönelik saklamak değildir.

Flashback Data Archive’de undo bilgilerini kullanarak çalışmaktadir. Diyebilirsiniz ki o zaman flashback version query ile flashback data archive arasındaki fark nedir.Flashback Data Archive ile Undo tablespace’in limitleri aynı değildir. Undo tablespace’in boyutu undo_retention parametresi ile sınırlayıcı niteliktedir(flashback database hariç, onun ayrı bir log’u var). Flashback Data Archive ‘da böyle bir durum söz konusu değildir. Flashback Data Archive yalnızca undo verilerini kullanır ve bir tablo eğer Flashback Data Archive için seçilmiş ve tanımlanmış ise o tabloya ait bütün undo verileri archival için işaretlenir ve tablespace’e alınır(Flashback Data Archive’in tutarlı olması için archival işaretlenmiş veriler tablespace’e alınana kadar ezilmez).Bu işlemleri yerine getiren arka plan görevinin adı da FBDA’dır.

* Tablomuz ile ilgili yaptıgımız işlemlere aşagıda ki gibi bakabiliriz.
SELECT * FROM flashback_transaction_query WHERE table_name=upper(‘fda_table_deneme’);

* Tablomuzun herhangi bir zamandaki halini görebiliriz.
SELECT * FROM fda_table_deneme AS OF timestamp to_timestamp(’07-02-2013 16:45:58′,’DD-MM-YYYY HH24:MI:SS’);

* Tablomuzun istediğimiz bir anında ki haline bakabiliriz.(Ben aşağıda ki örnekle 4 dk önceye bakıyorum)(second,minute,day,month)
SELECT * FROM fda_table_deneme AS OF timestamp(systimestamp-interval’4′ minute);

* Tablomuzda yapılan bütün işlemleri görmek için aşağıda ki sorugu çalıştırabiliriz.
SELECT * FROM fda_table_deneme VERSIONS BETWEEN SCN minvalue AND maxvalue;

* Tablomuzda yapılan değişikliklerin belirli zaman aralıklarında ki listesini almak için aşağıda ki gibi bir sorgu çalıştırabiliriz.
SELECT * FROM fda_table_deneme VERSIONS BETWEEN SCN minvalue AND maxvalue
MINUS
SELECT * FROM fda_table_deneme AS OF timestamp to_timestamp(’07-02-2013 17:49:08′,’DD-MM-YYYY HH24:MI:SS’);

* Flashback data archive içindeki verilere ihtiyacımız kalmadığında aşağıdaki gibi silebiliriz.
ALTER FLASHBACK ARCHIVE fda_flashback_archive PURGE ALL;

* Flashback data archive içinde istediğimiz scn’den önceki bütün verileride aşağıdaki gibi silebiliriz.(ya da istediğimiz scn’den sonraki verileri silebiliriz bu işlemleri zamana göre yapmak da mümkündür)
ALTER FLASHBACK ARCHIVE fda_flashback_archive PURGE BEFORE SCN 155526545;

* Geçmişe yönelik değişen veriyi saklama süresini uzatmak isteyebilirsiniz.
ALTER FLASHBACK ARCHIVE fda_flashback_archive MODIFY RETENTION 3 YEAR;

* Flashback data archive kullanan tablonun archive oluşturmasını engellemek için aşağıdaki sorguyu kullanabiliriz.
ALTER TABLE fda_table_deneme NO FLASHBACK ARCHIVE;

* Flashback data archive arşivini drop etmek için aşağıdaki sorguyu kullanabiliriz.
DROP FLASHBACK ARCHIVE fda_flashback_archive;

* Flashback data archive’ı varsayılan yapmak için aşağıdaki kodu çalıştırabiliriz.
ALTER FLASHBACK ARCHIVE fda_flashback_archive SET DEFAULT;
NOT : Flashback data archive ile ilgili bilgiler aşağıdaki viewlerden ulaşabiliriz.

DBA_FLASHBACK_ARCHIVE : Flashback data archive hakkında bilgi verir.
DBA_FLASHBACK_ARCHIVE_TS : Flashback data archive verilerinin tutulduğu tablespace’ler hakkında bilgi verir.
DBA_FLASHBACK_ARCHIVE_TABLES : Flashback data archive kullanan tablolar hakkında bilgi verir.
NOT : Flashback transaction query ile sorgu çektiğimizde undo_sql kolonu null gelirse,aşağıdaki gibi log miner’i aktif yapmalıyız çünkü flashback data archive arka planda log miner aracını kullanıyor.Bu yüzden supplemental_log_data_min parametresi YES modda olmalıdır.

* supplemental_log_data_min parametresinin statusunu öğrenmek için aşağıdaki sorguyu çalıştırabiliriz.
SELECT supplemental_log_data_min FROM v$database;

* supplemental_log_data_min parametresini YES(açmak) için aşağıdaki sorguyu çalıştırabiliriz.
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

* supplemental_log_data_min parametresini NO(kapatmak) için aşağıdaki sorguyu çalıştırabiliriz.
ALTER DATABASE DROP SUPPLEMENTAL LOG DATA;

NOT : Flashback data archive kullandığımızda hangi tablonun arşivini alacaksak onun schemasında 3 tane tablo oluşturuyor oracle ve flashback data archive ile ilgili bilgiler saklıyor burda. Flashback data archive’ı ise kaldırdığımız zaman tablolardan ikisi otomatikmen siliniyor bir tanesi kalıyor.(sys_fba_ddl_colmap_73528,sys_fba_hist_73528,sys_fba_tcrv_73528)

Kaynak : http://www.mustafabektastepe.com

Toad ile Şema Kıyaslaması

Nisan 17, 2013

İn Toad Database>Schema>Compare

Ekrana açılan pencerenin ülk kısmı Referance kısmı buraya karşılaştıracağımız DB yi seçiyoruz.
Alt kısmanda güncellemek istediğimiz veritabanını yazalım.

Sekmelerdeki menuleri inceleyecek olursak; Options sekmesinde karşılaştırma yapmak istediğimiz şeyleri seçebiliriz (Table,Indexes,Functions…)
Bu sekmede COMPARE butonuna bastıktan sonra guncellemek istediğimiz veritabanı ile arasındaki farkları oluşturabileceğimiz bir script üretir.

Bu script i düzenlemek için kopyalayıp yeni Editöre yapıştırıyorum.
Düzenleme işlemi bittikten sonra F5 ile çalıştırıyoruz.

ORDER BY NULLS FIRST, NULLS LAST

Ocak 15, 2013

Order by kullanırken descending (DESC)  işlemlerinde bazen null değer ilk sıraya yerleşebiiyor, budurumlardan bizi kurkaracak komut.

SELECT * FROM (
SELECT ‘FATIH’ ADI,’B’ SOYADI FROM dual
UNION ALL
SELECT ‘SULTAN’ ADI,’A’ SOYADI FROM dual
UNION ALL
SELECT ‘MEHMET’ ADI,” SOYADI FROM dual)
ORDER BY SOYADI DESC NULLS LAST;

 

ORA-00054: resource busy and acquire with NOWAIT specified

Ocak 14, 2013

Değişiklik yapmaya çalıştığınız, satır sizden önce bir başka session tarafından değiştirilmiş, fakat commitlenmemiş demektir.

Çözüm *-ilk değişikliği yapan sessionun commit yada roolback yapmasıdır.

*-yada bu sessionu bulup öldürmelisiniz

SELECT vs.username,
vs.osuser,
vh.sid locking_sid,
vs.status status,
vs.module module,
vs.program program_holding,
jrh.job_name,
vsw.username,
vsw.osuser,
vw.sid waiter_sid,
vsw.program program_waiting,
jrw.job_name,
'alter system kill session ' || ''''|| vh.sid || ',' || vs.serial# || ''';' "Kill_Command"
FROM v$lock vh,
v$lock vw,
v$session vs,
v$session vsw,
dba_scheduler_running_jobs jrh,
dba_scheduler_running_jobs jrw
WHERE (vh.id1, vh.id2) IN (SELECT id1, id2
FROM v$lock
WHERE request = 0
INTERSECT
SELECT id1, id2
FROM v$lock
WHERE lmode = 0)
AND vh.id1 = vw.id1
AND vh.id2 = vw.id2
AND vh.request = 0
AND vw.lmode = 0
AND vh.sid = vs.sid
AND vw.sid = vsw.sid
AND vh.sid = jrh.session_id(+)
AND vw.sid = jrw.session_id(+);

All constraint in Postgres

Kasım 26, 2012

SELECT ‘ALTER TABLE ‘||tc.table_name||’ DROP CONSTRAINT ‘||tc.constraint_name||’;’ AS DML
FROM
information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
WHERE constraint_type = ‘FOREIGN KEY’
GROUP BY tc.table_name,tc.constraint_name

Oracle group

Mayıs 19, 2012

SELECT table_name,COUNT(*) colon
,rtrim (xmlagg (xmlelement (e,column_name || ‘,’)).extract (‘//text()’), ‘;’) colon
FROM all_tab_columns WHERE OWNER||’.’||TABLE_NAME=’PERSONEL.MEM_SICIL’
GROUP BY table_name;

http://www.mkatranci.com/tag/xmltype-getstringval-xmlagg-xmlforest/


SELECT kisiid, ltrim(LISTAGG(sosyalkurumid, ‘,’) WITHIN GROUP (ORDER BY sosyalkurumid),
‘,’
)
sosyalkurumid
FROM kultur_server.yardim_kisisosyalkurumlar
GROUP BY kisiid
ORDER BY kisiid

Hakan ÖZBEK

“select
t.iller_id,
max(substr(sys_connect_by_path(adi,´,´),1,50)) as ilceler
from
(select iller_id,
row_number() over (partition by iller_id order by iller_id, adi) rn, adi
from ilceler) t
start with t.rn = 1
connect by t.rn = prior t.rn + 1 and iller_id = prior iller_id
group by iller_id

SONUÇ

iller_id ilceler
61 Vakfıkebir,Akçaabat,Of,Tonya
06 Çankaya,Keçiöeren,Sincan
34 Beşiktaş, Kartal”
Hüseyin POLAT