关于oracle 压缩表】的更多相关文章

这周客户的问题非常多,总是说我的数据不对.于是我对数据梳理了以后发现以前认为是重复数据的,其实并不是,而是我忽略了一个维度.那么这样一来,我们的周详单表就会有500多万的数据.一个月按照4周计算,就要有2000万条数据.而我大概计算了一下,每一个周的分区要占用2G多的存储空间,要知道电信给我们的空间不过是500G左右,我们大家都在用,我一个人每周消耗2G,显然不合适. 这个时候有如下几个解决方案,第一个,将一个月或者几个月以前的数据干掉,以后客户需要的时候从数据仓库抽取数据,然后重新展现就好了.…
oracle压缩数据的处理基于数据库块,本质是通过消除在数据库中的重复数据来实现空间节约. 具体做法: 比较数据块中包含的所有字段或记录,其中重复的数据只在位于数据块开始部分的记号表(Symbol Table)中存储一份,在其他行或字段出现同样的数据时,只记录一个指向记号表中相关数据的指针. 性能分析: 1.在批量装载或插入数据的过程中,由于压缩的同时进行,会引起CPU使用率提高,及导致装载时间明显增加 2.对于普通的INSERT语句,由于没有执行压缩过程,性能几乎没有影响. 3.用DELETE…
今天在往一个压缩表增加一个字段可以增加成功,但在删除的时候报了个ORA-39726 unsupported add/drop column operation on compressed tables的错误.错误是不能对压缩表增加或删除字段,奇怪的可以增加,但是不能删除.即使将表MOVE为非压缩表也还是不可以删除. 最后终于找到了一种方法那就是先将该字段设置为UNUSED,然后在删除UNUSED字段即可. 例如:ALTER TABLE test SET UNUSED COLUMN ROUTERA…
oracle装载表即通过sqlloader的方式导入数据. Oracle 的SQL*LOADER可以将外部数据加载到数据库表中.下面是SQL*LOADER的基本特点: 1)能装入不同数据类型文件及多个数据文件的数据 2)可装入固定格式,自由定界以及可度长格式的数据 3)可以装入二进制,压缩十进制数据 4)一次可对多个表装入数据 5)连接多个物理记录装到一个记录中 6)对一单记录分解再装入到表中 7)可以用 数对制定列生成唯一的KEY 8)可对磁盘或 磁带数据文件装入制表中 9)提供装入错误报告…
Oracle的表锁死以及解锁 oracle 查看锁死的表,锁死的进程. select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode from v$locked_object lo, dba_objects ao, v$session sess where ao.object_id = lo.object_id and lo.session_id = sess.…
同事最近在忙数据一致性比对工作,需要对不同文本文件中的数据进行比对,有的文件较大,记录较多,如果用普通的文本编辑器打开的话,很显然,会很卡,甚至打不开. 基于此,可将该文本文件的数据导入到数据库中,在集合的层面进行比对. 那么如何将文本文件的数据导入到数据库中呢?在这里,主要利用了Oracle的外部表特性. Oracle外部表支持两种类型的驱动:一种是ORACLE_LOADER,外部表的数据必须来源于文件文件,另一种则是ORACLE_DATAPUMP,外部表的数据必须是二进制dump文件,该du…
外部表介绍 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件.因此,建立外部表时不会产生段.区.数据块等存储结构,只有与表相关的定义放在数据字典中.外部表,顾名思义,存储在数据库外面的表.当存取时才能从ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容进行修改(INSERT.UPDATE.DELETE操作).不能对外部表建立索引.因为创建索引就意味着要存在对应的索引记录.而外部表其实在没有存储在数据库中.故在外部是无法建立索引的.…
Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence 使用oracle11g插入数据时遇到这样一个问题: 1 --创建测试表-- 2 CREATE TABLE tbl_test( 3 test_id NUMBER PRIMARY KEY, 4 test_name VARCHAR2(20) 5 ); 6 7 --为tbl_test创建序列-- 8 CREATE SEQUENCE seq_test 9 INCREMENT BY 1 -- 每次加几个…
oracle执行表数据更新的时候,会遇到锁表问题,比方说,会遇到这样的问题,主要原因是这张表被其他人占用,修改数据没有提交.oracle为了避免脏数据的产生,在其安全机制下,锁住该表. 执行如下操作,select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid ; 可以查出,占用该表的用户,以及进程和时间等,查出该表被锁的相关信息…
oracle数据库表空间追加数据库文件方法   针对非大文件方式表空间,允许追加文件进行表空间的扩展,单个文件最大大小是32G  第一种方式:表空间增加数据文件    www.2cto.com   1.alter tablespace spacess1 add datafile 'G:\spacess01.DBF' size 30000M;  第二种方式:表空间增加数据文件,设置自增长,限制最大值    2.alter tablespace spacess1 add datafile 'G:\s…
当oracle单表数据量上亿时,对表进行alter table aa add column_1 varchar2(2) defalut 'Y';时,效率及安全性是必须考虑的因素. 本帖以2亿的数据表aa举例: alter table aa add column_1 varchar2(2) defalut 'Y'; Table altered Executed in 3600 seconds 直接用了一个小时,而且在这过程中是加上了表级锁,也就是连查询都是会被等待的,这是相当危险的操作. 为什么会…
Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据的原因.如果在建立数据库时没有设置, Oracle 默认的表空间大小为400M,当数据库中数据量达到这个值,再向数据库中导入数据就会报错.解决方法是 扩展表空间.可以选择将表容量扩大,比如扩展到5G,或者当表空间不够时每次自动增加一定的容量,如每次自增200M. 下面列出详细过程: 1.通过sql…
如何计算Oracle的表一条记录占用空间的大小? 如何计算Oracle的表记录占用空间的大小? 是把所有字段的大小都加起来吗?varchar(256),char,number算几个字节? ------解决方案-------------------- 第一行的列头信息所占字节数,再加上各个字段所占的字节数据,加起来是多少就是多少 列头信息记录每个字段的数据类型 ------解决方案-------------------- 1,你可以对表进行分析,然后在user_tables中可以看到平均的行长度(…
ORACLE查出表所有的触发器及触发器详细信息 一.查all_triggers表得到trigger_name Sql代码 select trigger_name from all_triggers where table_name='XXX'; 二.根据trigger_name查询出触发器详细信息 Sql代码 select text from all_source where type='TRIGGER' AND name='TR_XXX';…
来源于:  http://www.2cto.com/database/201507/418564.html 一.TEMP表空间作用 临时表空间主要用途是在数据库进行排序运算.管理索引.访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理.当 oracle 里需要用到 sort 的时候, PGA 中 sort_area_size 大小不够时,将会把数据放入临时表空间里进行排序,同时如果有异常情况的话,也会被放入临时表空间 , 正常来说,在完成 Select 语句.create inde…
Mysql 创建表之前判断表是否存在,如果存在则删除已有表 DROP TABLE IF EXISTS sys_area; CREATE TABLE sys_area ( id int NOT NULL AUTO_INCREMENT COMMENT '编号', parent_id varchar(64) NOT NULL COMMENT '父级编号', parent_ids varchar(2000) NOT NULL COMMENT '所有父级编号', name varchar(100) NOT…
ORACLE有个高速缓冲的概念,这个高速缓冲就是存放执行过的SQL语句,那oracle在执行sql语句的时候要做很多工作,例如解析sql语句,估算索引利用率,绑定变量,读取数据块等等这些操作.假设高速缓冲里已经存储了执行过的sql语句,那就直接匹配执行了,少了步骤,自然就快了,但是经过测试会发现高速缓冲只对简单的表起作用,多表的情况完全没有效果,例如在查询单表的时候那叫一个快,但是假设连接多个表,就龟速了.最重要一点,ORACLE的高速缓冲是全字符匹配的,什么意思呢,看下面三个select --…
oracle查询用户下的所有表 select * from all_tab_comments -- 查询所有用户的表,视图等select * from user_tab_comments -- 查询本用户的表,视图等select * from all_col_comments --查询所有用户的表的列名和注释.select * from user_col_comments -- 查询本用户的表的列名和注释select * from all_tab_columns --查询所有用户的表的列名等信息…
Oracle的表空间创建,可以采用网页的https://127.0.0.1:1158/em来进入oracle的页面进行创建表空间. 利用plsqldev.exe程序在表空间里添加数据: 首先要在users里创建一个新的用户,授权以权限,然后重新登录新用户,再然后在Tables里新建 输入名称和表空间选择,在列里输入内容 . 在表里面编辑数据…
总结一下Oracle数据库表级别的复制同步 一.通过触发器进行表的复制 原理,是监听表上都某一字段进行的DML操作,然后得到DML操作的数据,重新在另一个表上执行DML操作. 优点: 简单,编写一个触发器就可以,不需要过多的配置. 易修改,遇到了问题很好定位. 缺点:表大的话是有性能问题,如果表中含有blob列,是无法监听到其改变的,而且整个insert 必须先insert 一个空的blob,再进行update操作,而且很有可能出现数据不为空,blob为空的情况. 二.通过Stream进行表同步…
转自:http://blog.sina.com.cn/s/blog_68fe7e15010100an.html 之前因为不知道偶电脑是因为安装了oracle后,才导致的长达两周的开机速度要足足10分钟,以前只有一分钟不到!可以想象oracle的服务启动的强大,知道后,偶果断立即卸载掉!) 一.在oracle11G以前卸载oracle会存在卸载不干净,导致再次安装失败的情况,在运行services.msc打开服务,停止Oracle的所有服务. 二. oracle11G自带一个卸载批处理\app\A…
创建表空间和表ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE构成的oracle中的表就是一张存储数据的表.表空间是逻辑上的划分.方便管理的.数据表空间 (Tablespace)         存放数据总是需要空间, Oracle把一个数据库按功能划分若干空间来保存数据.当然数据存放在磁盘最终是以文件形式,所以一盘一个数据表空间包含一个以上的物理文件数据表         在仓库,我们可能有多间房子,每个房子又有多个货架,每架又有多层. 我们在数据库中存放数据,最…
Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据的原因.如果在建立数据库时没有设置, Oracle 默认的表空间大小为400M,当数据库中数据量达到这个值,再向数据库中导入数据就会报错.解决方法是 扩展表空间.可以选择将表容量扩大,比如扩展到5G,或者当表空间不够时每次自动增加一定的容量,如每次自增200M. 下面列出详细过程: 1.通过sql…
Oracle查找表的外键引用关系 select t1.table_name, t2.table_name as "TABLE_NAME(R)", t1.constraint_name, t1.r_constraint_name as "CONSTRAINT_NAME(R)", a1.column_name, a2.column_name as "COLUMN_NAME(R)" from user_constraints t1, user_cons…
Oracle建立表空间和用户 建立表空间和用户的步骤: 用户 建立:create user 用户名 identified by "密码"; 授权:grant create session to 用户名; grant create table to  用户名; grant create tablespace to  用户名; grant create view to  用户名; 表空间 建立表空间(一般建N个存数据的表空间和一个索引空间): create tablespace 表空间名…
文章出处:http://blog.csdn.net/haiross/article/details/38379615 Oracle:表名.字段名.constraint名的长度有限制 oracle 的命名规则: 1.要以字母开头 2.包含字母和数字,以及# $ 3.不能超过30个字符 这是Oracle的限制! 数据库 表名列名长度限制问题 今天修改数据库表名,感觉现有的定义列名都无含义...修改后被同事告知,列名有点长,怕有的数据库不支持.. 我头一次听说数据库表名和列名长度限制,so搜索下. 表…
Oracle数据库表空间使用量查询: select b.file_name 物理文件名,b.tablespace_name 表空间,b.bytes/1024/1024 大小M,(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M,substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率from dba_free_space a,dba_data_files bwhere a.file_id=b.fi…
原文:PowerDesigner生成的ORACLE 建表脚本中去掉对象的双引号,设置大.小写 若要将 CDM 中将 Entity的标识符都设为指定的大小写,则可以这么设定: 打开cdm的情况下,进入Tools-Model Options-Naming Convention,把Name和Code的标签的Charcter case选项设置成Uppercase或者Lowercase,只要不是Mixed Case(大小写混合)就行!把PD自动生成的ORACLE脚本去除双引号,可以如下设定: Databa…
oracle 修改表的sql语句     1增加一个列:ALTER TABLE 表名 ADD(列名 数据类型);如:ALTER TABLE emp ADD(license varchar2(256)); 2修改一个列的数据类型(一般限于修改长度,修改为一个不同类型时有诸多限制)ALTER TABLE 表名 MODIFY(列名 数据类型);如:ALTER TABLE emp MODIFY(weight NUMBER(3,0) NOT NULL); 3给列改名:ALTER TABLE 表名 RENA…
ORACLE有个高速缓冲的概念,这个高速缓冲就是存放执行过的SQL语句,那oracle在执行sql语句的时候要做很多工作,例如解析sql语句,估算索引利用率,绑定变量,读取数据块等等这些操作.假设高速缓冲里已经存储了执行过的sql语句,那就直接匹配执行了,少了步骤,自然就快了,但是经过测试会发现高速缓冲只对简单的表起作用,多表的情况完全没有效果,例如在查询单表的时候那叫一个快,但是假设连接多个表,就龟速了.最重要一点,ORACLE的高速缓冲是全字符匹配的,什么意思呢,看下面三个select --…