Bagaimana cara membuat daftar semua tabel dalam skema di Oracle SQL?
Bagaimana cara membuat daftar semua tabel dalam skema di Oracle SQL?
Jawaban:
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'
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.
SELECT table_name from all_tables where owner = 'YOURSCHEMA';
Anda bisa bertanya USER_TABLES
select TABLE_NAME from user_tables
Coba ini, ganti? dengan nama skema Anda
select TABLE_NAME from INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =?
AND TABLE_TYPE = 'BASE TABLE'
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:
select TABLE_NAME from user_tables
select * from cat;
itu akan menampilkan semua tabel di kucing skema Anda sinonim dari user_catalog
Anda bisa langsung menjalankan kueri kedua jika Anda tahu nama pemiliknya.
--Pertama Anda dapat memilih semua pemilik yang ada:
SELECT DISTINCT(owner) from SYS.ALL_TABLES;
--Lalu Anda dapat melihat tabel di bawah oleh pemilik itu:
SELECT table_name, owner from all_tables where owner like ('%XYZ%');
Lihatlah utilitas sederhana saya untuk menampilkan beberapa info tentang skema db. Ini didasarkan pada: Rekayasa Reverse Model Data Menggunakan Kamus Data Oracle
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
Nama tabel dan penghitung baris untuk semua tabel dalam OWNER
skema:
SELECT table_name, num_rows counter from DBA_TABLES WHERE owner = 'OWNER'
%_OBJECTS
alih-alih%_TABLES
.