İndirilen Dosyanın MD5 ile Doğrulamasını Yapmak

Çoğu zaman internetten dosya indiriyoruz. Bazen indirdiğimiz dosyalarda eksik veya hata olması gibi durumlarda kurulum problemleri yaşıyoruz. Yıllar öncesinde oracle kurarken indirdiğim dosyanın doğrulamasını yapmadığımdan uzun süre beni uğraştırmıştı. Bu nedenle indirdiğiniz dosyaların özellikler kurulum dosyalarının MD5 ile doğrulamasını yapmanızı tavsiye ederim. Dosyayı indirdiğiniz yerde MD5 değeri verilir bu değerin aşağıdaki işlem sonucu dönen değer ile eşit olması doğrulanması demektir. Eşit değilse bu dosya doğrulanmamıştır ve yeniden indirilmesi gerekir.

Dosyayı indirdiğinizi dizine command prompt ile geçiş yapın. Daha sonra aşağıdaki komut ile md5 değerini alın.

cd C:\\Users\abdullah\Downloads\
certutil -hashfile nomachine_6.3.6_1.exe MD5

Siz kendi dosyanızı yazacaksınız ve dönen değer ile download yaptığınız yerdeki md5 değeri aynı olmalıdır.
spacer

Button Tıklama Olayı ile Açıklama Ekleme

B1 den B10 a kadar olan hücre değerlerini A1 den A10 a kadar açıklama olarak ekleyen button kodu

Sub Test()
Dim myText As String
Set Rng = Range("A1:A10")
For Each cell In Rng
myText = Cells(cell.Row, 2).Text
cell.AddComment.Text Text:=myText
Next cell
End Sub
spacer

ORDER BY İfadesi

select * from employees
order by hire_date; --Default olarak order by ascending (artan) olarak kullanılır.

order by hire_date ile order by hire_date asc aynı demektir yazılmak zorunda değil ancak yazılması okunurluğu arttırır.
order by hire_date descending (azalan) olarak kullanılır.

Default olarak ascending olan sıralama işleminde null değerler sonda yer alır, descending olan sıralama işleminde başta yer alır.
order by commission_pct sorgusunda asc olduğu için null olanlar sonda gelir.
order by commission_pct desc sorgusunda des olduğu için null olanlar başta gelir.

asc için null sonda olduğu halde biz başta gelmesini istiyorsak nulls first kullanmalıyız.
order by commission_pct nulls first;

order by içinde alias kolon adı kullanılabilir.
select first_name fname
from employees
order by fname;

Bir expression (ifade)'ye göre order by kullanılabilir.
select employee_id, salary+100
from employees
order by salary+100;

mantıksal olarak order by içinde olan kolon select içinde de olmalıdır ama olmak zorunda değil.
select içinde olmayan kolona göre de order by yapabiliriz ama bu çok da mantıksal olmaz.

order by department_id, first_name --birden fazla kolona göre order by kullanılır
order by department_id asc, first_name desc --kolonlara göre farklı sıralama kullanılabilir.

order by 1,3; --ilk kolona ve içinci kolona göre order by yapar



spacer

SQL WHERE İfadesi

Çoğu zaman bir tablodan veri çekerken belirli koşulları sağlayan satırları çekmesi için koşul giririlir. Bu koşullar WHERE ile birlikte kullanılır.
SELECT * FROM EMPLOYEES; --Tüm satırları getirir.
SELECT *
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 90; --departmen_id değeri 90 olan rowlar getirilir.
Burada karşılaştırma operatörleri kullanılır. Bunlar aşağıda belirtilmiştir.
tr

Where ifadesinde karekter değerler (char,varchar2) ve tarih(date) değeri tek tırnak içinde yazılır diğerleri tırnaksız yazılır. Karakter değerleri case sensitive iken tarih değeri format sensitivedir.

Default tarih formatı DD-MON-YY dir.
select * from employees
where hire_date = '17-OCT-03';

https://docs.oracle.com/database/121/SQLRF/sql_elements002.htm#SQLRF51056

Where içinde between ile değer aralığı kullanılabilir.
select * from employees where salary between 10000 and 20000;--değer aralıkları dahildir
between 20000 and 10000 gibi bir ifade hata vermez ancak sonuç döndürmez. mantıksal yanlış kullanım olur.

select * from employees where first_name between 'A' and 'C'; --adı A ve C aralığındaki değerlerle başlayan çalışanlar sorgulanıyor.

Birden fazla değer kullanmak için IN operatörü kullanılır.
select * from employees where salary in (10000, 20000, 25000); --maaşı 10000, 20000 veya 25000 olan çalışanlar sorgulanıyor

Karakter setleri için özel ifade kullanmak için LIKE kullanılır. LIKE içinde % hiç veya daha fazla karakter, _ ise bir karakter anlamına gelir.
where first_name like 'A%' -- adı A ile başlayanlar
where first_name like '%A' -- adı A ile bitenler
where first_name like '%BA%' -- adı içinde BA geçenler
where first_name like '_d%' -- ikinci karakteri d olanlar
where first_name like '__s%' --üçüncü karatkteri s olanlar

LIKE içindeki özel karakter olan % ve _ kullanmak istersek önüne escape karakteri kullanırız.
where job_id like 'SA/_%' escape '/' --SA_ ile başlayan job_id getirilir
where job_id like 'SA[_%' escape '[' --SA_ ile başlayan job_id getirilir
Kaçış karakteri için / veya [ her ikisi de escape ile tanıtılıp kullanılır sonuç aynıdır.

Null ifadesi için "=" kullanılmaz "is null" kullanılır.
where commission_pct = null hatalı olurç where commission_pct is null olmalıdır.

like, in, is null, between tersi için not like, not in, is not null, not between kullanılır.
where employee_id not in (100, 101); --100 ve 101 olmayan çalışanları getirir.
where commission_pct is not null; --komisyonu null olmayanlar
where first_name not like 'S%'; --adı S ile başlamayanları getirir.
Eşit değil için <> veya != operatörü kullanılır.

Where içinde AND, OR ve NOT kullanılabilir. Öncelik sırasına göre operatörler kullanılır. 10+5*5= 35 teki öncelik sırası gibi. Öncelik tablosu aşağıdaki gibidir. Ancak parantez kullanarak öncelik sırası değiştirilebilir.
select last_name, job_id, salary
from employees
where job_id = 'SA_REP'
or job_id = 'AD_REP' and salary > 15000;
Yukarıki sorgu incelendiğinde öncelik sırasına göre job_id = 'SA_REP' veya job_id = 'AD_REP' and salary > 15000 koşulu sağlanan kayıtlar getirilir. Aşağıdaki sorgu yukarıdaki ile aynıdır sadece okunaklı yazılmıştır.
select last_name, job_id, salary
from employees
where job_id = 'SA_REP'
or (job_id = 'AD_REP' and salary > 15000);
Aşağıdaki sorguda ise aynı sogru parantezler ile önceliklendirilmiştir.
select last_name, job_id, salary
from employees
where (job_id = 'SA_REP' or job_id = 'AD_REP') and salary > 15000;








spacer

Windows 10 üzerinde JAVA_HOME Ayarlanması



Arama bölümünden "Edit the system environment variables" enterlayarak "System Properties" ekranını açıyoruz. "Environment Variables" butonuna tıklıyoruz. Burada hem mevcut user hem de system için değişken ekleme bölümü var. Aşağıdaki "System variables" kısmından "New..." butonu ile açılan ekranda "Variable name" JAVA_HOME "Variable value" C:\Program Files\Java\jdk1.8.0_181 yazıyoruz. Siz kendi jdk versiyonunuzun yolunu bulup onu seçin. Daha sonra "Path" değişkenini seçip "Edit..." butonu ile açılan ekranda "New" butonu ile %JAVA_HOME%\bin değerini ekleyin kaydedip kapatın. Command Prompt üzerinden yapılan işlemleri javac -version yazarak kontrol edebilirsiniz.
spacer

SQL Processing

SQL Processing işlemi parsing, optimization, row source generation ve execution adımlarından oluşur. Sql ifadesine göre bazı adımlar atlanabilir.



SQL Parsing:
Bir sql ifadesi çalıştırılacağı zaman veritabanı üzerinde parse call talebi ile vertabanı üzerinde cursor açılır. Bu cursor session bazlı açılır ve private SQL area üzerinde tutulur. Cursor ve private SQL area program global area (PGA) içindedir. Parse call işlemi 3 aşamadan oluşur. Syntax check, semantic check, shared pool check
Syntax Check adımında yazım kontrolü yapılır. örneğin from yerine form yazılan bir sorgu syntax hatası verecektir. Semantic check adımında mantıksal kontrol yapılır. örneğin yazılan tablo veya kolonun olmaması semantic hata verecektir. Her sql ifadesi için bir execution plan çıkarılır ve hash değeri üretilir. V$SQL.SQL_ID dictionary view üzerinde görülebilir. Aynı sql ifadesi için farklı planlarlar çıkarılabilir. Çıkarılan sql planları shared pool area üzerinde saklanır. Shared pool check adımında sql ifadesi için daha önce bir plan çıkarılmış mı bunun kontrolü yapılır. Eğer daha önce bir plan çıkarılmamışsa bu aşamaların hepsinin yapılmasına hard parse sadece varolan planın getirilmesine soft parse denir.

SQL Optimization: Var olan planlar içinden en iyisinin seçilmesine denir. Bir dml ifadesi için en az bir tane plan çıkarılmalıdır. DML alt sorugusu içermeyen DDL ifadeleri için optimization yapılmaz.
SQL Row Source Generation: Row source generation optimizer tarafından optimum execution'ı çıkarmak için kullanılan bir yazılımdır. SQL engine tarafından adım adım aşamalarla veri getirilir. Her adımda satır kümesi döner ve diğer adım için kullanılır. Her adımda döner bu satır kümesine row source denir. Row source bir tablo, view veya joinlenmiş veri grubu olabilir. Row source generator çıkarılan row sourcelardan oluşan execution plana row source tree denir. Row source tree içinde tablo sıralaması, adı geçen tablolar için erişim methodu(table access by index, table access full), join işlemleri için join methodu(hash join), filter sort veya aggregate gibi veri operasyon bilgileri içerir.

Aşağıda örnek bir execution planı yer almaktadır. Soyadı A ile başlayan tüm çalışanların last_name, job_title, department_name kolonlarının getirildiği bir select sorgusu inceleyelim.



SQL Execution: Row source generator tarafından üretilen tree üzerindeki her row source için SQL engine çalışır. Bu işlem DML işlemleri için zorunlu bir adımdır. Row source tree üzerindeki plan tersten okunur. Bottom up yaklaşımına göre execute edilir. SQL engine tarafından işletilen siyah kutu adımlarında fiziksel veri okunur. 6. adımda departments tablosundaki tüm satırlar full table scan yapılır. 5. adımda jobs tablosundaki tüm satırlar için full table scan yapılır. 4. adımda emp_name_ix indexi üzerinde A ile başlayan değerler için arama yapılır ve bulunan değerler için rowid döner. Örneğin Abdullah için AAAPzRAAFAAAABSAAe rowid değeri dönsün. Her rowid için employees tablosunda index üzerinden table access yapılır. SQL engine tarafından işletilen beyaz kutu adımlarında operasyonel işlemler yapılır. 2. adımda 3. ve 5. adımdaki row source içindeki her row için eşleşen kayıtlar 1. adım için döndürülür. 1. adımda 2. adımdaki row source ile 6. adımdaki row source içindeki rowlardan eşleşen row seti sonuç olarak döndürülür.

https://docs.oracle.com/database/121/TGSQL/tgsql_sqlproc.htm#TGSQL189
spacer

Oracle SQL Select ve Kısa Bilgiler

Tek satır yorum satırı için "--" çok satır için "/* */" kullanılır. Yorum satırlarını yazdığımız sql ifadeleri için açıklama ve yorum için kullanırız. Bu satırlar çalıştırılamaz.
-- bu tek satır yorum örneğidir.
/*
çoklu satır
yorum örneği
*/

select ifadesi ile kolonların seçilmesine projection, satırların seçilmesine selection denir.
sql ifadesi case insensitivedir.
sql ifadesi bir veya daha fazla satırda yazılabilir.
Anahtar kelimeler ve kolonlar arasına birşey yazılamaz. "se lect" gibi bir ifadede arada boşluk olduğundan hata verir.
Best practice olarak her anahtar ifade bir satırda yazılır. select birinci satır from ikinci satır where üçüncü satırda yazılır.
Satır başı (indent) kullanılması okunaklığı arttırır.
select firstname,last_name
depertment_id, salary
from employees; --depertment_id den önce indent kullanıldı.
sql ifadelerinin sonunda noktalı virgül kullanılır. tek sql için zorunlu değildir ama birden fazla sql için sql ifadelerin ayrılması için zorunludur. sql plus için sql ifadesinin bittiğini anlaması için noktalı virgül zorunludur.

select * from employees; --tüm satırları ve kolonları seçer. * ifadesi tüm kolonları ifade eder. Bazı kolonları (col1,col2) ve belli satırları getirmek için where ifadesi kullanılır.
select ifadesinde select ve from ifadesi zorunludur. Oracle tarafından özel kelimelerdir. Bunlar tablo adı değişken adında kullanılamaz. Sql developer üzerindeki ifadelerde özel kelimler mavi olarak gözükür.
select ifadesinde ve oracle'da varsayılan olarak tablo adları, kolon adları büyük yazılır. sql ifadeleri büyük küçük harfe duyarsızdır (case insensitive)

select içinde aritmetik ifadeleri kullanabiliriz.
select employe_id, first_name, salary, salaray + (salary*0.1) from employees; -- maaşların %10 zamlı gösterilmesi
null değeri sıfır veya boşluk demek değildir. null değeri bu alana değer girilmediğini gösterir. özel bir değerdir. null value ile aritmetik ifade kullanıldığında sonuç daima null olur.
select commmision_pct+10 from employess; -- commission_pct null olan kolonlar 10 ile toplandığından geriye null döner. null olmayan değerlere 10 eklenip döner.

select içindeki kolonlar için alias kullanarak yeniden adlandırabiliriz. AS kullanımı zorunlu değildir istenirse kullanılır, kullanılırsa okunaklığı arttırır. Yeni kolon adı çift tırnak içine yazılırsa kolon adı case sensitive yani küçük büyük harfe duyarlı olur nasıl yazıldıysa öyle gözükür ve kolon adı için boşluk vs kullanılabilir.
select last_name, last_name AS LNAME, first_name FNAME, last_name " LaST NaMe" from employees; -- kolon isimlendirme örnekleri

Concatenation operatörü || ile string ifadeler birleştirilir.
select first_name || ' ' || last_name "full name" from employees; --iki kolon boşluk ile birleştirildi bir kolon yapıldı
select first_name || ' çalıştığı birim: ' || depertment_id from employees;
string ifadeler tek tırnak içinde yazılır. tek tırnak karakterinin yerine q'[ ifadesi de kullanılabilir. Yani 'abc' ile q'[abc]' aynı şeydir. Böylece köşeli parentez içinde tek tırnak karakteri de kullanılabilir.
select first_name || q'[ çalıştığı birim: ]' || depertment_id from employees; yukarıdaki sql ile aynı sonucu döner.

distinct ifadesi ile tekrar eden değerler tekilleştirilir.
select distinct depertment_id from employees; -- çalışanların olduğu birimler tekilleştirilir. birden fazla kişi çalışsa bile o depertment_id bir kere listelenir.
distinct ifadesi birden fazla kolon için de kullanılabilir.
select distinct depertment_id, job_id from employees; --iki kolonu dikkate alarak distinct yapar

describe ile bir tablonun yapısı görebiliriz. kolon adları, tipleri ve null değer alabilir mi bakılır.
describe employees; veya kısaca desc employees; yazılabilir.
spacer

HR Kullanıcılı Yeni Bir Pluggable Database Kurma

Oracle 12c kurulduğu halde hr olan bir database yoksa bunu aşağıdaki adımlarla kurabilirsiniz.
Öncelikle aşağıdaki sorgu ile orclpdb vb gibi bir database olmadığıdan emin olun. Sadece PDB$SEED gözüküyorsa pluggable database kurulmamıştır.
select name, con_id from v$pdbs;
Computer Start Menu kısmında "DBCA" enter basıp Database Configurastion Assistant (DBCA) çalıştırıyoruz.
Database Operation: Manage Pluggable database seçip devam ediyoruz
Manage Pluggable Databases: Create a Pluggable database
Select Database: ORCL seçiyoruz. Hangi root database altına pluggable database create edilecekse o seçilmeli. Username ve Password girilmesine gerek yok.
PDB Identification: Create a new Pluggable database from PDB seed
Pluggable Database Options: orclpdb1 Administrator user name: orclpdb1 şifre girilir devam edilir
PDB Storage Options: Ekrana gelend efault alanlar devam edilir ve finish denilir.

ORCLPDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb1)
)
)

tnsnames.ora dosyasına yeni database entry eklenir. ve hr kullanıcısı unlock yapılıp login olabilir.
spacer

ORA-01033 oracle initialization or shutdown in progress Hatası



Oracle kurulu olan makine kapanıp yeniden açıldığında pluggable database kapalı gelir. Yani kapalı olan bir database'e bağlantı kurmak istediğinizde bu hatayı alırsınız.
SQL Plus üzerinden sys as sysdba; komutu ile bağlanıyoruz.
alter pluggable database orclpdb open; -- komutu ile orclpdb plugabble database açıyoruz.
alter pluggable database all open; -- komutu ile tüm pluggable databaseleri de açabiliriz.
spacer

Oracle HR Kullanıcısını Unlock Yapma

Oracle kurulduğunda HR kullancısı CDB olan orcl'in altındaki orclpdb içinde yüklü gelir ancak bu kullanıcının hesabı kilitlidir. Kullanılması için kilidinin açılması gerekir. Kilit açmak için databasede yetkili olan SYS kullanıcısını kullanacağız.
SQL Plus veya SQL Developer ile sysdba olarak login oluyoruz.
show con_name; --CDB$ROOT görülür
select name, con_id from v$pdbs; --Oracle objectlerinin bilgilerini içeren dictionary view tablolarıdan v$pdbs tablosundan mevcut pluggable database listelenir. PDB$SEED ve ORCLPDB adında iki database görülür.
alter session set container = orclpdb; --komutu ile sessiondaki bağlı olan database orclpdb olsun diyoruz ve bu database'e geçiyoruz.
show con_name; --ORCLPDB olduğundan emin oluyoruz
select name, open_mode from v$pdbs; --orclpdb nin durumu ilk kurulduğu zaman mounted olarak gelir. onu open yapmalıyız.
alter pluggable database open; -- bağlı olduğumuz pluggable databasei open yapıyoruz.
select * from all_users; --orclpdb databaseinde olan tüm kullanıcılar listelenir.
alter user hr identified by 123 account unlock; --hr kullanıcısının şifresini 123 olarak güncelleyip unlock yapıyoruz.

tnsnames dosyasına hr için bir entry ekliyoruz.

ORCLPDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orclpdb)
)
)

Artık SQL Developer kısmından TNS için ORCLPDB seçerek hr kullanıcısı ve 123 şifresi ile giriş yapabiliriz.
spacer

SYS ile SQL Plus veya SQL Developer ile Veritabanına Bağlanmak

SQL Plus ve SQL Developer Oracle'ın kendi veritabanlarına bağlanmak için sunduğu uygulamalardır.
SQL Plus siyah konsol ekrandır ve daha çok adminler tarafından kullanılır. SQL Developer arayüzü olması ve daha kolay kullanıldığı için daha çok geliştiriciler tarafından kullanılır.
SYS kullanıcısı veritabanındaki tüm yetkilere sahip en üst admindir.
Programlar > Oracle kısmında SQL Plus'ı çalıştırıyoruz.
"sys as sysdba" komutu ile veritabanına sys kullanıcı adı ve sysdba olarak bağlanmak istiyoruz. Sonra şifre girip entera basıyoruz. Bağlantımız gerçekleşiyor ve bize bağlandığımız sunucunun "Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64 Bit" bilgisi geliyor. Artık SQL komutlarını yazabiliriz.
SQL> show con_name --komutu mevcut bağlı olduğumuz connection bilgisini gösterir. 12c'de başlangıçta en üst seviyede master container yani CDB$ROOT olduğunu söylemiştik. Bunu sorgulayarak görebiliyoruz. Container içinde herhangi bir object, application olmadığını biliyoruz. SYS kullanıcısı her zaman önce root database olan CDB'ye bağlanır daha sonra pluggable database PDBlere geçiş yapar.

Aynı işlemi Programlar > SQL Developer çalıştırarak da yapabiliriz. Sol tarafta "Connections" kısmından bağlantı bilgilerini girmeliyiz. Burada bilmemiz gereken tnsnames.ora dosyası var. Bu dosya veritabanına bağlanabilmemiz için oracle tarafından connection konfigürasyon bilgilerinin tutulduğu dosyadır. Bu dosya databasein kurulduğu yerde app>username>product>12.2.0>dbhome_1>network>admin>tnsnames.ora dizinindedir. Bu dosya açılıp incelenir. Oracle kurulduğunda bu dosya otomatik oluşturulur. Bu dosyadaki ORCL bizim bağlandığımız container database bilgilerini içerir. ORCL connection adıdır buraya herhangi bir şey yazılabilir. ADRESS alanı hangi protokol ile hangi hosta ve hangi porttan bağlanılacağını gösterir. Aynı bilgisayara kurulum yapıldıysa host kısmı localhost olur veya bilgisayar adı yazılır. Gerçek hayatta bu kısıma bağlanacağımız server ip adresi yazılır. Birden fazla bağlantı için bu dosyaya manuel entryler eklenir. Service_name kısmı %99 database adı ile aynı olur. Genellikle db adı büyük harflerle service adı küçük harflerle yazılır.

SQL Develoepr da yeni connection ile açılan ekranda aşağıdaki bilgiler ile bağlantı kuracağız.
Connection Name: Herhangi bir şey yazılabilir. Ben orcl yazıyorum.
Username: sys as sysdba
Password: şifre giriyoruz ve Save Password seçiyoruz.
Connection Type: TNS
Network Alias: ORCL (tnsnames.ora dosyasındaki entrylerden gelir)


ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
spacer

Oracle 12c İndirilmesi ve Windows 7, 8, 10 Üzerinde Kurulumu



Oracle Web Site adresine gidilir. Bu sayfada Oracle'ın işletim sistemlerine göre son versiyonları olan veritabanı kurulum dosyaları listelenir. Standart Edition ve Enterprise Edition paketleri vardır. Standart edition daha küçük kuruluşlar için kullanılırken Enterprise Edition büyük kurumlar ve kuruluşlar için tercih edilir. 12c Release 1 için Standart ve Enterprise kurulum dosyaları ayrılmışken 12c Release 2 için tek bir kurulum dosyası vardır. 12c R2 kurulum aşamasında bu sorulacaktır. Oracle Database'in bu sürümleri ücretlidir. Ücretsiz ve lisans ücreti olmadan bir projede Oracle Database kullanmak için Express Edition kullanabilirsiniz. Accept License Agreement seçerek uygun olanı indirebilirsiniz.


İndirilen zip dosyası unzip ile bir klasöre çıkarılır. setup.exe ile kurulum başlatılır. Oracle kurulum adımları şöyledir:

Configure Security Update: Bu aşama lisanslı olanlar için gereçlidir. Support Password girilerek destek alınacak email adresi belirtilir. Biz email boş bırakıp check işaretini kaldırıyoruz. Herhangi bir uyarı verirse Yes ile devam ediyoruz.
Installation Option: Bu aşamda üç seçenek var. Yeni bir database kur ve konfigür et, sadece yazılımı yükle ve var olan database, upgrade et. Biz Create and configure database ile devam ediyoruz.
System Class: İki seçenek var. Büyük bir veri merkezi için kurulum veya basit işler için kolay konfigürasyon olan Desktop class. Biz desktop ile devam ediyoruz.
Oracle Home User: Oracle virtual account veya yeni windows kullanıcı oluşturarak devam etmeyi tavsiye ediyor. Var olan windows kullanıcıları da seçilebilir ancak biz database işlemleri için bir kullanıcı create ediyoruz.
Typical Installation: Oracle'ın kurulacağı dizinler girilecek. Oracle widnows kurulu olmadığı C 'nin dışında bir yere kurmanızı tavsiye ederim. Database Edition bu aşamada seçilir. Character set seçilir. Global yani Container database adı girilir. Biz orcl giriyoruz. Şifre beliritlir. Pluggable database adı girilir. Biz orclpdb giriyoruz. Oracle standartlara uygun şifre girmediniz derse eminim ignore et deyip Yes ile devam ediyoruz.
Prerequisite Checks: Bazı kontroller yapılır.
Summary: Girilen bilgiler özet olarak sunulur.
Install Product: Kurulum aşamasıdır.
Finish: Kurulum tamamlanır.



Oracle web sitesi üzerinden kurulum hakkında daha detaylı bilgi alabilirsiniz.
spacer

Oracle Live SQL ile Kurulum Yapmadan SQL Yazma



Çoğu zaman Oracle'ı kurmak zahmetli bir hal alabiliyor. Basit bazı şeyler için Oracle kurmak yerine herhangi bir kurulum yapmadan Oracle'ın web tabanlı bize sunduğu ve sql yazmamızı sağlayan Oracle Live SQL kullanılabilir.
Oracle Live SQL adresinde herhangi bir kurulum yapmadan cloud üzerinde sorgular yazabiliriz. Bu hizmeti kullanabilmek için oracle username ve password ile giriş yapmalısınız. Hesabınız yoksa hemen oluşturabilirsiniz.

Giriş yapınca oracle herhangi bir objecti olmayan geçici bir user verecek. Veritabanı user ve schema ayn şey demektir. Bize verilen user için "My Schema" scheması oluşturulur. Bu user ile giriş yaptıktan sonra SQL Worksheet alanında Select, DML, DDL ve transaction language yazılabilir. Schema alanında object create edilebilir, veya varolan objectler upload edilebilir. Oracle üzerinde çalışmamız için Human Resources, Sales History ve daha fazla schemayı bize read only yani sadece select ile kullanabileceğimiz bir yapıda sunuyor. Bu schemalarda table, procedure, sequence, view gibi birçok object bulunmaktadır. Schema adı ön eki ile bunlara erişebiliriz.

select * from hr.employees; ile sorgumuzu yazazarak "run" butonu ile çalıştırıp sonuçları görebiliriz.
spacer

Oracle Human Resources (HR) Schema İnceliyoruz



Oracle örnek objectlerin ve dataların olduğu Human Resources (HR) schema'sını geliştiriceler için hazır sunuyor. Bu schemayı incelediğimizde Employees, Departments, Locations, Countries, Regions, Jobs ve Job_History tablolarının olduğunu görüyoruz. Employees tablosu Departments tablosu ile, Departments tablosu Locations tablosu ile, Locations tablosu Countries ile, Countries tablosu Regions ile, Employees tablosunun kendisi ile, Employees ve Departments tablosunun Job_History ile ilişkili olduğunu görüyoruz.

Bu diagram üzerinden mavi olarak belirtilen kolonlar Primary Key olan kolonlardır. Primary Key olan kolon unique ve not null'dır. Job_History tablosunda iki kolon birden Primary Key için kullanılmıştır. Buna composit pk denir. Employees tablosundaki manager_id kolonu self joi ile yine Employees tablosundaki employee_id kolonunu referans almıştır. Employees tablosu Departments tablosundaki department_id ile Fk, Departments tablosu Locations tablosundaki location_id ile Fk, Locations tablosu Countries tablosundaki country_id ile Fk ve Countries tablosu Regions tablosundaki region_id ile Fk ilişkilidir. Genellikle FK olan bir kolon başka bir tablodaki PK kolonunu referans alır.
spacer

Oracle 12c Mimarisi



Oracle 12c ile cloud teknolojisine geçmiştir. Bu yüzden c kullanılmıştır.
Temelde container database (CDB) bunun altında pluggable database (PDBs) vardır. Her PDB kendi objelerini, uygulamalarını ve kullanıcılarını içerir. CDB root database olarak geçer ve herhangi bir object, uygulama içermez.

Önceki versiyonlarda birçok database vardı ve her database'in kendi serveri ve dba vardır. Yeni mimari ile bir tane server bir tane master database ve master DBA kavramları geldi. Bu server üzerinde farklı PDBler ve pdb dba olabilir. CDB Administrator ve PDB Administrator aynı veya farklı biri olabilir. Oracel 12c ile yönetim kolaylaştı ve maliyet azaldı.


spacer

Primary Key ve Foreign Key

Bir tabloda her satırı diğerlerinden ayırt etmek için kullanılan tekil anahtara Priamry Key denir. Employoees tablosunda employees_id, Departments tablosunda department_id primary keydir. PK unique ve not null constraintlerini içerir.
Tablolar veya kolonlar arası ilişkileri kullanmak için foreign key kullanılır. Employees tablosundaki department_id değeri bu personelin çalıştığı birimi niteler. Bu birimin bilgileri ise Departments tablosundan bakılır. Departments tablosundaki department_id PK iken Employees tablosundaki department_id foreign keydir. Foreign key kolonundaki değer referans aldığı tablodaki kolonda değer olarak karşılık bulmalıdır. Referans alınan kolon PK veya Unique olmalıdır. FK kolonu NULL olabilir.
spacer

Sistem, Proje Geliştirme Yaşam Döngüsü ve Veritabanı Tasarımı

Bir proje veya sistem geliştirirken genel olarak 5 adımda gerçekleştirilir. Birçok farklı metodoloji ve yöntem vardır fakat bunları 5 basamakta sınıflandırabiliriz.
Analiz, Strajeti ve Planlama > Tasarım > Geliştirme > Test, Güncelleme ve Bakım > Sistem
Analiz, Strajeti ve Planlama aşamasında iş gereksinimleri, nasıl bir ürün istendiğinin üzerinde çalışılır. Ne zaman, ne kadar kişiyle, hangi teçhizatlarla, nerede, kimlerle bu sistem geliştirilecek planlamalar yapılır.
Tasarım aşamasında istenen bu gereksinimler için tasarımlar oluşturulur. Bu aşamada veritabanı tasarımı çok önemlidir. Sistem mimarisi oluşturulur ve ER diyagramları gibi toollar ile tasarım yapılır.
Geliştirme aşamasında tasarımı oluşturulan sistemin prototipi yapılır. Tablolar, Objectler, kodlar, kullanıcı rolleri üzerinde çalışır.
Test, Güncelleme ve Bakım aşamasında yapılan sistem istenen gereksinimleri karşılıyor mu veya zaman içinde ortaya çıkan yeni gereksinimler üzerinde durulur.
Sistem aşamasında ise artık oluşturulan sistem kullanıma açılır ve bu aşamalar ihtiyaçlar dahilinde bir döngü şeklinde yürütülür.

Veri anlam ifade etmeyen bilgidir. Bilgi ise verinin anlam kazanmış işlenmiş halidir.
Veritabanı organize edilmiş bilgi topluluğudur. Veritabanı yönetim sistemi ise verilerin kaydedildiği, değiştirildiği, kullanıldığı ve yönetildiği veritabanı sistemleridir. RDBMS (Relation Database Management System) verilerin birbirleri ile ilişkilendirildiği ilişkisel veritabanı yönetim sistemleridir.

Tablo RDBMS'de verilerin depolandığı temel yapılara denir. Verilerden tablolar, tablolardan veritabanları oluşturulur.

İlişkisel veritabanları için ERM (entitiy relation model) kullanılır. ERM üç şeyden oluşur. Bunlar Entity, Attributes ve Relationshiptir. Entity gerçek dünyadaki nesnelere karşılık gelir. Okul veritabanı için öğrenciler, dersler, sınıflar birer entittydir. Entitiy'nin veritabanı karşılığı tablodur. Attributes entity'e ait özelliklerdir. Öğrenci entitysi için adı,soyadı, numarası,yaşı gibi özellikler attributedür. Atrributes'ün veritabanı karşılığı kolonlardır. Relationship entityler arasındaki ilişkilerdir. Öğrenci ve sınıf arasında öğrencinin hangi sınıfta olduğuna dair bir ilişki vardır. Relationship'in veritabanı karşılığı foreign keydir.

Tablolar arasında bire bir,bire çok, çoka çok ilişki olabilir. Bir çalışanın bir yöneticisi vardır(1-1 employees tablosu), bir departmanda birden fazla kişi çalışabilir(1-n employees tablosu), bir çalışan birden fazla departmanda daha önce çalışmış olabilir ve bir departmanda daha önce birden fazla kişi çalışmış olabilir(n-n job history tablosu).

SQL yapısal sorgulama dilidir. Veritabanına erişerek tablolara veri eklemek, güncellemek, silmek ve verileri çekmek için sql kullanılır. SQL*Plus ve SQL Developer Oracle'ın sql ürünleridir. Oracle serverda olan bir kullanıcı adı ve şifre ile SQL Plus veya SQL Developer kullanılarak bir sorgu yazılır. Bu sorgu oracle serverda çalıştırılır ve sonuç getirilir.

4 çeşit SQL tipi vardır. DML, DDL, DCL ve Transaction control.
Data Manipulation Language (DML): Select, Insert, Update, Delete ve Merge komutlarıdır. Veriler üzerinde değişiklik yapılır.
Data Definition Language (DDL): Create, Alter, Drop, Rename, Truncate ve Comment komutlarıdır. Objectler üzerinde değişiklik yapılır.
Data Control Language (DCL): Grant ve Revoke komutlarıdır. Yetki işlemleri için kullanılır. DBA tarafından kullanılır.
Transaction Control: Commit, Rollback ve Savepoint komutlarıdır.
spacer

View Sorgularken "ORA-01031 insufficient privileges" Hatasını Almak



Merhaba,

Geçen garip bir durumla karşılaştım. Belki sizde karşılaşırsınız diye paylaşmak istiyorum. a kullanıcısının viewı için b kullanıcısına yetki verdiniz diyelim. b kullanıcısı select çektiğinde normalde çalışır değil mi? Ama ilginçtir b kullanıcısı "ORA-01031" hatası alıyor. Oysa yetki vermiştiniz. Aşağıdaki sorgu ile gerçekten bu view üzerinde yetkisi olduğuna bakın.

select * from role_tab_privs;

Sorgu ile yetki olduğuna baktık. Hata aldığını ve sorgulayamadığını gördük. Viewin sql cümlesini inceliyoruz. Başka bir c kullanıcısına ait bir tablo içeriyor. b kullanıcısının bu tabloya erişim yetkisi yok. Yani b kullanıcısı c kullanıcısına ait tablo üzerinde izni olmadan a kullanıcısına ait viewi sorgulayamıyor. Çözüm için ne yapıyoruz c kullanıcısının tablosu için b ye yetki veriyoruz.

grant select on a.view1 to b;
grant select on c.table1 to b;
spacer

Oracle Sql Developer Ekran Donma ve Gözükmeme Sorunu



Öncelikle hatanın farklı çözümleri olabilir. Adımları sırasıyla deneyiniz.

Sql developer açıldıktan sonra üst menüden Tools > Preference ekranını açınız. Ekran açıldığında birşey gözükmüyorsa tab ve mouse ile tıklayarak nesnelerin gelmesini sağlayabilirsiniz.
Textbox ve Dropdrownlistler aktif olacaktır. Look and feel ayarı "Oracle" olarak default gelmektedir bunu "Windows" olarak düzeltiniz. Butonlar gözükmediği için Ekranın sağ alt köşesinde gözükmeyen 2 buton var bunlardan sağdaki olan "Cancel" soldaki olan "OK" butonu OK'e tıklarsanız değişiklikler için "Confirm Restart" diye bir ekran açılırsa enter'a tıklayıp restart edin sorun çözülecektir.

Sorun çözülmezse AppData klasöründeki sql developer a ait geçici dosyaları temizleyin ve yeniden sql developerı açın.

Eğer windows 10 kullanıyorsanız ve böyle bir hata alıyorsanız dil ayarı türkçe ise ondan kaynaklanabilir. Bunun için sqldeveloper\bin\sqldeveloper.conf dosyasına aşağıdakini ekleyerek sorundan kurtulabilirsiniz.

AddVMOption -Duser.language=en


Buna rağmen sorun çözülmediyse aşağıdaki parametreyi true yapın.

AddVMOption -Dsun.java2d.ddoffscreen=false

Sorun devam ediyorsa aşağıdaki parametreyi pasif yapın ya da silin.

AddVMOption -Dsun.locale.formatasdefault=true

Hala sorun devam ediyorsa aşağıdakileri ekleyin.

AddVMOption -Dsun.awt.keepWorkingSetOnMinimize=true

AddVMOption -Dsun.java2d.noddraw=true

And change sqldeveloper theme to "windows style".

Hala sorun devam ediyorsa sqldeveloper64W.exe ile açıp deneyin.


Ve hala olmuyorsa sayıp sövün ve gidip çay için :))))


https://stackoverflow.com/questions/1428217/bad-screen-redrawing-in-oracle-sql-developer
http://www.muratoner.net/oracle/oracle-sql-developer-nesnelerin-gozukmeme-problemi
spacer