Bugün, esas olarak veritabanı işlemiyle ilgili bilgileri ve saklı yordam bilgilerini görüntülemek için iki kabuk komut dosyasını paylaşacağım, hadi birlikte bir göz atalım ~
DB oturum açma ayrıntıları kaydı için settdb.sh komut dosyasını kullanın
#! / bin / bash tmp_username = $ SH_USERNAME tmp_password = $ SH_PASSWORD tmp_db_sid = $ SH_DB_SID #check $ 1 ve $ 2 girişten zorunlu olmalıdır eğer> ||>; sonra Eko'***********************************************' echo'WARNING: Kullanıcı Adı ve Şifre Gerekiyor! ' Eko'***********************************************' çıkış fi eğer>>; sonra Eko'***********************************************' echo'WARNING: Kullanılabilecek Örnek Var! ' Eko'***********************************************' çıkış fi SH_USERNAME = "echo" $ 1 "| tr '' ''` SH_PASSWORD = 2 ABD doları Eko'***********************************************' eğer> sonra SH_DB_SID = $ ORACLE_SID echo 'Varsayılan Örnek Kullanılıyor:' $ ORACLE_SID Eko. Başka SH_DB_SID = "echo" $ 3 "| tr '' '' ' fi eğer >>>; sonra echo'Instance '$ SH_DB_SID' bağlandı ' Eko'***********************************************' çıkış fi dışa aktar SH_USERNAME = $ SH_USERNAME dışa aktar SH_DB_SID = $ SH_DB_SID dışa aktar SH_PASSWORD = $ SH_PASSWORD dışa aktar DB_CONN_STR = $ SH_USERNAME / $ SH_PASSWORD #echo $ DB_CONN_STR listfile = `pwd` / listdb Num = `echo show user | $ ORACLE_HOME / bin / sqlplus -s $ DB_CONN_STR @ $ SH_DB_SID | grep -i'USER '| wc -l` ise sonra ## ok-instance yukarı echo'Instance '$ SH_DB_SID' bağlandı ' echo -e '-' tarih` - \ n - '$ SH_USERNAME @ $ SH_DB_SID' bağlandı - \ n ' > > listdb Eko'***********************************************' echo'DB oturum açma ayrıntıları kaydını başlat Tamam! ' echo'Şimdi Yürütme betiği yapabilirsiniz ~ ' Eko'***********************************************' $ KABUK Başka ## inst erişilemez echo Örneği: $ SH_DB_SID Geçersiz Veya Kullanıcı Adı / Parola Yanlış Eko'***********************************************' çıkış fi del_length = 3 tmp_txt = $ (sed -n '$ =' listdb) Eko'***********************************************' echo '*********' $ SH_USERNAME '@' $ SH_DB_SID '**********' Eko'***********************************************' curr_len = `cat $ liste dosyası | wc -l` ; o zaman echo 'Oturumların Altında Hala Canlı' Eko'***********************************************' fi sed $ (($ {tmp_txt} - $ {del_length} +1)), $ {tmp_txt} d $ liste dosyası | tee tmp_listfile mv tmp_listfile $ listfileÇıktı:
./settdb.sh Kullanıcı adı Kullanıcı şifresiKomut dosyası içeriği:
#! / bin / bash echo "============================================== = Veritabanı sürecini görüntüleyin spid: 1 $ ilgili bilgi ====================================== ============= " ise; o zaman echo "hiçbir işlem sağlanmadı!" çıkış 0 fi sh_tmp_process = `sqlplus -silent $ DB_CONN_STR @ $ SH_DB_SID < < SON sayfa boyutunu ayarla 0 geribildirim kapalı yankı kapalı yönü kapat doğrula v \ $ işleminden adres seçin, burada spid = $ 1; çıkış; END` ; sonra echo "işlem yok veya oturum bir DB hesabından değil" Eko echo "####### İşletim Sistemi düzeyindeki bilgileri aşağıdaki gibi işleme alın ########" ps -ef | grep $ 1 | grep -v "grep" | grep ora Eko "############################################" çıkış 0 Başka Eko'*******************************************' echo "İşlem bulundu, pid: $ 1, addr: $ sh_tmp_process" Eko echo "####### İşletim Sistemi düzeyindeki bilgileri aşağıdaki gibi işleme alın ########" ps -ef | grep $ 1 | grep -v grep | grep ora Eko "############################################" sqlplus -s $ DB_CONN_STR @ $ SH_DB_SID < < EOF col makine biçimi a20 col terminal biçimi a15 col osuser biçimi a15 col işlem biçimi a10 col kullanıcı adı biçimi a15 satır boyutunu ayarla 1000 sayfa boyutu 500 col türü biçimi a15 col login_time biçimi a20 sid, seri #, kullanıcı adı, osuser, makine, işlem, uçbirim, tür, to_char (LOGON_TIME, 'yyyy-aa-gg hh24: mi: ss') v \ $ oturumundan oturum açma süresini seçin paddr = '$ sh_tmp_process'; Komut istemi. col sql_id biçimi a30 col prev_sql_id biçimi a30 col sql_text biçimi a60 çizgi boyutunu ayarla 150 sayfa 50 ayarla v \ $ sql'den sql_id, sql_text'i seçin, burada sql_id içinde (paddr = '$ sh_tmp_process' ve sql_id'nin null olmadığı v \ $ oturumdan sql_id'i seçin) ve rownum < 2; sql_id prev_sql_id, v \ $ sql'den sql_text'i seçin, burada sql_id (v \ $ oturumundan prev_sql_id sql_id'i seçin, burada paddr = '$ sh_tmp_process') ve rown um < 2; EOF fiÇıktı: ./showpid.sh veritabanı işlem kimliği
Bu, genellikle veritabanı işlemi hakkında daha fazla ayrıntı elde etmek için önceki oturum komut dosyasıyla birlikte kullanılır.
Komut dosyası içeriği:
Başlangıçta, depolanan prosedürlerin ayrıntılarını çıkarmak istedim, ancak bu içeriklere kabuk betiğinde bakmanın acı verici olduğunu düşünerek, mevcut veritabanındaki tüm depolanan prosedürleri almak için değiştirdim. Belirli saklı prosedürleri görmek için plsql kullanın ~
#! / bin / bash echo "====================================== Veritabanı kullanıcısının saklı yordam bilgilerini görüntüleyin $ 1 = ====================================== " PROC_OWNER = `sqlplus -silent $ DB_CONN_STR @ $ SH_DB_SID < < SON sayfa boyutu 100 geri bildirim kapalı ayarla yankı kapalıyken yönü kapat col sahibi biçimi a15 col nesne_adı biçimi a30 col nesne_türü biçimi a20 col paralel biçimi a10 col arabirim biçimi a10 col toplama biçimi a10 col ardışık düzenlenmiş format a10 col deterministik biçim a10 col authid biçimi a101000 satır boyutunu ayarla dba_procedures'dan sahip, nesne_adı, nesne_kimliği, nesne_türü, toplama, ardışık düzenlenmiş, paralel, arabirim, belirleyici, kimlik doğrulamasını seçin burada sahip = üst ('$ 1') ve object_type = 'PROSEDÜR' / çıkış; END` ise; o zaman echo "nesne yok, lütfen tekrar kontrol edin" çıkış 0 Başka Eko'*******************************************' echo "$ PROC_OWNER" Eko'*******************************************' fi #sqlplus -silent $ DB_CONN_STR @ $ SH_DB_SID < < EOF #Komut istemi. # set uzun 99999 #set sayfaları 0 #Metin seç #from dba_source #where type = 'PROSEDÜR' ve sahip = üst ('$ 1') # satıra göre sırala; #EOF çıkışÇıktı: ./showproc.sh rfuser
Bir süre önce, başlık hatası birçok kodun görüntülenmemesine neden oldu, bu nedenle komut dosyası tek seferde çözülecek ve gönderilecek.Bu sefer ilk ben yazacağım.
Daha fazla devop ve DBA içeriği daha sonra paylaşılacak, ilgilenen arkadaşlar buna dikkat edebilir!