11 Ağustos 2016 Perşembe

Oracle Apex - Shuttle için where clause

Shuttle nesnesi kullanırken aşağıdaki where cümleciği örneğini kullanabilirsiniz.

 select .....   
 from ......  
 where  
 ..... önceki koşullarınız.....   
 and  
 (  
   :P1_MY_SHUTTLE is not null and  
   (instr(':'||:P1_MY_SHUTTLE ||':',':'|| f.component_id||':',1) > 0 )   
 )  

Oracle Apex - Shuttle item için genişliğin değiştirilmesi

Bazı durumlarda shuttle nesnesinin genişliğini değiştirmek gerekibiliyor.
Bunu yapmak için shuttle item için edit butonuna bastıktan sonra
"HTML Form Element Attributes" özelliğini aşağıdakine benzer
şekilde değiştirebilirsiniz.


 HTML Form Element Attributes: style="width:250px"  

Bir kolon içerisinde tekrarlayan verinin tekilleştirilmesi (distinct)

Önce
------------------------------
 select group_id,   
     listagg(name, ',') within group (order by name) as names  
 from demotable  
 group by group_id   

 group_id names  
 -------- -----  
 1     'Alan, David, David, John'  
 2     'Charles, Julie'  
Sonra
------------------------------

 select group_id,   
 regexp_replace(  
   listagg(name, ',') within group (order by name)  
   ,'([^,]+)(,\1)+', '\1')  
 from demotable  
 group by group_id;   

 group_id names  
 -------- -----  
 1     'Alan, David, John'  
 2     'Charles, Julie'  

4 Şubat 2016 Perşembe

Linux server tarafına kurulum yapmadan x-windows 'a ulaşmak

Oracle veritabanı linux kurulumlarında konforlu bir ortam sağlaması nedeniyle
grafik ekran kullanmayı tercih ediyorum. Bu konuda server tarafında
vnc server veya nx gibi bir kurulum yapmadan x-windows görüntüsünü almak için
ücretsiz yazılımlar olan putty ve xming ikilisi kolayca kullanılabilir.

Setup dosyası ile xming kurulumunun yapılmasının ardından tek yapmak gereken şey
putty içerisinde x11 forwarding aktivasyonu yapmak. X display location kısmına
"localhost:0.0" yazmayı ve tekrar tekrar uğraşmamak için kaydetmeyi unutmayın.













Download
-----------------
http://sourceforge.net/project/downloading.php?group_id=156984&filename=Xming-6-9-0-31-setup.exe
http://www.chiark.greenend.org.uk/~sgtatham/putty/

Ek Bilgi
-----------------
http://www.geo.mtu.edu/geoschem/docs/putty_install.html

Security - Best Practises (Oracle - Linux vs)

Güvenlik konusunda ücretsiz olarak erişebileceğiniz
best practise dökümanlarına aşağıdaki linkten ulaşabilirsiniz.
(Oracle 11g,Oracle 12c, Mysql, DB2, Linux 6, VmWare, Apache, IIS vs. )

Örnek Döküman
-------------------------
CIS Oracle Database Server 11g R2 Benchmark v2.1.0
Release Date: Mon Nov 30 10:15:44 2015
https://benchmarks.cisecurity.org/downloads/show-single/?file=oracle11gR2.210

This document is intended to address the recommended security settings for Oracle Database 11g R2. This guide was tested against Oracle 11g R2 (11.2.0.4) running on a Windows Server 2012 R2 instance as a stand-alone system, and running on an Oracle Linux 6.5 instance also as a stand-alone system. Future Oracle 11g R2 critical patch updates (CPUs) may impact the recommendations included in this document.

https://benchmarks.cisecurity.org/downloads/browse/index.cfm?category=benchmarks.servers

3 Şubat 2016 Çarşamba

Ön tanımlama gerekmeyen cursor loop

Genellikle cursor loop gerektiğinde aşağıdaki yapıyı kullanıyorum.
Hem kod okunurluğunu arttırıyor hem de daha kolay bir kullanımı var.
 DECLARE  
  BEGIN  
  /* Open up a cursor for loop, also selecting  
  * the "p" function which will write rows to  
  * t2 for every row fetched from t1. */  
  FOR crec IN (SELECT tcol, p(tcol) FROM t1) LOOP  
   -- Break out of the loop immediately  
   EXIT;  
  END LOOP;  
 END;  

Daha fazla bilgi için aşağıdaki adresi inceleyebilirsiniz.
http://psoug.org/reference/control_struct.html

Tek satırdaki ve belirli bir ayıraç ile ayrılmış verinin çok satırlı hale dönüştürülmesi(Connect By)

Aşağıda "," ayracı ile ayrılmış olan "abcd,123,defoifcd,87765" verisi
virgülle ayrılmış her bir veri ayrı bir satır olacak şekilde görüntülenmektedir.
 SQL> with t as (select 'abcd,123,defoifcd,87765' as str from dual)  
 select level as n, regexp_substr(str,'[^,]+',1,level) as val  
 from  t  
 connect by regexp_substr(str,'[^,]+',1,level) is not null ;  
      N VAL  
 ---------- ------------------------------  
      1 abcd  
      2 123  
      3 defoifcd  
      4 87765  
 SQL>  

Birden fazla satır içeren verinin tek satırda gösterilmesi (LISTAGG)

 select  
   deptno,  
   listagg (ename, ',')   
 WITHIN GROUP   
 (ORDER BY ename) enames  
 FROM   
   emp  
 GROUP BY   
   deptno  
 /   


Komut çıktısı aşağıdaki gibi olacaktır.
   DEPTNO ENAMES                        
 ---------- --------------------------------------------------  
     10 CLARK,KING,MILLER                   
     20 ADAMS,FORD,JONES,SCOTT,SMITH          
     30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD    

Belirli bir klasör içerisindeki çok sayıda dosyanın hızlı silinmesi

Aşağıdaki komut içinde bulunan dizin içerisindeki
tüm dosyaları çok hızlı bir şekilde silecektir. (Linux)

perl -e 'for(<*>){((stat)[9]<(unlink))}'

sqlplus ile yapılan işler için log oluşturma

ECHO {OFF|ON} : Çalıştırılmış olan komutu görüntüler. SPOOL : Çıktıyı belitilen dosyaya yazar.
 SQL> set echo on  
 SQL> SPOOL test.log  
 SQL> select 1 from dual;  
      1  
 ----------  
      1  
 SQL>  
Sonra test.log dosyası içine "cat" komutu ile baktığımızda çıktıyı görebiliriz.
 -bash-3.2$ cat test.log  
 SQL> select 1 from dual;  
      1  
 ----------  
      1  
 SQL>  
 SQL>  
 SQL> exit  
 -bash-3.2$