- 博客(38)
- 收藏
- 关注
转载 NULL 值与索引
转载http://blog.csdn.net/robinson_0612/article/details/7437561NULL值是关系数据库系统布尔型(true,false,unknown)中比较特殊类型的一种值,通常称为UNKNOWN或空值,即是未知的,不确定的。由于NULL存在着无数的可能,因此NULL值也不等于NULL值,所以与NULL值相关的操作同样都为NULL值。正是基
2013-08-31 19:46:00 3350
转载 [转贴]【sqlldr】 “Field in data file exceeds maximum length ”解决办法
2012-03-02 18:23:49分类: Oracle建表:create table PC_PLANNAME( PLANNAME VARCHAR(2000)); 使用sqlldr导数时出现如下错误:" Record 1: Rejected - Error on table PC_PLANNAME, column PLANNAME.
2013-08-28 16:34:22 1260
转载 Oracle 索引组织表(IOT)
Oracle 索引组织表(IOT)分类: Oracle 2010-01-15 20:403122人阅读 评论(4)收藏 举报 oracle存储table数据库database磁盘 索引组织表(IOT)有一种类B树的存储组织方法。普通的堆组织表是以一种无序的集合存储。而IOT中的数据是按主键有序的存储在B树索引结构中。与一般B树索引不同的的是,在IOT中每
2013-08-28 11:39:57 601
原创 RAC停启
手动启动RAC 一般情况下每次节点启动的时候,所有服务都会自动启动,如果需要关闭或者启动某个节点,如下所示 停止RAC:emctl stop dbconsole srvctl stop instance -d racdb -i racdb1 srvctl stop instance -d racdb -i racdb2 srvctl stop asm -n no
2013-08-27 20:49:48 678
原创 srvctl报错 :error while loading shared libraries: libpthread.so.0
[oracle@node1 ~]$ vi .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/
2013-08-27 20:18:33 1038
转载 oracle pctfree和pctused详解
一、oracle pctfree和pctused详解一、建立表时候,注意PCTFREE参数的作用PCTFREE:为一个块保留的空间百分比,表示数据块在什么情况下可以被insert,默认是10,表示当数据块的可用空间低于10%后,就不可以被insert了,只能被用于update;即:当使用一个block时,在达到pctfree之前,该block是一直可以被插入的,这个时候处在上升期。PC
2013-08-26 15:11:04 728
转载 高水位线和全表扫描
分类: Oracle 性能优化 2011-11-08 18:15 1527人阅读 评论(2)收藏 举报 tablestatisticssqlinputdeleteoracle 高水位线好比水库中储水的水位线,用于描述数据库中段的扩展方式。高水位线对全表扫描方式有着至关重要的影响。当使用delete 操作表记录时,高水位线并不会下降,随之导致的是全表扫描的实际开销
2013-08-13 18:06:07 683
转载 视图合并(View Merging)
分类:Oracle SQL 调优2012-07-29 00:37 437人阅读 评论(0)收藏举报accessloopstablenestedmergejoin在使用视图或嵌套视图的查询语句中,oracle 为了取得最优的执行计划会将这些视图进行合并,将视图中的表与外部查询的表进行连接。[sql] view plaincopyprint?
2013-08-13 11:38:18 3029
原创 B_TREE索引原理初解
1、读取表中数据并对其进行排序,如果排序的内存超过设定,则使用临时表空间。2、开始把(1处)的排序结果存储在索引段的叶块中,在存储空间到达索引块的pctfree之前,该页块同时担任分支块的重任。3、当到达pctree,需要获得新的块(2处)用来存储索引行。同时生成一个分支块。在该分支块的头部存储着现有叶块的DBA(data block address),新的叶块中开始键值和它的DBA一起构
2013-08-12 22:26:13 947
转载 标量子查询
标量子查询ORACLE允许在select子句中包含单行子查询, 使用标量子查询可以有效的改善性能,当使用到外部连接,或者使用到了聚合函数,就可以考虑标量子查询的可能性1. 取消外部连接的使用外部连接的做法:select a.username,count(*) from all_users a,all_objects bwhere a.username=b.owne
2013-08-12 20:27:14 719
转载 ORACLE库表信息
SELECT * FROM USER_CONSTRAINTS WHERE table_name=upper('ORG_INFO')SELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME =upper('SYS_C0065894');alter table ORG_INFOadd foreign key (PARENT_ORG_ID)
2013-08-12 10:44:41 580
转载 查询oracle最耗资源的sql语句
查询oracle最耗资源的sql语句,等等1、查询当前系统中正在执行的sql:SELECT osuser, username, sql_text from v$session a, v$sqltext b where a.sql_address =b.address order by address, piece;2、查找死锁的语句:SELECT l.session_i
2013-08-12 10:20:26 2233
转载 INDEX FULL SCAN 或 INDEX FAST FULL SCAN区别
INDEX FULL SCAN 与 INDEX FAST FULL SCAN两个长相差不多,乃是一母同胞,因此既有其共性,也有其个性。两者来说其共性是不用扫描表而是通过索引就可以直接返回所需要的所有数据。这对提高查询性能而言,无疑是一个难得的数据访问方式之一,因为索引中存储的数据通常是远小于原始表的数据。下面具体来看看两者之间的异同。一、何时INDEX FULL SCAN 或 INDE
2013-08-11 17:52:26 1622
转载 oracle中like优化的方法
在oracle中对于like操作时,如果是前后都是模糊查询的时候(类似于col01 like ‘%xxx%’)是没有办法用到索引的,这里提供一种对于这种情况的优化思路,主要的思路是把大表变小,把查询的实体表变窄,把需要的数据放到索引里.常规的写法: create table t01 as select * from dba_objects;SQL> create
2013-08-11 17:15:45 2497 1
转载 index range scan,index fast full scan,index skip scan发生的条件
index range scan(索引范围扫描):1.对于unique index来说,如果where 条件后面出现了 ,between ...and...的时候,那么就可能执行index range scan,如果where条件后面是=,那么就会执行index unique scan。2.对于none unique index来说 如果where 条件后面出现了=,>,3.对于组合索
2013-08-11 16:55:35 791
原创 SQL语句中的ACCESS和FILTER
Prediceate(谓词):一个查询中的WHERE限制条件。 在查看执行计划的信息中,存在两个谓词filter和access 简单地说,执行计划如果显示是access,就表示这个谓词条件的值将会影响数据的访问路径(表还是索引), 而filter表示谓词条件的值并不会影响数据访问路径,只起到过滤的作用。SQL> create table echo as
2013-08-10 22:01:12 2104
原创 ORACLE-位图索引
关于位图索引,搜索到一个很通俗的例子:1、语法create bitmap index index_name on 表名(字段);2、举个例子你就能明白了:如有表 test(id,name,address)数据(1,张三,大连)(2,李四,天津)(3,王五,北京)(4,赵六,大连)....类似这样的数据,如果查询的时候用到 【where address
2013-08-10 17:18:35 858
原创 索引组织表
B_TREE索引采用索引列+ROWID的方式。获取数据的时候要经过2次逻辑读取。1、索引段的读取2、利用索引的ROWID对数据段进行读取。一般情况下,两次逻辑读取不会对查询存在影响。但是当数据的使用频度较高或者经常需要大范围扫描时候,B_TREE索引的优势就不明显了。 索引组织表:指把索引和一般数据列全部存储在相同位置的表结构。如果大部分的查询语句都要求对主键进行扫
2013-08-10 11:42:33 795
原创 SQL优化-materialize
加--+materialize提示,Oracle会先将查询结果写入一张临时表,然再查询临时表,有点类似于:create table global temporary test as select * from dba_tables;select * from test;with tbls test1( select /*+materialize*/ *
2013-08-10 08:53:51 3736
原创 ORACLE绑定变量初解
1、SQL> var i numberSQL> exec :i := 7369;PL/SQL procedure successfully completed.SQL> select * from emp where empno=:i; EMPNO ENAME JOB MGR HIREDATE SA
2013-08-09 08:15:27 528
转载 no_unnest,push_subq,push_pred的用法
no_unnest,push_subq,push_pred的用法 ===========================================================作者: guyuanli(http://guyuanli.itpub.net)发表于:2010.08.26 15:40分类: oralce数据库 出处:http://guyuanli.itpu
2013-08-08 11:15:06 1836
转载 MIN、MAX优化
http://blog.csdn.net/robinson1988/article/details/6623773 select (select min(object_id) min_id from test a),(select max(object_id) max_id from test b) from dual; select (select /*+ index_asc
2013-08-07 17:31:24 1162
原创 ORACLE谓词推入初解
oracle谓词推入:1、创建视图SQL> create view v_p as select * from emp where deptno=10;View created.SQL> select * from v_p ;--视图走全表Execution Plan-----------------------------------------------------
2013-08-07 14:23:41 3986
原创 SQL语句(+)的应用
SQL> select empno,dname from emp , dept where emp.deptno = dept.deptno(+);--显示emp全部的行,相当于左外连接。 EMPNO DNAME---------- -------------- 7369 RESEARCH 7499 SALES 7521 SALES
2013-08-07 08:17:43 787
原创 不等于在位图索引中应用。
今天碰见个需求,在查询条件存在!=条件。由于此条件不走一般索引。故建立一条位图索引测试如下:create bitmap index emp_ind on emp(empno); 执行语句select * from emp where empno!=7399;测试不走索引,依然是全表强制hint执行select /*+(EMP EMP_IND )*/ * f
2013-08-06 18:14:50 593
转载 plsql-聚簇表初解
一:首先介绍一下索引聚簇表的工作原理: 聚簇是指:如果一组表有一些共同的列,则将这样一组表存储在相同的数据库块中;聚簇还表示把相关的数据存储在同一个块上。利用聚簇,一个块可能包含多个表 的数据。概念上就是如果两个或多个表经常做链接操作,那么可以把需要的数据预先存储在一起。聚簇还可以用于单个表,可以按某个列将数据分组存储。 更加简单的说,比如说,EMP表和DEPT表,这两个表存储在不同的
2013-08-06 15:40:15 861
原创 SCP用法
一般情况,本地网络跟远程网络进行数据交抱,或者数据迁移,常用的有三种方法,一是ftp,二是wget /fetch 三是,rsync 大型数据迁移用rysync,其次用fetch/wget ,最次是ftp,最慢是ftp.这几天,在忙数据迁移时,用到ssh的scp方法来迁移数据。速度与效果都很好。特别是现在许多服务器为了安全,都会改ssh默认的22端口,改成一个特殊的端口。所以。在scp或者sftp时
2013-08-05 16:38:05 703
原创 ORACLE表结构获取
select dbms_metadata.get_ddl('TABLE','DEPT') from dual; DBMS_METADATA.GET_DDL('TABLE','DEPT')-------------------------------------------------------------------------------- CREATE TABLE "SCOTT"."
2013-08-05 13:44:50 907
转载 Oracle 聚簇因子(Clustering factor)
转载http://blog.csdn.net/robinson_0612/article/details/8847959 聚簇因子是 Oracle 统计信息中在CBO优化器模式下用于计算cost的参数之一,决定了当前的SQL语句是否走索引,还是全表扫描以及是否作为嵌套连接外部表等。如此这般,那到底什么是聚簇因子,那些情况下会影响到聚簇因子,以及如何提高聚簇因子?本文将对此展开描述。1、
2013-08-05 11:27:30 685
原创 oracle 死锁
1、创建会话a和b会话A:SQL> create table a as select * from emp where rownum=1;Table created.SQL> commit;Commit complete.SQL> update a set sal=sal+1;1 row updated.SQL> update b set sal=sal+1;
2013-08-04 21:49:26 580
原创 oracle 阻塞
insert、update、delete、select for update构成阻塞。insert :1、插于的库表存在主键或者唯一性约束。update和delete在代码中可能存在丢失更新的情况。解决方案:1、首先使用select * from update 2、然后使用update或者delete丢失更新:例:1、用户1检索一行数据2、用户2检索相
2013-08-04 21:29:57 711
原创 plsql(autotrace)-SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enable
SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enable 以前一直用 SYS 用户使用 autotrace, 今天用其它用户使用 autotrace 来获得执行计划报如下错误SQL> set autotrace onSP2-0618: Cannot find the Session Identifier
2013-08-04 09:50:50 688
原创 plsql-shell调用存储过程
sqlplus -s $DBUSER/$DBPWD set pages 0 set serveroutput on set feedback offexecute PROC_ZJYJ_JHLTJ(${BEGIN_DATE},${END_DATE},${JGH});quit;!!
2013-08-04 09:48:56 941 1
原创 plsql-存储过程ORA-06550错误处理
最近编写一个存储过程发现如下错误:ORA-06550: line 1, column 7: PLS-00905: object SZXFJF.update_flag is invalid ORA-06550: line 1, column 7: PL/SQL: Statement ignored create or replace procedure update_flag
2013-08-03 17:30:29 12797
原创 with as的update写法
SQL> update sj_fileprocresult_0803 sj set sj.dzstatus = ( with sql1 as (select substr(sequence,5,28) as sequence , checkresultflag from dz_resultfromboss_dz dz1 w
2013-08-02 11:18:09 10502 2
转载 ora-00054-事务被锁定处理
ora-00054:resource busy and acquire with nowait specified解决方法当某个数据库用户在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait specified这样的错误。主要是因为有事务正在执行(或者事务已
2013-08-01 16:38:17 900
原创 awk的printf用法
awk -F "|" 'begin{id=1001}{printf("%15d|%s%s|\n",id,$0,55,"xx",""); id=id+1;printf("%15d|%s%s|\n",id,$0,56,"xx",""); id=id+1;}' aa.txt
2013-08-01 16:22:54 979
原创 plsql-sqlldr导入
控制文件:input.ctl,内容如下: load data --1、控制文件标识 infile 'test.txt' --2、要输入的数据文件名为test.txt append into table test --3、向表test中追加记录
2013-08-01 16:01:06 4157
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人