‘壹’ 数据库插入数据时报ora-08103错误 再次执行该插入语句通过
【Oracle数据恢复】ORA-08103错误解析
如果自己搞不定可以找诗檀软件专业数据库修复团队成员帮您恢复!
ORA-8103是我们Database Consultant 经常要遇到的一个问题,了解ORA-8103的成因非常重要。
【数据恢复】利用构造ROWID实现无备份情况下绕过ORA-1578、ORA-8103、ORA-1410等逻辑/物理坏块问题
简单来说ORA-8103 的主要成因有2类:
数据块的 block type 类型 是 无效的 或者读出来的块类型与Oracle期望的不一致。 例如 Oracle 认为该数据块的类型为data(type=6),但实际却不是。
数据块中的data_object_id 和 数据字典中的data_object_id不匹配
针对ORA-8103问题 我们优先推荐一些措施:
ORA-08103问题的诊断最好是能生成8103错误的ERROR STACK TRACE, 在TRACE中会记录具体引发8103的对象的OBJ和OBJD,这便于我们定位可能存在corruption的对象。
问题在于往往前台进程遇到ORA-08103错误不会在后台生成TRACE文件,这需要我们手动设置8103 触发ERRORSTACK的EVENTS:
ALTER SYSTEM SET EVENTS ’8103 TRACE NAME ERRORSTACK LEVEL 3′;
解决思路包括:
1. 通过OBJD和DBA定位到具体的表名和块号
2. 有条件的情况下对该表做一个analyze .. validate structure
3. 有条件的情况下对该表所在tablespace做一个 dbms_space_admin.ASSM_TABLESPACE_VERIFY
4. 有条件的情况下move这张表或者相关的分区,尝试绕过该问题
5. 有条件的情况下降该表或分区移动到MSSM表空间上,绕过该问题
execute dbms_space_admin.tablespace_verify(‘&tablespace_name’)
oradebug setmypid
oradebug tracefile_name
execute dbms_space_admin.assm_tablespace_verify(‘&tablespace_name’,dbms_space_admin.TS_VERIFY_BITMAPS)
oradebug setmypid
oradebug tracefile_name
针对不同的 analyze validate structure 后得到的结果 , 我们可以得到一些初步的结论:
如果执行 flush buffer cache之后再次analyze validate structure不再报ORA-8103错误则说明:
可能是完全正常的现象,之前的ORA-8103正是也因为对象正在被DROP/TRUNCATE而导致SELECT报ORA-8103。一般来说Call Stack会显示进程正尝试访问该段的segment header。 更多信息可以参考BUG 7441661
也可能该问题仅仅发生在buffer cache层,而没有发生在DISK上。通过flush buffer_cache若能解决,则一般是这种情况,往往是Buffer Cache管理的BUG 。
如果执行 flush buffer cache之后再次analyze validate structure再次报ORA-8103错误则说明:
如果mp对应的数据块发现 该块在逻辑上是完整一致的(也可以用bbed/dbv工具验证), 则有可能是Lost Write,则不是被其他对象重格式化使用了。
这里判断Lost Write的一个重要手段是 对块做recover/blockrecover,如果recover能修复该块,则说明是因为Lost Write引起了本ORA-8103问题,如果不是则说明99%的可能性是BUG引起的。
常见的一种现象是 使用第三方工具在数据库打开的情况下 数据库,这些工具的BUG可能导致 老的版本的block到目标新库中。
另一种可能是 extent盘区级别的不一致。 同一个数据块/extent 可能 同时属于 2个数据段segment,这导致其中的一个被后者覆盖。 通过recover的方式是无法修复这种场景的, 因为这种逻辑的讹误发生在表空间级别的extent信息上。 可以检查dba_extents/dba_segments/dba_free_space这些视图来确定问题数据块到底是否同时属于多个对象, 或者 一个数据块 同时出现在dba_extents/dba_segments/dba_free_space 三个视图中, 因为 used extent 不该出现在dba_free_space中,而free extent不该在dba_extents,当然要排除recyclebin中对象的影响。 绝大多数情况下这种extent逻辑不一致的现象, 被称作extent overlap , 通常是Oracle Space Management空间管理层面的BUG。
在对ORA-8103问题的诊断过程中 定位问题的OBJD异常重要。应当说准确地将ORA-8103错误与BUG定位起来是有难度的,因为这往往需要涉及到redo mp以发现到底是哪些opcode造成了后续的objd 或 block type 不一致。在一些BUG中我们发现,由于可能的变量陈旧,造成objd的结构未合理清除, 之后就发现block上的objd是错的了,可能遇到ORA-8103也可能是ORA-1410, 这引起了后续其他的逻辑讹误,以至于很难通过TRACE/REDO LOG DUMP来定位原始问题所在。 这也是为什么虽然在例如版本10.2.0.4上有几个ORA-8103的bug Note, 但这些BUG最终未被close为real software bug即真的软件BUG , 大多都是不了了之,因为在用户现场的TRACE和REDO DUMP都未必能真实定位到问题所在,这也是为什么我们要说逻辑讹误的分析和处理原要比物理讹误来的复杂。
Maclean的经验是 在有大量Oracle DB的环境下 一年出个几次的逻辑/物理坏块是很正常的事情, 对于物理讹误 我们只要切实备份即可99%得解决。 而对于逻辑坏块可做的 事情不多, 打最新的补丁 开 db_block_checking、db_block_checksum几件事情而已。
值得一说的是 如果去读一下ORA-8103的一些Bug Note,可以发现使用 LOB、APPEND INSERT、PARALLEL INSERT、exchange partition 、Split partition、advanced compression、HCC 混合列压缩往往是引起ORA-8103的高危操作 , 但实际我们又不可能放弃上述操作。
如果自己搞不定可以找ASKMACLEAN专业数据库修复团队成员帮您恢复!
‘贰’ oracle 混合列压缩 可以提高多少性能
"Exadata Storage Server 提供了一种非常先进的压缩功能,称作混合列压缩 (HCC),可显着减少大型数据库的存储占用。
混合列压缩可实现最高水平的数据压缩,由于 I/O 减少,可大幅降低成本并显着提高性能,这对于分析负载尤为有效。存储压缩率取决于具体的数据类型,通常在 5 至 20 倍之间。"
‘叁’ 1.1 什么是Oracle数据库
在这里我必须插几句,说说我对拉里•埃里森的崇拜之情。我曾经崇拜过乔布斯,不过那是我对80年代发明苹果电脑的乔布斯的崇拜,也许iPhone是乔布斯人生辉煌的顶点,但是我只崇拜发明了那台绿色字符的小电脑的乔布斯;我也曾崇拜比尔•盖茨,不过那是我对DOS 3.0的崇拜。但自从听说了拉里用锤子为办公室开辟网线通道的故事(不管这个故事是不是真实的),我就开始崇拜他了。用圣迹来命名一家公司和一个产品,这不是我们这种凡夫俗子能够做到的。Oracle也确实像圣迹一样,深深地影响着全世界。 Oracle RDBMS是一款十分优秀的关系型数据库产品,Oracle从头到尾都是一个RDBMS,是针对OLTP系统进行设计的,这一点从它底层的块结构就可以看出。Oracle在大并发量和海量数据关系型检索方面具有十分优越的性能,但是它并不擅长OLAP,因为它不支持列压缩存储(当然,从exadata开始,Oracle也能够支持混合列压缩,这是一种行存储和列压缩的混合模式,目前只在exadata数据库一体机上实现)。与其他关系型数据库相比,Oracle在某些方面更为优秀,但也有其不足的地方,因此它绝对不是万能的。优势和劣势都是与生俱来的,这是由Oracle数据库的基本架构和数据存储的基础结构所决定的,优化只能解决局部性的问题,有限度地提升其性能,但是绝对无法完全掩盖结构性问题带来的负面影响。Oracle的优势在于大并发量下的高吞吐能力,因此很适合大型企业级应用。但是如果我们在一个并发量和数据量都不是很大的系统中,对Oracle和MS SQL Server进行比较,就不难发现Oracle并没有多大的优势,甚至在某些方面还不如后者。 再往更为本质的方面去探讨,Oracle是一个RDBMS系统,也是一款应用软件。Oracle数据库除了将数据存储于文件中外,还通过一个被称为实例的后台机制向外提供服务,这两部分我们将在随后的两节中详细介绍,这里不做过多的描述。我们在这里仅仅讨论作为应用程序的Oracle RDBMS系统,它必须依赖于某个操作系统或硬件体系。和我们自己编写的程序一样,Oracle必须适应于某个操作系统,并充分利用操作系统提供的资源,反过来,操作系统也必须能够将资源提供给Oracle数据库使用。在一个仅仅运行Oracle RDBMS的系统上,操作系统应该被调整为能够将绝大多数的资源都提供给Oracle数据库。这样,Oracle的进程就能够最大可能地得到足够的系统资源。 讨论这个似乎又有点跑题了,其实不然,只有充分了解Oracle的本质,我们才不会神化Oracle。Oracle的本质就是一款软件、一个程序,那么它就具备程序的一切特征,包括可能出现的bug。 但是Oracle不是一个简单的程序,而是十分复杂的体系。首先,Oracle需要将数据存储在数据文件中,为了能够支持大量的并发用户访问数据库,并且提高数据库的访问性能,Oracle需要引入共享内存,从而实现资源的共享。比如,针对SQL引擎,每个SQL最终将会被解析为一系列的执行步骤,这就是我们常说的执行计划。如果同一个SQL执行多次,每次都要重新生成执行计划,那么效率就比较低下了,Oracle引入了共享池来实现这方面的共享。同样,如果一个数据块每次读取都要访问文件,那么效率就不高了,于是Oracle引入了DB Cache来缓存这些数据。同一个数据块可能被多个用户修改,如果每次修改就要直接存盘,那么效率也会降低,于是Oracle设计了DBWR进程,来专门负责将数据块写入文件。这似乎很复杂,不过这一切对于架构师来说很好理解。架构设计的目的就是有效地将功能划分成不同的组成部分,然后让这些部分能够很好地协同工作,从而达到最好的效果,因此架构师很容易做出类似的设计。 实际上,作为一个应用程序的Oracle,它的实现原理是十分朴实的,并不像我们想象的那么神秘。前几天我碰到一个案例,有个客户的Oracle 9.2.0.6数据库突然出现了故障,sqlplus通过sysdba能够登录,并且能够访问一些系统视图,比如v$session,但如果使用普通用户登录就会被挂起。通过HANGANALYZE工具分析,没有发现任何异常。然而,在检查Oracle后台进程的时候,我们发现所有的Oracle后台进程和绝大多数前台进程都消失了。客户很是不解,为什么会这样呢?检查日志,没有发现任何异常。于是我们使用shutdown abort关闭了实例,并且进行了重启。我们都觉得没有日志,很难分析,也就没有深入研究。 第二天,客户又找到了我,说数据库又出现了昨天的情况,这回所有的Oracle进程,包括前台进程、后台进程,统统没有了,而且没有任何的日志产生。我考虑了半天,突然有所感悟,Oracle的实例实际上也是一款应用软件,由多个进程组成,任何一个进程发现系统存在异常,都会第一时间记录日志,如果问题十分严重,就会关闭实例。我们可以使用sysdba账号登录系统,并且能够在HANGANALYZE工具中看到会话的信息,说明Oracle的共享内存还存在,只是所有的进程都没有了。这种情况只有一种可能,就是所有的Oracle后台进程都是在同一个时间点被终止的,而且不是程序自己退出的(因为程序自己退出,应该有机会完成自己的退出业务逻辑,比如写日志记录故障),而是被外力强行终止的。 从上面的分析,很自然就能联想到Oracle的后台进程很可能是被人为杀掉了。于是我做了一个实验,发现如果杀掉所有的后台进程,Oracle的共享内存还是存在的,并且能够通过sysdba账号访问,普通用户登录由于缺乏后台进程的支持,会被挂起。这个现象和客户目前碰到的问题十分相似。 发现这个问题的真相只有一个渠道,就是从应用程序本质上去考虑,这样才能得出所有的后台进程都是在同一时间被终止的结论,并找出其原因。只有外部力量的介入,才有可能出现所有后台进程全部终止,而共享内存还保持正常的现象,这绝对不是某个bug能产生的结果。排除了bug的影响,我们才能把主要精力集中在正确的方向上。 到这里,对于这个案例的分析就接近尾声了,本节并没有很深入地介绍什么是Oracle,而是更加直接地介绍了Oracle的本质。Oracle在本质上就是一组应用软件,它也具备所有应用软件所具备的特征。了解这一点,是我们今后解决任何问题的基础。任何看似妖异的现象,都离不开Oracle作为应用软件的本质,都无法违背应用软件所遵循的规律。 作为应用程序的Oracle,必须依赖于其运行的系统环境,Oracle数据库的处理能力和性能也依赖于主机硬件、存储、网络和操作系统等因素,因此作为DBA不能仅仅就Oracle而论Oracle,还必须熟悉Oracle运行所依赖的环境。作为应用程序的Oracle,会和操作系统中的其他进程竞争有限的系统资源,因此,在数据库服务器上做一些比较大的操作时,一定要谨慎,因为这些操作可能会使Oracle数据库出现问题。 Oracle不仅是特殊的应用程序,更是庞大的数据库管理系统,它包含了一个RDBMS管理系统和其他一系列应用程序。Oracle的核心RDBMS管理系统包含在$ORACLE_HOME/bin/oracle映像、$ORACLE_HOME/lib/libclntsh.so等中,而sqlplus、exp等则是一些Oracle数据库的工具。tnslsnr是Oracle的网络连接部件,用于连接客户端到RDBMS。这些应用程序都被安装在ORACLE HOME目录下。 通过上述应用程序,RDBMS管理系统及其工具,用户就可以创建、管理数据库。另外,用户还可以通过sqlplus工具,使用create database命令去创建一个数据库,也可以使用startup和shutdown命令去启动和关闭数据库。 数据库是独立的,从物理结构上看,它是由一系列文件组成的,包括参数文件、口令文件、控制文件、数据文件、日志文件等。一套完整的数据库,只要其所有的文件都是完整的,那么即使数据库的RDBMS管理系统遭到破坏,只要重新安装和数据库版本一致的RDBMS管理系统,该数据库就可以重新启用。其实所谓重新启用,本质上就是可以在某个实例中打开这个数据库,供客户使用。 另外需要注意的是,Oracle数据库是一个RDBMS管理系统,其本质是关系型数据库。关系型数据库是十分适合OLTP应用的,因为它存储的是一系列的关系,各种关系以表的形式被存储起来。比如,春节前铁路网上售票系统崩溃,有人分析这是由于铁路系统固步自封,没有使用国外某大厂商的产品,而选用了通用RDBMS数据库产品所导致的性能问题,如果选用了某国际知名厂商的网状数据库,就不会有问题了。这个说法看似有理,实际上,如果足够了解RDBMS,就知道其不值一驳了,因为铁路售票系统是十分典型的OLTP应用。 另外,由于Oracle是行存储的RDBMS数据库,这一特点也使其十分适合OLTP应用。从Oracle数据库的内部数据结构可以看出,Oracle在行存储数据方面下足了功夫,甚至连行锁都是设置在行头中的。在行锁的性能方面,Oracle的表现极为优秀,这一点毋庸置疑。不过这种设计,可能不适合一些经常以列为访问对象的OLAP系统,列压缩技术才是实现这类应用的最佳解决方案。
‘肆’ 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说的那么强劲,还有待于验证。
‘伍’ 如何把图片压缩成指定大小
你可以用这种在线的图片压缩工具,就可以把图片文件压缩到你期望的体积大小,比如你将压缩数值设置到100kb,稍等几秒钟之后,在线图片压缩工具就已经把图片的文件大小压缩到最高100kb了。换句话说,你设定压缩到多少kb的期望值,他压缩完的输出图片就是多少kb大小了,非常方便。在线智能图片压缩,压缩图片体积大小
在线图片智能压缩使用步骤:
一、首先点击加号添加需要压缩的图片。目前已知支持对jpg、png、webp、bmp等多种常见的图片格式进行压缩,如果选择图片后正常显示并能够压缩成功,则代表支持该图片格式。
二、可以自行修改图片需要被压缩到的最大宽高尺寸,默认为图片原始的宽高尺寸,并且宽高比例是自动锁定的,确保图片不会变形。
三、必须设置图片被压缩后,期望输出的压缩之后图片文件的最大占用空间,该选项是必填的。
四、选择图片压缩的算法。默认为智能混合压缩算法,绝大多数情况下使用默认算法进行图片压缩即可。
五、当你设置压缩后的大小单位为”Kb“时,压缩大小的设定值不能小于1Kb,但图片压缩后的最终文件大小是可以小于1Kb的。
‘陆’ 丰田系统状态过浓
短期燃油修正值和长期燃油修正值的总和已超出故障设定范围值以外,说明实际的空燃比处于过浓的状态,解决方法如下:
1、可能是空气流量传感器脏污或损坏以及发动机电路,油路故障,从车上拆下空气流量传感器,使用压缩空气清理,再装车观察数据流。
2、拆检火花塞时,发现所有气缸的火花塞都没有安装到规定扭力,十分松动,并且所有气缸的火花塞点火极点偏黑。至此,由于火花塞拧紧力矩不够,导致火花塞点火能量不足,导致可燃混合气燃烧不充分,超出燃油修正范围,发动机故障灯报警。
汽车发动机系统过浓的故障分析:
1、混合气过稀的主要原因是喷油量不足,各种进气传感器不能准确检测出进气量。
2、积碳过多、喷油被积碳吸附,氧传感器闭环控制失效,混合气(喷油量)过多。
3、怠速、发动机满足扭矩,导致混合气过浓,氧传感失效,进气量检测不准确。
4、过浓会出现车没劲,排气管子冒烟,过稀会出现放炮声,车没劲不稳定。
‘柒’ EPA《燃油经济性指南》十年大数据对比,这些结果你绝对想不到
十年,这个行业到底发生了多大的变化?
没有什么比数据更有说服力了。
青主最近简单对比了一下EPA(美国环保署)发布的2020版和2010版的《燃油经济性指南》,从"能效"——汽车行业最重要的技术维度——来看看这个行业的巨大变化。
这16款车型中,十年间能效提升幅度最大的是本田雅阁,2020款雅阁市区能效比2010款提升了42.9%!第二名是本田CR-V,市区能效提升了33.3%,第三名是凯美瑞2.5L,市区能效提升了31.8%。
不过,本田的能效提升主要得益于用1.5T发动机替代以前的2.4L自吸发动机,如果是同类型、同排量发动机对比,那么10年间能效提升幅度最大的是凯美瑞2.5L,同样搭载2.5L自吸发动机,2020款凯美瑞市区和高速工况比2010款的能效分别提升了31.8%和28.1%;
第二名是同样搭载2.5L发动机的丰田RAV4,10年间市区和高速工况能效提升幅度是27.3%和25.0%;
第三名是宝马5系,同样搭载3.0T发动机的宝马540i,市区和高速能效比10年前的宝马535i,分别提升了29.4%和15.4%。
从上表也可以明显看出,采用小排量增压发动机替代大排量自吸发动机之后,市区工况能效提升幅度更加明显,但高速工况则提升幅度有限。
和同期优秀的自吸发动机相比,小排量涡轮增压发动机在能效上也并没有什么优势。比如高尔夫1.4T,两种工况下的能效都不如卡罗拉1.8L;翼虎1.5T的能效也同样逊色于RAV42.5L;奔驰E350虽然改用了2.0T发动机,但是市区和高速工况能效,也只是和雷克萨斯ES3.5L基本持平。
所以,如果从实际能效的角度出发,我们对小排量涡轮增压可能真的是误解了。
文|青主
本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。
‘捌’ 汽车压缩比是指什么
汽车压缩比是指汽车发动机的性能,压缩比作为发动机非常重要的参数,是活塞在下止点压缩开始时的气体体积与活塞在上止点压缩终了时的气体体积之比。从动力性和经济性方面来说,压缩比越大越好。压缩比高,动力性好、热效率高。
较高压缩比的发动机可以使用更高标号的燃油。燃油标号越高,燃烧速度就越慢,爆震产生的可能性就越低;反之,低标号燃油的燃烧速度较快,爆震爆震产生的可能性大。
高压缩比车辆的油品选择。
高压缩比的发动机如果选用低标号汽油,会使汽缸温度剧升,汽油燃烧不完全,机器强烈震动,从而使输出功率下降,机件受损。低压缩比的发动机硬要用高标号油,就会出现“滞燃”现象,即压到了头它还不到自燃点,一样会出现燃烧不完全现象,对发动机也没什么好处。
车辆越高档对燃油质量的要求也越高,例如30万元以上的中高档车,就只能加95号或97号汽油,而这里说的95号和97号代表的只是汽油中的辛烷值能量的大与小,并不能说明97号汽油就比93号汽油清洁。
以上内容参考凤凰网——解读涡轮增压发动机压缩比为何这么低
‘玖’ 如何启用basic compression
Oracle提供了一下几种类型的表压缩方法:
1、Basic Compression:压缩等级High,CPU开销较小
2、OLTP Compression:压缩等级High,CPU开销较小
3、Warehouse Compression:压缩等级Higher,CPU开
销较大(取决于压缩参数是Low还是High,默认是HIGH)
4、Archive Compression:压缩等级Highest,CPU开销很大
(取决于压缩参数是Low还是High,默认是LOW)
当使用Basic Compression,warehouse
Compression,Archive Compression类型的压缩时,
尽在发生批量数据导入时才会执行压缩。
OLTP Compression被用于联机事务处理系统,
可以对任意的SQL操作执行数据压缩。
Warehouse Compression和Archive Compression可
以获得很高的压缩等级,因为它们采用了Hybrid Columnar
(混合列)压缩技术,Hybrid Columnar采用一种改良的列
的存储形式替代一行为主的存储形式。
Hybird Columnar技术允许将相同的数据存储在一起,
提高了压缩算法的效率。当使用混合列压缩算法时,
将导致更多的CPU开销,因此这种压缩技术适用于更
新不频繁的数据。
之前未压缩的表可以通过alter table ... compression ...
语句进行压缩。
在这种情况下,压缩启用前的记录不会被压缩,
只有新插入或更新的数据才会进行压缩。
同样,通过alter table ... nocompression ...语句解除对一个表的压缩,
表内已压缩的数据还会继续保持压缩的状态,新插入的数据就不再被压缩。
表压缩语法:
CREATE TABLE table_name (column_defination...)
COMPRESS FOR [OLTP]|[QUERY|ARCHIVE
[LOW|HIGH]];
ALTER TABLE table_name COMPRESS FOR [OLTP]|
[QUERY|ARCHIVE [LOW|HIGH]];