oracle 大数据查询优化的方案
某数据库中的一张表A,表A的数据库量现在大概有10亿条数据之多.
最初的做法是全部存放在一个表空间中.造成现在的查询速度龟爬似的.现在不得不对数据库做出重新评估和优化.
最初的前提:
1.中应该建立的索引都已具备
2.查询语句都已经做到优化:现在类似于 select count(1) from A 这么简单的一句统计SQL都需要100S左右
tangren 回复
这么多数据,一般都要将一个时间段以前的数据归档到另一台服务器。
减少OLAP环境的负荷,统计可以通过日结等生成报表。
还有分区不一定能够提高查询速度。分区主要是为提高扩展性,高可用性设计,便于管理。
如果使用了分区,你在查询中要按分区键来查询才能利用分区排除。
索引也进行相应的分区,可建立本地分区索引。
10亿数据量是多长时间?需要每小时建立一个分区?
oracle 9i、10g都不能自动分区,你可以生成一个定时运行的脚本,或建立一个JOB来定时执行,
或者一次手动建立足够多的分区。
相关文档:
ORACLE EXPDP/IMPDP
2010-01-22 17:07
调用EXPDP
使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而
不能直接指定转储文件所在的OS目录.因此,使用EXPDP工具时,必须首先建立DIRECTORY对象.并且需要为数据库用户授予使用
DIRECTORY对象权限.
CREATE DIRECTORY dump dir AS ‘DUMP’; ......
创建例程:
-NEW -SID sid | -SRVC 服务 [-INTPWD 口令] [-MAXUSERS 数量] [-STARTMODE a|m] [-PFILE 文件] [-TIMEOUT 秒]
编辑例程:
-EDIT -SID sid [-NEWSID sid] [-INTPWD 口令] [-STARTMODE auto|manual] [-PFILE 文件名] [-SHUTMODE a|i|n] [-SHUTTYPE srv ......
建SEQUENCE序列
CREATE SEQUENCE 序列名字(例如:"URLIMAGE_SEQ") MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 101 CACHE 10 NOORDER NOCYCLE ;
建trigger 触发器
create or replace trigger 触发器名字(例如:URLIMAGE_TRI )
before ins ......
查看Oracle 表结构的创建和最后修改时间
SELECT a.owner, a.table_name, created, last_ddl_time
from dba_tables a, SYS.dba_objects b
WHERE a.tablespace_name = 'USERS'
AND a.owner = b.owner
AND a.table_name = b.object_name
AND object_type = 'TABL ......
下载解压了Oracle SQL Developer工具,运行时,启动不了,报错信息如下:
---------------------------
Unable to create an instance of the Java Virtual Machine
Located at path:
<SQLDEVELOPER>\jdk\jre\bin\client\jvm.dll
---------------------------
是JVM参数设置的问题,我的解决方案如下:
<SQ ......