`
java-mans
  • 浏览: 11453731 次
文章分类
社区版块
存档分类
最新评论

oracle开发注意事项小结

 
阅读更多

1)统计信息里面,有两行和性能有关。

 15  SQL*Net roundtrips to/from client
 198  rows processed

第一行表示,从buffer cache到PGA的结果集的往返次数

第二行表示,访问到的数据块里面的行的个数

计算:

SQL*Net roundtrips=[ rows processed/arraysize]+2,当且仅当,rows processed为0,则SQL*Net roundtrips等于1.

比如:15=[198/13]+2

注释:在sql*plus中,arraysize缺省为15,命令set arraysize n 可设定arraysize的值。

2)L99999,999.000

a)L:表示继承nls_territory的属性

b)9:表示替换符

c)0:表示占位符

d),:表示千分位

f)若是$999999,则查询输出便总是$打头

3)break on 字段名

作用:去掉单列重复值

SQL> select employee_id,hire_date,job_id from employees;

EMPLOYEE_ID HIRE_DATE      JOB_ID
----------- -------------- --------------------
        198 21-6月 -99     SH_CLERK
        199 13-1月 -00     SH_CLERK
        200 17-9月 -87     AD_ASST
        201 17-2月 -96     MK_MAN
        202 17-8月 -97     MK_REP
        203 07-6月 -94     HR_REP
        204 07-6月 -94     PR_REP
        205 07-6月 -94     AC_MGR
        206 07-6月 -94     AC_ACCOUNT
        100 17-6月 -87     AD_PRES
        101 21-9月 -89     AD_VP
        102 13-1月 -93     AD_VP
        103 03-1月 -90     IT_PROG
        104 21-5月 -91     IT_PROG
        105 25-6月 -97     IT_PROG
        106 05-2月 -98     IT_PROG
        107 07-2月 -99     IT_PROG
SQL> break on job_id
SQL> /

EMPLOYEE_ID HIRE_DATE      JOB_ID
----------- -------------- --------------------
        198 21-6月 -99     SH_CLERK
        199 13-1月 -00
        200 17-9月 -87     AD_ASST
        201 17-2月 -96     MK_MAN
        202 17-8月 -97     MK_REP
        203 07-6月 -94     HR_REP
        204 07-6月 -94     PR_REP
        205 07-6月 -94     AC_MGR
        206 07-6月 -94     AC_ACCOUNT
        100 17-6月 -87     AD_PRES
        101 21-9月 -89     AD_VP
        102 13-1月 -93
        103 03-1月 -90     IT_PROG
        104 21-5月 -91
        105 25-6月 -97
        106 05-2月 -98
        107 07-2月 -99
SQL> clear break
breaks 已清除


4)dba视图和user视图通常是成双成对的。如:

dba_cons_columns

user_cons_columns

5)DML的注意事项

insert和插入顺序,只要有空间就插入,随意。

update和行迁移,保留的pctfree不足,可能会有行溢出

delete无法改变HWM,全表扫描时仍然效率低下

6)update在开发中要注意:须先select ...... for update nowait;再来update

会话1:

SQL> select * from t;

        ID NAME
---------- --------------------
         1 a
         2 b
         3 c

SQL> update t set name='d' where id=1;

已更新 1 行。


会话2:

SQL> select * from t for update nowait;
select * from t for update nowait
*
第 1 行出现错误:
ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源


SQL> update t set name='www' where id=3;

已更新 1 行。


注:在同一个表的不同行进行更新时,这种方法尤为重要。

7)死锁本身是oracle自动探测,自动维护的。当发生死锁时,我们需要把最先探测到死锁的会话commit,然后,执行同一个语句;去另一个会话:commit;最后,回到原来会话,commit。

8)外键是关系型数据库的第三维。

9)DDL,DCL不仅隐式提交了自己,并且,也把前面所有交易都给提交了。

10)保存点:savepoint x1;

这里的x1是行锁的名字,也可以说是行锁的小名。

11)oracle 有行级独占锁和表级共享锁。但我们可以人为的添加:

表急独占锁:lock table table_name in exclusive mode

12)

内模式:表空间、段、区、块等

外模式:对象,如表、索引、物化视图等

oracle通过这种内/外模式的二级映像,保证了数据的独立性。

13)各种RDBMS在互相导入导出的时候,特别,也最令人疏忽的一点是,它们的命名规则可能存在差异,如表名,rman等,导致无法导入或导出。oracle很多命名都不得超过30个字符

14)一个新建的用户,要想创建表,需要:

a)操作create table的权限

b)空间权限

注意:在角色resource中,会包含unlimited quota,但是,不推荐使用resource直接赋给用户,原因有二:

i)unlimited quota违背了最小权限的原则,甚至能在system表空间上为所欲为。

ii)角色会延迟生效,同样滴,也是延迟回收。倘若x君跳槽了,若他可以获得原公司内网ip,他仍然有权限去获取他原来能做的事。

综上:建议采纳:

alter user user_name quota Xm on tablespace_name;

如:alter user think quota 1m on users;

15)严重提醒:not in (........)里面的null,如果存在null,则返回的绝对是空值。因为,in本是或的关系,加上not,则任何值和null,逻辑与,其结果都是空。

16)set echo on:可用以显示脚本的执行内容

17)几种常见索引失效的情况,如下:

i)凡是有not的,则索引都会失效。因为,索引只会告诉你,有什么,而不会告诉你没有什么。就像书的目录一样,只会告诉你,在哪一页有什么内容。

ii)千万别用函数什么的把列给污染,否则,索引可能失效。

iii)oracle优化器基于CBO的认为,索引的代价比全表扫描来得大,那么也会废弃索引。

18)group by用于降维,但是,被它降下来的是一条直线,而不是一点。

19)聚合函数也是用于降低维度,被它降下来的就只是一点,会自动跳过空值。

20)学习oracle函数,只要记住两点:

a)悟空

b)降维

21)count(*):会考虑空值

count(字段名):不会考虑空值

22)建议having只用于过滤聚合函数的结果集,非聚合函数的结果集先用where过滤掉

23)定了表别名后,原名会失效,但是列别名无所谓。

分享到:
评论

相关推荐

    ORACLE应用性能与安全开发建议50条

    在实战中总结的关于ORACLE开发过程中的50条基本注意事项,对于初学者来说阅读后能养成良好的编码习惯,降低因为一些常识性问题写出BAD SQL的几率。哪怕是工作几年的老鸟,有些地方也是我们容易忽略的。推荐给大家。

    oracle实验报告

    3. 触发器注意事项 (1)触发器可以声明为在对记录进行操作之前,在之前(检查约束之前和 INSERT,UPDATE 或 DELETE 执行前)或之后(在检查约束之后和完成 INSERT, UPDATE 或 DELETE 操作)触发.。 (2)一个 FOR ...

    Oracle数据库、SQL

    2.10其他注意事项 6 三、 SQL语句的处理过程 7 3.1 SQL语句处理过程 7 3.2处理一条select语句 7 四、 where子句 8 4.1 where子句后面可以跟什么 8 4.2语法和执行顺序 8 4.3字符串是大小写敏感的,在比较时严格区分大...

    Oracle_Database_11g完全参考手册.part3/3

    11.1.2 关于自动转换的注意事项 11.2 特殊的转换函数 11.3 变换函数 11.3.1 TRANSLATE 11.3.2 DECODE 11.4 小结 第12章 分组函数 12.1 groupby和having的用法 12.1.1 添加一个orderby 12.1.2 执行顺序 12.2 分组...

    Oracle_Database_11g完全参考手册.part2/3

    11.1.2 关于自动转换的注意事项 11.2 特殊的转换函数 11.3 变换函数 11.3.1 TRANSLATE 11.3.2 DECODE 11.4 小结 第12章 分组函数 12.1 groupby和having的用法 12.1.1 添加一个orderby 12.1.2 执行顺序 12.2 分组...

    php网络开发完全手册

    7.6 字符操作的注意事项 117 7.7 小结 118 第8章 数组操作与数据结构算法 119 8.1 一维数组与多维数组 119 8.1.1 一维数组简介 119 8.1.2 多维数组简介 119 8.2 常用的数组操作 120 8.2.1 数组的创建与调用 120 ...

    亮剑.NET深入体验与实战精要2

    15.5.8 使用DataReader的注意事项 568 15.5.9 Command对象的使用 569 15.5.10 反复地执行SQL语句用 Prepare() 569 15.5.11 分页的数据访问 570 15.5.12 SQL命令的优化 570 15.5.13 tempdb的使用技巧 572 15.5.14 ...

    亮剑.NET深入体验与实战精要3

    15.5.8 使用DataReader的注意事项 568 15.5.9 Command对象的使用 569 15.5.10 反复地执行SQL语句用 Prepare() 569 15.5.11 分页的数据访问 570 15.5.12 SQL命令的优化 570 15.5.13 tempdb的使用技巧 572 15.5.14 ...

    asp.net知识库

    .net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常 Ado.net 与NHibernate的关系? 动态创建数据库 SQL Server数据库安全规划全攻略 .net通用数据库访问组件SQL Artisan应用简介1 在Framework1.0下...

    Linux环境数据库管理员指南

    2.4.13 需要注意的事项 36 2.5 Linux的其他风格 36 2.6 小结 37 2.7 常见问答 38 第3章 在 Linux上安装并运行 Oracle 40 3.1 引言 40 3.2 概念 41 3.2.1 系统全局区域 41 3.2.2 程序全局区域 42 3.2.3 表空间 42 ...

    计算机实习日记

    今天技术部有经验的同事给我仔细讲解了公司软件产品安装和维护中的每一款注意事项,还现场演示了公司的一款叫“商业银行综合柜面业务实训教学软件”的软件产品的安装流程以及操作系统、软件系统的配置。 下午我公司...

    Spring API

    14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的...

    Spring中文帮助文档

    14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的...

    二十三种设计模式【PDF版】

    因为很多人没有注意到这点,学完 Java 基础语言就直接去学 J2EE,有的甚至鸭子赶架,直接使用起 Weblogic 等具体 J2EE 软 件,一段时间下来,发现不过如此,挺简单好用,但是你真正理解 J2EE 了吗?你在具体案例中的...

    springmybatis

    后来项目结束了,我也没写总结文档。已经过去好久了。但最近突然又对这个ORM 工具感兴趣。因为接下来自己的项目中很有可能采用这个ORM工具。所以在此重新温习了一下 mybatis, 因此就有了这个系列的 mybatis 教程. ...

Global site tag (gtag.js) - Google Analytics