標籤:
1、查看一個表暫用的資料表空間大小: SELECT bytes/1024/1024||‘MB‘,a.*FROM user_segments a WHERE a.segment_name =‘TL_SP_NONREAL_LIST_201505‘; //103查詢錯單資料表空間 SELECT segment_name,sum(bytes)/1024/1024 FROM User_Segments a WHERE a.tablespace_name=‘ZHJS_LIST_ERROR‘ AND a.segment_type=‘TABLE PARTITION‘ AND a.BYTES<>‘8388608‘ AND a.segment_name NOT LIKE ‘%200906‘ GROUP BY a.segment_name
2、查看一個資料表空間所佔的實際大小: SELECT sum(bytes)/1024/1024||‘MB‘ FROM user_segments a WHERE a.tablespace_name =‘SETT_ANALYSE_LIST_201505‘;
3、查看一個資料表空間對應的資料檔案: SELECT * FROM dba_data_files a WHERE a.tablespace_name =‘SETT_ANALYSE_LIST_201505‘;
4、查詢資料表空間的總大小以及使用大小 select a.tablespace_name,a.bytes/1024/1024 "Sum MB",(a.bytes-b.bytes)/1024/1024 "used MB",b.bytes/1024/1024 "free MB", round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used" from (select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a, (select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name) b where a.tablespace_name=b.tablespace_name order by ((a.bytes-b.bytes)/a.bytes) desc;
5、建立一個大資料量的表,佔用資料表空間大小几個G,delete這張表的資料,此時只需查詢發現很慢,查詢的表資料為空白, 其實就是其資料表空間沒有釋放的緣故。 執行alter table jk_test move 或 alter table jk_test move storage(initial 64k) 或alter table jk_test deallocate unused KEEP 0或 alter table jk_test shrink space. 這樣操作後,會失去索引,這是可以將失效的索引重建 select index_name,table_name,tablespace_name,index_type,status from dba_indexes where table_owner=‘SETT_ANALYSE‘ ; 根據status的值,重建無效的就好了alter owner.index_name rebuild; ,重新查詢就很小了 注意:drop...purge 和 truncate表時,其所佔用的空間會得到釋放,原因應該是不進入資源回收筒,(單獨drop會進入資源回收筒的) 進資源回收筒的資料可以通過flashback找回:具體方法如下: select original_name,dropscn from recyclebin where lower(original_name)=‘js_stat_sp_report_sec_1009‘; flashback table jianbiao_beifen to before drop;
6、不管是delete還是truncate相應的資料檔案大小都不會改變,如果想改變資料檔案佔用的空間大小可執行: alter database datafile ‘filename‘ resize 8g,重定義檔案大小 關於purge的補充: purge tablespace tablespace_name--清空資料表空間的recycle bin purge tablespace tablespace_name user username--指定資料表空間的recycle bin的指定對象 drop table table_name purge--永久刪除,不能用flashback恢複
7、移動資料表空間 分區表:altrer table TL_Y_TOLL_XJJS_LIST_201603 move partition D_21 tablespace zhjs_dsyy; 非分區表:alter table TL_Y_TOLL_XJJS_LIST_201603 move tablespace zhjs_dsyy ;
8、查詢哪張表被建索引:SELECT * FROM user_indexes; 判斷哪張表的那個欄位建了索引:select * from user_ind_columns;
9、如果是在已有的資料表空間中添加資料檔案,則使用: alter tablespace 資料表空間名 add datafile ‘資料檔案名稱路徑‘ size 50M; 如果是建立一個資料表空間則是: create tablespace 資料表空間名 datafile ‘資料檔案名稱路徑‘ size 50M;
出庫: P_EXPDB_COLLECT_LIST
move_list_data_to_szx
gdb跟蹤命令: gdb 進程名 進程號 b *.cpp:行數 :打斷點在哪一行 p 變數 :列印出變數的值 n :下一步 s :進方法 exit 退出
ppstdcdr--標準格式 wjjsct_ngn.h繼承cdrbase.sh #include "cdrbase.h"
truncate table 後,有可能資料表空間仍沒有釋放,可以使用如下語句: alter table 表名稱 deallocate UNUSED KEEP 0; 注意如果不加KEEP 0的話,資料表空間是不會釋放的。 例如: alter table F_MINUTE_TD_NET_FHO_B7 deallocate UNUSED KEEP 0; 或者: TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE才能釋放資料表空間。 例如: truncate table test1 DROP STORAGE; 三、查詢分區表存在哪些分區: 查詢分區表的情況,可以在USER_TAB_PARTITIONS中查詢。例如: select ‘alter table ‘||t.table_name ||‘ truncate partition ‘ || t.partition_name from USER_TAB_PARTITIONS t where t.table_name like ‘F_%‘ 查詢各個分區暫用資料表空間
SELECT TABLESPACE_NAME,partition_name,TO_CHAR(SUM(BYTES)/(1024*1024),‘999G999D999‘) FROM DBA_EXTENTS WHERE SEGMENT_NAME=‘TL_ERR_D_SMS‘ AND SEGMENT_TYPE LIKE ‘TABLE%‘ GROUP BY TABLESPACE_NAME,partition_name;
清除指定某個分區表的分區資料: alter table 表名稱 truncate partition 分區名稱; 四、清除分區表佔用的空間: alter table 表名稱 DROP partition 分區名稱; 例如: alter table F_HOUR_TD_NET_MPVOICE DROP partition P_09121913 ;
--查看單個表佔用物理空間的大小 ---查詢分區表 SELECT a.* FROM ( SELECT t.owner,t.tablespace_name,t.segment_name,sum(t.BYTES)/1024/1024/1024 total FROM sys.sys_dba_segs t WHERE t.partition_name IS NOT NULL AND t.segment_name NOT LIKE ‘%$%‘ /* AND lower(t.owner) = ‘zhjs_app‘ */ AND UPPER(t.tablespace_name) = UPPER(‘ZHJS_ZDJS_0510‘) GROUP by t.owner,t.tablespace_name,t.segment_name ) a /*WHERE a.total >= 2.5 */ ORDER BY a.total DESC ; --查詢非分區表 SELECT a.* FROM ( SELECT t.owner,t.tablespace_name,t.segment_name,sum(t.BYTES)/1024/1024/1024 total FROM sys.sys_dba_segs t WHERE t.partition_name IS NULL AND t.segment_name NOT LIKE ‘%$%‘ /* AND lower(t.owner) = ‘zhjs_app‘ */ AND UPPER(t.tablespace_name) = UPPER(‘ZHJS_ZDJS_0510‘) GROUP by t.owner,t.tablespace_name,t.segment_name ) a /*WHERE a.total >= 2.5 */ ORDER BY a.total DESC ;
TRUNCATE TABLE ter_510.BSS_ZSZH_COUPON_BACKUP; TRUNCATE TABLE ter_510.TL_ERROR_LIST_ELSE; TRUNCATE TABLE ter_510.TL_SETT_LIST_HIS; TRUNCATE TABLE ter_510.BSS_TD_STORE_INOUT_CHANGE_BKP; TRUNCATE TABLE ter_510.BSS_CHANNEL_TEMP;
關於oracle的筆記