ORACLE索引与高性能SQL介绍
什么是索引 索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据; Oracle存储索引的数据结构是B*树,位图索引也是如此,只不过是叶子节点不同B*数索引; 索引由根节点、分支节点和叶子节点组成,上级索引块包含下级索引块的索引数据,叶节点包含索引数据和确定行实际位置的rowid。 使用索引的目的 加快查询速度 减少I/O操作 消除磁盘排序 何时使用索引 查询返回的记录数 排序表<40% 非排序表 <7% 表的碎片较多(频繁增加、删除) 索引的种类
Oracle高手必读,不要错过噢
1. 删除表的注意事项 在删除一个表中的全部数据时,须使用TRUNCATE TABLE 表名;因为用DROP TABLE,DELETE * FROM 表名时,TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。 2.having 子句的用法 having 子句对 group by 子句所确定的行组进行控制,having 子句条件中只允许涉及常量,聚组函数或group by 子句中的列. 3.外部联接"+"的用法 外部联接"+"按其在"="的左边或右边分左联接和右联接.若不带"+"运算符的表中的
Oracle 数据库的备份与恢复
Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。 一、 导出/导入(Export/Import) 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。 1、 简单导出数据(Export)和导入数据(Import) Oracle支持三种方式类型的输出: (1)、表方式(T方式),将指定表的数据导出。 (2)、用户方式(U方式),将指定用户的所有对象及数据导出。 (3)、全库方式(Full方式),瘵数据库中的所有对象导出
关于Oracle索引的一点认识
在使用Oracle的过程,我们就不能不考虑性能和SQL优化,而正确的使用索引是优化SQL中的很关键的因素。如果发现Oracle在有索引的情况下而没有使用索引,这并不是Oracle的优化器出错。在有些情况下Oracle确实会选择全表扫描(Full Table Scan),而非索引扫描(Index Scan)。比如:1、表未做分析或者分析信息太老,导致 Oracle 判断失误。2、根据表拥有的记录和数据块数,实际上全表扫描要比索引扫描更快。对第1种情况最常见的例子,是以下这样的count语句:select count(*) from table_name;在未作分析之前,它使用全表扫描,需要读取1000[
ORACLE碎片整理
JSPCN主页 | JSP空间 | JSP教程 | JSP下载 | JSP论坛 | 留言 | 关于JSPCN | 友情链接 | 联系我们 地图 做最专业的JSP中文网站 当前位置:首页--文章分类--数据库--ORACLE 文章搜索: 关键字 标题 内容 JSP中文网内容管理系统(JCMS)JSP虚拟主机网络笔记本网摘,图片,笔记收藏虚拟服务器 JSPCN文章目录分类 缓存区 [2581] 图片声音 [17] JSP配置 [219] 开发工具 [28] 上传问题 [27] 时间相关 [16]
Java调用Oracle的过程和函数
/** 调用数据库里的一个函数 一个函数本质上一个返回一个结果的存储过程,这个例子示范了怎么调用有in、out和in/out参数的函数 ***********************************/ CallableStatement cs; try { // 调用一个没有参数的函数; 函数返回 a VARCHAR // 预处理callable语句 cs = connection.prepareCall("{? = call myfunc}"); // 注册返回值类型 cs.registerOutParameter(1, i); // Execute and retrieve the returned value cs.execute();
Oracle分区技术
ORACLE的分区(Partitioning Option)是一种处理超大型表的技术。分区是一种“分而治之”的技术,通过将大表和索引分成可以管理的小块,从而避免了对每个表作为一个大的、单独的对象进行管理,为大量数据提供了可伸缩的性能。分区通过将操作分配给更小的存储单元,减少了需要进行管理操作的时间,并通过增强的并行处理提高了性能,通过屏蔽故障数据的分区,还增加了可用性。ORACLE的分区表的划分方法包括:按字段值进行划分的范围分区;按字段的HASH函数值进行的划分HASH分区;先按范围划分,再按HASH划分的复合分区;在ORACLE9i中又增强了
oracle 9i:为什么你需要非递增的行级锁
在今天的在线世界,许多客户就是不愿意等待。 数据记录的访问能力是你业务的关键所在。但是数据访问能力、时间限制及业务记录的准确性需要相互妥协的,这是由于你的事务处理系统的原因。 当一个员工修改信息时,数据服务器会锁住这一信息直到操作完成。在这一期间其他人都不可更改被锁住的信息。锁定信息直至一个变化完成被成为数据锁定。这是所有事务处理系统的基本功能。 许多服务器甚至阻止员工读取锁定的数据,这造成了一些不必要的业务延误。 表面上,多数数据服务器好象只提供行级锁,仅锁住那些工作中的数据行。事实上,多
oracle 9i:为什么你需要灵活的数据分区
macro 数据服务器管理、坏系统的恢复及低效率应用所带来的花费常常是惊人的。采用数据分区维护大数据存储将会使这些费用降低。 数据分区是通过将大的数据分割成较小的易于管理的部分,从而降低成本。但是一些数据服务器在增加了这一功能时却多分区的数据进行了限定,限制了你的业务发展。 Oracle没有任何这种数据大小的限制。 其它数据服务器虽然提供了分区,但仅提供了有限的数据分区方法。Oracle的分区( Partitioning Option)方式有 hash, range和composite 多种。这种灵活的分区方式好处是: 目标准确的数据服务器管理 高可用
Oracle自带的连接池类的一例
利用Oracle自带的连接池类的一例 /** 封装了对数据库的连接,用于处理SQL语句。 @author:yancheng(sharetop studio) @version:1.0.0 */ package DBUtil; import java.sql.*; import java.io.*; import javax.sql.*; import javax.naming.*; import oracle.jdbc.pool.*; public class OraPooledSQL { private PooledConnection dbpool; /** @param ConnectionURL 连接名 如: jdbc:odbc:myODBC @param UserID 用户名 @param PassWord 用户密码 */ public OraPooledSQL(String ConnectionURL,String UserID,String PassWord) {
Oracle安装后出现的问题
在Oracle装完后,重新启动入服务器的时候会出现:“share memory realm does not exist”这样的警告的“错误”,解决的办法是:在启动Oracle数据库的服务,以Oracle用户登陆步骤如下:(一数据库管理员身份启动Server Manager)$svrmgrl 回车svrmgrl>connect internal(等价于SYS连接,internael连接只能连接到专用数据库,不能连接到共享数据库)显示信息:connected。然后就要启动实例了。启动实例方式:(1)不装配数据库,通常是建立数据是使用:svrmgrl>startup nomount(2)装配数据库但不打开,通常在执行特定维护时使用,如
在oracle中限制返回结果集的大小
Oracle不支持类似于 MySQL 中的 limit. 但你还是可以rownum来限制返回的结果集的行数====================================================================================== 如果你只希望返回前十行纪录,你可以这样写: SELECT * FROM table WHERE ROWNUM<10; 但是下面的语句是不对的: SELECT * FROM table WHERE ROWNUM>90 AND ROWNUM<100; 这是因为 Oracle 认为这个条件不成立,所以没有返回。 你应该这样写: SELECT * FROM table WHERE ROWNUM<101; minus SELE
Oracle9i的简化SQL语法
Oracle对Oracle9i SQL 做了一些很重要的改进,包括一些令人兴奋的新特点,支持1:5的数量级和ISO99中的SQL标准。作为Oracle的补充,它包括以下新的TABLE JOIN的句法结构:CROSS IN??它在两个表格中创建了一个卡迪尔列,就象是在Oracle8i中没写WHERE时那样。NATURAL JOIN??这是一个很有用的Oracle9i的句法,它通过从WHERE子句中移动连接标准来改善SQL的稳定性 USING子句??它可以通过名字来具体指定连接 ON子句??这个句法允许在两个表格中为连接具体指定栏目的名头 LEFT OUTER JOIN??它返回表格中左边的行和右边的数值,如果没有
用ORACLE的高级复制实现内外网数据同步
本文简要介绍了ORACLE的高级复制功能,并通过一个实际项目,讨论了在内外网的两级DB中如何采用高级复制达到内外网的数据统一,最后给出配置脚本供大家参考。1、基本概念ORACLEORACLE是以高级结构化查询语言(SQL)为基础的大型关系数据库,通俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合。是客户/服务器(CLIENT/SERVER)体系结构的数据库之一。高级复制什么是复制?简单地说复制就是在由两个或者多个数据库系统构成的一个分布式数据库环境中拷贝数据的过程。高级复制,是在组成分布式数据库系统的多个数据库中复制和维护数据库对
Jsp中调用Oracle存储过程
create or replace procedure p_test2(i in number) asbegininsert into t values (i,'x'||to_char(i));commit;end;/<%@ page language="java" contentType="text/html;charset=gb2312"%><%@page import="java.sql.*"%><html><body><table><tr><td>aaa</td><td>bbb</td></tr><%String driver = "oracle.jdbc.driver.OracleDriver";String strUrl = "jdbc:oracle:thin:@192.168.1.6:1521:db";Class.fo
MYSQL到ORACLE程序迁移的注意事项
很多应用项目, 刚起步的时候用MYSQL数据库基本上能实现各种功能需求,随着应用用户的增多,数据量的增加,MYSQL渐渐地出现不堪重负的情况:连接很慢甚至宕机,于是就有把数据从MYSQL迁到ORACLE的需求,应用程序也要相应做一些修改。本人总结出以下几点注意事项,希望对大家有所帮助。1. 自动增长的数据类型处理MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。CREATE SEQUENCE 序列号的名称 (最
Oracle9i的全文检索技术
Oracle一直致力于全文检索技术的研究,当Oracle9i Rlease2发布之时,Oracle数据库的全文检索技术已经非常完美,Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力。Oracle Text是Oracle9i采用的新名称,在Oracle8/8i中它被称作Oracle interMedia Text,在Oracle8以前它的名称是Oracle ConText Cartridge。使用Oracle9i和Oracle Text,可以方便而有效地利用标准的SQL工具来构建基于文本的新的开发工具或对现有应用程序进行扩展。应用程序开发人员可以在任何使用文本的Oracle数据库应用程序中充分利用Oracl
Oracle9i PL/SQL编程的经验小结
1、当需要向表中装载大量的数据流或者需要处理大量的数据流的时候,能否使用管道提高处理效率? 管道函数对于改善并行查询的性能非常方便,它加快往表中加载数据的速度。管道函数的使用总结如下两点: 每当在查询里使用PL/SQL函数时,该查询将被序列化,即一个处理器只能运行一个查询实例,那么在这种情况下不可能使用并行查询(比如在数据仓库中要经常使用这项技术)。因此,为了使用并行查询就必须使用管道函数,这样也就加快了执行的速度。 管道函数的输入参数必须是一个引用记录集类型(即ref cursor),而返回的是嵌套
Oracle 数据库 系统使用经验六则
---- 1.having 子句的用法 ---- having 子句对 group by 子句所确定的行组进行控制,having 子句条件中只允许涉及常量,聚组函数或group by 子句中的列. ---- 2.外部联接"+"的用法 ---- 外部联接"+"按其在"="的左边或右边分左联接和右联接.若不带"+"运算符的表中的一个行不直接匹配于带"+"预算符的表中的任何行,则前者的行与后者中的一个空行相匹配并被返回.若二者均不带´+´,则二者中无法匹配的均被返回.利用外部联接"+",可以替代效率十分低下的 not in 运算,
在Linux下装配Oracle
在Linux下装配Oracle ---- 由于Oracle自身比较复杂性,在Linux环境下安装要涉及很多方面的因素。本文分两个方面介绍在Linux RedHat 6.0环境下Oracle 8.0.5的安装。调整Linux核心与环境----在安装Oracle之前,应该先对RedHat 6.0的Linux内核与环境进行调整,要作以下工作: ----1、在完成RedHat 6.0 Linux的缺省安装后,需要安装以下软件包:---- kernel-source-2.2.5-15.i386.rpm Linux 2.2.5内核源码,主要用于修改核心参数后重生成内核。----tcl-8.0.4-29.i386.rpm 该软件包是安装Oracle Intelligent Agent包所必需的。Co