
Oracle
文章平均质量分 68
wjxbj
这个作者很懒,什么都没留下…
展开
-
Oralce中ROWNUM、ROWID的使用
一.ROWNUM的使用——TOP-N分析 使用SELECT语句返回的结果集,若希望按特定条件查询前N条记录,可以使用伪列ROWNUM。 ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说ROWNUM是符合条件结果的序列号。它总是从1开始排起的。 使用ROWNUM时,只能使用<、&l...原创 2016-02-16 19:36:23 · 120 阅读 · 0 评论 -
精通Oracle10编程SQL(14)开发动态SQL
/* *开发动态SQL */--使用EXECUTE IMMEDIATE处理DDL操作CREATE OR REPLACE PROCEDURE drop_table(table_name varchar2)is sql_statement varchar2(100);begin sql_statement:='DROP TABLE '||table_name...原创 2015-06-29 21:46:00 · 114 阅读 · 0 评论 -
精通Oracle10编程SQL(15)使用对象类型
/* *使用对象类型 */--建立和使用简单对象类型--对象类型包括对象类型规范和对象类型体两部分。--建立和使用不包含任何方法的对象类型CREATE OR REPLACE TYPE person_typ1 as OBJECT( name varchar2(10),gender varchar2(4),birthdate date);drop type...原创 2015-06-29 21:46:17 · 160 阅读 · 0 评论 -
精通Oracle10编程SQL(16)使用LOB对象
/* *使用LOB对象 */--LOB(Large Object)是专门用于处理大对象的一种数据类型,其所存放的数据长度可以达到4G字节--CLOB/NCLOB用于存储大批量字符数据,BLOB用于存储大批量二进制数据,而BFILE则存储着指向OS文件的指针/* *综合实例 */--建立表空间 --#指定区尺寸为128k,如不指定,区尺寸默认为64k ...原创 2015-06-30 21:09:32 · 169 阅读 · 0 评论 -
精通Oracle10编程SQL(17)使用ORACLE系统包
/* *使用ORACLE系统包 */--1.DBMS_OUTPUT--ENABLE:用于激活过程PUT,PUT_LINE,NEW_LINE,GET_LINE和GET_LINES的调用--语法:DBMS_OUTPUT.enable(buffer_size in integer default 20000);--DISABLE:用于禁止对过程PUT,PUT_LINE,N...原创 2015-06-30 21:09:51 · 188 阅读 · 0 评论 -
Oracle中merge into的使用
一.Merge基本用法介绍动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作。说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录时,就更新(Update),不存在数据时,就插入(Insert)。实战: 接下来我们有一个任务,有一个表T,有两个字段a,b,我们想在表T中做I...原创 2014-09-30 15:18:50 · 99 阅读 · 0 评论 -
like查询与索引
一.like查询与索引 在oracle里的一个超级大的表中,我们的where条件的列有建索引的话,会走索引唯一扫描INDEX UNIQUE SCAN。如select * from table where code = 'Cod25',而如下这些语句哪些会走索引呢?select * from table where code like 'Code2%'select * ...原创 2015-08-04 21:10:39 · 1405 阅读 · 1 评论 -
深入探讨Oracle函数索引
Oracle还是比较常用的,Oracle函数索引在某些情况下也是非常有用的。一.Oracle函数索引1.Oracle函数索引的好处:Exp: function(column1) 如果表中有1000行,即便column1列上建有索引,索引在此时也不被使用,function会执行1000次。 2.建立Oracle函数索引会使插入/更新性能稍有下降,但是查询速度有了极大...原创 2015-08-04 23:53:15 · 297 阅读 · 0 评论 -
如何解决ORA-04031错误
上次测试同事发现系统报ORA-04031 错误,特意上网查了下,虽看不懂,但还是记下来,以备万一我水平提上去能看懂时,也可以回顾回顾。诊断并解决ORA-04031 错误 当我们在共享池中试图分配大片的连续内存失败的时候,Oracle首先清除池中当前没使用的所有对象,使空闲内存块合并。如果仍然没有足够大单个的大块内存满足请求,就会产生ORA-04031 错误。...原创 2015-08-05 19:15:08 · 163 阅读 · 0 评论 -
精通Oracle10编程SQL(13)开发触发器
/* *开发触发器 */--得到日期是周几select to_char(sysdate+4,'DY','nls_date_language=AMERICAN') from dual;select to_char(sysdate,'DY','nls_date_language=AMERICAN') from dual;--建立BEFORE语句触发器CREATE...原创 2015-06-29 21:45:40 · 210 阅读 · 0 评论 -
精通Oracle10编程SQL(12)开发包
/* *开发包 *包用于逻辑组合相关的PL/SQL类型(例如TABLE类型和RECORD类型)、PL/SQL项(例如游标和游标变量)和PL/SQL子程序(例如过程和函数) */--包用于逻辑组合相关的PL/SQL类型、项和子程序,它由包规范和包体两部分组成--建立包规范:包规范实际是包与应用程序之间的接口,它用于定义包的公用组件,包括常量、变量、游标、过程和函数等--在...原创 2015-06-29 21:45:21 · 139 阅读 · 0 评论 -
精通Oracle10编程SQL(4)使用SQL语句
--工资级别表create table SALGRADE( GRADE NUMBER(10), LOSAL NUMBER(10,2), HISAL NUMBER(10,2))insert into SALGRADE values(1,0,100);insert into SALGRADE values(2,100,200);inse...2015-06-27 01:46:54 · 186 阅读 · 0 评论 -
精通Oracle10编程SQL(5)SQL函数
/* * SQL函数*/--数字函数--ABS(n):返回数字n的绝对值declare v_abs number(6,2);begin v_abs:=abs(&no); dbms_output.put_line('绝对值:'||v_abs);end;--ACOS(n):返回数字n的反余弦值,输入值的范围是-1~1,输出值的单位为弧...2015-06-27 01:48:32 · 167 阅读 · 0 评论 -
精通Oracle10编程SQL(6)访问ORACLE
/* *访问ORACLE*/--检索单行数据--使用标量变量接收数据DECLARE v_ename emp.ename%TYPE; v_sal emp.sal%TYPE;BEGIN select ename,sal into v_ename,v_sal from emp where empno=&no; dbms_output....原创 2015-06-28 22:44:18 · 155 阅读 · 0 评论 -
精通Oracle10编程SQL(7)编写控制结构
/* *编写控制结构 */ --条件分支语句--简单条件判断DECLARE v_sal NUMBER(6,2);BEGIN select sal into v_sal from emp where lower(ename)=lower('&name'); if v_sal<2000 then update emp s...原创 2015-06-28 22:44:37 · 100 阅读 · 0 评论 -
精通Oracle10编程SQL(8)使用复合数据类型
/* *使用复合数据类型 */--PL/SQL记录--定义PL/SQL记录--自定义PL/SQL记录DECLARE TYPE emp_record_type IS RECORD( name emp.ename%TYPE, salary emp.sal%TYPE, dno emp.deptno%TYPE ); em...原创 2015-06-28 22:44:55 · 170 阅读 · 0 评论 -
精通Oracle10编程SQL(9)使用游标
/* *使用游标 */--显示游标--在显式游标中使用FETCH...INTO语句DECLARE CURSOR emp_cursor is select ename,sal from emp where deptno=1; v_ename emp.ename%TYPE; v_sal emp.sal%TYPE;begin o...原创 2015-06-28 22:45:11 · 125 阅读 · 0 评论 -
精通Oracle10编程SQL(10)处理例外
/* *处理例外 */--例外简介--处理例外-传递例外declare v_ename emp.ename%TYPE;begin SELECT ename INTO v_ename FROM emp where empno=&no; dbms_output.put_line('雇员名:'||v_ename);except...原创 2015-06-28 22:45:31 · 129 阅读 · 0 评论 -
精通Oracle10编程SQL(11)开发子程序
/* *开发子程序 */--子程序目是指被命名的PL/SQL块,这种块可以带有参数,可以在不同应用程序中多次调用--PL/SQL有两种类型的子程序:过程和函数--开发过程--建立过程:不带任何参数CREATE OR REPLACE PROCEDURE out_timeISBEGIN DBMS_OUTPUT.put_line(systimestamp);...原创 2015-06-29 21:45:04 · 122 阅读 · 0 评论 -
深入理解Oracle—ORDERED和USE_NL
ORDERED好理解,就是表示根据 from 后面表的顺序join,从左到右,左边的表做驱动表。 use_nl(t1,t2):表示对表t1、t2关联时采用嵌套循环连接,其并不能让优化器确定谁是驱动表或谁是被驱动的表。 USE_NL(),先看看oracle doc怎么说: In this statement, the USE_...原创 2016-08-08 22:40:32 · 1031 阅读 · 0 评论 -
深入理解Oracle—驱动表的那些事儿
以一个比较两本字典来做例子: 一本字典有索引目录(dict a),一本没有(dict b),现在要找出所有a开头的单词的异同,那么比较的时候,你会怎么比较? 合理的做法应该是以没有索引的字典dict b开始, 找到a开头的那一页, 然后对于每个单词, 通过使用索引在dict a中找到相应的条目。 如果反过来, 效率会相同吗?...原创 2016-08-08 22:59:50 · 502 阅读 · 0 评论 -
玩转oracle学习笔记(一)-Oracle管理
一.Oracle的卸载1. 运行oracle的universal installer2. 运行regedit,进入注册表,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按照所下图示删除键值。 选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下以Oracle开头的键值。3. 重启计算机...2017-04-04 22:38:51 · 161 阅读 · 0 评论 -
玩转oracle学习笔记(二)-Oracle表的管理
1.表名和列的命名规则必须以字母开头长度不能超过30字符不能使用oracle的保留字只能使用如下字符 A-Z,a-z,0-9,$,#等 2.oracle支持的数据类型a.字符型char:定长,最大2000字符例:char(10) ‘小小’前四个字符放’小小’,后添6个空格补全,但这样的查询效率较varchar2高varchar2(20):变长,最大400...原创 2017-04-04 22:54:08 · 205 阅读 · 0 评论 -
玩转oracle学习笔记(三)-Oracle操作
一.Java程序如何操作oracle 1.配odbc数据源,用jdbc_odbc桥连接方式连接数据库 注意:odbc只能本地连接,不能远程连接,即java程和Oracle数据库必须在同一台机器上。 控制面板->管理工具->数据源[ODBC],添加->选择Oracle in OraHome90->完成 Data S...原创 2017-04-04 23:03:29 · 349 阅读 · 0 评论 -
玩转oracle学习笔记(四)-数据库操作
一.数据库管理员1.每个oracle数据库应该至少有一名数据库管理员(dba),对于一个小的数据库,一个dba就够了,但是对于一个大的数据库可能需要多个dba分别担负不同的管理职责。那么一个数据库管理员的主要工作是什么呢?职责:1)安装和升级oracle数据库2)建库、表空间、表、视图、索引…3)制定并实施备份与恢复计划4)数据库权限管理、调优、故障排除5)对于高级...原创 2017-04-04 23:06:07 · 202 阅读 · 0 评论 -
一个Date类型的ibatis查询走不上索引的问题
实际工作中,发现Date类型作为条件查询走不上索引的问题,由于问题完全和http://blog.youkuaiyun.com/zldeng19840111/article/details/6721589一样,为简便起见,直接采用它的实例说明。 以下为简化后的场景:通过时间范围作一个邮件发送数量的统计java:import java.util.Date;pu...2015-12-03 21:06:05 · 480 阅读 · 0 评论 -
Oracle的tnsnames.ora配置
使用PLSQL Developer来链接Oracle数据库或者原创数据库都需要配置tnsnames.ora文件,下边介绍一下如何配置。一.配置 首先打开tnsnames.ora的存放目录,一般为C:\Oracle\product\11.2.0\client_1\network\admin,就看安装具体位置了。 使用editplus或者记事本...2015-12-04 20:49:08 · 2852 阅读 · 0 评论 -
Oracle修改表数据的小技巧
在日常工作中,我们有太多修改指定表的指定记录数据的情况,基于方便考虑,较少去写update语句,而是直接在select语句的最后加上for update。如下所示:select t.*,t.rowid from test_table t where t.no = '123' for update; 然后,点击“编辑数据”的锁图标进行数据的修改,修改完成后,...2016-02-16 19:01:32 · 863 阅读 · 0 评论 -
oracle伪列rowid和rownum
一.什么是伪列RowID?1.首先是一种数据类型,唯一标识一条记录物理位置的一个id,基于64位编码的18个字符显示。2.未存储在表中,可以从表中查询,但不支持插入,更新,删除它们的值。 二.RowID的用途1.在开发中使用频率应该是挺多的,特别在一些update语句中使用更加频繁。所以oracleERP中大部份的视图都会加入rowid这个字段。 在一些c...原创 2016-02-16 19:20:13 · 338 阅读 · 0 评论 -
查看oracle数据库sql的实际执行计划
在生产环境中,如果发现某SQL执行慢,要查看它的执行计划,有如下方法:方法一: 先查v$sqltext获得HASH_VALUE值,再通过HASH_VALUE值查询v$sql_plan获得此SQL的实际执行计划。 实例: 想知道如下SQL的实际执行计划SELECT /*+ index(tt IX_TT_CREATED_...2015-11-25 21:06:15 · 3426 阅读 · 0 评论 -
for update skip locked分析
最近在工作中,用Spring的Quartz处理数据,由于数据量过大,就基于一个时间戳处理,但在部署时部署两个instance时,就出现了漏处理数据的问题。 分析发现,取数过程是一个事务,由于数据量比较大,数据取完后就交给另个Service处理。进一步分析,取数前获得时间戳,数据查询后,再将记录的最后一条记录提时间戳更新回时间戳(当然,实现应用比这复杂),因为获取...2014-04-29 13:06:45 · 2570 阅读 · 0 评论 -
深入理解Oracle—三大表连接方式详解之Nested loop join和Sort merge join
关系数据库技术的精髓就是通过关系表进行规范化的数据存储,并通过各种表连接技术和各种类型的索引技术来进行信息的检索和处理,下面大家一起来学习分享Oracle的三大表连接技术。 在早期版本,Oracle提供的是nested-loop join,两表连接就相当于二重循环,假定两表分别有m行和n行,如果内循环是全表扫描,时间复杂度就是O(m*n);如果内循环是索引扫描,...原创 2016-08-08 23:15:27 · 945 阅读 · 0 评论 -
PLSQL中汉字显示乱码问题
遇到的问题: PLSQL中汉字显示乱码,并且SQL语句中如果有汉字,则执行时报错。其实并不是SQL语句写的有问题,而是系统不能识别汉字。解决方法: 首先执行语句 select * from V$NLS_PARAMETERS 查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否为SIMPLIFIED CHINESE。如果不是,需要...原创 2015-09-23 16:33:58 · 158 阅读 · 0 评论 -
oracle sql日期比较
--oracle sql日期比较--在今天之前:select * from up_date where updated_date < to_date('2015-01-15 00:00:00','yyyy-mm-dd hh24:mi:ss')select * from up_date where updated_date <= to_date('2015-01-15 0...原创 2015-09-23 22:48:53 · 106 阅读 · 0 评论 -
Oracle 获取当前日期及日期格式
--Oracle 获取当前日期及日期格式--返回系统日期select sysdate from dual;--输出 2015/8/20 9:34:22--mi是分钟select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;--输出 2015-08-20 09:35:33select to_char...原创 2015-09-23 22:52:52 · 589 阅读 · 0 评论 -
oracle获取年、月、季度第一天
--oracle 获取年、月、季度第一天--获取昨天select trunc(SYSDATE-1) from dual;--2015/8/19select to_char(trunc(SYSDATE-1),'yyyy-mm-dd HH24:MI:SS') from dual;--2015-08-19 00:00:00--获取本月第一天select trun...原创 2015-09-23 22:58:20 · 543 阅读 · 0 评论 -
oracle时间处理语句
--oracle时间处理语句--sysdate 当前日期和时间select sysdate from dual;--2015/8/20 11:04:30--last_day 本月最后一天 select last_day(sysdate) from dual;--2015/8/31 11:04:53--ddd_months(d,n) 当前日期d后推n个月,...原创 2015-09-23 23:01:42 · 273 阅读 · 0 评论 -
oracle sql强制走索引用法实例
在进行sql执行过程中,由于有时候系统自动优化的方式并不是最优的,甚至走全表扫描。需要我们手工添加hint来提高查询效率。 select /*+ index(t2 IX_T2_NO) +*/ *from table1 t1,table2 t2where t1.no = t2.no AND t1.SUB_NO = '123456';...原创 2015-09-24 00:00:10 · 1646 阅读 · 0 评论 -
oracle Parallel并行技术
对于一个大的任务,一般的做法是利用一个进程,串行的执行,如果系统资源足够,可以采用parallel技术,把一个大的任务分成若干个小的任务,同时启用n个进程/线程,并行的处理这些小的任务,这些并发的进程称为并行执行服务器(parallel executeion server),这些并发进程由一个称为并发协调进程的进程来管理。 启用Parallel 前的忠告:只有...原创 2015-09-24 00:00:28 · 605 阅读 · 0 评论 -
精通Oracle10编程SQL(1-3)PLSQL基础
--只包含执行部分的PL/SQL块--set serveroutput offbegin dbms_output.put_line('Hello,everyone!');end;select * from emp;--包含定义部分和执行部分的PL/SQL块declare v_ename varchar2(5);begin select...2015-06-27 01:45:25 · 136 阅读 · 0 评论