Pertanyaan Bagaimana saya bisa mengetahui dari mana tabel database dihuni?


Saya bertanggung jawab atas database Oracle yang tidak memiliki dokumentasi. Saat ini saya perlu tahu bagaimana meja semakin padat.

Bagaimana cara mengetahui prosedur, pemicu, atau sumber lain, tabel ini mengambil datanya?


4
2018-05-18 14:08


asal


Jawaban:


Atau lebih baik lagi, kueri DBA_DEPENDENCIES meja (atau yang setara USER_ ). Anda harus melihat objek apa yang bergantung pada mereka dan siapa yang memilikinya.

select owner, name, type, referenced_owner
from dba_dependencies
where referenced_name = 'YOUR_TABLE'

Dan ya, Anda perlu melihat melalui objek untuk melihat apakah ada INSERT terjadi.

Juga ini, dari komentar saya di atas.

Jika ini bukan sistem produksi, saya akan menyarankan Anda untuk membesarkan seorang pengguna   Pengecualian yang ditentukan dalam TRIGGER- sebelum INSERT dengan beberapa pesan khusus   atau LOCK tabel dari INSERT dan awasi aplikasi yang mana   coba masukkan ke mereka gagal. Tapi ya, Anda mungkin juga mendapat panggilan   dari banyak orang yang marah.


8
2018-05-18 14:28



Ini cukup sederhana ;-)

SELECT * FROM USER_SOURCE WHERE TEXT LIKE '%NAME_OF_YOUR_TABLE%';

Dalam output, Anda akan memiliki semua prosedur, fungsi, dan sebagainya, yang di dalam tubuh meminta tabel yang disebut NAME_OF_YOUR_TABLE.


5
2018-05-18 14:21



Pikiran lain adalah mencoba meng-query v $ sql untuk menemukan pernyataan yang melakukan pembaruan. Anda dapat memperoleh sesuatu dari modul / tindakan (atau dalam 10g progam_id dan program_line #).


2
2018-05-19 00:38



Perubahan DML dicatat dalam * _TAB_MODIFICATIONS.

Tanpa membuat pemicu, Anda dapat menggunakan LOG MINER untuk menemukan semua perubahan data dan dari sesi mana.

Dengan pemicu Anda dapat merekam variabel SYS_CONTEXT ke dalam tabel.

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions165.htm#SQLRF06117


1
2018-05-19 06:02



Kedengarannya seperti Anda ingin mengaudit.

Bagaimana tentang

AUDIT ALL ON ::TABLE::;

Atau menerapkan kebijakan DBMS_FGA di atas meja dan mengumpulkan klien, program, pengguna, dan mungkin tumpukan panggilan akan tersedia juga.


1
2018-04-24 03:01



Terlambat ke pesta!

Saya kedua Gary menyebutkan v $ sql juga. Itu mungkin menghasilkan jawaban cepat selama kueri belum memerah.

Jika Anda tahu dalam contoh Anda saat ini, saya suka kombinasi dari apa yang telah digunakan di atas; jika tidak ada SQL dinamis, xxx_Dependencies akan berfungsi dan bekerja dengan baik.

Bergabunglah dengan xxx_Source untuk mendapatkan SQL dinamis yang mengganggu itu.

Kami juga membawa data ke instance dev kami menggunakan perintah SQL * Plus copy (hati-hati! Tidak berlaku lagi!), Tetapi data dapat diperkenalkan dengan imp atau impdp juga. Periksa xxx_Directories untuk direktori yang diberkati untuk membawa data masuk / keluar.


0
2017-08-31 12:59