oraclenbsp;一个稍微大点数据库
生活随笔
收集整理的這篇文章主要介紹了
oraclenbsp;一个稍微大点数据库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
公司有個水電收費系統,在包頭試運行, 給了我一個dmp讓熟悉一下業務. dmp是壓縮過的.80多兆好像.解壓下300多兆好像. 導入, 有幾個表是50萬行的,幾個30萬左右,200多個表(沒數).很多表是0行, 設計居民用戶單位用戶一堆一堆的.用戶有幾萬個.? 問題是這樣的: 收費系統每個月要結算一個,但要測試這個流程的話要核算所有用戶,核算幾千個就花的時間很多,因為是自己的庫,所有我開始刪了. 先刪了大部分組織層次和網絡層次只剩一個.然后刪用戶檔案.所屬不是剩的一個的都刪了 select table_name,num_rows,owner from dba_tables where owner = 'WANG' order by num_rows? 這是看所有表的行數,開始哪個大刪刪哪個.順便說下dba_table不是實時的 ,準確來說一天也不更新一下.要,analyze table XXX compute statistics 來更新 xxx表的統計 涉及用戶信息的表 里 用戶id not in 用戶檔案都刪了. 記錄delete信息的表都truncate了(truncate無法回滾,delete可以,這個還要詳細說,涉及表空間的釋放) 表示刪了之后系統沒什么異常,核算10分鐘搞定,歸檔也很快. 之前的沒試,但只是一個部門的核算就10多分鐘好像,有好幾個部門呢.估計得幾個小時.
刪了很多東西就要想到delete的表空間釋放問題. 發現導出的話50兆左右.很好確實小了.導出的話好像就沒沒有的表空間的事了. select ROUND(u.BYTES / (1024 * 1024), 2) MB from user_segments u where u.segment_name = 'S_YHFYMX_HISTORY' //表占用表空間的大小 //空間以段(segment)為單位分配給對象(如表、群集和索引) 這個是費用明細歷史.50多萬行,刪得好像剩一萬多行, 但占用的空間刪之前跟之后是一樣大的. //?Select owner,segment_name,Sum(bytes)/1024/1024||'MB' as sizes ?From dba_extents ?HERE ?segment_name='TTT1' ?//這個也可以, 不知什么區別,這些特殊的表需要查下用途//TODO 但查了下資料.覺得并不必在意.就像某塊內存不使用了.但他內容不會清空(相當于修改了),只需標記為已刪就行,這樣他占用的空間就可以分配給別的程序. 別的程序用的時候就修改這個內存塊的內容.,只有修改內容只需一次 (刪除時候清空 算是一次多余的修改) oracle的表空間管理 還涉及到高水標記的問題,?high?water?mark? (高水標記除了truncate操作以外,只會增大,不會減小。雖然高水標記里的塊可能有空塊,這個塊也要被放到freelist中,但是這個塊只能被重用,也就是說它只能被這個表使用,而不能徹底釋放給別的數據對象使用) 怎么降低表空間占用,沒找到好的方法,這個方法是可以用的,先export 再drop表,在import.? 應該還有別的方法注意rowid和索引
刪了很多東西就要想到delete的表空間釋放問題. 發現導出的話50兆左右.很好確實小了.導出的話好像就沒沒有的表空間的事了. select ROUND(u.BYTES / (1024 * 1024), 2) MB from user_segments u where u.segment_name = 'S_YHFYMX_HISTORY' //表占用表空間的大小 //空間以段(segment)為單位分配給對象(如表、群集和索引) 這個是費用明細歷史.50多萬行,刪得好像剩一萬多行, 但占用的空間刪之前跟之后是一樣大的. //?Select owner,segment_name,Sum(bytes)/1024/1024||'MB' as sizes ?From dba_extents ?HERE ?segment_name='TTT1' ?//這個也可以, 不知什么區別,這些特殊的表需要查下用途//TODO 但查了下資料.覺得并不必在意.就像某塊內存不使用了.但他內容不會清空(相當于修改了),只需標記為已刪就行,這樣他占用的空間就可以分配給別的程序. 別的程序用的時候就修改這個內存塊的內容.,只有修改內容只需一次 (刪除時候清空 算是一次多余的修改) oracle的表空間管理 還涉及到高水標記的問題,?high?water?mark? (高水標記除了truncate操作以外,只會增大,不會減小。雖然高水標記里的塊可能有空塊,這個塊也要被放到freelist中,但是這個塊只能被重用,也就是說它只能被這個表使用,而不能徹底釋放給別的數據對象使用) 怎么降低表空間占用,沒找到好的方法,這個方法是可以用的,先export 再drop表,在import.? 應該還有別的方法注意rowid和索引
轉載于:https://www.cnblogs.com/wangduqiang/p/4180957.html
總結
以上是生活随笔為你收集整理的oraclenbsp;一个稍微大点数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 问题:循环元素,被选中元素个数,全选
- 下一篇: 网申浦发信用卡必须面签吗?浦发信用卡面签