Oracle基础培训.ppt
《Oracle基础培训.ppt》由会员分享,可在线阅读,更多相关《Oracle基础培训.ppt(92页珍藏版)》请在三一办公上搜索。
1、Oracle基础,2023/11/8,Contents,2023/11/8,基本概念,数据库:是一个数据集合,我们大多数情况下讲的数据库概念不仅是指物理数据,还指内存、进程对象的组合。ORACLE数据库都将数据存储在文件中,在其内部,数据库结构提供了数据对文件的逻辑映射,允许不同类型的数据分开存放。这些逻辑划分称为表空间。表空间(Tablespace):是数据库的逻辑划分,每个数据库至少有一个表空间(system表空间)。数据文件(DataFile):每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件。建立新表空间需要建立新的数据文件。实例(Instance):也称为服务器(ser
2、ver),是存取和控制数据库的软件机制,它由系统全局区SGA和后台进程组成。,2023/11/8,Oracle的物理结构,数据文件是物理存储ORACLE数据库数据的文件,每一个ORACLE数据库有一个或多个物理的数据文件(data file)。一个数据库的所有数据文件包含了全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中每一个数据文件只与一个数据库联系一个表空间可包含一个或多个数据文件,2023/11/8,Oracle的物理结构,日志文件每一个数据库有两个或多个日志文件(redo log file)的组,每一个日志文件组用于收集数据库日志。日志的主要功能是记录对
3、数据所做的修改,所以对数据库做的全部修改是记录在日志中。日志文件的主要作用是保护数据库以防止故障。为了防止日志文件本身的故障,ORACLE允许镜象日志(mirrored redo log),可以在不同磁盘上维护两个或多个日志副本。日志文件中的信息仅在系统故障或介质故障时用来恢复数据库,2023/11/8,Oracle的物理结构,控制文件数据库名。数据库数据文件和日志文件的名字和位置。数据库建立日期。控制文件用于标识数据库和日志文件数据库的物理组成更改时,ORACLE自动更改该数据库的控制文件,2023/11/8,Oracle的物理结构,参数文件(init.ora)设置SGA的大小。设置数据库的
4、全部缺省值。设置数据库的范围。在数据库建立时定义数据库的物理属性。指定控制文件名和路径。通过调整内存结构,优化数据库性能。,2023/11/8,系统全局区,共享池共享SQL区和数据字典区组成,参数shared_pool_size确定共享池大小数据块缓冲区用于存储从数据文件中读出的数据DB_BLOCK_SIZE确定数据块的大小DB_BLOCK_BUFFERS确定数据块的数目DB_BUFFERS=DB_BLOCK_BUFFERSDB_BLOCK_SIZE=物理内存(1525)%日志缓冲区以记录项的形式备份数据库缓冲区中被修改的缓冲块,由参数LOG_BUFFER确定字典缓冲区用于存放数据字典信息行S
5、GA设置大小总原则SGA=DB_BLOCK_BUFFERSDB_BLOCK_SIZE+SHARE_POOL_SIZE+SORT_AREA_SIZE+1M+3DB_BLOCK_SIZE(CPUs+2)PARALELL_MAX_SREVERS,2023/11/8,逻辑结构,ORACLE的逻辑结构是由一个或多个表空间组成,一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间(tablespace)。一个表空间可将相关的逻辑结构组合在一起。一个表空间由一组分类段组成。一个段由一组范围组成。一个范围由一批数据库块组成。一个数据库块对应一个或多个物理块。,2023/11/8,表,表是数据库的最基本的逻
6、辑结构,一切数据都存放在表中,一个ORACLE数据库就是由若干个数据表组成。其它数据库对象都是为了用户很好地操作表中的数据。表是关系模型中反映实体与属性关系的二维表格,它由列和行组成,通过行与列的关系,表达出了实体与属性的关系列名:列的名称。长度:该列所能容纳的最大数据位数。类型:该列存储的数据类型,常用数据类型如0.0.0 0.所示。关键字:该列能唯一表示一行内容,则称该列为关键字。非空列:该列值是不能为空的。,2023/11/8,表,删除表数据Delete:删除数据时,数据库需要写日志,ORACLE数据库还需要占用回滚段,每次事务越大,对数据库的冲击越大,所以在删除或者更新数据时,一定要注
7、意控制事务的大小Truncate:删除表中所有数据,并回收空间。,2023/11/8,删除表,删除表命令为DROP,利用DROP命令删除表注意:删除表中全部行。删除表中全部索引。如果它不是聚集的成分,系统将收回该表的所有存储空间。如果该表为视图的基表,或在存储过程、函数或包中被引用,ORACLE将使这些对象无效但没有被删除,在表恢复后,这些对象仍可使用。,2023/11/8,建表约束,非空完整性约束唯一完整性约束主码完整性约束check完整性约束检查处理 sex check(m,w)限制插入sex字段只能是检查中的两种引用完整性约束。,2023/11/8,建表约束,引用完整性约束时需要注意以下
8、几点先建主表,后从表。从表引用的必须是主表的主码或定义了唯一性约束的列。从表的外来码值必须匹配与主表的引用码的值当删除主表记录时,从表指定了ondelete cascade子句,连带删除从表记录,否则,若从表中有对应记录,则不能删除主表记录。,2023/11/8,视图(View),数据中表的窗口,在表上的查询所形成的一个数据集体。通过视图,你将看到你所需要的信息,而排除其它不关心的内容。主要作用如下将表中所需要的列和行选取出来传递给用户。不是真正将数据重新复制一遍,不占用存储空间。不仅在表的基础上建立,还可在视图的基础之上再建立视图,2023/11/8,视图(View),建立视图主要基于保护数
9、据安全,防止机密数据泄露。简化数据查询方式,建立有效的查询。保持数据独立性,保证程序不会随着数据的位置变化、名称变化而需要修改。,2023/11/8,索引(Index),索引是与表相关的一种选择结构。索引可建立在一表的一列或多列上,由ORACLE自动维护和使用。加快查询速度。确保唯一性特征。索引是一种数据库对象,并不改变表的逻辑结构,而是在物理存储结构上增加一些辅助信息,以提高查询速度。当表中记录增加或删除时,索引结构均要发生变化,因此,当有大量数据装入数据库时,应该先装入数据,后建立索引,以提高数据装入速度。只有当按指定的索引列的值查找或按索引列的顺序存取表时,才可利用索引提高性能。,202
10、3/11/8,B-tree索引,适合于大量的增、删、改操作适合高基数的列(唯一值多)典型的树状结构每个节点都是数据块大多都在物理上一层、两层或三层不定。叶子块数据是排序的,从左到右递增在分支块或根块中放的是索引的范围。,2023/11/8,位图索引,适合于决策支持系统(OLAP);做update操作时代价非常高;基数比较少的时候才适合建位图索引,2023/11/8,不会使用索引的情况(一),存在数据类型隐形转换的select*from emp where emp_id=123;-emp_id是number型列上有数学运算的select*from emp where salary*2 9i以上版
11、本可用,2023/11/8,不会使用索引的情况(二),字符串连接(|)的,如:select*from emp where first_name|s=DONALD;IS NULL 与 IS NOT NULL 不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。函数的索引 日期类型也是很容易用到的,而且在SQL语句中会使用to_char函数以查询具体
12、的的范围日期。如:select*from emp where TO_CHAR(birth_day,YYYY)=2003;如果频繁使用类似语句,可以建立基于此函数的索引如:CREATE INDEX Ind_emp_birth ON emp(to_char(birth_day,YYYY);,2023/11/8,组合索引,即同时包含两个或两个以上的列的索引当使用基于规则的优化器(RBO)时,只有组合索引的前导列出现在SQL语句的where子句时,才会使用到该索引;A、B、C在使用oracle9i之前基于成本的优化器(CBO)时,只有组合索引的前导列出现在SQL语句的where子句时,才会使用到该索引
13、,这取决于优化器计算的使用索引的成本和使用全表扫描的成本,Oracle会自动选择成本低的访问路径;从Oracle9i起,Oracle引入了一种新的索引扫描方式索引跳跃扫描(index skip scan),这种扫描方式只有基于成本的优化器(CBO)才能使用。这样,当SQL语句的where子句中即使没有组合索引的前导列,并且索引跳跃扫描的成本低于其他扫描方式的成本时,Oracle就会使用该方式扫描组合索引;,2023/11/8,执行计划,按F5查看 执行计划相关参数基数(Card):指计划中这一步所处理的行数。耗费(Cost):指cbo中这一步耗费的资源,这个值是相对值。字节(bytes):指c
14、bo中这一步所处理的所有记录的字节数,是估算出来的一组值。,2023/11/8,数据扫描,全表扫描(Full Table Scans,FTS)oracle读取表中的所有行,并检查每一行是否满足语句的WHERE限制条件。一个多块读操作可以一次IO读取多块数据(db_block_multiblock_read_count参数设定),而不是一次只读取一个数据块,这极大的减少了IO总次数,提供系统的吞吐量,所以多块读的方法可以十分高效地实现全表扫描,而且只有在全表扫描的情况下才能使用多块读操作。使用FTS的前提条件:在较大的表上不建议使用全表扫描,除非取出数据量比较多,超过总量的5%10%。通过row
15、id存取行的ROWID指出了该行所在的数据文件、数据块以及行在该块中的位置,所以通过ROWID来存取数据可以快速定位到目标数据上,是oracle存取单行数据的最快方法。这种存取方法不会用到多块读操作,一次IO只能读取一个数据块。我们会经常在执行计划中看到该存取方法,如通过索引查询数据。,2023/11/8,数据扫描,索引扫描:先通过index查询到数据对应的rowid(对于非唯一索引可能返回多个rowid值),然后根据rowid直接从表中得到具体的数据,这种查找方式称为索引扫描。一个rowid唯一表示一行数据,该行对应的数据块是通过一次IO得到的,在这种情况下oracle只会读取一个数据库块。
16、索引扫描由两步组成:扫描索引得到对应的rowid。通过找到的rowid从表中读出具体的数据。,2023/11/8,索引扫描:,每步都是单独的一次IO,对于索引,由于经常使用,绝大多数已经cache到内存中,所以第一步的IO经常是逻辑IO,即数据可以从内存中得到。但是对于第二步,如果表比较大,其数据不可能全在内存中,所以其IO很有可能是物理IO,这是一个机械操作,相对于逻辑IO来说,是机器费时间的。所以如果大表进行索引扫描,取出的数据如果大于总量的5%10%,使用索引扫描效率会下降。如果查询的数据全在索引中找到,就可以避免第二步操作,避免了不必要的IO,此时即使通过索引扫描取出的数据比较多,效率
17、还是很高的。如果sql语句中对索引列进行排序,因为索引已经预先排好序了,那么在执行计划中不需要再对索引列进行排序。根据索引的类型以及where限制条件的不同,有4种类型的索引扫描:(1)索引唯一扫描(index unique scan);(2)索引范围扫描(index range scan);(3)索引全扫描(index full scan)(4)索引快速扫描(index fast full scan),2023/11/8,数据扫描,索引唯一扫描(index unique scan)通过唯一索引查找一个数值返回单个rowid,如果存在unique或primary key约束,oracle经常使
18、用唯一性扫描。索引范围扫描(index range scan)使用index range scan的3种情况:(1)在唯一所列列上使用了range操作符(、=、=、between)。(2)在组合索引上只使用部分列进行查询,导致查询出多行。(3)对非唯一索引列上进行的任何查询。索引全扫描(index full scan)与全表扫描对应,也有相应的全索引扫描。索引快速扫描(index fast full scan)扫描索引中所有的数据块,与index full scan很类似,但是一个显著的区别就是它不对查询出的数据进行排序,即数据不是以排序顺序被返回。在这种存取方法中,可以使用多块读功能,也可以
19、进行并行读入,以便获得最大吞吐量,缩短执行时间。,2023/11/8,同义词(Synonym),同义词是表、视图或其它数据库实体的一个别名。可以用与存取表、视图等实体同样的方法来存取别名。简单性(用户名.表名同义词名)。表的独立性(只需修改同义词的定义,避免修改大量应用程序)。,2023/11/8,序列(Sequence),序列是一个数据库对象,利用它可以生成唯一的整数,序列的值是由ORACLE程序自动生成。创建序列:SQLcreate sequence SEQ_T increment by 10 start with 10 maxvalue 1000 cycle;上例说明:increment
20、 by 10 增量值为10。start with 10 指定生成的第一个序列号为10。maxvalue 1000 指定序列可生成的最大值。cycle 序列上升到最大值1000后,继续由开始值10开始生成。引用序列:序列当前值:SEQ_T.currval 序列下一个值:SEQ_T.nextval,2023/11/8,数据库链(Database Link),数据库链是本地数据库中的一个对象,利用它可以存取远程数据库上的对象。在远程表或视图之后附加db链名,即可在SQL语句中引用远程表或视图。有专用数据库链和公用数据库链之分,专用数据库链仅为建立者使用;公用数据库链必须用关键字public定义,公用
21、数据库链可为全部用户使用create database link USER2(连接名字,利用该名字就可以直接上数据库)using USER2(服务名称,即在本地的net manager中配置的连接远程数据库的服务名)connect to SCOTT1(连接远程数据库时的用户名)identified by TIGER1(密码),2023/11/8,数据字典,ORACLE数据库的最重要的部分之一,是由一组只读的表及其视图所组成。这些表和视图是数据库被建立同时由数据库系统建立起来的,起着系统状态的目录表的作用。数据字典描述表、列、索引、用户、访问权以及数据库中的其它实体,当其中的一个实体被建立、修改
22、或取消时,数据库将自动修改数据字典。因此,数据字典总是包含着数据库的当前描述。数据字典提供有关该数据库的信息,可提供的信息如下:,ORACLE用户的名字。每一个用户所授的特权和角色。模式对象的名字(表、视图、索引、同义词等)。关于完整性约束的信息。列的缺省值。有关数据库中对象的空间分布信息及当前使用情况。审计信息(如谁存取或修改各种对象)。其它一般的数据库信息。,2023/11/8,数据字典,可用SQL存取数据字典,由于数据字典为只读,只允许查询。数据字典中全部基本表和用户可存取视图为ORACLE用户SYS所持有,所有对象包含在SYS模式中,安全管理员对该帐号要严格控制。当ORACLE数据库系
23、统启动后,数据字典总是可用,它驻留在SYSTEM表空间中。数据字典包含视图集,在许多情况下,每一视图集有三种视图包含有类似信息,彼此以前缀相区别,前缀为USER、ALL和DBA。前缀为USER的视图,为用户视图,是在用户的模式内。前缀为ALL的视图为扩展的用户视图(为用户可存取的视图)。前缀为DBA的视图为DBA的视图(为全部用户可存取的视图)。,2023/11/8,常用数据字典与视图,ORACLE数据库有三个可查看系统数据库字典的用户:system、internal、sys,其它用户只能查看授权表空间的数据库字典,以某一用户登录数据库后可查看一些数据字典,了解数据库的资源情况,对日常维护的故
24、障定位能起很大的帮助,下面就一些常用的数据表(视图)进行简单的说明:,dba_tablespaces(user_tablespaces)除三个系统用户以外的用户登录可查看user_tablespaces表。dba_tablespaces(user_tablespaces)表可查看本数据库的表空间,它存放各个表空间的属性,包括:表空间名、表空间宿主、以及存储参数(initial、next、maxextents、minextents、blocks等)等。dba_data_files(user_data_files)该表可查看数据库所有数据库数据文件,它存放了各个数据文件的属性,包括:表空间名、宿主
25、、数据文件名、大小、可用空间以及ID号等。dba_segments(user_segments)该表可查看数据库所有段,它存放了各个段的属性,包括:段名、表空间名、宿主、大小、第一个区间的块号等。,dba_rollback_segs 该表可查看数据库所有回滚段,它存放了各个数据库回滚段的属性,包括:回滚段名、表空间名、宿主、存储参数(initial、next、maxextents、minextents等)、第一个区间的块号、占用数据库文件ID号。dba_extents 该表可查看数据库所有区间,它存放了各个区间的属性,包括:区间ID、使用段ID、所属对象(object)名、宿主、占用数据库文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 基础 培训

链接地址:https://www.31ppt.com/p-6513463.html