查找Oracle某個數據庫的所有表個行數,以及遇到的問題。


 參考資料:https://blog.csdn.net/red_sky_blue/article/details/68138845

工作時候遇到的,需要查找某個操作之后庫中表的數據變化(項目不是自己的),而且庫中表超多,近一千個,那么該怎么查找呢?

由於源碼看起來費勁,想到個超級簡單的方法,通過SQL語句查找出所有表以及各個表中的行數,進行操作之后再查找一次,通過excel對比就好了。上語句。

SQL1:select t.table_name ,t.num_rows from all_tables t WHERE owner='*****';(*****為你的數據庫名稱);

遇到的問題:在第一次查找導出相關數據之后,對網站進行操作,重新運行SQL1語句時,發現數據沒發生變化,WTF?去到某個表中查看(這個表已被確定為會增加一條數據)時,

發現增加了呀,也就是第二次運行SQL1語句后查到的並不是現在真實的數據了,這有是為什么呢?emmmm我也不知道,以后找到再補充。

解決方法:重新分析一下表,再進行查詢就好了,SQL2:analyze table ***** compute statistics;(*****為表名)。

這樣再運行SQL1就可以了。但是!一個庫中近千個表,總不能每個運行吧,會累死的0.0。再上語句。

SQL3:select 'analyze table ' ||A.TABLE_NAME|| ' compute statistics;' from all_tables A where A.OWNER='*****';(*****為你的數據庫名)注:有空格不要丟了,

運行之后將查詢結果(如圖1)復制下來,新建txt,粘貼,修改后綴名為***.sql。保存。然后在網站進行操作之后,運行SQL1之前,運行一下***.sql。就OK了。

圖一:

圖二(excel查詢結果):

 

補充點:

數據查詢結果不同的原因,參考:http://blog.sina.com.cn/s/blog_713978a50100rccd.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM