
Oracle 开发
文章平均质量分 76
海鲨数据库架构师:曾凡坤.姒
一线普通DBA,架构DBA,祖仙教.独家创始人.熟悉MYSQL REDIS数据库 C/C++语言
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
第二章 PL/SQL基础
第二章 PL/SQL基础 一、字符集在PL/SQL程序中,允许出现的字符集包括: 大小写字母(A-Z和a-z) 数字(0-9) 符号( ) + - * / = ! ~ ^ ; : . ’ @ % , " # $ & _ | { } ? [ ] 制表符、空格和回车符 PL/SQL对大小写不敏感,所以,除了在字符串和字符中,小转载 2010-03-30 12:18:00 · 1960 阅读 · 0 评论 -
第三章 PL/SQL数据类型
第三章 PL/SQL数据类型一、预定义数据类型Oracle的数据类型可以分为四类,分别是标量类型,复合类型,引用类型和LOB类型。标量类型没有内部组件;而复合类型包含了能够被单独操作的内部组件;引用类型类似于3G语言中的指针,能够引用一个值;LOB类型的值就是一个lob定位器,能够指示出大对象(如图像)的存储位置。下图是在PL/SQL中可以使用的预定义类型,其中标量类型又分转载 2010-03-30 12:27:00 · 2353 阅读 · 0 评论 -
第四章 PL/SQL的控制结构
第四章 PL/SQL的控制结构一、PL/SQL控制结构一览根据结构定理(structure theorem),任何计算机程序都可以用下图中的基本控制结构来表示。它们可以任意组合来解决问题。 选择结构是用于测试条件的,根据条件的真假,执行一系列语句。一个条件语句可以是任何能够返回布尔值(TRUE或FALSE)的变量或表达式。循环结构能在条件满足的情况下反复执行。序列结构只转载 2010-03-30 14:15:00 · 1406 阅读 · 0 评论 -
第五章 PL/SQL集合与记录
第五章 PL/SQL集合与记录一、什么是集合集合就是相同类型的元素的有序合集。它一个通用的概念,其中包含了列表、数组和其他相似的数据类型。每一个元素都有唯一的下标来标识当前元素在集合中的位置。PL/SQL提供了以下几种集合类型:索引表,也称为关联数组,可以让我们使用数字或字符串作下标来查找元素。(这有点和其他语言中的哈希表相类似。) 嵌套表可以容纳任意个数的元素,转载 2010-03-30 14:26:00 · 3080 阅读 · 0 评论 -
第六章 PL/SQL与Oracle间交互
第六章 PL/SQL与Oracle间交互一、PL/SQL支持的SQL一览PL/SQL扩展了SQL,变得更加强大和易用。我们可以用PL/SQL灵活安全地操作Oracle数据,因为它支持所有的SQL数据操作语句(除了EXPLAINPLAN),事务控制语句,函数,伪列和操作符。PL/SQL还支持动态SQL,能让我们动态地执行SQL数据定义,数据控制和会话控制语句。除此之外,P转载 2010-03-30 14:39:00 · 3422 阅读 · 1 评论 -
第七章 控制PL/SQL错误
第七章 控制PL/SQL错误 一、错误控制一览在PL/SQL中,警告或错误被称为异常。异常可以是内部(运行时系统)定义的或是用户定义的。内部定义的案例包括除零操作和内存溢出等。一些常见的内部异常都有一个预定义的名字,如ZERO_DIVIDE和STORAGE_ERROR等。对于其它的内部异常,我们可以手动为它们命名。 我们可以在PL/SQL块、子程序或包的声明部分自转载 2010-03-30 14:47:00 · 1451 阅读 · 0 评论 -
第十二章 PL/SQL应用程序性能调优
第十二章 PL/SQL应用程序性能调优一、PL/SQL性能问题的原由当基于PL/SQL的应用程序执行效率低下时,通常是由于糟糕的SQL语句、编程方法,对PL/SQL基础掌握不好或是滥用共享内存造成的。 PL/SQL中糟糕的SQL语句 PL/SQL编程看起来相对比较简单,因为它们的复杂内容都隐藏在SQL语句中,SQL语句常常分担大量的工作。这就是为什么糟糕的SQL语句转载 2010-03-30 15:08:00 · 1454 阅读 · 0 评论 -
第八章 PL/SQL子程序
第八章 PL/SQL子程序 一、什么是子程序子程序就是能够接受参数并被其他程序所调用的命名PL/SQL块。PL/SQL子程序有两种类型,过程和函数。一般地,过程用于执行一个操作,而函数用于计算一个结果值。与未命名或匿名PL/SQL块一样,子程序也有声明部分,执行部分和一个可选的异常处理部分。声明部分包含类型、游标、常量、变量、异常和嵌套子程序的声明。这些内容都是本地转载 2010-03-30 14:52:00 · 1178 阅读 · 0 评论 -
第九章 PL/SQL包
第九章 PL/SQL包 一、什么是PL/SQL包包就是一个把各种逻辑相关的类型、常量、变量、异常和子程序组合在一起的模式对象。包通常由两个部分组成:包说明和包体,但有时包体是不需要的。说明(简写为spec)是应用程序接口;它声明了可用的类型、变量、常量、异常、游标和子程序,包体部分完全定义游标和子程序,并对说明中的内容加以实现。如下例所示,我们可以认为说明部分是转载 2010-03-30 14:57:00 · 1467 阅读 · 0 评论 -
第十章 PL/SQL对象类型
第十章 PL/SQL对象类型 一、抽象的角色抽象是对一个真实世界实体的高级描述或建模。它能排除掉无关的细节内容,使我们的日常生活更有条理。例如,驾驶一辆汽车时,我们是不需要知道它的发动机是如何工作的。由变速排档、方向盘、加速器和刹车组成的接口就能让我们有效地使用它。而其中每一项的详细信息对于日常驾驶来说并不重要。 抽象是编程的核心内容。例如,我们在隐藏一个复杂的算法时只要编写一转载 2010-03-30 15:01:00 · 1622 阅读 · 0 评论 -
第十一章 本地动态SQL
第十一章 本地动态SQL一、什么是动态SQL大多数PL/SQL都做着一件特殊的结果可预知的工作。例如,一个存储过程可能接受一个雇员的编号和他的提薪金额,然后更新表emp中的信息。在这种情况下,UPDATE的全部文本内容在编译期就完全确定下来,这样的语句不会随着程序的执行而发生变化。所以,称它们为静态SQL语句。 但是,有些程序只能是在运行时建立并处理不同的SQL语句。例如,一般转载 2010-03-30 15:06:00 · 1611 阅读 · 0 评论 -
雕虫小鸡 指定子分区
select *from fuck partition(fuck_001); 有时候很烦写时间范围 fuck_time between to_date(,) and to_date(,) 当不能指定多个分区 partition(fuck_001,fuck_003); partition(fuck_001),partition(fuck_003);原创 2010-04-14 16:57:00 · 1857 阅读 · 0 评论 -
游标循环 查询和更新是很慢的一件事情
最近赶个项目,里面要统计末末的属性 Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4原创 2010-04-22 17:40:00 · 2425 阅读 · 0 评论 -
ORA-00600: 内部错误代码, 参数: [32695], [hash aggregation can't be done]
今天查看周报过程时 发现了它:ORA-00600: 内部错误代码, 参数: [32695], [hash aggregation cant be done], [], [], [], [], [], []其过程P_PROD_WEEK_I_NEWANDLOST_USER 新增用户和流失分析。以前它用很大的TEMP,32G才满足它的需求。 ORACLE 版本: 10.2.03原创 2010-05-10 16:50:00 · 3116 阅读 · 0 评论 -
多条件游标更新 变CASE WHEN更新法提高速度
定义个结构体数组 type ty_parmeter is record ( v_hezuotype number(1), v_comefrom varchar2(50), v_regchannel varchar2(50), v_newchannel nvarchar2(30) ) ; type ty_parmeter_table is tab原创 2010-05-12 10:13:00 · 2268 阅读 · 0 评论 -
大事务 慢于多个小事务之总
我要把一个表的数据插入另张表,有3年的数据,而且每个月做了分区。根据时间来全插 虽然加了/*+APPEND*/ 时间也要个几个小时 而拆成 3*12个 36个 insert into 语句 每个语句取一个月的数据,插入进去。总时间为45分钟。原创 2010-05-12 21:23:00 · 1309 阅读 · 0 评论 -
MERGE 比 DELETE INSERT 更新 可靠多了
MERGE 比 DELETE INSERT 慢很多! 可 DELETE INSERT 总是 发生违反唯一关键子,删除了无法再插进去。还有时不时的丢失数据。 MERGE 可以减少数据量来提高运行速度,减少 WHEN MATCHED THEN UPDATE 字段来 少生成UNDO数据。原创 2010-05-13 14:04:00 · 2579 阅读 · 0 评论 -
oracle 开发设计一些规范经验
1 设计表过程中 尽量采用数据驱动思想 比如说用户注册 因为业务情况 需要4个字段不同组合来表示用户从哪里注册的。 业务部需要不断扩展新的渠道来招揽用户,比如在某个网站做了广告。而不能在业务程序或存储过程直接修改 update f_userinfo set f_regchannel=新浪首页广告注册 where f_regurl=http://www.si原创 2010-05-19 12:28:00 · 1392 阅读 · 0 评论 -
WITH TABLENAME AS () 类似于临时表用法提高性能
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font原创 2010-05-21 17:07:00 · 3668 阅读 · 0 评论 -
ASKTOM 关于更新上百万的数据方法
<br />假设如果我要更新数百万以上的数据, 我大概会选择不去’更新’ (UPDATE)吧.<br /><br />我很有可能会用以下的方法:<br /><br />CREATE TABLE new_table as select <在此更新> from old_table;<br />index new_table (给新的表创建索引)<br />grant on new table (授权于新的表)<br />add constraints on new_table (给新的表加上转载 2010-05-31 17:03:00 · 6909 阅读 · 2 评论 -
oracle 如何一周的开始从周一开始呢
<br />虽然我可以用<br />SQL> select trunc(sysdate,'d')+1 begin,sysdate from dual;<br /> <br />我想应该有参数设置一周从周一开始,或许是NLS_<br /> <br />不明白你的需求,可以取出当前周到第一天,下面..<br />select trunc(sysdate,'iw') from dual;<br />得到今天,今天周一...原创 2010-06-02 17:03:00 · 1918 阅读 · 0 评论 -
在LINUX下 编译ORACLE OCCI接口应用程序
主要分两个平台来说1 在安装了ORACLE 服务器上 配置环境[ba@nod1-ba lib]$ cat ~/.bash_profile# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/binexport PATH原创 2010-08-25 18:03:00 · 2461 阅读 · 0 评论 -
Oracle正则表达式函数
Oracle正则表达式函数<br /> 1、正则表达式中的元字符元字符意思例子/说明要匹配的字符是一个特殊字符、常量或者后者引用。(后引用重复上一次的匹配)/n 匹配换行符<br /> // 匹配 /<br /> /( 匹配 (<br /> /) 匹配 )^匹配字符串的开头位置如果A是字符串的第一个字符,^A 匹配 A$匹配字符串的末尾位置如果B是字符串的最后一转载 2011-01-18 06:09:00 · 1473 阅读 · 0 评论 -
oracle 动态SQL 注意细节 ORA-00911: 无效字符
<br /> lv_sql:='<br /> insert into ETL_SUCESS_AMOUNT<br /> select SEQ_OS_ETL_AMOUNTID.NEXTVAL AS AMOUNTID,1,AMOUNT_DATA,AMOUNT_HOUR,<br /> serviceid,portalid,mouduleid,actionid,RESERVE1_ID,RESERVE2_ID,RESERVE3_ID,<br /> RESERVE4_ID,AMOUNT,AMOU原创 2011-03-16 10:59:00 · 3609 阅读 · 0 评论 -
单表 单字段多条件更新
<br />请问 这样多条件更新 如何写?<br />update ods_dictionary<br />set module_note='成功变更邮箱设置'<br />where module_id=12<br /><br />set module_note='点击邮箱'<br />where module_id=13<br /> <br /> <br /> <br />update ods_dictionary<br />set module_note=decode(modul原创 2011-05-23 18:21:00 · 1823 阅读 · 0 评论 -
删除231万数据2-3分钟的过程
一个通过获得ROWID来删除大表中的数据原创 2011-04-25 16:20:00 · 1694 阅读 · 0 评论 -
使用内存表table()和connect by level 处理 一行多条数据显示问题
<br /> 一行多条数据显示问题比如:check_value varchar2(4000) values('1240,1110,1207,1134,1148,1184,10386')<br />想把这行该列的数据作为参数给SQL语句<br /> <br />select *<br />from a<br />where value in( check_value);<br /> <br />核心代码:<br /> select substr<br />(<br /> pi_column,<b原创 2011-04-27 17:52:00 · 2239 阅读 · 0 评论 -
insert优化
author:skatetime:2010/10/19insert优化要想提高insert的速度,首先要知道什么影响insert慢,在执行insert的过程中产生redo和undo,要想提高insert的速度,在充分利用系统资源的条件下就要尽量减少insert产生的redo和undo,undo的大小没办法改变,但是我们可以改变redo的量。下面是提高insert方法。转载 2011-06-28 10:31:00 · 2070 阅读 · 0 评论 -
创建高性能表
创建高性能表在我们为应用设计数据库的时候,首先要确认我们的数据库是用于OLTP,还是用于DSS,还是用OLTP和DSS的混合。这样就确定了大方向OLTP(on-line transaction processing):是为处理大量并发小事务设计的DSS(decision support systems):是为大数据量的复杂查询而设计的对于OLTP系统,为了满足大量的并发转载 2011-06-28 10:42:00 · 1488 阅读 · 0 评论 -
Oracle数据库开发结构设计技巧
author:skatetime:2010-08-26尽管Oracle系统本身已经提供了若干种对系统性能进行调节的技术,但是,假如数据库设计本身就有问题特别是在结构上设计得尤其糟糕,那你纵有天大的本事又能奈何?因此,Oracle数据库的设计者完全有必要弄清楚(从项目着手设计开始)该如何创建稳固的Oracle数据结构,在保证可维护性和可扩展性的同时以最快的速度从数据库中获取信原创 2011-06-28 10:44:00 · 1832 阅读 · 0 评论 -
HASH JOIN 跟NESTED LOOP 快一个列子
DBA 说 etl_rule每条记录都要全表扫描 TABLE() 在开发库单独拿出该语句执行要122秒而HASH JOIN 只要2.04秒原创 2011-05-06 17:07:00 · 1514 阅读 · 0 评论 -
oracle 查询语句根据参数值来动态生成条件
select *from studentwhere age=&ageand sex=1and name=&nameand ..... 这是多个条件的语句. 可用户要选择不同的条件来看同样的信息. 要看 年龄大于20岁的, 性别是女的, 姓名是什么原创 2011-07-20 17:58:51 · 3892 阅读 · 0 评论 -
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
我们经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。 1.INSERT INTO SEL转载 2011-09-02 21:30:27 · 1540 阅读 · 2 评论 -
ORACLE ROWID 说明
一. 官网说明 owid的定义:A globally unique address for a row in a database. rowid 分为extended rowid 和 restricted rowied. 1.1 Re转载 2011-09-02 20:48:29 · 1293 阅读 · 0 评论 -
Oracle 游标(cursor) 说明
一. Cursor说明 Oracle里的cursor分为两种:一种是shared cursor,一种是session cursor。 1.1 Shared cursor 说明 sharedcursor就是指缓存在librarycache(转载 2011-09-02 21:48:04 · 3669 阅读 · 0 评论 -
ORA-00001: 违反唯一约束条件
如何查出违反唯一关键子的类似SQLERRM有个过程 每天更新用户信息表原本采用MERGE 来做的,可是有人嫌它慢,建议采用DELETE INSERT来做我先 delete userinfo wehre logtime > trunc(sysdate)-15 ; commit; insert into userinfo select * from t_cac原创 2010-05-13 22:24:00 · 52364 阅读 · 1 评论 -
DESC 只列出字段名的方法
很多时候 我们需要一个表的字段列表 比如写控制文件CTL 等等。。。DESC 没有参数只列出它的NAME 没有那我们去访问它的字典表吧USER_TAB_COLSUSER_TAB_COLUMNSsql> select column_name from user_tab_columns s where table_name = T_CACHE_ZCPROJECT;发现经常它的COLUMN_NAM原创 2009-10-15 16:20:00 · 1817 阅读 · 0 评论 -
ORA-22160 并非是稀梳数组引起来的
ORA-22160: element at index [1] does not exist 昨天调了过程 搞了好久才找到原因.procedure stat_month_to_tmp cursor cur_state_month_tmp is select id as order_id, provinceid, areaid原创 2011-10-29 00:49:22 · 2604 阅读 · 0 评论 -
CR blocks 创建
CR blocks createCR (consistent read) blocks 就是读一致性块RDBA(Tablespace relative database block address)RDBA是相对数据块地址,是数据字典(表空间及一些对象定义)所在块的地址。这个状态值统计了数据库中cr block创建的计数。要理解这个状态值,首先要理解什么是CR BLOCK. 当我们想要查找某个数转载 2011-09-02 20:45:56 · 1499 阅读 · 0 评论 -
oracle 列转行
select Monthno 月份, SUM(thismonthacttotal) "总活跃用户数",原创 2011-12-08 14:22:33 · 2587 阅读 · 0 评论