Bugün esas olarak tüm veritabanı kullanıcılarını ve tablo alanlarını görüntülemek ve belirli bir kullanıcının ayrıntılarını saymak için iki kabuk komut dosyasını paylaşıyorum. 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ı şifresi
Komut dosyası içeriği aşağıdaki gibidir:
#! / bin / bash echo "====================================== Tüm veritabanı kullanıcılarını ve varsayılan tablolarını görüntüleyin Uzay ============================================== " echo "sayfaları 70 satır 99 geri bildirimi kapatır col DEFAULT_TABLESPACE head'Default TBS 'for a15 trunc 15 kesim için col TEMPORARY_TABLESPACE head'TEMP TBS ' 999.999.999 için col MB head'Size (Mb) ' col kullanıcı adı biçimi a30 çizgi boyutunu ayarla 150 rapora ara vermek raporda hesaplama toplamı MB seç KULLANICI ADI, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE, OLUŞTURULDU, nvl (toplam (seg.blocks * ts.blocksize) / 1024 / 1024,0) MB itibaren sys.ts $ ts, sys.seg $ seg, sys.user $ us, dba_users du nerede us.name (+) = du.username ve seg.user # (+) = us.user # ve ts.ts # (+) = seg.ts # USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE, CREATED bazında gruplama MB azalan, kullanıcı adına göre sipariş oluşturuldu / "| sqlplus -s $ DB_CONN_STR @ $ SH_DB_SIDÇıktı: ./showusers.sh
Komut dosyası içeriği aşağıdaki gibidir:
#! / bin / bash echo "====================================== Tüm veritabanı kullanıcılarını görüntüleyin $ 1 özel bilgi = ============================================ " İSİM = `echo $ 1 | kes -d. -F1` ise sonra echo -e "Kullanıcı sağlanmalıdır: \ c"; ADI oku fi sqlplus -s $ DB_CONN_STR @ $ SH_DB_SID < < EOF temiz tampon beslemeyi kapatmak doğrulamayı kapat 132 satırı ayarla sayfaları 200 ayarla sütun bayt biçimi 9999.999.999.999 başlık "Kullanılan Bayt" sütun maks_bayt biçimi 9.999.999.999 baş Kota sütun default_tablespace format a20 head "Varsayılan Tablo Alanı" a25 için sütun tablo alanı_adı sütun kullanıcı adı biçimi a25 Komut istemi ************************************************* ************************************************** *** bilgi istemi * Genel Ayrıntılar * Komut istemi ************************************************* ************************************************** *** col profil biçimi a10 col password_versions format a10 kullanıcı adı, default_tablespace, oluşturulan, profil, password_versions seçin dba_users'tan kullanıcı adı = üst ('$ {NAME}') / Komut istemi. Komut istemi ************************************************* ************************************************** *** komut istemi * Nesneler Genel Bilgi * Komut istemi ************************************************* ************************************************** *** nesne_türü, durum, say (*) obj_count seçin dba_objects'ten burada sahip = üst ('$ 1') nesne_tipine göre gruplandırma, obj_count desc'e göre durum sıralaması / Komut istemi. Komut istemi ************************************************* ************************************************** *** komut istemi * Kotalar * Komut istemi ************************************************* ************************************************** *** tablo alanı_adı seçin, bayt kod çözme (maks_bayt, -1, 'SINIRSIZ', maks_bayt) maks_bayt dba_ts_quotas'tan kullanıcı adı = büyük ('$ {NAME}') / Komut istemi. Komut istemi ************************************************* ************************************************** *** komut istemi * Kullanılan Bayt Komut istemi ************************************************* ************************************************** *** a15 için sütun tablo alanı_adı 999.999.999 için col MB head'Size (Mb) ' rapora ara vermek REPORT üzerindeki baytların toplamını hesapla / * seç ts.tablespace_name tablo alanı_adı, nvl (toplam (seg.blocks * ts.block_size) / 1024 / 1024,0) MB itibaren dba_tablespaces ts, dba_segments segment, dba_users bizi nerede - du.username = büyük ('$ {NAME}') us.username = büyük ('$ {NAME}') ve seg.owner (+) = us.username ve ts.tablespace_name (+) = seg.TABLESPACE_NAME ts.tablespace_name tarafından gruplandır ts.tablespace_name ile sipariş * / seç ts.name tablo alanı_adı, nvl (toplam (seg.blocks * ts.blocksize) / 1024 / 1024,0) MB itibaren sys.ts $ ts, sys.seg $ seg, sys.user $ us, dba_users du nerede du.username = büyük ('$ {NAME}') ve us.name (+) = du.username ve seg.user # (+) = us.user # ve ts.ts # (+) = seg.ts # ts.name ile gruplandır ts.name ile sipariş / Komut istemi. Komut istemi ************************************************* ************************************************** *** bilgi istemi * Hibeler / Roller * Komut istemi ************************************************* ************************************************** *** beslemeyi ayarla, çevrimdışı doğrula 132 sayfa 200 col sahibi biçimi a15 sahibini kırmak bilgi istemi ********* SAHİBİ ROLÜ *********** Komut istemi ******************************** d.owner, d.grantee role_name, r.PASSWORD_REQUIRED, s.admin_option, s.DEFAULT_ROLE seçin dba_tab_privs'den d, dba_roles r, dba_role_privs s nerede d.grantee = r.role ve d.grantee = s.grantee (+) ve d.owner = nvl (üst ('$ 1'), '') d.grantee, d.owner, r.password_required, s.admin_option, s.DEFAULT_ROLE ile gruplama mal sahibinin siparişi; sütun bağış alan biçimi a20 sütun given_role format a35 sütun admin_option başlık yönetici biçimi a10 Komut istemi. bilgi istemi ********** VERİLEN ROL ******** Komut istemi ******************************** d.grantee role_name seçin dba_tab_privs'den d nerede sahip = üst ('$ 1') d.grantee'ye göre grupla Birlik given_role'yi seçin dba_role_privs'ten Grantee = üst ('1 $'); Komut istemi. Komut istemi ************************************************* ************************************************** *** bilgi istemi * Sys ayrıcalıkları * Komut istemi ************************************************* ************************************************** *** beslemeyi ayarla, çevrimdışı doğrula 132 sayfa 200 sütun ayrıcalık biçimi a25 sütun admin_option başlık yönetici biçimi a8 ayrıcalık seçin, admin_option dba_sys_privs'ten Grantee = üst ('$ {NAME}') / !Eko "*********************************************** ************************************************** ***** " EOF çıkışÇıktı: ./showusers.sh kullanıcı adı
Herhangi bir istatistiğiniz varsa, aşağıya bir mesaj bırakabilirsiniz, ben de daha sonra ilgili senaryoları düzenleyeceğim. İlgilenen arkadaşlar takip edebilir