Tek tıklamayla istatistik veritabanı işlem ayrıntılarını ve depolanan prosedür bilgilerini içeren iki kabuk komut dosyasını paylaşın

Genel Bakış

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 ~

Veritabanı bağlantı komut dosyası

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ı şifresi

showpid.sh

Komut 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.

showproc.sh

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!

Ekonomi üzerinde artan aşağı doğru baskı! Kritik anda, Li Keqiang büyük bir ses çıkardı
önceki
Bank of Ningbo, Çin'in Sürdürülebilir Kalkınma Konusunda İlk "Bond Connect" Yeşil Finansal Tahvilini Başlattı
Sonraki
Birdenbire 100 milyarı aştı! Özel sermaye fonları patladı! On milyarlarca özel sermayenin en son performansı ortaya çıktı ve bu kurumlar yanıyor
Zigong Da'an, en güzel öğretmen ileri seviye tapu turu sunum raporunu düzenledi
Hisse senetlerini listeden çıkarmak için kumar oynayın! 160 milyon fon kaçtı, 5 milyon "set satın almak" için girişimde bulundu! Bu şirketler de takılıyor ...
Oracle DBA yaygın olarak kullanılan komut dosyası kabuğu dönüştürme-veritabanı örnek durumu, parametreleri ve paket bilgileri
Şaşkınım! En kötü düşüş% 20 idi ve listelemenin ilk gününde yeni hisselerde bir kesinti oldu! Birçok kesinti oldu
Gayrimenkul etüt ve haritalama yarışması sona erdi: Ölçülen sadece bir dakika ve sürdürülen mülktür
DBA için bir zorunluluktur! 30 dakikada tpcc-mysql kıyaslama testini öğrenin
Anlamsız! 268,4 milyar Tmall çift 11 ciro dolandırıcılık mı? Gerçek nedir, en son cevap burada
Uzak masaüstü bağlantısının dahili hata sorununu tamamen çözmek için üç adımlı sorun giderme
Zigong Şehrindeki "gençliği" korumak için, "büyük kötülük" küçüklerin hukukun üstünlüğü melodram turu başladı
Pazar avantajları! Gelişmiş Veritabanı Tasarımı Çalışması için Gerekli - "Veritabanı Tasarımı ve İlişki Teorisi"
MySQL'in iki özel veri türü niteliği işaretsiz ve sıfır dolgulu
To Top