導航:首頁 > 文件處理 > oracle表壓縮語句

oracle表壓縮語句

發布時間:2022-05-08 08:44:28

壓縮oracle數據文件

你意思是收縮一下表空間大小,直接收縮不一定能成功,因為可能尾部已經用了,建議建新表空間,再將表和索引移到新的表空間上,然後刪除舊的表空間

Ⅱ 如何壓縮oracle海量數據

一、應用場合
答:正如上面所說,壓縮技術一般應用在「海量數據」的范疇,在大數據量下並且重復率高的情境下應該的效果才好,適合於OLAP(報表系統)不適合OLTP(在線交易系統),當數據量小時作用還不是很大,只要數據量達到一定程度的時候使用這門技術才有意義。
二、壓縮技術的好處
1.節約空間:我認為壓縮技術的最大好處就是節約空間,在存儲設備空間很緊張的情況下更需要使用壓縮技術來緩解
2.減少memory/IO開銷:當使用了壓縮技術後,同等記錄對應的數據塊相對較少,自然而然IO開銷就小了
3.提高數據處理效率:原本10個數據塊的,經過壓縮後變成5個數據塊,但還是那些數據,可效率提高了一倍。
三、壓縮原理
答:我們都用過rar壓縮zip壓縮,其實這些壓縮的原理都很相似,當然在細微處理上有不同,數據塊壓縮原理上是使用長度較短符號來代替列中的每個值,由於符號佔用空間小於實際值,從而達到節約空間的效果,當列中重復值越多壓縮效果越好。
四、數據壓縮不適合OLTP系統
1.OLTP是一種多事務短時間片系統,有大量的DML操作,而DML操作我們都知道是有鎖lock的(insert update delete)當數據塊中記錄數多起來時,導致訪問這個數據塊的用戶就多,就是產生爭用和等待,從而降低了效率。
2.數據插入、更新和索引鍵值更新時,都要先解壓縮再更新,等待的時間會更長。
五、分區表的壓縮
1.分區表的每個分區都可以獨立壓縮
2.有些時候,分區表在創建時不設置分區壓縮屬性,當某個分區需要壓縮時,再獨立進行壓縮
3.如果在表級設置壓縮屬性的話,那麼所有分區都會啟動壓縮功能,反正如果是某幾個分區獨立壓縮,表級屬性上什麼也不寫的。
實驗
create table leo_partition1 (object_id,object_name) 創建一個六個分區的分區表,沒有指定壓縮
partition by range (object_id)
(
partition leo_p1 values less than (1000),
partition leo_p2 values less than (2000),
partition leo_p3 values less than (3000),
partition leo_p4 values less than (4000),
partition leo_p5 values less than (5000),
partition leo_max values less than (maxvalue)
)
as select object_id,object_name from dba_objects;
LS@LEO> select count(*) from leo_partition1;
COUNT(*)
----------
10351
LS@LEO> select partition_name,compression from user_tab_partitions where table_name='LEO_PARTITION1';
PARTITION_NAME COMPRESS
------------------------------ --------
LEO_MAX DISABLED
LEO_P1 DISABLED
LEO_P2 DISABLED
LEO_P3 DISABLED
LEO_P4 DISABLED
LEO_P5 DISABLED
LS@LEO> alter table leo_partition1 compress; 例如 定義表級壓縮屬性,此時所有分區都壓縮
LS@LEO> alter table leo_partition1 modify partition leo_p1 compress; 我們測試准對leo_p1 和 leo_p5分區進行壓縮,來說明分區可以獨立壓縮
Table altered.
LS@LEO> alter table leo_partition1 modify partition leo_p5 compress;
Table altered.
LS@LEO> select partition_name,compression from user_tab_partitions where table_name='LEO_PARTITION1';
PARTITION_NAME COMPRESS
------------------------------ -----------------------
LEO_MAX DISABLED
LEO_P1 ENABLED

Ⅲ 在oracle中,為什麼要把新建的表做壓縮處理

你說的是創建壓縮表吧.
壓縮表的主要作用是:通過消除在資料庫塊中的重復數據來實現空間節約
實現原理:比較數據塊中包含的所有欄位或記錄,其中重復的數據只在位於數據塊開始部分的記號表(Symbol Table)中存儲一份,在其他行或欄位出現同樣的數據時,只記錄一個指向記號表中相關數據的指針。
命令:
創建壓縮表:
create table haha(
......
) compress;
alter table haha compress;
alter table haha nocompress;

Ⅳ oracle11g怎麼建立壓縮表

在數據量變的很大的情況下,可以考慮表壓縮,減少磁碟的存儲,減少buffer cache的消耗,加快查詢的速度,壓縮需要在數據載入和dml的時候消耗一些cpu.表壓縮對於應用是透明的。

你可以在表空間,表或分區級別指定壓縮,如果在表空間級別指定壓縮,那麼這個表空間中的所有表默認都是壓縮的。

壓縮會發生在數據插入,更新或批量載入到表時。有幾種類型的壓縮。基本的,oltp的,dss的,歸檔的。他們的cpu消耗見文檔。

當使用基本壓縮,數據倉庫壓縮,或歸檔壓縮的時候,壓縮僅僅是在批量載入到一個表的時候發生。當你使用了oltp壓縮,壓縮發生在數據插入,更新,批量載入。

如果你使用了alter table命令讓表啟用壓縮,那麼對於已存在的數據是不受影響的,只有在啟用壓縮後的插入,或更新會受影響。也可以使用ALTER TABLE…NOCOMPRESS將一個表設置成非壓縮,對於已經的壓縮的表是沒有影響的,壓縮的數據還是壓縮的,只是新插入的數據是不被壓縮。

創建一個oltp壓縮類型的表
CREATE TABLE orders … COMPRESS FOR OLTP;

如果你不指定壓縮的類型,那麼默認的情況下是基本壓縮類型。下面的2個語句是等價的。
CREATE TABLE sales_history … COMPRESS BASIC;

CREATE TABLE sales_history … COMPRESS;

下面的表是一個數據倉庫壓縮類型的表,對於經常查詢,並且沒有dml的表適用。
CREATE TABLE sales_history … COMPRESS FOR QUERY;

創建一個歸檔壓縮類型的表
CREATE TABLE sales_history … COMPRESS FOR ARCHIVE;

表可以包含壓縮和非壓縮的分區,並且不同的分區的壓縮的類型可以是不同的,如果在分區上指定的壓縮的類型與表上指定的壓縮的類型不同,那麼分區上的優先。

查看錶是否是壓縮的,及分區是否是壓縮的。
SQL> SELECT table_name, compression, compress_for FROM user_tables;

SELECT table_name, partition_name, compression,compress_for
FROM user_tab_partitions;

查看錶中的行是什麼壓縮類型
SELECT DECODE(DBMS_COMPRESSION.GET_COMPRESSION_TYPE(
ownname => 『HR』,
tabname => 『EMPLOYEES』,
row_id => 『AAAVEIAAGAAAABTAAD』),
1, 『No Compression』,
2, 『Basic or OLTP Compression』,
4, 『Hybrid Columnar Compression for Query High』,
8, 『Hybrid Columnar Compression for Query Low』,
16, 『Hybrid Columnar Compression for Archive High』,
32, 『Hybrid Columnar Compression for Archive Low』,
『Unknown Compression Type』) compression_type
FROM DUAL;

修改壓縮的級別

如果表是分區表,使用在線重定義可以修改表的壓縮級別。如果表是分分區表,那麼可以使用alter table ..move.. compress for語句修改表的壓縮級別,這個語句會阻塞dml操作。

對於壓縮表的限制:
1基本壓縮,你不能為添加的列指定默認的值。刪除列是不被支持的。
2oltp壓縮,如果要添加一個帶默認值的列,那麼需要指定not null,可以刪除列,但是數據只是在內部做了一個不被使用的標記而已。

3在線段收縮是不被支持的。

4上面的壓縮的方式不適合於lobs類型,他們有自己的壓縮方式。

5基本壓縮類型的表的pct_free參數自動的設置成0.

在上面的描述中可以看到對於基本類型的壓縮,沒有使用直接路徑插入的行及更新的行是不會被壓縮的。對於我們的oltp系統基本是沒有用處的,只測試下oltp的壓縮方式,這種方式對於沒有使用直接路徑插入的行及被更新的行都會壓縮。

SQL> select count(*) from xyu2;

COUNT(*)

22096384

SQL> set serveroutput on
SQL> exec show_space(『BAIXYU2』,』T』,』AUTO』);
Total Blocks……………………….334336
Total Bytes………………………..2738880512
Unused Blocks………………………1916
Unused Bytes……………………….15695872
Last Used Ext FileId………………..4
Last Used Ext BlockId……………….671872
Last Used Block…………………….6276

CREATE TABLE xyu3 COMPRESS FOR OLTP as select * from xyu2;

SQL> exec show_space(『BAIXYU3』,』T』,』AUTO』);
Total Blocks……………………….107520
Total Bytes………………………..880803840
Unused Blocks………………………112
Unused Bytes……………………….917504
Last Used Ext FileId………………..4
Last Used Ext BlockId……………….116224
Last Used Block…………………….912

看到使用的塊由33w下降到10w。壓縮效果還是不錯,但是是否使用還要結果上面的限制來根據實際情況評估。

Ⅳ oracle 什麼是compressed 表

Hybrid Columnar Compressed
首先我們要搞清楚,什麼是行壓縮,什麼叫列壓縮。我們熟悉的資料庫,如Oracle,MySQL等都是基於行的資料庫,就是行的不同欄位物理上存放在一起,還有一種是基於列的資料庫,就是每個欄位的不同行物理上存放在一起。他們的優缺點同樣突出:
基於行的資料庫,訪問一行非常方便,但是由於同一列的數據是分開存放的,如果要針對某一列進行查詢時,幾乎要掃描整個表才能得到結果。基於行資料庫的壓縮,稱為行壓縮。
基於列的資料庫,因為同一列的數據物理上放在一起,所以訪問一列非常方便,也就是說如果針對某一列進行查詢時,不需要掃描整個表,只需要掃描這一列的數據就可以了,但是訪問一行的全部欄位非常不方便(又是廢話)。基於列資料庫的壓縮,稱為列壓縮。
Oracle通常說的compress功能(包括11g R2的Advanced compress),都是行壓縮,因為Oracle是個基於行的資料庫。大概的方法就是在block頭部存放一個symbol table,然後將相同的值放在那裡,每行上相同的數據指向symbol table,以此來達到壓縮的目的。行壓縮的效果通常不好,因為我們知道行與行之間,其實相同的數據並不多。但是列壓縮則不同,因為相同列的數據類型相同,很容易達到很好的壓縮效果。
行壓縮和列壓縮都有其優缺點,而Oracle的混合列壓縮技術,實際上是融合了列壓縮的高壓縮比和行資料庫的訪問特性,將兩者的優點結合起來。Oracle提出了CU的概念(compress unit),在一個CU內,是一個基於列的存儲方式,採用列壓縮,但是一個CU內保存了行的所有欄位信息,所以在CU與CU之間,Oracle還是一個基於行的資料庫,訪問某一行,總是只在一個CU內。每個CU由一些連續的block組成,CU header中記錄了每一行的各個列在CU中的分布情況,在混合列壓縮模式下,一行通常是跨多個block的。
所以說混合列壓縮,結合了列壓縮和行訪問的特點,即可以提供非常高的壓縮率,又很好的保證了基於行類型的訪問。
Exadata的另一個重要功能是IO resource management,如果我們在一個Exadata上部署了很多個資料庫,可以用它來管理IO資源,這里就不作闡述了。
目前,我還沒有了解到在國內有Exadata的應用,而且資料也是比較少的。希望有機會可以真實的測試一下它的性能,我不懷疑他在DSS環境下的表現,但是對於OLTP類型的應用,是否真的象Oracle說的那麼強勁,還有待於驗證。

Ⅵ oracle怎樣實現備份文件自動壓縮

1、在需要儲存備份的硬碟中建文件夾如:databasebackup ;
2、拷貝exp.bat到 databasebackup 中;(把下列語句保存成exp.bat文件)
set filename=c:\databasebackup\%date:~0,10%
exp.exe system/system@testdb wner=ewms file=%filename%.dmp log=%filename%.log
rar a %filename%.zip %filename%.dmp %filename%.log
del %filename%.dmp
del %filename%.log
3、從資料庫系統C:\Program Files\WinRAR中拷貝Rar.exe文件到 C:\WINDOWS\system32中;
4、執行系統定時任務。

Ⅶ 怎樣壓縮Oracle數據文件

如果屬於一個單獨的表空間不是system等,可以把表空間刪除,或刪除所有對象後resize數據文件

Ⅷ 如何用exp導出oracle資料庫並壓縮

1. 它是一個可執行的文件 存放目錄/ORACLE_HOME/bin
exp導出工具將資料庫中數據備份壓縮成一個二進制系統文件. 它有三種模式:
a. 用戶模式:導出用戶所有對象以及對象中的數據;
b. 表模式: 導出用戶所有表或者指定的表;
c. 整個資料庫: 導出資料庫中所有對象。
2. 導出工具exp互動式命令行方式的使用的例子
$exp test/test123@appd
Enter array fetch buffer size: 4096 > 回車
Export file: expdat.dmp > m.dmp 生成導出的文件名
(1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > 3
Export table data (yes/no): yes > 回車wQeLin
Compress extents (yes/no): yes > 回車

Ⅸ 請問下Oracle 資料庫database 11g OLTP表壓縮特性是怎麼會事

給你一段吧

數據使用的現狀隨著企業業務的快速增長,企業資料庫中存儲的數據出現了大幅度的增加,並且隨著支撐企業運行的商業智能平台的實施,數據中心的數據更是出現了爆炸式增長,雖然磁碟存儲器的價格在不斷的下降,但是海量的數據存儲也是企業IT成本不可輕視的一個重要組成。更重要的是,企業的IT管理者需要確保在業務數據量不斷增長的情況下性能的穩定和系統的可擴展性。

Oracle Database 11g引入的高級壓縮特徵可以幫助客戶最大化資源使用率並減少成本。它是的IT管理者可以通過為所有類型的數據啟用壓縮來減少資料庫的存儲容量,雖然高級壓縮的最明顯的好處是減少存儲成本,而且Oracle Database 11g的高級壓縮技術被設計為減少IT架構所有組件的成本,包括內存和網路帶寬。

Oracle壓縮概述

Oracle的壓縮經歷了以下幾個版本:

Oracle 8i簡單的索引壓縮;

Oracle9ir2表級別的壓縮;

Oracle 10g LOB壓縮;

Oracle11g行級別壓縮;

相對於9iR2引入的表數據壓縮技術只能用於通過批量載入數據,而傳統的DML的數據不會壓縮,11g的表數據壓縮真正支持了各種DML語句從而也能夠用於OLTP環境(insert,update等)。

而且Oracle11g的壓縮使用了「基於數據塊的批次壓縮技術」,也就是說數據的壓縮不是在執行DML語句的時候實時發生的,一開始當一個數據塊空的時候,插入的數據並不被壓縮,所以這個時候對於性能是沒有影響的,數據塊壓縮的動作是在數據塊即將滿的時候才發生,這樣就保證了大部分DML語句的效率,並且,因為在數據塊將要滿的時候才發生的壓縮技術保證了最大的壓縮率,因為實際上壓縮是基於數據塊里相同的數據的。壓縮對比如下:

Oracle11g的壓縮選項

OLTP壓縮

允許在所有的DML操作包括INSERT,UPDATE,DELETE期間進行壓縮。該特性使得可以為所有應用啟用壓縮,並使用了智能的演算法確保寫操作期間的負載最小化(隨後我們將看到)。並且,壓縮的數據使用更少的磁碟空間並且能夠更有效的利用內存,並通過減少磁碟I/O來提高查詢的性能。

非結構化文件副本清除

Oracle11g壓縮技術採用了智能的技術來消除存儲在Oracle Database 11g中的文件拷貝,它不僅減少了存儲,並且在包含重復內容的寫和拷貝期間能夠極大地提高性能。

非結構化文件壓縮

通過使用額外的CPU資源,我們可以在資料庫內壓縮無結構的數據和文件數據。

備份數據壓縮

資料庫備份的空間需求和備份性能直接受到資料庫大小的影響,高級壓縮使得在使用RMAN和Oracle Data Pump進行備份時直接包含壓縮的備份數據來減少存儲容量並提高性能。

網路傳輸壓縮

高級壓縮選項提供了功能用於壓縮Oracle Data Guard重做數據,這可以提高網路帶寬的利用率。

11g壓縮特性的好處

Oracle11g的在線數據壓縮工具提供了以下好處:

節省大量的磁碟:根據存儲數據的不同,Oracle壓縮將大量節省磁碟空間;

更快的全表掃描、區間掃描:因為數據存儲在更少的數據塊中,全表掃描和索引區間掃描能夠使用更少的快提取行;

減少網路負載:因為數據僅在Oracle內壓縮和解壓縮,所以外部網路僅傳輸壓縮的數據塊。

隨著數據的快速增長,企業必須快速的適應這些改變而不會降低性能以及提高成本。Oracle Database 11g高級壓縮特性可以幫助客戶減少管理大量數據的資源和成本,它提供了一個自動化的壓縮功能使得IT管理者可以快速解決這些問題。

Ⅹ oracle資料庫表空間佔用太大,如何在不刪除表的情況下縮小佔用空間

alter table 表名 move和alter table 表名 shrink space都可以用來進行段收縮,降低高水位HWM,
也都可以用來消除行鏈接(Row Chaining)和行遷移(Row Migration),估計效果不明顯,看你的資料庫用途是干什麼的(如果是數據倉庫肯定是不明顯的)。

閱讀全文

與oracle表壓縮語句相關的資料

熱點內容
卡爾曼濾波演算法書籍 瀏覽:761
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:837
安卓怎麼下載60秒生存 瀏覽:797
外向式文件夾 瀏覽:229
dospdf 瀏覽:425
怎麼修改騰訊雲伺服器ip 瀏覽:380
pdftoeps 瀏覽:487
為什麼鴻蒙那麼像安卓 瀏覽:730
安卓手機怎麼拍自媒體視頻 瀏覽:180
單片機各個中斷的初始化 瀏覽:718
python怎麼集合元素 瀏覽:475
python逐條解讀 瀏覽:827
基於單片機的濕度控制 瀏覽:493
ios如何使用安卓的帳號 瀏覽:877
程序員公園采訪 瀏覽:805
程序員實戰教程要多長時間 瀏覽:968
企業數據加密技巧 瀏覽:129
租雲伺服器開發 瀏覽:807
程序員告白媽媽不同意 瀏覽:330
攻城掠地怎麼查看伺服器 瀏覽:595