Apakah ada yang setara dengan SHOW DATABASES
pernyataan MySQL ?
Apakah mungkin untuk menemukan database dalam sebuah cluster? database yaitu hadir di jaringan pada beberapa sistem lain?
Bisakah saya menganalisis file yang ada pada instalasi Oracle untuk menemukan yang sama?
Diberi kredensial akses lengkap ke sistem Oracle, bagaimana Anda akan menghitung semua database yang ada?
Jawaban:
Tidak ada hal seperti itu. Anda dapat meminta pendengar pada mesin (
lsnrctl status
) untuk melihat layanan apa yang terdaftar di sana, tetapi itu tidak memetakan satu-ke-satu ke basis data (dan mungkin ada beberapa pendengar pada mesin yang sama). Kalau tidak, alat yang biasa digunakan terhubung ke satu contoh database, dan sebuah instance milik satu database.Jika Anda berbicara tentang klaster Oracle RAC, maka setiap instance tahu tentang rekan-rekannya (contoh lain yang melayani database yang sama) dan Anda dapat menemukan contoh lain yang saat ini dimulai untuk database tersebut menggunakan
gv$instance
tampilan.Anda juga dapat menggunakan
crsctl
utilitas untuk membuat daftar layanan (termasuk basis data) yang terdaftar di cluster, dan statusnya.Jika Anda berbicara tentang perangkat lunak pengelompokan vendor lain, saya cukup yakin mereka semua memiliki jenis utilitas manajemen sumber daya ini untuk di-query.
Jika Anda hanya berbicara tentang sekelompok mesin, maka tidak, tidak ada cara yang dapat diandalkan 100% untuk menghitung semua database di jaringan.
Untuk menemukan database aktif (mis. Dimulai), cari
*_pmon_*
proses pada Unix (ada satu per database contoh), dan layanan Oracle pada Windows.Untuk mencari instalasi perangkat lunak database Oracle, lihat di
/etc/oratab
Unix. Ini harus berisi semua yangORACLE_HOME
diinstal. Anda dapat melihat ke dalam masing-masing di$ORACLE_HOME/dbs
bagispfile<SID>.ora
dan / atauinit<SID>.ora
file - akan ada satu untuk setiap database.(Saya percaya Anda dapat menemukan informasi yang setara di
oratab
dalam kunci registri Windows di bawah iniHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
, tetapi saya tidak tahu strukturnya.)Sekarang, tentu saja, jika Anda telah mendaftarkan semua basis data Anda dengan server OEM (Enterprise Manager) ketika Anda menginstalnya, Anda dapat menemukan daftar lengkapnya di sana - tetapi saya kira jika Anda bertanya bukan itu masalahnya.
sumber
Oracle tidak memiliki database selain skema, Anda dapat mendaftarnya
atau sesuatu seperti ini :
sumber
Sederhananya, tidak ada analogi langsung untuk 'database' MySQL atau 'cluster' pada Oracle: pasangan terdekat adalah 'skema' tetapi itu masih sangat berbeda.
Ini tampaknya akan berubah dalam 12c dengan diperkenalkannya pluggable databases:
sumber
Saya pikir jawaban untuk peramban masa depan di * nix adalah:
cat / etc / oratab
sumber
Cukup sambungkan ke ASM dan periksa klien basis data.
sumber
Jika Anda memiliki Pluggable Databases (disarankan) di Oracle 12, Anda dapat melakukan hal berikut:
sumber
Untuk database mandiri untuk mendapatkan daftar database yang dimulai secara otomatis setelah host reboot:
atau hanya untuk mendapatkan daftar semua basis data:
Untuk database RAC, metode berikut dapat bermanfaat:
Juga seperti yang telah disebutkan database di MySQL tidak sama dengan database di Oracle. Di Oracle lebih dekat ke skema - yang bernama wadah untuk objek pengguna. Untuk mendapatkan daftar skema, Anda dapat menggunakan pernyataan SQL berikut:
atau untuk mendapatkan daftar bukan skema terkait sistem (tersedia di Oracle RDBMS mulai dari versi 12c):
sumber