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

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

工做時候遇到的,須要查找某個操做以後庫中表的數據變化(項目不是本身的),並且庫中表超多,近一千個,那麼該怎麼查找呢?sql

因爲源碼看起來費勁,想到個超級簡單的方法,經過SQL語句查找出全部表以及各個表中的行數,進行操做以後再查找一次,經過excel對比就行了。上語句。數據庫

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

遇到的問題:在第一次查找導出相關數據以後,對網站進行操做,從新運行SQL1語句時,發現數據沒發生變化,WTF?去到某個表中查看(這個表已被肯定爲會增長一條數據)時,.net

發現增長了呀,也就是第二次運行SQL1語句後查到的並非如今真實的數據了,這有是爲何呢?emmmm我也不知道,之後找到再補充。3d

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

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

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

運行以後將查詢結果(如圖1)複製下來,新建txt,粘貼,修改後綴名爲***.sql。保存。而後在網站進行操做以後,運行SQL1以前,運行一下***.sql。就OK了。源碼

圖一:

圖二(excel查詢結果):

 

補充點:

數據查詢結果不一樣的緣由,參考:http://blog.sina.com.cn/s/blog_713978a50100rccd.html

相關文章
相關標籤/搜索