Bagaimana cara membuat daftar semua tabel dalam skema di Oracle SQL?
159
Untuk melihat semua tabel dalam skema lain, Anda perlu memiliki satu atau lebih hak istimewa sistem berikut:
SELECT ANY DICTIONARY
(SELECT | INSERT | UPDATE | DELETE) ANY TABLE
atau palu besar, peran DBA.
Dengan semua itu, Anda dapat memilih:
SELECT DISTINCT OWNER, OBJECT_NAME
FROM DBA_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Tanpa hak istimewa sistem tersebut, Anda hanya dapat melihat tabel yang telah Anda berikan aksesnya, baik secara langsung atau melalui peran.
SELECT DISTINCT OWNER, OBJECT_NAME
FROM ALL_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
AND OWNER = '[some other schema]'
Terakhir, Anda selalu dapat meminta kamus data untuk tabel Anda sendiri, karena hak Anda untuk tabel Anda tidak dapat dicabut (hingga 10g):
SELECT DISTINCT OBJECT_NAME
FROM USER_OBJECTS
WHERE OBJECT_TYPE = 'TABLE'
%_OBJECTS
alih-alih%_TABLES
.DISTINCT
di kueri.owner, object_name
unik diALL_OBJECTS
owner, object_name
tidak unik dengan cara apa pun di dba_objects; Paket Badan dan Paket keduanya muncul dalam tampilan itu, dan Tabel dan Indeks berada dalam ruang nama yang berbeda.sumber
Anda bisa bertanya
USER_TABLES
sumber
Jika Anda masuk sebagai Pengguna Normal tanpa izin DBA, Anda dapat menggunakan perintah berikut untuk melihat semua tabel dan tampilan skema Anda sendiri.
sumber
Coba ini, ganti? dengan nama skema Anda
sumber
Jika Anda mengakses Oracle dengan JDBC (Java), Anda dapat menggunakan kelas DatabaseMetadata . Jika Anda mengakses Oracle dengan ADO.NET, Anda dapat menggunakan pendekatan serupa.
Jika Anda mengakses Oracle dengan ODBC, Anda dapat menggunakan fungsi SQLTables .
Jika tidak, jika Anda hanya memerlukan informasi dalam SQLPlus atau klien Oracle serupa, salah satu pertanyaan yang sudah disebutkan akan dilakukan. Misalnya:
sumber
itu akan menampilkan semua tabel di kucing skema Anda sinonim dari user_catalog
sumber
Kueri di atas akan memberi Anda nama semua tabel yang ada di pengguna itu;
sumber
(menunjukkan semua tabel)
sumber
SELECT table_name, owner FROM all_tables di mana owner = 'schema_name' pesan berdasarkan table_name
sumber
Anda bisa langsung menjalankan kueri kedua jika Anda tahu nama pemiliknya.
--Pertama Anda dapat memilih semua pemilik yang ada:
--Lalu Anda dapat melihat tabel di bawah oleh pemilik itu:
sumber
Lihatlah utilitas sederhana saya untuk menampilkan beberapa info tentang skema db. Ini didasarkan pada: Rekayasa Reverse Model Data Menggunakan Kamus Data Oracle
sumber
Jika Anda perlu mendapatkan ukuran meja juga, ini akan berguna:
select SEGMENT_NAME, PARTITION_NAME, BYTES from user_segments where SEGMENT_TYPE='TABLE' order by 1
sumber
Nama tabel dan penghitung baris untuk semua tabel dalam
OWNER
skema:SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
sumber