oracle数据库基本语句 怎么查看 消耗内存最多的一条SQL

第一部分、SQL语言基础

第一章:Oracle命令类别及sql简单语法介绍
第二章:oracle的基本函数
第三章:oracle的数据类型

第二部分、oracle基本对象及SQL优化


第五章:oracle事务和锁

第四部分、oracle数据库管理简介

第一章:oracle体系结构
第二章:oracle高水位线
第五章:oracle删除和卸载

此外,表尾部的null列不占用空间,表设计时尽量将可能空值的列放到最后

第三章、oracle的数据类型

3.1 四种基本的常用数据类型

1、字符型, 2、数值型,3、日期型,4、大对象型

nvarchar2(1)能存储一个字符具体暂用几个字节根据字符集而定,而上面两种是字节数
raw和long raw 固定/可变长度的二进制数据长度 最长2G,可存放多媒体图象声音等。(老类型,逐步淘汰)
LONG 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,一个表中最多一个LONG列。(老类型,逐步淘汰)。

3中固有类型来存储数值
NUMBER:精度可达38位,边长格式,长度为0-22字节,这是目前最为常用的数字类型。 范围 10(-130) 到10(126)之间的任何数

date 日期的普通形式,表示精度只能到秒级。
timestamp 日期的扩展形式,表示精度可达秒后小数点9位(10亿分之1秒)。
3.1.4 LOB型:大对象是10g 引入的,在11g中又重新定义,在一个表的字段里存储大容量数据,所有大对象最大都可能达到4G

CLOB: 用来存储单字节的字符数据,包含在数据库内。
  NCLOB:用来存储多字节的字符数据 
  BLOB:用于存储二进制数据,包含在数据库内。
BFILE:存储在数据库之外的二进制文件中,这个文件中的数据只能被只读访问。

 CLOB,NCLOB,BLOB都是内部的LOB类型,没有LONG只能有一列的限制
保存图片或电影使用BLOB最好、如果是小说则使用CLOB最好。
 虽然LONG RAW也可以使用,但LONG是oracle将要废弃的类型,因此建议用LOB。

外连接 (内连的扩展,左外,右外,全连接)
自然连接(内连,隐含连接条件,自动匹配连接字段)
复合连接 (多个结果集进行并、交、差)

4.2.1 交叉连接(笛卡尔积)
连接条件无效或被省略,两个表的所有行都发生连接,所有行的组合都会返回(n*m)

非等值连接:(连接条件非等值,也属于内连范畴)


4.2.2 等值连接,典型的内连接

4.2.3 外连接包括左外连接,右外连接,全外连接

4.2.5 自然连接(属于内连中等值连接)

-----将两个表分别再加一个列ABC后,则有两个公共列(ID列和ABC列),添加数据后,再尝试自然连接如何匹配。

在自然连接中可以使用using关键字:

当使用natraul join关键字时,如果两张表中有多个字段,它们具有相同的名称和数据类型,那么这些字段都将被oracle自作主张的将他们连接起来。但如果名称相同,类型不同,或者当你需要在多个字段同时满足连接条件的情况下,想人为指定某个(些)字段做连接,那么可以使用using 关键字。

using里未必只能有一列


4.3.复合查询(使用集合运算符)

Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All,对两个结果集进行并集操作,包括所有重复行,不进行排序;

Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

Minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。

拿t2中的数据去更新t1

发现id=3的数据被更新成空

4.4多表连接中的三种表连接

多表连接时,oracle一次只能连接两个表,优化器从一个表开始,将他与下一个表连接,再将中间结果与接下来的表相连接,直到结束返回结果。

原理:选定一张表做为驱动表也称为外部表,Oracle会遍历驱动表中的每一行,根据连接条件去匹配第二张表(内部表)中的行。

原理:(1)先对每个数据子集进行全表扫描并(2)对排序结果进行合并(从一个排序表中取出数据到另一个排序表中进行匹配)
1.由于排序资源消耗较大,所以这种连接方式一般来所没有有hosh join经济,提别是大表连接时。
2.档数据源已排序的情况下可能会选择该方式

这是比较常用的连接方式
原理:优化器首先扫描较小的表,利用连接键在内存中通过hash函数建立hash表(bitmap位图方式),然后扫描大表,每读到一条记录就通过该hash函数计算hash值来探测hash表,找出与hash表匹配的行。
(1)如果是小表可以全部放到内存,则连接成本接近两个表全表扫描的成本之和。
(2)如果表比较大,优化器就会将其分割为不同的分区,把不能放入内存的部分写入磁盘的临时段。临时段的内容需要再读入内存做hash连接。此时的代价接近
全表扫描小表+分区数*全表扫描大表
(3)适用于两大大表之间的连接或大表与小表之间的连接
(4)hash连接不使用索引

第二部分、oracle基本对象及SQL优化

1.索引虽然会或多或少降低插入的数度,但却能大大提高查询的效率,一般来说建索引是值得的,特别对于OLTP系统,非常关键。
2.如果可能尽可能避免访问原表
3.根据不同的数据分布和使用条件来创建索引

优点:1.物理上每个分区的数据存在一起,查询时能直接跳过不必要的分区
缺点:插入时消耗cpu

第五章:oracle事务和锁

必须具备以下四个属性,简称ACID 属性:
原子性(Atomicity): 事务是一个完整的操作。事务的各步操作是不可分的(如原子不可分);各步操作要么都执行了,要么都不执行。
一致性(Consistency):1)一个事务结束之后,所有会话发起的查询所看到的该事务的结果都是一致的(commit后的查询有同样的结果)。
2)一个查询的结果必须与数据库在查询开始时的状态保持一致(读不等写,写不等读)。
隔离性(Isolation): 某个会话正在进行的事务所引起的变更对于其他会话来说必须不可见。
持久性(Durability): 事务一旦提交完成后,数据库就不可以丢失这个事务的结果,数据库通过日志能够保持事务的持久性。

10.2 事务的开始和结束

10.2.1 事务采用隐性的方式,起始于session的第一条DML语句,

2)DDL语句被执行(提交)
3)DCL语句被执行(提交)
4)用户退出SQLPLUS(正常退出是提交,非正常退出是回滚)
5)服务器故障或系统崩溃(回滚)

Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式。
因为Hint的特殊作用,所以对于开发人员不应该在代码中使用它,Hint 更像是Oracle提供给DBA用来分析问题的工具 。
在SQL代码中使用Hint,可能导致非常严重的后果,因为数据库的数据是变化的,在某一时刻使用这个执行计划是最优的,
在另一个时刻,却可能很差,这也是CBO 取代RBO的原因之一,规则是死的,而数据是时刻变化的,为了获得最正确的执行计划,
只有知道表中数据的实际情况,通过计算各种执行计划的成本,则其最优,才是最科学的,这也是CBO的工作机制。
在SQL代码中加入Hint,特别是性能相关的Hint是很危险的做法。
在使用Hint时需要注意的一点是,并非任何时刻Hint都起作用。
导致HINT 失效的原因有如下2点:
(1) 如果CBO 认为使用Hint 会导致错误的结果时,Hint将被忽略。如索引中的记录因为空值而和表的记录不一致时,结果就是错误的,会忽略hint。
(2) 如果表中指定了别名,那么Hint中也必须使用别名,否则Hint也会忽略。

第七章:oracle表空间
主要存放数据字典信息(各种视图),存储过程,触发器,包等,是很重要的表空间,损坏后数据库即不可用
是system表空间的辅助表空间,存储system表空间之外的元数据,如快照信息,awr报告,oem等使用该表空间存储信息

存储不能放入内存的排序数据,临时表数据,不计日志
第四部分、oracle数据库管理简介

第一章:oracle体系结构
第二章:oracle高水位线
在数据库中,如果把表想象成从左到右依次排开的一系列块,高水位线就是曾经包含了数据的最右边的块。原则上HWM只会增大, 即使将表中的数据全部删除,HWM也不会降低。
HWM不是好事,使用全表扫描时通常要读出HWM以下的所有数据块(尽管该表中可能仅有少量数据),这将白白耗费大量IO资源。
2)两个解决办法可降低HWM:
2.1)移动表,move方法, 将表从一个表空间移动到另一个表空间(也可以在本表空间内move)。
优点:可以清除数据块中的碎片,降低高水位线。
缺点:move需要额外(一倍)的空间。
move过程中会锁表,其他用户不能在该表上做DML或DDL操作。
move之后,相关索引都不可用了,表上的索引需要重建。

2.2)收缩表,shrink 也叫段重组,表收缩的底层实现的是通过匹配的INSERT和DELETE操作。
它分两个不同的阶段:压缩阶段和DDL命令阶段。(PPT-II-491)


没有演示成功问题是因为我在前面建了一个基于函数的索引,如果选择第一种move方法的话就不会有问题。


可以先执行压缩再在高峰期过后执行DDL(会有短暂的锁等待),可用性高
缺点:产生较多的undo和redo日志

该技术依赖于undo表空间
第五章:oracle删除和卸载

使用OUI可以卸载数据库,但卸载后注册表和文件系统内仍会有部分残留。这些残留不仅占用

我要回帖

更多关于 oracle数据库基本语句 的文章

 

随机推荐