通過exp突然增長看錶的擴充套件
文章版權所有Jusin Hao(luckyfriends),支援原創,轉載請註明。
1.問題:
系統一直能自動備份資料,但是在某一天(1月16號),備份出來的資料檔案突然增大。原來一直是100多兆,突然變成700多兆,客戶沒有任何異常操作;
備份指令碼:
cd c:\
exp nczs/nczs file=f:\databakxb\nczs_%date:~0,10%.dmp log=f:\databakxb\nczs_%date:~0,10%.log
exp iufo/iufo file=f:\databakxb\iufo_%date:~0,10%.dmp log=f:\databakxb\iufo_%date:~0,10%.log
檢視邏輯備份的匯出日誌,發現GL_UICONFIG(NC總賬介面配置)這表的資料增長很大;
而實際這個表在資料庫中的記錄數
1月15號是778行
1月16號是10789行
分別單獨匯出這兩日這張表的資料
1月15號是50M
1月16號是644M
exp nczs/nczs file=f:\databakxb\nczs_gl_15.dmp log=f:\databakxb\nczs_gl_15.log tables=GL_UICONFIG;
分別將兩日的資料庫備份恢復到兩個模式:
C:\>imp system/oracle@orcl file=E:\resolve_question\20100325\nczs_20
10-01-15.dmp log=d:\15.log fromuser=nczs touser=nc15
C:\>imp system/oracle@orcl file=E:\resolve_question\20100325\nczs_20
10-01-16.dmp log=d:\16.log fromuser=nczs touser=nc16
2.查詢這兩日各自資料庫中這個表的資料分配情況
資料庫的資料塊的大小是8192位元組;
SQL.> show parameter block
1) 查詢段分配的空間:位元組數,塊數,已分配的盤區數,在段建立時初始盤區要求的位元組數,分配給段的下一個盤區的位元組數,允許的最小盤區數量,允許的最大盤區數
SQL> select BYTES,BLOCKS,EXTENTS,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS from user_segments where segment_name='GL_UICONFIG';
15日的表查詢結果:
16日的表查詢結果:
說明16日的表進行了盤區的擴充套件(分配了新的盤區)
2)查詢某模式下某個物件段的分配的空間大小(位元組數)
SQL> select sum(bytes)/1024/1024||'MB' from dba_extents where owner='NC50' and segment_name='GL_UICONFIG';
15日的表查詢結果:
16日的表查詢結果:
3)查詢表已經使用的資料塊數(Number of used data blocks in the table)、表中從未使用的資料塊(NUMBER Number of empty (never used) data blocks in the table)
SQL> select blocks,empty_blocks from user_tables where table_name='GL_UICONFIG';
15日的表查詢結果:
16日的表查詢結果:
4)查詢兩日這個表的資料量:
15日的表查詢結果:
16日的表查詢結果:
5)查詢表的資料大小
SQL> desc gl_uiconfig
Name Type Nullable Default Comments
------------ ------------ -------- ---------------------------------------- --------
DR NUMBER(10) Y 0
EXTEND1 VARCHAR2(60) Y
EXTEND2 VARCHAR2(60) Y
EXTEND3 VARCHAR2(60) Y
EXTEND4 VARCHAR2(60) Y
EXTEND5 VARCHAR2(60) Y
ISDEFAULT CHAR(1) Y
MODULECODE VARCHAR2(60)
PARAM1 VARCHAR2(60) Y
PARAM2 VARCHAR2(60) Y
PARAM3 VARCHAR2(60) Y
PK_CORP CHAR(4)
PK_GLBOOK CHAR(20) Y
PK_GLORG CHAR(20) Y
PK_GLORGBOOK CHAR(20) Y
PK_SOB CHAR(20) Y
PK_UICONFIG CHAR(20)
PK_USER CHAR(20)
TEMPLATE BLOB Y
TS CHAR(19) Y to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
存在有blob型別的物件
select dbms_lob.getlength(template) from gl_uiconfig;
15日的這張表中TEMPLATE 欄位的資料大小如下所示,基本上都大於66150位元組;
粗略估算表中這個欄位資料大小為:(778*66150)/1024/1024=49.08M
16日的這張表中TEMPLATE 欄位的資料大小如下所示,基本上都大於66150位元組;
粗略估算表中這個欄位資料大小為:(102789*61376)/1024/1024= 631.45M
說明這個欄位的資料量佔了這張表的主要資料量,因此exp匯出資料同樣比較大;
6)查詢lob型別資料的段
含有LOB欄位的表,其中LOB列只是儲存了一個LOCATOR (相當於C語言中的指標)
真正的資料儲存在單獨的LOB段中。
查詢user_segments表可以找到它們 (段型別為LOBSEGMENT/LOBINDEX),它們與表/列之間的關係,可以查詢USER_LOBS表;
因此下面的查詢表明
15日:gl_uiconfig的template欄位對應得資料實際儲存在段名為“SYS_LOB0000052900C00019$$”的lob段中,大小為59506688/1024./1024= 56.75M
16日:gl_uiconfig的template欄位對應得資料實際儲存在段名為“SYS_LOB0000055895C00019$$”的lob段中,大小為748945408/1024./1024= 714.25M
6)結論:
GL_UICONFIG 這個表的有image 形式的欄位(在oracle中這種型別的欄位是以blob或clob、bfile形式存放),
而我們這裡這個欄位在資料庫中就是blob型別的;
A:LONG: 可變長的字串資料,最長2G,LONG具有VARCHAR2列的特性,可以儲存長文字一個表中最多一個LONG列
LONG RAW: 可變長二進位制資料,最長2G
CLOB: 字元大物件Clob 用來儲存單位元組的字元資料
NCLOB: 用來儲存多位元組的字元資料
BLOB: 用於儲存二進位制資料
BFILE: 儲存在檔案中的二進位制資料,這個檔案中的資料只能被只讀訪。但該檔案不包含在資料庫內;bfile欄位實際的檔案儲存在檔案系統中, 欄位中儲存的是檔案定位指標.bfile對oracle來說是隻讀的,也不參與事務性控制和資料恢復,bfile並沒有存放資料,只是存放著指向資料的一個指標。
B:含有LOB欄位的表,其中LOB列只是儲存了一個LOCATOR (相當於C語言中的指標)
真正的資料儲存在單獨的LOB段中。查詢user_segments表可以找到它們 (段型別為LOBSEGMENT/LOBINDEX),它們與表/列之間的關係,可以查詢USER_LOBS表
C:Oracle對錶儲存空間的擴充套件是以盤區為單位進行;
3.Exp匯出機制
Exp 會匯出所有資料塊;
會進行全庫的掃描,將存有資料的記錄抽取出來;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14710393/viewspace-1087216/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- activiti通過擴充套件點重寫節點行為套件
- enqueue HW wait 引起表空間突然大量擴充套件ENQAI套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- [外掛擴充套件]通過標題搜尋站外資訊套件
- WCF擴充套件:行為擴充套件Behavior Extension套件
- 通過編寫指令碼和程式來擴充套件SSIS包NZ指令碼套件
- Java通過URLClassLoader讓程式支援外掛擴充套件(轉載)Java套件
- Silverlight頁面通過繼承擴充套件實現繼承套件
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- Lyft如何通過DevOps提升擴充套件微服務的生產力? - Garrettdev套件微服務
- exp匯出compress引數導致的imp時擴充套件太大套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- lv擴充套件過程中遇到的錯誤套件
- 基於 swoole擴充套件 的即時通訊 im套件
- 從咖啡館的經營看Web應用的擴充套件Web套件
- Sanic 擴充套件套件
- ORACLE 擴充套件Oracle套件
- 擴充套件工具套件
- 擴充套件歐幾里得套件
- DOM擴充套件套件
- 擴充套件ACL套件
- Lua擴充套件套件
- 照片擴充套件套件
- 擴充套件篇套件
- disable or 擴充套件套件
- 擴充套件表套件
- Mybatis擴充套件MyBatis套件
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- 表空間自動擴充套件 AUTOALLOCATE 的擴充套件規律套件
- MySQL Cluster:如何通過擴充套件為MySQL帶來2億QPSMySql套件
- 如何通過反射獲得方法的真實引數名(以及擴充套件研究)反射套件
- 正則的擴充套件套件
- SRAM的容量擴充套件套件
- 如何對錶手工擴充套件一個extent或多個extent套件
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- SQL Server 禁用擴充套件儲存過程SQLServer套件儲存過程
- 最佳VSCode的增強型Git擴充套件外掛VSCodeGit套件
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP