SQL*Plus ‘a Giriş
SQL*Plus, SQL komutları ve PL/SQL bloklarını çalıştırmayı ve veritabanını yönetmeyi sağlar. Veritabanını yönetmek için bir çok grafik arayüzlü program olsa da bu işi guruları command prompt kullanmanızı tavsiye ederim.
SQL*Plus ‘ı kullanarak yapılabilecek işlemler;
- SQL komutlarını ve PL/SQL bloklarını girme, düzenleme, saklama, geri getirme ve çalıştırma
- Sorgu sonuçlarını bir rapor düzeninde formatlayabilme
- Herhangi bir tablo için sutun tanımlarını listeleyebilme
- Veritabanındaki verilere ulaşıp bunları kopyalayabilme
- Uç kullanıcılara mesajlar gönderip bunlardan gelen cevapları kabul edebilme
- Temel Kavramlar Komut (command) SQL*Plus yada Oracle ‘dan yapması istenen
- Blok (block) Yordamsal bir mantık içinde birbiriyle ilişkili SQL ya da PL/SQL komutlar grubu
- Çizelge (table) Oracle ‘daki temel saklama birimi
- Sorgu (query) Bir ya da daha fazla çizelgeden bilgi getiren SQL komut (Select)
- Sorgu sonucu Sorgu sonucu getirilen veri (query result)
- Rapor (report) SQL*Plus komutları yardımıyla biçimlenmiş sorgu sonuçları
SQL*Plus ‘ın Başlatılması ve Bağlanılması
Linux/UNIX sisteme girdikten sonra komut iletisinden (terminal) aşağıdaki komutu girerseniz, sizden kullanıcı kodunuz ve parolanız istenecektir.
SQLPLUS kullanıcı/sifre@sid | Temel sytax bu şekildedir. |
CMD > SQLPLUS /NOLOG
SQL>conn / as sysdba |
sisteme oturum açan kullanıcı DBA (oinstall) grubunda ise şifre girmeden giriş yapabilir |
SQLPLUS; connect user/sifre; | Default sid e normal kullanıcı bağlantı şekli |
CMD > SQLPLUS kullanıcı/sifre | Default sid e bağlanır. |
CMD > SQLPLUS sys/sifre as sysdba; | Default sid e dba olarak bağlanır. |
1 |
$ sqlplus |
SQL*Plus: Release 10.2.0.1.0 – Production on Thu Dec 31 16:42:18 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
1 2 |
enter user-name : sys sysenter password : şifre as sysdbag |
(yazıp entera basarız güvenlik nedeni ile yazdıklarımız ekrana gelmez **** dahi gelmez hiçbir şey yazmaz)
“Connected to an idle instance” şeklinde bir uyarı aldı iseniz.
1 |
SQLPLUS |
Artık sisteme girdiniz (logging on). “SQL>” komut iletisi SQL*Plus ‘ın sizin komutlarınızı kabul edip
işletmeye hazır olduğunu gösterir. Şimdi bu komut satırından SQL komutlarını ya da PL/SQL bloklarını
işletebilirsiniz. SQL*Plus ‘ı daha çabuk başlatmak için şu komutu kullanabilirsiniz;
1 |
$ sqlplus hr/hr |
SQL*Plus: Release 10.2.0.1.0 – Production on Thu Dec 31 17:06:00 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL*Plus ile işinizi bitirdikten sonra işletim sistemine geri dönmek için exit komutunu kullanabilirsiniz.
1 |
SQLPLUS> exit |
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – 64bit Production
With the Partitioning, OLAP and Data Mining options
Komutların Girilmesi ve Çalıştırılması
Komutların girilmesi
Bilgisayarınızın imleci (cursor) komut iletisinden sonra görünür. İmleç, sizin klavyeden gireceğiniz
karakterin ekranda görüneceği konumu gösterir. SQL*Plus ‘dan yapmasını istediğiniz şeye karşı gelen
komutu yazmanız gerekir. Genellikle komutlarla diğer kelimeler arasında boşluk ya da tab karakterleri
olur.Bunların sayısı önemsizdir. Komut iletisinden girebileceğiniz üç tip komut vardır;
SQL komutları
PL/SQL blokları özel amaçlı SQL*Plus komutları (sorgu sonuçlarını formatlama, seçenekleri kurma) yardım
sağlama. Herhangi bir SQL*Plus komutu hakkında yardım bilgisi almak için komut iletisinden HELP komutu
ve ardından hakkındayardım istenen komutun adını girmeniz gerekir.
1 |
SQL> help komut adı |
SQL komutlarının çalıştırılması
Örnek veri tabanımızda yer alan tabloları kullanarak bir sorgu yazmaya çalışalım. Kazancı 2500$ ‘dan
az olan çalışanları bulmaya çalışalım. Komut iletisinden komutun ilk satırını girdikten sonra return tuşuna
basılırsa, SQL*Plus ikinci satır anlamına gelen 2 uyarısını gösterecektir. ; noktalı virgül komutun bittiğini
gösterir. Bundan sonra SQL*Plus, komutu işletmeye başlayacaktır.
Oracle sql*plus da wrap off ederek çıktıyı daha düzgün hale getirebilirsiniz.
1 2 3 |
set wrap off; show all |
Tüm ayarları gösterir.
Çıktı görünümünü kendinize uygun değerler vererek değiştirebilirsiniz.
1 2 3 |
set line size 70 set pagesize 180 |
Komutlarınıza eklemek istediğiniz açıklamaları (comment) “/* … */” şeklinde yazabilirsiniz.
Sonuçların ve getirilen komutların sayısının gösterilmesinden sonra SQL*Plus tekrar komut iletisini gösterir.
1 |
SQLPLUS> select empno, ename, job, sal /* seçilecek olan nitelikler */ 2 from emp where sal <2500; |
SQL*Plus Komut Sözdizimini (Syntax) Anlama SQL komutlarınızı istediğiniz sayıda satıra bölebilirsiniz. Fakat en anlamlısı satırlarınızı mantıksal bütünlük içeren gruplar halinde düzenlemenizdir. (Select, Where, Group By satırı gibi…). Aşağıdaki tüm terimlerdeki sorgular özdeştir.
1 2 |
SQL> select empno, ename, job, sal 2 from emp where sal select empno, ename, job, sal |
SQL komut satırı üç şekilde sonlanabilir;
- Noktalı virgül (semicolon “;”) ile. SQL*Plus ‘a sizin komutu çalıştırmak istediğinizi söyler.
- Bölme işaret (slash “/”) ile. Son girilen komutu çalıştırmak istediğinizi söyler.
- Boş satır (blank line) ile. Komuta bir sonraki satırdan devam etmek istediğinizi söyler.
PL/SQL bloklarının çalıştırılması
SQL*Plus içerisinden PL/SQL bloklarını da çalıştırabilirsiniz. SQL*Plus, PL/SQL yordamlarını sanki SQL
deyimlerini işletiyormuş gibi düşünür. PL/SQL bloklarını bitirmek için en son satır olarak nokta “.”kullanılır.
Aşağıda örnek bir PL/SQL bloğu biçimsel olarak verilmiştir.
1 2 3 4 5 |
SQL> declare 2 değişken_adı değişken_türü ; 3 begin 4 SQL _komutları ; 5 end; |
İşletim sistemi komutlarının çalıştırılması
Üzerinde çalıştığınız işletim sisteminin komutlarını SQL*Plus komut iletisinden çalıştırabilir ya da geçici bir
süre için işletim sisteminin kabuğuna (shell) çıkabilirsiniz.
1 |
SQL> host [komut] |
Aşağıda pwd (print working directory) komutunun iki şekilde nasıl çalıştırılabileceği gösterilmiştir.
1 |
SQL> host pwd; |
/home/oracle
1 |
SQL> host; işletim sistemi kabuğuna geçilir. |
1 |
$pwd; komut uygulanıyor. --> /home/oracle |
/home/oracle
1 |
$ exit ; SQL*Plus ‘a geri dönülüyor. |
İşletim sistemi kabuğuna çıkmak, çalıştırılacak komut sayısı birden fazlaysa daha anlamlı olmaktadır. Ayrıca kabuğa çıktıktan sonra geri dönmek için SQL*Plus tekrar çalıştırılmamalı, bunun yerine exit komutu
kullanılmalıdır.
Çizelge Tanımlarının Listelenmesi
Verilen bir çizelgedeki niteliklerin tanımlarını SQL*Plus ‘ın describe komutunu kullanarak görebilirsiniz
(Kısaca desc olarak kullanılabilir.).
1 2 3 4 5 6 7 |
SQL> desc employees EMPLOYEE_ID NOT NULL NUMBER(6) FIRST_NAME VARCHAR2(20) LAST_NAME NOT NULL VARCHAR2(25) EMAIL NOT NULL VARCHAR2(25) |
Kullanıcının tablolarını (table) ve Görüntülerini Listelenmesi
Bunun için sistemde hazır olarak bulunan tab adlı tablo (table) kullanılır.
1 |
SQLPLUS> select * from tab; |
Komutlar Üzerinde Yapılabilen İşlemler
SQL Buffer
Son girilen SQL komutunun saklandığı bellek alanıdır. Girilen komut, bir yenisi girilene dek burada saklanır. Yani eğer son komut üzerinde bir başka işlem yapmak istiyorsanız, komutun tamamını yeni-
den girmeniz gerekmeyebilir.
komut kısaltma amacı APPEND metin A metin satırın sonuna metini ekler
CHANGE /eski/yeni C /eski/yeni eskiyi yeni ile değiştirir
CHANGE /metin C /metin satırdan metini siler
CLEAR BUFFER CL BUFF tüm satırları siler
DEL yok satırı siler
INPUT I bir ya da daha fazla satır ekler
INPUT metin I metin metini içeren bir satır ekler
LIST L SQL buffer ‘ındaki tüm satırları listeler
LIST n L n ya da n n numaralı satırı listeler
LIST * L * aktif satırı listeler
LIST LAST L LAST son satırı görüntüler
LIST m n L m n m ve n arasındaki satırları listeler
Çalışanlar tablosundan 10 numaralı bölümde çalışan kişilerin adlarını ve maaşlarını sorgulamak isteyelim.
1 2 3 4 5 |
SQL> list select deptno,ename, sal</em></strong> from emp where deptno = 10</em></strong></span> |
* Karakteri aktif olan satırı göstermektedir. İstediğimiz bir satırı görmek için list komutundan sonra
ilgili satırın numarasını vermemiz yeterli olacaktır. Bu sayede istediğimiz satırı aktif satır haline getirebiliriz.
Şimdi sırasıyla birinci satırdaki bir değişikliği nasıl yaptığımıza bakalım. Sorgumuzu yanlış girdiğimizi
varsayalım.
1 2 3 |
select * from departments where locationn_id=1700; |
komutunun yanlış olan 3. satırını düzeltmek için;
1 2 3 |
SQL> list3 change/locationn_id/location_id run komutu verilerek çalıştırılabilir. |
SQL buffer içindeki deyimleri save komutunu kullanarak bir dosyaya yazdırmak mümkündür. Save
dosya_adı komutu çalıştırıldığında, SQL buffer ‘ın içeriği uzantısı .SQL olan dosya_adı isimli dosyaya
kaydedilir.
1 |
SQL> save sqlsorgilari |
Created file sqlsorgulari.sql
1 2 3 |
SQL> host find /home/oracle -name sqlsorgulari.sql /home/oracle/sqlsorgulari.sql |
SQL buffer ‘ın içeriğinin temizlenmesi
1 2 3 4 5 |
SQL> clear buffer buffer cleared SQL> list No lines in SQL buffer |
Komut dosyalarına açıklama satırlarının eklenmesi
Yazdığınız komut dosyalarına ekleyeceğiniz açıklama satırları, bu dosyaların daha sonra da kolayca
anlaşılmasını sağlayacaktır. Bu işlem üç şekilde gerçekleştirilebilir.
SQL*Plus ‘ın REMARK komutu ile
SQL komut ayıraçları ile, /* … */
ANSI/ISO karakterleri ile, —
REMARK SQL*Plus ‘ı öğrenmek için verilen örnekler tekrarlanmalıdır.
/* SQL*Plus ‘ı öğrenmek için verilen örnekler tekrarlanmalıdır. */
— SQL*Plus ‘ı öğrenmek için verilen örnekler tekrarlanmalıdır.
Dosyalardaki komutların yeniden kullanılması
Daha önce save komutu ile sakladığımız ya da herhangi bir editor yardımıyla oluşturduğumuz SQL
deyimlerin get dosya_adı komutunu kullanarak SQL buffer ‘a getirebiliriz.
1 2 |
SQL> get sqlsorgulari.sql select * from tab; |
SQL deyimlerini toplu işlem (batch) olarak çalıştırmak istersek start dosya_adı komutundan
yararlanabiliriz.
1 2 3 4 |
SQL> start sqlsorgulari.sql ya da @dosya_adı komutu kullanılabilir SQL> @sqlsorgulari.sql |
SQL buffer içeriğini daha önce var olan bir dosyanın sonuna eklemek için append, üzerine yazmak içinse
replace anahtar kelimesi kullanılır.
1 2 3 4 5 |
SQL> save sqlsorulari append Appended file to sqlsorulari SQL> host cat sqlsorulari.sql select * from tab; |
Table Space Yönetimi
12 Mart 2019