Bölüm 1: Mimari Tasarım ve Profesyonel Disk Hazırlığı
Oracle Real Application Clusters (RAC) kurulumu, veritabanı dünyasının en prestijli ama bir o kadar da dikkat isteyen operasyonlarından biridir. Bu rehberde, Oracle Linux 7.9 üzerinde 2 node’lu bir yapıyı, kurumsal veri merkezlerinde uygulanan Multipath ve HBA Scanning metodolojileriyle kuracağız.
Bu yazı dizisi bittiğinde, sadece bir kurulum yapmayacak; sistemin alt yapısındaki tüm “best practice” adımlarına hakim olacaksınız.
Kuruluma başlamadan önce sunucu kimliklerimizi ve network yapımızı netleştirelim. SEO uyumluluğu ve yönetim kolaylığı için statik IP kullanıyoruz.
| Parametre | Node 1 | Node 2 |
| Hostname | 1.cluster | |
| Public IP | 150.150.150.151 | 150.150.150.152 |
| Virtual IP (VIP) | 150.150.150.161 | 150.150.150.162 |
| Private IP | 10.10.10.1 | 10.10.10.2 |
| SCAN Name | oraclius-scan. | (3 Adet IP: 150.150.150.171-173) |
Oracle Linux 7.9 kurulum rehberini inceleyerek linux 7.9 versiyonunu kurabilirsiniz. Her 2 node için bu rehberi kurduktan sonra yapılması gereken aşşağıdaki adımları inceleyizin.
Mimari Yaklaşım
Bu rehberde uygulanacak metodoloji, sanal ortamda (VMware) kurulmuş olmasına rağmen, gerçek bir veri merkezi mimarisini simüle edecektir. Bu kapsamda; izole network katmanları, paylaşılan depolama birimleri (Shared Storage) ve yüksek erişilebilirliği destekleyen ağ servisleri üzerinden ilerlenecektir.
Adımlarımızda her katman (OS, Network, Storage) bir sonraki aşamaya tam uyumlu hale getirilmeden ilerlenmeyecektir. Bu sayede, Cluster yapısının en kritik aşamalarında karşılaşılması muhtemel “interconnect” veya “storage timeout” gibi sorunlar daha başlangıç aşamasında elimine edilecektir.
Bölüm 2: OS Optimizasyonu, Network ve DNS Yapılandırması
Oracle RAC kurulumunun en kritik aşaması, işletim sistemi ve network katmanının kusursuz hazırlanmasıdır. Bu bölümde, düğümler (nodes) arası iletişimi sağlayacak ağ adaptörlerini ekleyecek, kurumsal standartlarda DNS simülasyonu yapacak ve şifresiz SSH erişimini tesis edeceğiz.
1. Gerekli Paketlerin Yüklenmesi ve Hazırlık
İlk olarak, her iki node (oraclius1 ve oraclius2) üzerinde Oracle’ın ihtiyaç duyduğu temel paketleri ve DNS simülasyonu için kullanacağımız aracı yüklüyoruz.
# Her iki node üzerinde çalıştırın
yum install -y oracle-database-preinstall-19c dnsmasq
Ardından, kurulumun önündeki engel teşkil edebilecek güvenlik servislerini devre dışı bırakıyoruz:
# SELinux'u kalıcı olarak kapatın
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
# Firewall servislerini durdurun ve pasife alın
systemctl stop firewalld
systemctl disable firewalld
2. Ağ Adaptörlerinin (NIC) Yapılandırılması ve IP Ataması
Şu an makinelerinizde halihazırda bulunan NAT tipi adaptör, sunucuların internete erişimi (paket yükleme vb.) içindir. Bu adaptörün Oracle Cluster yapısıyla bir ilgisi yoktur ve kurulum tamamlandıktan sonra istenirse sistemden kaldırılabilir.
Biz, Cluster trafiği için VMware üzerinden her node’a 2 adet yeni Host-Only Network Adapter ekleyeceğiz:
- Public Network (NIC 2): Kullanıcı erişimi ve VIP için (Host-Only).
- Private Network (NIC 3): Interconnect trafiği için (Host-Only).
IP Adresleme Planı
- Node 1:
150.150.150.151(Public) /10.10.10.1(Private) - Node 2:
150.150.150.152(Public) /10.10.10.2(Private)


Her 2 sunucu yukarıdaki gibi ayarlanmalıdır.
Sanal makinelerimizde halihazırda bulunan NAT tipi adaptör (ens160), sunucuların internet erişimi içindir ve Oracle Cluster yapısıyla doğrudan bir ilgisi yoktur. Biz, RAC trafiğini yönetmek için eklediğimiz iki yeni Host-Only adaptörü nmcli (NetworkManager) ile yapılandıracağız. ens ile başlayan adaptör isimlendirmeleri sizin sunucunuzda değişiklik gösterebilir.
nmcli device status
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected ens160
ens192 ethernet connected ens192
ens256 ethernet connected Wired connection 1
virbr0 bridge connected (externally) virbr0
lo loopback unmanaged --
Node 1 (oraclius1.cluster) Yapılandırması:
# Public Interface (ens192) - 150.150.150.151
nmcli connection modify ens192 ipv4.addresses 150.150.150.151/24 ipv4.method manual connection.id eth-public
nmcli connection up eth-public
# Private Interface (ens256) - 10.10.10.1
nmcli connection modify "Wired connection 1" ipv4.addresses 10.10.10.1/24 ipv4.method manual connection.id eth-private ifname ens256
nmcli connection modify eth-private ethernet.mtu 9000
nmcli connection up eth-private
Node 2 (oraclius2.cluster) Yapılandırması:
# Public Interface (ens192) - 150.150.150.152
nmcli connection modify ens192 ipv4.addresses 150.150.150.152/24 ipv4.method manual connection.id eth-public
nmcli connection up eth-public
# Private Interface (ens256) - 10.10.10.2
nmcli connection modify "Wired connection 1" ipv4.addresses 10.10.10.2/24 ipv4.method manual connection.id eth-private ifname ens256
nmcli connection modify eth-private ethernet.mtu 9000
nmcli connection up eth-private
Private (Interconnect) hattında MTU 9000 (Jumbo Frames) kullanımı, düğümler arası Cache Fusion trafiğinde paket parçalanmasını önleyerek performansı maksimize eder.
3. Kurumsal DNS Simülasyonu: Local DNS Round Robin (dnsmasq)
Oracle Grid Infrastructure, SCAN (Single Client Access Name) isminin DNS üzerinden çözülmesini ve her sorguda farklı bir IP dönmesini (Round Robin) şart koşar. Standart bir /etc/hosts dosyası bu dinamik yapıyı sağlayamaz. Bu engeli aşmak için her iki sunucuyu kendi DNS servislerine sahip olacak şekilde yapılandırıyoruz.
3.1. /etc/hosts Dosyasının Güncellenmesi
Her iki node üzerindeki /etc/hosts dosyasını aşağıdaki kayıtlarla güncelleyin. Bu kayıtlar dnsmasq için kaynak teşkil edecektir:
# Public IPs
150.150.150.151 oraclius1.cluster oraclius1
150.150.150.152 oraclius2.cluster oraclius2
# Private IPs (Interconnect)
10.10.10.1 oraclius1-priv.cluster oraclius1-priv
10.10.10.2 oraclius2-priv.cluster oraclius2-priv
# Virtual IPs (VIP)
150.150.150.161 oraclius1-vip.cluster oraclius1-vip
150.150.150.162 oraclius2-vip.cluster oraclius2-vip
# SCAN (3 Adet IP)
150.150.150.171 oraclius-scan.cluster oraclius-scan
150.150.150.172 oraclius-scan.cluster oraclius-scan
150.150.150.173 oraclius-scan.cluster oraclius-scan
3.2. dnsmasq Konfigürasyonu ve Reboot Direnci (Mühürleme)
Oracle RAC kurulumu sırasında node ve SCAN isimlerinin çözümlemesini harici DNS sunucusuna bağımlı olmadan gerçekleştirmek istiyoruz. Bu nedenle DNS sorgularını yerel dnsmasq servisine yönlendiriyor ve RAC kayıtlarını /etc/hosts dosyasından çözümlüyoruz.
Öncelikle /etc/dnsmasq.conf dosyasını aşağıdaki şekilde yapılandırıyoruz:
cat <<EOF > /etc/dnsmasq.conf
listen-address=127.0.0.1
interface=lo
bind-interfaces
no-resolv
expand-hosts
domain=oraclius.cluster
addn-hosts=/etc/hosts
EOF
Yapılandırmadaki temel parametreler:
listen-address=127.0.0.1: DNS servisini yalnızca yerel makineden erişilebilir hâle getirir.interface=lo: Servisin loopback arayüzünü kullanmasını sağlar.no-resolv: Sistem DNS yapılandırmasındaki sunucuların üst DNS olarak kullanılmasını engeller.addn-hosts=/etc/hosts: Yerel host kayıtlarını DNS yanıtlarında kullanır.expand-hostsvedomain=oraclius.cluster: Alan adı belirtilmemiş yerel host adlarına tanımlanan alan adının eklenmesini sağlar.
Ardından sistemin DNS sorgularını localhost’a yönlendiriyoruz:
echo "nameserver 127.0.0.1" > /etc/resolv.conf
Bu dosyanın NetworkManager tarafından değiştirilmesini önlemek için değiştirilemezlik özelliğini etkinleştiriyoruz:
chattr +i /etc/resolv.conf
Son olarak dnsmasq servisini etkinleştiriyoruz:
systemctl enable --now dnsmasq
systemctl restart dnsmasq
Doğrulama
Öncelikle /etc/hosts dosyasında tüm RAC node, VIP ve SCAN kayıtlarının bulunduğundan emin olun. Ardından isim çözümlemesini test edin:
getent hosts oraclius1
getent hosts oraclius2
nslookup oraclius-scan 127.0.0.1
Node ve VIP isimlerinin beklenen adreslere çözümlendiğini, SCAN sorgusunun ise tanımlı üç SCAN IP adresini döndürdüğünü doğrulayın.
Bu yapılandırmada dnsmasq için herhangi bir üst DNS sunucusu tanımlanmadığından, servis harici DNS sunucularına sorgu iletmez. Böylece RAC kurulumu sırasında gerekli isim çözümlemesi yerel kayıtlar üzerinden gerçekleştirilir.
Not: Bu ayarlar DNS çözümlemesini düzenler; sunucunun tüm dış ağ bağlantılarını engellemez. Ayrıca no-resolv ayarı tek başına doğrudan harici DNS sunucularına gönderilen sorguları engellemez. Bu bölümün amacı yalnızca RAC kurulumunda sistemin yerel DNS kayıtlarını kullanmasını sağlamaktır.
4. Kullanıcı Yönetimi ve Şifresiz SSH Erişimi (Passwordless SSH)
Oracle RAC mimarisinde düğümlerin birbiriyle “güven ilişkisi” (Trust Relationship) içinde olması gerekir. oracle-database-preinstall-19c paketi bizim için oracle kullanıcısını ve gerekli grupları (oinstall, dba vb.) zaten oluşturdu. Şimdi bu yapıyı işlevsel hale getireceğiz.
4.1. Kullanıcı Şifrelerinin Belirlenmesi
Her iki node üzerinde de oracle kullanıcısına aynı şifreyi tanımlayarak başlıyoruz:
# Her iki node üzerinde root olarak çalıştırın
passwd oracle
4.2. SSH Anahtarlarının Üretilmesi (RSA)
Bu adımı her iki sunucuda da oracle kullanıcısı ile gerçekleştirmeliyiz.
# oracle kullanıcısına geçiş yapın
su - oracle
# SSH anahtarlarını oluşturun (Tüm sorulara Enter ile boş cevap verin)
ssh-keygen -t rsa
Bu komut, /home/oracle/.ssh dizini altında id_rsa (özel anahtar) and id_rsa.pub (genel anahtar) dosyalarını oluşturacaktır.
4.3. Karşılıklı Güven İlişkisinin Kurulması (ssh-copy-id)
Şimdi, oluşturduğumuz bu anahtarları her iki node’a da “tanıtmamız” gerekiyor. Bu işlemi karşılıklı olarak yapmalıyız.
Node 1 (oraclius1) Üzerinde:
ssh-copy-id oraclius1
ssh-copy-id oraclius2
Node 2 (oraclius2) Üzerinde:
ssh-copy-id oraclius1
ssh-copy-id oraclius2
(Not: Bu işlem sırasında bir kez şifre soracaktır, oracle kullanıcısı için belirlediğiniz şifreyi girin.)
4.4. “Zafer” Testi: Şifresiz Bağlantı Doğrulaması
Her şeyin doğru yapıldığından emin olmak için, herhangi bir şifre sormadan karşı sunucunun tarihini alabilmemiz gerekir.
# oraclius1 üzerindeyken test edin
ssh oraclius1 date
ssh oraclius2 date
# oraclius2 üzerindeyken test edin
ssh oraclius1 date
ssh oraclius2 date
Kritik Uyarı: Eğer ilk bağlantıda Are you sure you want to continue connecting (yes/no)? sorusu gelirse “yes” diyerek onaylayın. Kurulum sırasında bu sorunun çıkmaması için her iki node’un birbirine en az bir kez SSH ile bağlanmış olması (Known Hosts kaydı) şarttır.
Bölüm 3: Shared Storage, Multipath ve Udev Yapılandırması
Oracle RAC kurulumunda veri bütünlüğünü sağlayan en temel katman Shared Storage (Paylaşılan Depolama) katmanıdır. Bu bölümde, VMware üzerinde fiziksel olarak oluşturduğumuz diskleri işletim sistemine “sıcak” bir şekilde tanıtacak, Multipath ile yol yedekliliğini kuracak ve udev kurallarıyla disklerimizi Oracle ASM (Automatic Storage Management) için mühürleyeceğiz.
3.1. Fiziksel Disklerin Oluşturulması (VMware Tarafı)
Gerçek bir SAN (Storage Area Network) simülasyonu yapmak için her iki sanal makinenin de aynı anda erişebileceği disk alanları oluşturmalıyız. Bu işlemi veri bütünlüğü için her iki sunucu da kapalıyken gerçekleştiriyoruz.
- OCR Disk: 10 GB (Cluster Registry ve Voting Files için)
- DATA Disk: 10 GB+ (Veritabanı dosyaları için)
Profesyonel Not: VMware üzerinde bu diskleri eklerken “Physical Bus Sharing” modunu aktif etmeyi ve diskleri “Independent-Persistent” olarak işaretlemeyi unutmayın. Aksi halde ikinci node diski kilitleyemez.
3.1.1: Sunucuları Kapatın
Yapılandırma karmaşasını önlemek için oraclius1 ve oraclius2 sunucularınızı tamamen kapatın (Power Off).
3.1.2: 1. Sunucuda (Node 1) Disklerin Yaratılması
Önce “Master” disklerimizi 1. sunucu üzerinde oluşturuyoruz.
- Edit Virtual Machine Settings > Add > Hard Disk yolunu izleyin.
- Disk Tipi: Mutlaka SCSI seçin.
- Disk Oluşturma: “Create a new virtual disk” seçeneğiyle ilerleyin.
- Kapasite ve Performans Ayarları:
- OCR_VOTE Diski: 10 GB (Cluster yönetimi için).
- DATA Diski: 10 GB (Veritabanı dosyaları için).
- Kritik: “Allocate all disk space now” seçeneğini mutlaka işaretleyin (Thick Provisioning). Bu, disk alanının hemen rezerve edilmesini ve blokların sıfırlanmasını sağlayarak RAC kararlılığını artırır.
- Kritik: “Store virtual disk as a single file” seçeneğini işaretleyin.
3.1.3: 2. Sunucuda (Node 2) Mevcut Disklerin Gösterilmesi
Şimdi, 1. sunucuda oluşturduğumuz o fiziksel “veri desenlerini” 2. sunucuya tanıtacağız.
- oraclius2 Settings > Add > Hard Disk > SCSI yolunu izleyin.
- Disk Seçimi: Bu sefer “Use an existing virtual disk” seçeneğini işaretleyin.
- Dosya Yolu: “Browse” diyerek
oraclius1klasörü altında oluşturduğunuz.vmdkdosyalarını seçin. - Adresleme: 2. sunucuda da bu diskleri mutlaka OCR ve DATA (Node 1 ile birebir aynı) olarak ayarlayın.
3.1.4: SCSI Controller ve Bus Sharing Ayarı (Altın Dokunuş)
Her iki VM’de de sol taraftaki listede yeni oluşan SCSI Controller 1‘e tıklayın:
- SCSI Bus Sharing: Burayı “Physical” olarak ayarlayın. Bu ayar, diski “paylaşılabilir” hale getiren asıl sihirdir.
- Type: Performans için VMware Paravirtual seçin.





OCR diskimizi oluşturduk, aynı şekilde bu dizine DATA adı ile bir disk daha ekleyelim.
3.2. VMX Dosyası Müdahalesi (Kilitlerin Kaldırılması)
Sunucuları başlatmadan önce, VMware’in “disk kilitli” hatası vermesini önlemek ve disk kimliklerini (WWID) işletim sistemine paslamak için yapılandırma dosyalarını düzenlemeliyiz.
- Sanal sunucuların bulunduğu dizine gidin.
oraclius1.vmxveoraclius2.vmxdosyalarını Notepad++ ile açın.- Dosyaların en sonuna aşağıdaki satırları ekleyin:
# Shared Storage Kilidini Devre Dışı Bırak
disk.locking = "FALSE"
# Veri Önbelleğini Kapat (Node'lar arası senkronizasyon için)
diskLib.dataCacheMaxSize = "0"
# Disklerin Benzersiz Kimliklerini (WWID) İşletim Sistemine Gönder
disk.enableuuid = "TRUE"
# BIOS Başlangıç Gecikmesi (Müdahale süresi için 8 saniye)
bios.bootdelay = "8000"
Not: Bu satırlar sayesinde VMware “Disk in use” hatası vermez ve her iki node aynı anda diske yazabilir.
3.3. Boot (Önyükleme) Sırasının Düzelmesi
Yeni eklediğimiz boş diskler boot sırasında en başa geçip sizi “Install Linux” ekranına atabilir. Bunu önlemek için:
- Sunucuyu başlatın,
bios.bootdelaysayesinde gelen 8 saniyelik boşlukta ekrana tıklayıp F2 ile BIOS’a girin. - Boot sekmesine gelin, Hard Drive listesini bulun.
- İşletim sisteminin kurulu olduğu ana diski (genelde en altta kalır)
+tuşuyla en üst sıraya taşıyın. - F10 ile kaydedip çıkın.
3.4. HBA Tetikleme ve İşletim Sistemi Kontrolü
Sunucular açıldıktan sonra root kullanıcısı ile diskleri işletim sistemine tanıtıp mühürleyeceğiz.
3.4.1. Online SCSI Veri Yolu Taraması (HBA Rescan)
Sunucuları yeniden başlatmaya gerek kalmadan, SCSI ana bilgisayar adaptörlerini (HBA) yeni aygıtlar için taratıyoruz.
for host in $(ls /sys/class/scsi_host/); do
echo "- - -" > /sys/class/scsi_host/${host}/scan
done
# Kontrol: sda ve sdb görünmeli
lsblk
3.4.2. Production Ortamı İçin “Güvenli Tarama” Uyarısı
Eğer bu işlemi canlı (production) bir sunucuda yapıyor olsaydın, şu iki noktaya dikkat etmen gerekirdi:
- LUN ID Çakışması: Yeni eklenen diskin LUN ID’si, mevcut bir diskle çakışırsa veri bozulmasına yol açabilir. Her zaman Storage tarafındaki LUN ID’leri teyit etmelisin.
- HBA Reset: Bazı durumlarda
- - -yerine daha agresif tarama komutları HBA’yı resetleyebilir. Bu da o an çalışan diğer disklerde saniyelik kesintiye (I/O hang) neden olabilir. Canlı sistemde her zaman en “hafif” tarama yöntemi olan yukarıdakiechokomutu tercih edilmelidir.
3.4.3. Disklerin “Dünya Kimliklerini” (WWID) Sorgulama
Disklerin /dev/sdb gibi isimleri reboot sonrası değişebilir. Profesyonel bir DBA olarak onları WWID ile mühürlemeliyiz.
OCR Diski için :
/usr/lib/udev/scsi_id -g -u /dev/sda
36000c29b0dd02d18bc66c1b64464c154
DATA Diski için:,
/usr/lib/udev/scsi_id -g -u /dev/sdb
36000c29c4bda0a494540d7e0744f0fb1
Not: Eğer çıktı boş gelirse, .vmx dosyasındaki disk.enableuuid = "TRUE" satırını eklediğinden emin ol ve makineleri kapatıp aç.
3.4.4. Adım: Multipath Yapılandırması ve Disk Mühürleme
Diskleri parmak izlerinden tanıyıp onlara asm_ocr ve asm_data diyeceğiz. Her iki node üzerinde şu komutları çalıştır:
Paketi yükle ve aktif et:
yum install -y device-mapper-multipath
mpathconf --enable --with_multipathd y
systemctl start multipathd
systemctl enable multipathd
VMware ortamında diskler genellikle tek bir SCSI yolu üzerinden geldiği için, find_multipaths no ayarı kritik önem taşır. Aksi takdirde servis, diski “multipath adayı” olarak görmeyebilir.
Her iki node üzerinde /etc/multipath.conf dosyasını şu şekilde güncelleyin:
defaults {
user_friendly_names yes
find_multipaths no
enable_foreign "^$"
}
blacklist {
# Sistem diskinin multipath'e girmesini engellemek için
devnode "^nvme"
}
multipaths {
multipath {
wwid "36000c29b0dd02d18bc66c1b64464c154"
alias asm_ocr
}
multipath {
wwid "36000c29c4bda0a494540d7e0744f0fb1"
alias asm_data
}
}
Ayarları yaptıktan sonra servisi zorla taratarak aliasların (takma isimlerin) oluşmasını sağlayalım.
Her iki node üzerinde:
# Önce eski mpath kalıntılarını temizleyelim
multipath -F
# Multipath servisini yeniden başlat
systemctl restart multipathd
# Şimdi listeyi kontrol et
multipath -ll
asm_data (36000c29c4bda0a494540d7e0744f0fb1) dm-3 VMware,,VMware Virtual S
size=10G features=’0′ hwhandler=’0′ wp=rw-+- policy='service-time 0' prio=1 status=active– 2:0:1:0 sdb 8:16 active ready running
asm_ocr (36000c29b0dd02d18bc66c1b64464c154) dm-2 VMware,,VMware Virtual S
size=10G features=’0′ hwhandler=’0′ wp=rw-+- policy='service-time 0' prio=1 status=active– 2:0:0:0 sda 8:0 active ready running
3.4.5 Disklerde Bölüm (Partition) Oluşturma
Kritik Uyarı: Bu işlem SADECE Node 1 üzerinde yapılmalıdır. Diğer node, bu değişikliği otomatik olarak görecektir.
# OCR
printf "o\nn\np\n1\n\n\nw\n" | fdisk /dev/sda
# DATA
printf "o\nn\np\n1\n\n\nw\n" | fdisk /dev/sdb
Multipath’i tetikle ve Map’leri oluştur (Node 1):
multipath -v2
multipath -ll
# Eğer asm_ocr1 ve asm_data1 otomatik gelmezse:
kpartx -av /dev/mapper/asm_ocr
kpartx -av /dev/mapper/asm_data
Node 2’ye “Uyan” de:
multipath -r
partprobe
ls -l /dev/mapper/asm*1
3.5.5. Disklerin Kalıcı Yetkilendirilmesi (Udev Mühürleme)
Disklerin bölümlerini (asm_ocr1 ve asm_data1) oluşturduktan sonra, bu disklerin sahipliğini her açılışta otomatik olarak Oracle kullanıcısına devretmemiz gerekir. Aksi takdirde, sistem her yeniden başladığında sahiplik root kullanıcısına geçer ve Oracle Grid servisleri ayağa kalkamaz.
Bu işlemi her iki Node üzerinde de gerçekleştirin:
1. Udev Kural Dosyasını Oluşturma
Aşağıdaki komutla yeni bir kural dosyası açın. Dosya isminin 99 ile başlaması, diğer sistem kurallarından sonra çalışarak ezilmemesini sağlar.
vi /etc/udev/rules.d/99-oracle-asm.rules
ll /dev/mapper/ çıktınızda görülen asm_ocr1 ve asm_data1 isimlerini hedef alan şu satırları dosyanın içine yapıştırın:
# Oracle ASM diskleri
ACTION=="add|change", KERNEL=="dm-*", ENV{DM_NAME}=="asm_ocr1", OWNER="grid", GROUP="dba", MODE="0660", SYMLINK+="oracleasm/asm_ocr1"
ACTION=="add|change", KERNEL=="dm-*", ENV{DM_NAME}=="asm_data1", OWNER="grid", GROUP="dba", MODE="0660", SYMLINK+="oracleasm/asm_data1"
Bu kuralları ekledikten sonra şu komutları çalıştır:
udevadm control --reload-rules
udevadm trigger
Şimdi şu dizini kontrol et:
ls -lL /dev/oracleasm/*
brw-rw---- 1 oracle oinstall 252, 5 Apr 7 14:49 /dev/oracleasm/asm_data1
brw-rw---- 1 oracle oinstall 252, 4 Apr 7 14:49 /dev/oracleasm/asm_ocr1
Bölüm 4: Grid Infrastructure Kurulumu
Bu aşamada Clusterware yapısının temellerini atıyoruz. Dosya sistemini hazırlayacak, profil dosyalarını mühürleyecek ve grafik arayüzü ile kuruluma başlayacağız.
4.1. Dizin Yapısının Oluşturulması ve Yetkilendirme
Kurulum dosyalarının ve Oracle Home dizinlerinin standartlara uygun olması kritiktir. Her iki sunucuda da root kullanıcısı ile şu komutları çalıştırıyoruz:
# Ana dizinlerin oluşturulması
mkdir -p /u01/app/19/grid
mkdir -p /u01/app/oracle/product/19/db_1
mkdir -p /u01/oraInstall
# Sahiplik ve Yetki tanımları
chown -R oracle:oinstall /u01
chmod -R 775 /u01
4.2. Oracle Kullanıcı Profillerinin Hazırlanması
Oracle kullanıcısının ortam değişkenlerini yönetmek için .profile_crs (Grid için) ve .profile_db (Veritabanı için) dosyalarını oluşturuyoruz. Bu, her iki node arasında geçiş yaparken veya Grid/DB yönetirken işimizi kolaylaştıracak.
Sunucu 1 (oraclius1):
su - oracle
# --- .profile_crs içeriği ---
ORACLE_SID=+ASM1; export ORACLE_SID
GRID_HOME=/u01/app/19/grid; export GRID_HOME
ORACLE_HOME=$GRID_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin:/usr/sbin; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
# --- .profile_db içeriği ---
ORACLE_HOSTNAME=oraclius1.cluster; export ORACLE_HOSTNAME
ORACLE_SID=oraclius1; export ORACLE_SID
ORACLE_UNQNAME=oraclius; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/product/19/db_1; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin:/usr/sbin; export PATH
Sunucu 2 (oraclius2):
su - oracle
# --- .profile_crs içeriği ---
ORACLE_SID=+ASM2; export ORACLE_SID
GRID_HOME=/u01/app/19/grid; export GRID_HOME
ORACLE_HOME=$GRID_HOME; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin:/usr/sbin; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
# --- .profile_db içeriği ---
ORACLE_HOSTNAME=oraclius2.cluster; export ORACLE_HOSTNAME
ORACLE_SID=oraclius2; export ORACLE_SID
ORACLE_UNQNAME=oraclius; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=/u01/app/oracle/product/19/db_1; export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin:/usr/sbin; export PATH
4.3. Grid Infrastructure Kurulum Dosyalarının Hazırlanması
Artık işletim sistemi, network ve shared storage katmanlarımız hazır. Bir sonraki adım Oracle Grid Infrastructure yazılımını cluster üzerine kurmaktır.
Oracle RAC mimarisinde Grid Infrastructure; Oracle Clusterware + Oracle ASM bileşenlerini sağlar. RAC Database kurulmadan önce Grid Infrastructure’ın her iki node üzerinde sağlıklı şekilde çalışıyor olması gerekir.
Grid Infrastructure kurulum dosyalarını daha önce oluşturduğumuz /u01/oraInstall dizinine kopyalıyoruz.
cd /u01/oraInstall
chown oracle.oinstall /u01/oraInstall/LINUX*
chmod 777 /u01/oraInstall/LINUX*
Oracle kullanıcısı ile zip açın:
unzip LINUX.X64_193000_grid_home.zip -d /u01/app/19/grid
4.4. Kurulum Öncesi Son Hazırlıklar (Her İki Node, root)
Zaman Senkronizasyonu: NTP veya CTSS
Oracle Clusterware, RAC node’larının saatlerinin tutarlı olmasını gerektirir. Kurulum öncesinde aşağıdaki iki senaryodan ortamınıza uygun olanı uygulayın. Seçilen yöntem her iki node’da da aynı olmalıdır.
Senaryo 1: Ortamda NTP sunucusu varsa
Kurumsal ağdaki NTP sunucusunun IP adresini veya DNS adını öğrenin. Aşağıdaki işlemleri root kullanıcısıyla her iki node’da uygulayın.
1. Chrony yapılandırmasını düzenleyin
/etc/chrony.conf dosyasını açın:
vi /etc/chrony.conf
Dosyaya ortamınızdaki NTP sunucusunu tanımlayın:
server 192.168.1.10 iburst
192.168.1.10 yerine gerçek NTP sunucunuzun IP adresini veya DNS adını yazın. Dosyada internet üzerinden kullanılacak gereksiz pool veya server tanımları varsa bunları ortamınıza uygun şekilde düzenleyin.
2. Chrony servisini başlatın
systemctl enable --now chronyd
systemctl restart chronyd
3. Senkronizasyonu doğrulayın
chronyc sources -v
chronyc tracking
timedatectl status
NTP sunucusunun erişilebilir ve seçilmiş bir kaynak (^*) olması, Leap status değerinin Normal olması ve sistem saatinin senkronize olduğunun doğrulanması gerekir.
İlk senkronizasyonun gerçekleşmesi için kısa bir süre bekleyin. Gerekirse şu komutla senkronizasyonu bekleyin:
chronyc waitsync 60 0.1
Komut başarısız olursa NTP erişimini, ağ kurallarını ve chrony yapılandırmasını kontrol edin. Yalnızca servis çalışıyor diye senkronizasyon başarılı kabul edilmemelidir.
Senaryo 2: Ortam tamamen kapalıysa ve NTP sunucusu yoksa
İnternet veya erişilebilir bir NTP sunucusu bulunmayan izole lab ortamında Oracle Grid Infrastructure’ın kendi zaman senkronizasyon servisi olan CTSS kullanılabilir.
Oracle Database 19c’de CTSS kullanımı deprecated olarak işaretlenmiştir; Oracle, mümkün olduğunda işletim sistemi seviyesinde NTP veya chrony kullanılmasını önerir.
1. Her iki node’da chronyd servisini durdurun ve devre dışı bırakın
systemctl disable --now chronyd
Sistemde ntpd servisi de bulunuyorsa onu da durdurun ve devre dışı bırakın:
systemctl disable --now ntpd
Servis kurulu değilse bu komut hata verebilir; böyle bir durumda kurulu olmayan servis için işlem yapmanız gerekmez.
2. NTP yapılandırma dosyalarını yedekleyerek yeniden adlandırın
Chrony yapılandırması varsa:
if [ -f /etc/chrony.conf ]; then
cp -p /etc/chrony.conf /etc/chrony.conf.bak
mv /etc/chrony.conf /etc/chrony.conf.disabled
fi
NTP yapılandırması varsa:
if [ -f /etc/ntp.conf ]; then
cp -p /etc/ntp.conf /etc/ntp.conf.bak
mv /etc/ntp.conf /etc/ntp.conf.disabled
fi
Bu işlemleri her iki node’da da uygulayın. Amaç yalnızca servisi durdurmak değil, Clusterware’in harici bir zaman senkronizasyon servisi veya yapılandırması algılamasını da önlemektir.
3. Node saatlerini kontrol edin
date
timedatectl status
Her iki node’un saatini ve saat dilimini kontrol edin. Kurulum öncesinde node saatlerinin birbirine yakın ve saat dilimlerinin aynı olduğundan emin olun.
4. Grid Infrastructure kurulumunu gerçekleştirin
Grid kurulumu sırasında CTSS, harici zaman senkronizasyon servisi veya yapılandırması algılanmadığında Active moda geçerek cluster node’larının saatlerini senkronize edebilir.
Kurulum tamamlandıktan sonra Grid Infrastructure sahibi kullanıcısıyla CTSS durumunu kontrol edin:
crsctl check ctss
CTSS’nin Active durumda olduğunu doğrulayın. Observer görünüyorsa NTP/chrony servisi veya yapılandırması algılanıyor olabilir; ilgili kontrolleri tekrar inceleyin.
Önemli: CTSS, node saatleri arasındaki büyük farkları kurulum öncesinde düzeltmek için bir araç olarak görülmemelidir. Oracle belgelerine göre, aktif CTSS modunda 24 saati aşan bir saat farkı cluster başlangıcını engelleyebilir. Kurulumdan önce saatleri manuel olarak uyumlu hale getirin.
Avahi Daemon disable edilmeli:
systemctl stop avahi-daemon
systemctl disable avahi-daemon
cvuqdisk paketi: Cluster Verification Utility’nin paylaşımlı diskleri görebilmesi için gerekir. Paket Grid home içinde duruyor:
export CVUQDISK_GRP=oinstall
rpm -ivh /u01/app/19/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm
# Node 2'ye kopyalayıp orada da kurun
scp /u01/app/19/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm oraclius2:/tmp/
ssh oraclius2 "CVUQDISK_GRP=oinstall rpm -ivh /tmp/cvuqdisk-1.0.10-1.rpm"
Grafik arayüz için X11: Installer GUI ile çalışır. Sunucuda masaüstü yoksa yum install -y xorg-x11-xauth kurun ve ssh -X oracle@oraclius1 ile bağlanın (MobaXterm da kullanabilirsiniz).
NOZEROCONF Parametresinin Yapılandırılması
Oracle Grid Infrastructure 19c kurulumu sırasında Prerequisite Checks aşamasında aşağıdaki hata ile karşılaşılabilir:
PRVE-10077 : NOZEROCONF parameter was not specified or was not set to 'yes'
Bu kontrolü geçmek için her iki cluster node’unda (oraclius1 ve oraclius2) /etc/sysconfig/network dosyasını düzenleyin.
1. Root kullanıcısıyla dosyayı açın:
vi /etc/sysconfig/network
2. Dosyaya aşağıdaki parametreyi ekleyin:
NOZEROCONF=yes
Parametre zaten tanımlıysa değerinin yes olduğundan emin olun.
3. Yapılandırmayı doğrulayın:
grep -n '^NOZEROCONF=' /etc/sysconfig/network
Beklenen çıktı:
NOZEROCONF=yes
Bu işlemi her iki node üzerinde de uygulayın. Ardından Oracle Grid kurulum ekranına dönerek Check Again seçeneğiyle ön koşul kontrollerini yeniden çalıştırın.
Not: NOZEROCONF=yes, işletim sisteminin 169.254.0.0/16 aralığındaki IPv4 link-local adreslerini otomatik olarak routing table’a eklemesini engellemeye yönelik bir ayardır. Bu işlem için genellikle yeniden başlatma gerekmez.
4.5. Oracle Linux 8 İçin Kritik Not: Release Update
Oracle Grid Infrastructure 19.3 (base release) Oracle Linux 8’i resmi olarak desteklemez. Kurulumu yapabilmek için iki şey gerekir:
- Güncel bir GI Release Update (patch’i MOS’tan indirin) ve güncel OPatch (p6880880)
- Installer’ın işletim sistemi kontrolünü aşmak için
CV_ASSUME_DISTID=OL7
export CV_ASSUME_DISTID=OL7
4.6. Cluster Verification (Ön Kontrol)
su - oracle
. ~/.profile_crs
cd /u01/app/19/grid
./runcluvfy.sh stage -pre crsinst -n oraclius1,oraclius2 -verbose
Lab ortamında şu uyarıları görmeniz normaldir ve geçilebilir: resolv.conf bütünlüğü / DNS yanıt süresi (dnsmasq ve değiştirilemez dosya yüzünden), swap boyutu ve SCAN’in /etc/hosts üzerinden çözülmesi. Ortak disk, ağ ve SSH kontrollerinin başarılı olması gerekir.
4.7. Grid Infrastructure Kurulumu (gridSetup.sh)
export CV_ASSUME_DISTID=OL7
cd /u01/app/19/grid
./gridSetup.sh
Ekranlar sırasıyla:
| Ekran | Seçim |
|---|---|
| Configuration Option | Configure Oracle Grid Infrastructure for a New Cluster |
| Cluster Configuration | Configure an Oracle Standalone Cluster |
| Grid Plug and Play | Cluster Name: oraclius, SCAN Name: oraclius-scan.cluster, SCAN Port: 1521, GNS kapalı |
| Cluster Node Information | Add: oraclius2.cluster/ oraclius2-vip.. SSH connectivity → Test ile doğrulayın |
| Network Interface Usage | ens192 → Public, ens256 → ASM & Private, ens160 (NAT) → Do Not Use |
| Storage Option | Use Oracle Flex ASM for storage |
| GIMR | No (19c’de zorunlu değil, lab için gereksiz yer harcar) |
| Create ASM Disk Group | Name: OCR, Redundancy: External, AU: 4 MB. Change Discovery Path → /dev/oracleasm/*, sadece asm_ocr1 seçili. ASMFD işaretlenmesin |
| ASM Password | SYS ve ASMSNMP için lab parolası |
| Failure Isolation | Do not use IPMI |
| Management Options | Boş bırakın |
| Operating System Groups | OSASM / OSDBA / OSOPER: dba / dba / oper (OSASM ile OSDBA aynı grup uyarısı çıkar, lab için onaylayın) |
| Installation Location | Oracle base: /u01/app/oracle, Software: /u01/app/19/grid |
| Create Inventory | /u01/app/oraInventory, grup oinstall |
| Root Script Execution | Otomatik çalıştırmayı seçmeyin, scriptleri elle çalıştıracağız |
| Prerequisite Checks | 4.6’daki lab uyarıları için Ignore All |
Sihirbaz “Install Product” aşamasında Execute Configuration scripts penceresi açar. Pencereyi kapatmadan, root ile şu sırayı izleyin:
# 1) Her iki node'da (sırayla)
/u01/app/oraInventory/orainstRoot.sh
# 2) Önce Node 1'de, bitmesini bekleyin (10-15 dk)
/u01/app/19/grid/root.sh
# 3) Node 1 bittikten SONRA Node 2'de
/u01/app/19/grid/root.sh
Cluster Node Information Aşamasında SSH Hatası
Oracle Grid Infrastructure 19c kurulumu sırasında Cluster Node Information aşamasında, node’lar arasında passwordless SSH bağlantısı yapılandırılmış olmasına rağmen aşağıdaki hatayla karşılaşabilirsiniz:
[INS-06006] Passwordless SSH connectivity not set up PRVF-5311: File either does not exist or is not accessibleSSH bağlantısı çalışıyor ve kullanıcıdan parola istenmiyorsa sorun, Oracle Grid kurulum aracının kullandığı
scpkomutu ile işletim sistemindeki OpenSSH sürümü arasındaki uyumsuzluktan kaynaklanabilir.Kurulum logunda aşağıdaki mesaj görülüyorsa bu ihtimali kontrol edebilirsiniz:
protocol error: filename does not match requestBu sorunu Oracle Linux 8.10 ve OpenSSH 8.0p1 bulunan test ortamımızda doğruladık. Standart
scpkomutu dosya aktarımında hata verirken-Tseçeneğiyle aktarım başarılı oldu.Geçici çözüm
Uyarı: Aşağıdaki işlem,
scpdosya adı doğrulama kontrolünü devre dışı bırakır. Yalnızca kontrollü kurulum ortamında, geçici olarak uygulanmalıdır.
- Her iki cluster node’unda
rootkullanıcısına geçin.- Orijinal
scpdosyasını yedekleyin ve geçici bir sarmalayıcı oluşturun:cp -p /usr/bin/scp /usr/bin/scp.orig cat > /usr/bin/scp <<'EOF' #!/bin/bash exec /usr/bin/scp.orig -T "$@" EOF chown root:root /usr/bin/scp chmod 755 /usr/bin/scp restorecon -v /usr/bin/scpBu işlemi her iki node üzerinde de uygulayın.
/usr/bin/scp.origdosyası önceden mevcutsa üzerine yazmayın; önce mevcut dosyayı inceleyin.
oraclekullanıcısıyla uzak node’dan dosya aktarımını test edin:scp -p oraclius2:"'/tmp/scp_test.txt'" /tmp/scp_test_copy.txt cat /tmp/scp_test_copy.txtTest dosyasının içeriği doğru aktarılıyorsa Oracle Grid kurulum ekranına dönerek SSH doğrulamasını yeniden çalıştırın.
- Grid kurulumu ve yapılandırması tamamlandıktan sonra her iki node’da da orijinal
scpdosyasını geri yükleyin:rm -f /usr/bin/scp mv /usr/bin/scp.orig /usr/bin/scp restorecon -v /usr/bin/scpNot: Bu yöntem, belirtilen
scphatası için test ortamımızda işe yarayan geçici bir çözümdür; tümINS-06006veyaPRVF-5311hatalarının nedeni aynı değildir. Bu mesajları gördüğünüzde önce Grid kurulum loglarını inceleyerek gerçek hata nedenini doğrulayın.
Bölüm 5: ASM DATA Disk Grupbunun Oluşturulması
Oracle RAC ortamında veritabanı dosyalarını ASM üzerinde tutmak için öncelikle bir DATA disk grubu oluşturulur. Bu disk grubu; datafile, control file, online redo log gibi veritabanı dosyalarının depolanmasında kullanılabilir.
5.1 ASM Disklerinin Kontrolü
Her iki node üzerinde diskleri kontrol edelim:
lsblk |grep "asm"
└─asm_data 252:3 0 10G 0 mpath
└─asm_data1 252:5 0 10G 0 part
└─asm_ocr 252:2 0 10G 0 mpath
└─asm_ocr1 252:4 0 10G 0 part
RAC ortamında kullanılacak ASM disklerinin iki node tarafından da görülebilmesi gerekir.
ll /dev/oracleasm/
total 0
lrwxrwxrwx 1 root root 7 Oct 6 15:37 asm_data1 -> ../dm-5
lrwxrwxrwx 1 root root 7 Oct 6 15:41 asm_ocr1 -> ../dm-4
5.3 DATA Disk Grubunun Oluşturulması
ASM Configuration Assistant’ı başlatın:
asmca
ASM Configuration Assistant açıldığında:
Disk Groups → Create
Disk grubu adı: DATA
Redundancy: External
Seçilecek Disk: /dev/oracleasm/asm_data1
Ok butonuna basıyoruz.
5.4 Disk Grubunun Kontrolü
Kurulum tamamlandıktan sonra Grid kullanıcısıyla:
asmcmd lsdg
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 512 4096 4194304 10236 10104 0 10104 0 N DATA/
MOUNTED EXTERN N 512 512 4096 4194304 10236 9900 0 9900 0 Y OCR/
6. Oracle Database Software Kurulumu
Grid Infrastructure ve ASM kurulumu tamamlandıktan sonra, RAC üzerinde çalışacak Oracle Database yazılımının kurulumuna geçiyoruz.
Kurulum dosyamız /u01/oraInstall dizininde, Database Home ise daha önce /u01/app/oracle/product/19/db_1 olarak hazırlanmıştır.
6.1. Oracle Database Home’a Kurulum Dosyalarının Açılması
Öncelikle Oracle kullanıcısına geçiyoruz ve kurulum dosyasının bulunduğu dizine ilerliyoruz(Bu adımlar da tıpkı grid kurulumu gibi sadece 1.node da yapılır):
su - oracle
cd /u01/oraInstall
Oracle Database 19c kurulum paketini daha önce hazırladığımız Database Home dizinine açıyoruz:
unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19/db_1
Kurulum dosyaları açıldıktan sonra Database Home dizinini kontrol ediyoruz:
cd /u01/app/oracle/product/19/db_1
ls
Bu aşamada runInstaller dosyasının bulunduğunu görmeliyiz.
6.2. Oracle Database Installer’ın Başlatılması
Kurulumu başlatmak için:
./runInstaller
Oracle Universal Installer açıldığında Software Only seçeneğini seçiyoruz.
Bu seçenek yalnızca Oracle Database yazılımını kurar. Veritabanının kendisini bu aşamada oluşturmuyoruz; veritabanı oluşturma işlemini sonraki bölümde DBCA ile gerçekleştireceğiz.
6.3. RAC Kurulum Tipinin Seçilmesi
| Configuration Option | Set Up Software Only |
| Select Database Installation Option | Oracle Real Application Clusters database installation |
| Nodes Selection | oraclius1, oraclius2 |
| Database Edition | Enterprise Edition |
| Installation Location | Oracle base: /u01/app/oracle |
| Operating System Groups | OSDBA:dba OSOPER: oinstall OSBACKUPDBA: oinstall OSDGDBA: oinstall OSKMDBA: oinstall OSRACDBA: oinstall |
| Root script exception | Otomatik çalıştırmayı seçmeyin, scriptleri elle çalıştıracağız |
| Prerequisite Checks | Önemli olmayan uyarılar geçilebilir. |
Kurulum sihirbazındaki ön gereksinim kontrolleri tamamlandıktan sonra özet ekranında verilen bilgileri kontrol ediyoruz.
Herhangi bir kritik hata bulunmuyorsa Install diyerek kurulumu başlatıyoruz.
Kurulum tamamlandığında Oracle Database 19c yazılımı her iki RAC node’unda da hazır hale gelir.
Not: Bu aşamada henüz
oracliusveritabanı oluşturulmaz. Database Software kurulumu tamamlandıktan sonra bir sonraki bölümde DBCA (Database Configuration Assistant) kullanılarak RAC veritabanını oluşturacağız.
7. DBCA ile Oracle RAC Veritabanının Oluşturulması
Oracle Database Software kurulumu tamamlandıktan sonra RAC veritabanımızı Database Configuration Assistant (DBCA) kullanarak oluşturuyoruz.
Bu aşamada daha önce oluşturduğumuz +DATA ASM disk grubu veritabanı dosyalarının depolanması için kullanılacaktır.
Öncelikle Oracle Database ortam değişkenlerini yüklüyoruz:
$ su - oracle
$ . ~/.profile_db
DBCA’yı başlatıyoruz:
dbca
7.2. Veritabanı Oluşturma
| Database Operation | Create a database |
| Creation Mode | Advanced configuration |
| Deployment Type | Database type: RAC Configuration type: Admin Managed Template Name: General Purpose or Transaction Processing |
| Nodes Selection | oraclius1, oraclius2 |
| Database Identification | Global database name: oraclius SID Prefix: oraclius Create as Container Database Seçeneğinin Seçilmemesi Gerekir |
| Storage Option | Database files storage type: ASM Database files location: +DATA/{DB_UNIQUE_NAME} OMF Seçin |
| Fast Recovery Area | Burası Atlanabilir |
| Data Vault Option | Burası Atlanabilir |
| Configuration Options | Burası Atlanabilir |
| Management Options | Hiçbiri Seçilmeyebilir |
| User Credentials | Use the same administrative password for all accounts |
| Creation Option | Create Database |
| Prerequisite Checks | Önemli olmayan uyarılar geçilebilir. |
bilgilerini kontrol ettikten sonra Finish diyerek veritabanı oluşturma işlemini başlatıyoruz.
DBCA gerekli instance, database ve RAC kaynaklarını oluşturacaktır.
Kurulum tamamlandığında Close diyerek DBCA’dan çıkıyoruz.







Bir yanıt yazın