Oracle
chiweitree
码农
展开
-
Oracle中完整性
分为3类:丢失更新别人的更新在你的更新之前,所以你再一次更新,就导致了别人前一次的更新丢失了不可重复读你第一次读取数据,但是在你第二次读取数据前,别人将数据更新了,那么你前后两次读取的数据就不一样了幻影读第一次读取数据不存在,第二次读之前,别人插入了数据,然后你就可以查询到了原创 2013-03-19 13:35:02 · 1193 阅读 · 0 评论 -
oracle的分页语句
SELECT * FROM (SELECT ROWNUM num, e.bid, e.bookname, e.publishtime, e.press, e.money原创 2012-12-26 15:50:04 · 810 阅读 · 0 评论 -
oracle 12c 创建 pdb user
oracle数据库的结构是一个数据库实例下有许多用户,每一个用户有自己的表空间,即每一个用户相当于mysql中的一个数据库。不久前下了oracle 12c的数据库,安装之后建user时才知道oracle12c 有一个很大的变动就是引入了pdb可插入数据库,而且在cdb中只能创建c##或者C##开头的用户,只有在pdb数据库中才能创建我们习惯性命名的用户,oracle称之为Local Use转载 2013-12-25 16:07:26 · 5097 阅读 · 0 评论 -
oracle索引技术——天天笔记(1)
数据库的索引把用户感兴趣的列值连同其行标识符(ROWID)存储在一起ROWID包含了存储列值的表行在磁盘上的物理位置索引虽然能提高查询的性能,但是也不能一度的创建索引,因为索引是有代价的消耗磁盘空间,系统资源,在列值被修改的同时也必须修改相应的索引 Oracle默认的索引类型是B树索引,适用于高基数列,也就是列值种类多。SELECT DBMS_ROWID.R原创 2013-05-07 13:24:22 · 1326 阅读 · 0 评论 -
悲观锁和乐观锁
悲观锁对数据被修改,非常保守,必须要将事务加锁,所以在悲观锁的情况下,所有事务操作都要加锁,依靠数据库的锁机制来保证数据的一致性。但是性能开销较大如一个金融系统,当某个操作员读取用户的数据,并在读出的用户数据的基础上进 行修改时(如更改用户帐户余额),如果采用悲观锁机制,也就意味着整个操作过 程中(从操作员读出数据、开始修改直至提交修改结果的全过程,甚至还包括操作 员中原创 2013-08-29 17:00:24 · 909 阅读 · 0 评论 -
Oracle中row_number() over(partition by xxx order by xxx)的用法
row_number() over(partition by a order by b)上面的意思就是将查询结果按照a字段分组(partition),然后组内按照b字段排序,至于asc还是desc,可自行选择,然后为每行记录返回一个rownumber用于标记顺序如同上面这张表的内容,按照deptid分组的,组内按照salary降序排序的,rank就是返回的rownumber号原创 2013-03-05 09:47:57 · 4659 阅读 · 0 评论 -
oracle索引再论
ORACLE中索引的数据结构有B树结构和位图结构。我们通常用的普通索引、反向键索引、函数索引等都是B树结构的,是树状结构;位图结构则只有叶子节点。B树索引操作有唯一性扫描,范围扫描,快速索引全扫描(INDEX FAST FULL SCAN),索引全扫描(INDEX FULL SCAN);而位图索引的访问方式只有索引全扫描。B树的所有叶子节点都有一条双向链,根据索引键值大小排序的,B树,原创 2013-08-20 16:31:26 · 983 阅读 · 0 评论 -
ORACLE数据缓冲区DB cache
DB CACHE是以数据块为单位组织的缓冲区,数据库刚刚启动的时候,DB CACHE中几乎没有用户数据的缓冲,当会话访问数据库中的表或索引时,首先会检查DB CACHE中是否存在该数据,如果不存在,就会从数据文件中读取该数据块到DB CACHE中,然后再从DB CACHE中读取该数据。定位DB CACHE中的数据块是通过散列算法实现的,有一个哈希链结构,缓冲区中正在使用的数据块都在上面。如原创 2013-08-20 15:48:01 · 1402 阅读 · 0 评论 -
ORACLE 表连接详解
在ORACLE中,表连接方式主要有:内连接,外连接,自连接:内连接:这是最常用的连接查询SELECT * FROM A INNER JOIN B ON A.ID=B.IDSELECT * FROM A JOIN B ON A.ID=B.IDSELECT *FROM A,B WHERE A.ID=B.ID以上语句查询的结果一样的,都是内连接的使用场景。外连接:LEFT原创 2013-07-25 14:13:13 · 1173 阅读 · 0 评论 -
oracle job,通过DBMS_SCHEDULER.CREATE_JOB来创建,管理也通过DBMS_SCHEDULER这个包来管理
创建JOBscheduler是oracle10g的新特性通过DBMS_SCHEDULER.CREATE_JOB来创建job,参数说明:JOB_NAME :指定任务的名称,必选值,注意要确保指定的名称唯一。JOB_TYPE :任务执行的操作类型,必选值,有下列几个可选值:PLSQL_BLOCK :表示任务执行的是一个PL/SQL匿名块。STORED_PROCEDURE :表示任原创 2013-04-15 16:45:05 · 6253 阅读 · 0 评论 -
SQL_TRACE/10046事件如何使用,详细分析
这是oracle提供用来进行SQL跟踪的强有力的工具,可跟踪解析过程,执行计划,绑定变量,递归调用等等先执行SQL的TRACE命令,生成TRACE文件,TKPROF格式化,分析文件alter session set sql_trace=true,启动sql_trace功能。alter session set events '10046 trace name context fo原创 2013-08-01 14:50:43 · 1369 阅读 · 0 评论 -
oracle AWR深入研究分析,如何使用
AWR的前身是statspack,当然现在还在,只不过大家都在使用AWR,因为它方便,简单,直观,形象。AWR是oracle内置工具,安装oracle时已经自动安装完毕,无需额外安装了。SELECT *FROM DBA_HIST_WR_CONTROL;这里主要查看AWR策略的制定信息,多久抓一次快照,保留多长时间。DECLAREBEGIN DBMS_WO原创 2013-08-01 13:53:54 · 1485 阅读 · 0 评论 -
如何写出高性能的SQL
1、 首先要搞明白什么叫执行计划?执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用“全表扫描”方式。可见,执行计划并不是固定的,它是“个性化的”。产生转载 2013-07-23 08:59:17 · 1072 阅读 · 0 评论 -
spring3与 quartz job 任务调度的整合
最近在研究Spring中的定时任务功能,最好的办法当然是使用Quartz来实现。对于一个新手来说,花了我不少时间,这里我写个笔记,给大家参考。 我使用的是Maven来管理项目,需要的Jar包我给大家贴出来。 quartz-1.8.5.jar commons-logging.jar spring-core-3.0.5.RELEASE.jar spring-beans-3.0.5.转载 2013-07-11 13:29:14 · 1917 阅读 · 0 评论 -
oracle索引技术——天天笔记(2)
函数索引SELECT * FROM DEMOT WHERE F7 = 'F';SELECT * FROM DEMOT WHERE LOWER (F7) = 'f';F7上本来是有位图索引的,但是使用了LOWER函数后,就进行了全表扫面。下面我们来创建F7列上的函数索引LOWER原创 2013-05-07 13:25:12 · 1464 阅读 · 0 评论 -
Toad最最常用的快捷键 总结于此 ROWID解析
F8 调出以前执行的sql命令 F9 执行全部sql Ctrl+t 补全table_name Ctrl+. 补全table_name alt+ 箭头上下 看sql history Ctrl+Enter 直接执行当前sql Ctrl+Shift+F 格式化sql语句。 配置让TOAD中显示ROWID信息VIEW->TOAD OPTIONS->Data原创 2013-03-28 09:10:26 · 2342 阅读 · 0 评论 -
Oracle 分区表 Partition
创建一个表,使用三个分区表,并且每个分区表位于不同的表空间中CREATE TABLE student( id NUMBER PRIMARY KEY, username VARCHAR2 (50), score NUMBER)PARTITION BY RANGE (score) (PARTI原创 2012-10-25 16:58:59 · 1168 阅读 · 0 评论 -
ORACLE中INDEX BY BINARY_INTEGER在联合数组中的使用
INDEX BY BINARY_INTEGER当使用了这个语句,那么数组的下标就不需要显示的EXTEND如果不使用这条语句的话,那么在你向数组赋值时,你需要先EXTEND数组的下标,再赋值array.extendarray(1):=1原创 2013-05-02 14:06:09 · 2067 阅读 · 0 评论 -
oracle中的正则表达式
^ 使表达式定位至一行的开头 $ 使表达式定位至一行的末尾 * 匹配 0 次或更多次 ? 匹配 0 次或 1 次 + 匹配 1 次或更多次 {m} 正好匹配 m 次 {m,} 至少匹配 m 次 {m, n} 至少匹配 m 次但不超过 n 次 [:alpha:] 字母字符 [:lower:] 小写字母字符 [:upper:] 大写字母字符 [:digit:原创 2012-12-13 13:49:32 · 1021 阅读 · 0 评论