Oracle 11'i hızlı bir şekilde başlatma / kapatma?


9

Bir Oracle DB arka plan programının (Oracle 11.2, bir test makinesinde yüklü) düzgün şekilde başlatılması / kapatılması için en hızlı yolun ne olduğunu merak ediyorum.

OCI / Pro * C API kullanan C / C ++ programları için ihtiyacım var.

PostgreSQL'in başlangıç ​​hızına alışkın olduğum için ve arka plan programının test senaryoları için yalnızca (isteğe bağlı) başlatılan sanal bir makinede çalıştığı için bunu istiyorum.

Şu anda böyle komut - başlangıç:

sqlplus /nolog <<EOF
connect / as sysdba
startup
quit
EOF
lsnrctl start
emctl start dbconsole

Ve kapatma:

emctl stop dbconsole
lsnrctl stop
sqlplus /nolog <<EOF
connect / as sysdba
shutdown
quit
EOF

Bu çalışır - programlar beklendiği gibi çalışır - ancak bu prosedür oldukça yavaştır.

Oracle DB CentOS 6.3 üzerinde çalışıyor, ücretsiz (birada olduğu gibi) mevcut 'standart sürüm'.

Yanıtlar:


8

Oracle kurulumuyla birlikte gelen dbstart/ dbshutkomut dosyalarını kullanabilirsiniz . Onlar altında mevcuttur $ORACLE_HOME/bin.

Yeni bir yüklemeden sonra /etc/oratabdosyayı düzenlemeniz gerekir :

# cat /etc/oratab
# format: $ORACLE_SID:$ORACLE_HOME:N|Y
my_sid:/home/juser/app/juser/product/11.2.0/dbhome_1:N
# sed -i 's/:N$/:Y/' /etc/oratab
# grep my_sid /etc/oratab
my_sid:/home/juser/app/juser/product/11.2.0/dbhome_1:Y

Sonra komut dosyalarını şu şekilde kullanabilirsiniz:

$ whoami
juser
$ dbstart $ORACLE_HOME
$ # execute DB jobs ...
$ dbshut $ORACLE_HOME

dbstart Pro * C / OCI programları için gerekli olan her şeyi getirir.

dbstart/ Kullanılması dbshut, soruda belirtilen özel yöntemin üzerinde bir gelişmedir:

method                time    called tools
―――――――――――――――――――――――――――――――――――――――――――――――――――――
dbstart              5.7 s    lsnrctl, sqlplus
dbshut               5.7 s    lsnrctl, sqlplus
custom startup      27.9 s    lsnrctl, sqlplus, emctl
custom shutdown     31.0 s    lsnrctl, sqlplus, emctl

(Core i7 / 2.8GHz sistemde, yavaş dönen sabit disk.)

Dbstart / dbshut nasıl çalışır

Bir dbstart $ORACLE_HOME$çağrı temelde aşağıdakilere eşdeğerdir:

$ lsnrctl start
$ echo -e 'connect / as sysdba\nstartup\nquit'| sqlplus /nolog

Ve a dbshut $ORACLE_HOME$temel olarak aşağıdakilere eşdeğerdir:

$ lsnrctl stop
$ echo -e 'connect / as sysdba\nshutdown\nquit'| sqlplus /nolog

(her şeyin kapatıldığını doğrulayabilirsiniz ps aux | grep 'tnsl\|ora')

Komutların sırasının önemli olduğunu unutmayın. Bu lsnrctl start, sqlplus-startup komutundan sonra yürütüldüğünde, Pro * C / OCI programı hala kullanılamayan bir TNS dinleyicisinden şikayetçi demektir.

Ve bu, tam olarak emctl startyanlış sıralamayı geçici olarak çözdüğü için TNS-dinleyici kurulum bölümünü düzelttiği için sorudaki komut dizisi ile ilgili problemdir .

Ayrıca Pro * C / OCI programlarını yürütmek için EMCTL servisine gerek olmadığını unutmayın.


1

Neden buna ihtiyacın var? Sebebi nedir? Kapatma için 3 seçeneğiniz vardır:

  • düz shutdown- oturumların bitmesini bekler
  • shutdown immediate - geri alma ve oturumları bitirme (geri alma işlemini bekler)
  • shutdown abort - her şeyi öldürür - genellikle veritabanı başlangıçta biraz kurtarma yapmak zorundadır.

Not: yalnızca testler için veritabanına ihtiyacınız varsa, büyük olasılıkla Enterprise yöneticisinin çalışması gerekmez. Oracle dbstart/ dbshutkomut dosyalarını kullanın . Gerçekten EM'ye ihtiyacınız varsa, arka planda başlatın.


0

yasir-arsanukaev : VM'nizi durumunu diske kaydederek duraklatabilir (askıya alabilir misiniz)?

colin-t-hart : Bu bir test makinesiyse, anlık görüntü oluşturun. Makineyi başlatın ve kullanarak Oracle'ı başlatındbstart. Sadece bittiğinde makineyi zorlayın ve anlık görüntüye geri dönün.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.