Saya sedang mengerjakan proyek migrasi data, dan setiap pengembang memiliki kumpulan skema mereka sendiri. (Beberapa pengembang telah keluar, dan beberapa kumpulan skema tidak lagi digunakan).
vicsz
Jawaban:
130
Menggunakan sqlplus
sqlplus / sebagai sysdba
Lari:
PILIH *
DARI dba_users
Jika Anda hanya ingin nama pengguna melakukan hal berikut:
Namun, pastikan Anda memiliki izin pada pengguna Anda.
diagonalbatman
2
@Andy: itulah mengapa saya menulis "sebagai pengguna yang memiliki hak istimewa";)
a_horse_with_no_name
@horse Maaf saya melewatkan itu.
diagonalbatman
@a_horse_with_no_name apakah itu berarti skema di oracle berarti itu pengguna? Maksud saya schema = pengguna? dan di bawah pengguna itu semua tabel dibuat sama seperti MySQL?
Osama Al-Banna
66
Kemungkinan besar, Anda mau
SELECT usernameFROM dba_users
Itu akan menunjukkan kepada Anda semua pengguna di sistem (dan dengan demikian semua skema potensial). Jika definisi Anda tentang "skema" memungkinkan skema menjadi kosong, itulah yang Anda inginkan. Namun, mungkin ada perbedaan semantik di mana orang hanya ingin memanggil sesuatu skema jika sebenarnya memiliki setidaknya satu objek sehingga ratusan akun pengguna yang tidak akan pernah memiliki objek dikecualikan. Dalam hal itu
Dengan asumsi bahwa siapa pun yang membuat skema bijaksana tentang menetapkan tablespaces default dan menganggap bahwa Anda tidak tertarik dengan skema yang telah dikirimkan Oracle, Anda dapat memfilter skema tersebut dengan menambahkan predikat pada default_tablespace, yaitu
Hal ini tidak terlalu jarang untuk menemukan sebuah sistem di mana seseorang telah salah memberikan pengguna non-sistem default_tablespacedari SYSTEM, meskipun, jadi pastikan bahwa asumsi berlaku sebelum mencoba untuk menyaring skema Oracle-disampaikan dengan cara ini.
Gabungkan ini dengan predikat where dari query FeRtoll dan Anda akan mendapatkan query yang cukup aman (tidak mungkin untuk melakukan cobber SYS atau SYSTEM).
Karl
1
Apa bedanya dengan select distinct owner from dba_objects?
Dawood ibn Kareem
1
Nah pada contoh Oracle yang bersih, kueri Anda, @David, menghasilkan pemilik PUBLIK tambahan
Seperti yang saya pahami, kueri ini akan memunculkan semua skema yang berisi tabel apa pun. Apakah itu benar?
Andrew Spencer
1
Ini hanya akan bekerja dengan andal di versi Oracle yang lebih lama. Dengan pembuatan segmen yang ditangguhkan, dimungkinkan untuk memiliki objek tanpa segmen.
Jon Heller
4
Bagaimana tentang :
SQL>select*from all_users;
itu akan mengembalikan daftar semua pengguna / skema, ID mereka dan tanggal dibuat di DB:
Jawaban:
Menggunakan sqlplus
sqlplus / sebagai sysdba
Lari:
Jika Anda hanya ingin nama pengguna melakukan hal berikut:
sumber
Kemungkinan besar, Anda mau
Itu akan menunjukkan kepada Anda semua pengguna di sistem (dan dengan demikian semua skema potensial). Jika definisi Anda tentang "skema" memungkinkan skema menjadi kosong, itulah yang Anda inginkan. Namun, mungkin ada perbedaan semantik di mana orang hanya ingin memanggil sesuatu skema jika sebenarnya memiliki setidaknya satu objek sehingga ratusan akun pengguna yang tidak akan pernah memiliki objek dikecualikan. Dalam hal itu
Dengan asumsi bahwa siapa pun yang membuat skema bijaksana tentang menetapkan tablespaces default dan menganggap bahwa Anda tidak tertarik dengan skema yang telah dikirimkan Oracle, Anda dapat memfilter skema tersebut dengan menambahkan predikat pada
default_tablespace
, yaituatau
Hal ini tidak terlalu jarang untuk menemukan sebuah sistem di mana seseorang telah salah memberikan pengguna non-sistem
default_tablespace
dariSYSTEM
, meskipun, jadi pastikan bahwa asumsi berlaku sebelum mencoba untuk menyaring skema Oracle-disampaikan dengan cara ini.sumber
select distinct owner from dba_objects
?sumber
dba_users
(mis .: kesalahanORA-00942 : table or view does not exist
)sumber
Bagaimana tentang :
itu akan mengembalikan daftar semua pengguna / skema, ID mereka dan tanggal dibuat di DB:
sumber
Di bawah sql daftar semua skema dalam oracle yang dibuat setelah instalasi ORACLE_MAINTAINED = 'N' adalah filternya. Kolom ini baru di 12c.
sumber
Salah satu dari SQL berikut ini akan mengembalikan semua skema di Oracle DB.
select owner FROM all_tables group by owner;
select distinct owner FROM all_tables;
sumber