
Oracle
rabbitbug
没有
展开
-
写PL/SQL程序时碰到的一些问题
记的上次写PL/SQL程序还是刚毕业不久,还用的是Oracle 7 for Novell后来只是偶尔用一下oralce, PL/SQL的一些语法已经全忘了,这不,碰到好些低级的问题,谨记下,希望不会再忘记。1.有for update类型的Cursor定义Cursor时,加了for update,因为需要打开cursor后还要对这些数据进行修改和删除,但在修改和删除数据后在关闭cursor前就c原创 2005-01-14 12:50:00 · 3246 阅读 · 0 评论 -
关于 db block gets,consistent gets,physical reads的概念
在Oracle的文档中有这样的解释:Recursive Calls: Number of recursive calls generated at both the user and system level. Oracle Database maintains tables used for internal processing. When it needs to change these t转载 2009-12-16 01:18:00 · 8557 阅读 · 1 评论 -
Oracle大批量删除数据方法
批量删除海量数据通常都是很复杂及缓慢的,方法也很多,但是通常的概念是:分批删除,逐次提交。 下面是我的删除过程,我的数据表可以通过主键删除,测试过Delete和For all两种方法,for all在这里并没有带来性能提高,所以仍然选择了批量直接删除。 首先创建一下过程,使用自制事务进行处理: create or replace procedure delBigTab(p_Tab转载 2009-12-15 15:41:00 · 770 阅读 · 0 评论 -
ORACLE批量更新四种方法比较
软件环境 Windows 2000 + ORACLE9i 硬件环境 CPU 1.8G + RAM 512M 现在我们有2张表 如下:T1--大表 10000笔 T1_FK_ID T2--小表 5000笔 T2_PK_IDT1通过表中字段ID与T2的主键ID关联 模拟数据如下:--T2有5000笔数据create table T2asselect rownum id, a.* from all_转载 2009-12-15 21:06:00 · 794 阅读 · 0 评论 -
普通表变为分区表
将已存在数据的普通表转变为分区表,没有办法通过修改属性的方式直接转化为分区表,必须通过重建的方式进行转变,一般可以有三种方法,视不同场景使用:用例:方法一:利用原表重建分区表。 CREATE TABLE T (ID NUMBER PRIMARY KEY, TIME DATE); INSERT INTO TSELECT ROWNUM, SYSDATE - ROWNUM FROM DBA_转载 2009-12-15 21:43:00 · 854 阅读 · 0 评论 -
Oracle的在线重定义表功能 (一)
http://blog.itpub.net/post/468/12855 在一个高可用系统中,如果需要改变一个表的定义是一件比较棘手的问题,尤其是对于7×24系统。Oracle提供的基本语法基本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就无法完成了。而且,对于被大量DML语句访问的表,幸运的是,Oracle从9i版本开始提供了在线重定义表功能,通过调用D转载 2009-12-15 22:13:00 · 986 阅读 · 0 评论 -
在线重定义表为分区表
http://www.psoug.org/reference/dbms_redefinition.html 使用 DBMS_REDEDINITION 包可以方便的定义一张普通表为分区表,还可以定义 heap table 为 IOT 索引组织表1. 检查是否可以在线重定义BEGINDBMS_REDEFINITION.CAN_REDEF_TABLE(RMSDEV,RMS_RESU转载 2009-12-15 22:15:00 · 3143 阅读 · 0 评论 -
Oracle锁机制
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 在数转载 2009-12-16 14:29:00 · 869 阅读 · 0 评论 -
为何nested loop要求小表驱动,hash join又为何要求小表hashed?
一般nested loop适合于返回行数的,较小行数返回的表的连接。nested loop的过程:选择row resource 最小的那个表作为驱动表(外部表),内部表要求有选择性高的index。 从外部表(驱动表)里一次取一行对内部表的每行进行比较,即外部表有几个distinct行,就有几次nested loop。所以nested loop的代价是:cost = outer acc转载 2009-12-21 16:54:00 · 2591 阅读 · 0 评论 -
Oracle常识
一.Oracle数据类型 1.字符数据类型 .> char:可以存储字母数字值,长度在1到2000个字节。 .> varchar2:存储可变长度的char类型字符串,大小在1到4000个字节范围内。 .> long:存储可变长度的字符数据,最多存储2GB。 long类型的使用限制: ***********************转载 2009-12-12 16:35:00 · 1039 阅读 · 0 评论 -
常见等待事件的处理
--查看数据库中需要关注的等待事件:select sw.seq#,sw.sid||,||s.serial# sids,s.username,sw.event,sw.P1,sw.p2,sw.p3,sw.wait_time "WAIT", sw.state,sw.seconds_in_wait sec,s.status,to_char(s.logon_time,dd/hh24:mi:ss)转载 2010-01-27 01:23:00 · 4501 阅读 · 0 评论 -
PL/SQL小技巧一个:在子类中怎么调用父类被重载的方法
在C++和Java中,这是非常容易实现的C++是:父类名::被重载的方法(参数表), 比如: ancestorclass::name({arguments});而在Java中,可以用super代替父类,如这样实现 Super.name({arguments});而在Oracle 9i Release2中都没实现这样的功能,当然我们可以用其它办法来实现这样的功能。父类对象原创 2005-01-19 21:22:00 · 1463 阅读 · 0 评论 -
Oracle Sql优化笔记
基本的Sql编写注意事项 尽量少用IN操作符,基本上所有的IN操作符都可以用EXISTS代替。 不用NOT IN操作符,可以用NOT EXISTS或者外连接+替代。 Oracle在执行IN子查询时,首先执行子查询,将查询结果放入临时表再执行主查询。而EXIST则是首先检查主查询,然后运行子查询直到找到第一个匹配项。NOT EXISTS比NOT IN效率稍转载 2008-03-13 00:26:00 · 815 阅读 · 0 评论 -
哭诉: 数据库为什么会当掉?error 221
Tue May 27 03:55:43 2008Errors in file /opt/oracle/admin/webapp/bdump/webapp_ckpt_1192110.trc:ORA-00206: Message 206 not found; No message file for product=RDBMS, facility=ORA; arguments: [3] [1]ORA-0原创 2008-06-02 11:15:00 · 2417 阅读 · 1 评论 -
Oracle分析函数学习笔记
类似 sum(...) over ... 的使用1.原表信息:SQL> break on deptno skip 1 -- 为效果更明显,把不同部门的数据隔段显示。SQL> select deptno,ename,sal2 from emp3 order by deptno; DEPTNO ENAME SAL---------- ---------- --转载 2009-07-03 14:26:00 · 689 阅读 · 0 评论 -
oracle SQL性能优化
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为转载 2009-09-06 00:27:00 · 947 阅读 · 1 评论 -
本地索引和全局索引区别
表可以按range,hash,list分区,表分区后,其上的索引和普通表上的索引有所不同,oracle对于分区表上的索引分为2类,即局部索引和全局索引,下面分别对这2种索引的特点和局限性做个总结。 局部索引local index 1. 局部索引一定是分区索引,分区键等同于表的分区键,分区数等同于表的分区说,一句话,局部索引的分区机制和表的分区机制一样。2.转载 2009-09-15 23:21:00 · 5487 阅读 · 1 评论 -
PL/SQL学习笔记
1.SQL并行查询alter session enable parallel dml execute immediate alter session enable parallel dml; --修改会话并行DML select /*+parallel(a,4)*/ * from table_name a select /*+parallel(a,8)*/ * f转载 2010-01-27 00:09:00 · 3379 阅读 · 0 评论 -
几个常用VIEW说明
几个常用视图的说明:v$lock v$sqlarea v$session v$sesstat v$session_wait v$process v$transaction v$sort_usage v$sysstat 九个重要视图 1)v$lock给出了锁的信息,如type字段, user type locks有3种:转载 2010-01-27 01:14:00 · 875 阅读 · 0 评论 -
10046事件和sql_trace
一. SQL_TRACE当SQL语句出现性能问题时,我们可以用SQL_TRACE来跟踪SQL的执行情况,通过跟踪,我们可以了解一条SQL或者PL/SQL包的运行情况,SQL_TRACE命令会将SQL执行的整个过程输出到一个trace文件中,我们可以读这个trace 文件来了解在这个SQL执行过程中Oracle 都做了哪些操作。可以通过sql命令启动SQL_TRACE,或者在初始化参数里转载 2012-08-30 00:13:43 · 1617 阅读 · 0 评论