《Oracle基础培训.ppt》由会员分享,可在线阅读,更多相关《Oracle基础培训.ppt(92页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Oracle基础基础2023/1/28ContentsOracle安装基础1Oracle语法基础2Sql简单优化3Oracle系统参数简介42023/1/28基本概念基本概念v数据库:是一个数据集合,我们大多数情况下讲的数据库概念不仅是指数据库:是一个数据集合,我们大多数情况下讲的数据库概念不仅是指物理数据,还指内存、进程对象的组合。物理数据,还指内存、进程对象的组合。ORACLE数据库都将数据存数据库都将数据存储在文件中,在其内部,数据库结构提供了数据对文件的逻辑映射,允储在文件中,在其内部,数据库结构提供了数据对文件的逻辑映射,允许不同类型的数据分开存放。这些逻辑划分称为表空间。许不同类型
2、的数据分开存放。这些逻辑划分称为表空间。v表空间(表空间(Tablespace):是数据库的逻辑划分,每个数据库至少有):是数据库的逻辑划分,每个数据库至少有一个表空间(一个表空间(system表空间)。表空间)。v数据文件(数据文件(DataFile):每个表空间由同一磁盘上的一个或多个文件):每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件。建立新表空间需要建立新的数据文件。组成,这些文件叫数据文件。建立新表空间需要建立新的数据文件。v实例(实例(Instance):也称为服务器():也称为服务器(server),是存取和控制数据),是存取和控制数据库的软件机制,它由系统全局
3、区库的软件机制,它由系统全局区SGA和后台进程组成。和后台进程组成。2023/1/28Oracle的物理结构的物理结构v数据文件是物理存储数据文件是物理存储ORACLE数据库数据的文件,数据库数据的文件,每一个每一个ORACLE数据库有一个或多个物理的数据文数据库有一个或多个物理的数据文件件(data file)。一个数据库的所有数据文件包含了全。一个数据库的所有数据文件包含了全部数据库数据。逻辑数据库结构(如表、索引)的数部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中据物理地存储在数据库的数据文件中每一个数据文件只与一个数据库联系每一个数据文件只与一个数据库联
4、系一个表空间可包含一个或多个数据文件一个表空间可包含一个或多个数据文件2023/1/28Oracle的物理结构的物理结构v日志文件日志文件每一个数据库有两个或多个日志文件每一个数据库有两个或多个日志文件(redo log file)的组,每一个日志的组,每一个日志文件组用于收集数据库日志。日志的主要功能是记录对数据所做的修改,文件组用于收集数据库日志。日志的主要功能是记录对数据所做的修改,所以对数据库做的全部修改是记录在日志中。日志文件的主要作用是保所以对数据库做的全部修改是记录在日志中。日志文件的主要作用是保护数据库以防止故障。为了防止日志文件本身的故障,护数据库以防止故障。为了防止日志文件
5、本身的故障,ORACLE允许允许镜象日志镜象日志(mirrored redo log),可以在不同磁盘上维护两个或多个日志,可以在不同磁盘上维护两个或多个日志副本。副本。日志文件中的信息仅在系统故障或介质故障时用来恢复数据库日志文件中的信息仅在系统故障或介质故障时用来恢复数据库2023/1/28Oracle的物理结构的物理结构v控制文件控制文件数据库名。数据库名。数据库数据文件和日志文件的名字和位置。数据库数据文件和日志文件的名字和位置。数据库建立日期。数据库建立日期。控制文件用于标识数据库和日志文件控制文件用于标识数据库和日志文件数据库的物理组成更改时,数据库的物理组成更改时,ORACLE自
6、动更改该自动更改该数据库的控制文件数据库的控制文件2023/1/28Oracle的物理结构的物理结构v参数文件(参数文件(init.ora)设置设置SGA的大小。的大小。设置数据库的全部缺省值。设置数据库的全部缺省值。设置数据库的范围。设置数据库的范围。在数据库建立时定义数据库的物理属性。在数据库建立时定义数据库的物理属性。指定控制文件名和路径。指定控制文件名和路径。通过调整内存结构,优化数据库性能。通过调整内存结构,优化数据库性能。2023/1/28系统全局区系统全局区v共享池共享池共享共享SQL区和数据字典区组成,参数区和数据字典区组成,参数shared_pool_size确定共享池大小确
7、定共享池大小v数据块缓冲区数据块缓冲区用于存储从数据文件中读出的数据用于存储从数据文件中读出的数据DB_BLOCK_SIZE确定数据块的大小确定数据块的大小DB_BLOCK_BUFFERS确定数据块的数目确定数据块的数目DB_BUFFERS=DB_BLOCK_BUFFERSDB_BLOCK_SIZE=物理内存物理内存(1525)%v日志缓冲区日志缓冲区以记录项的形式备份数据库缓冲区中被修改的缓冲块,由参数以记录项的形式备份数据库缓冲区中被修改的缓冲块,由参数LOG_BUFFER确定确定v字典缓冲区字典缓冲区用于存放数据字典信息行用于存放数据字典信息行vSGA设置大小总原则设置大小总原则SGA=
8、DB_BLOCK_BUFFERSDB_BLOCK_SIZE+SHARE_POOL_SIZE+SORT_AREA_SIZE+1M+3DB_BLOCK_SIZE(CPUs+2)PARALELL_MAX_SREVERS2023/1/28逻辑结构逻辑结构vORACLE的逻辑结构是由一个或多个表空间的逻辑结构是由一个或多个表空间组成,一个数据库划分为一个或多个逻辑单组成,一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间位,该逻辑单位称为表空间(tablespace)。一个表空间可将相关的)。一个表空间可将相关的逻辑结构组合在一起。逻辑结构组合在一起。一个表空间由一组分类段组成。一个表空间由一组分
9、类段组成。一个段由一组范围组成。一个段由一组范围组成。一个范围由一批数据库块组成。一个范围由一批数据库块组成。一个数据库块对应一个或多个物理块。一个数据库块对应一个或多个物理块。2023/1/28表表v表是数据库的最基本的逻辑结构,一切数据都存放在表是数据库的最基本的逻辑结构,一切数据都存放在表中,一个表中,一个ORACLE数据库就是由若干个数据表组数据库就是由若干个数据表组成。其它数据库对象都是为了用户很好地操作表中的成。其它数据库对象都是为了用户很好地操作表中的数据。表是关系模型中反映实体与属性关系的二维表数据。表是关系模型中反映实体与属性关系的二维表格,它由列和行组成,通过行与列的关系,
10、表达出了格,它由列和行组成,通过行与列的关系,表达出了实体与属性的关系实体与属性的关系列名:列的名称。列名:列的名称。长度:该列所能容纳的最大数据位数。长度:该列所能容纳的最大数据位数。类型:该列存储的数据类型,常用数据类型如类型:该列存储的数据类型,常用数据类型如0.0.0 0.所示。所示。关键字:该列能唯一表示一行内容,则称该列为关键字。关键字:该列能唯一表示一行内容,则称该列为关键字。非空列:该列值是不能为空的。非空列:该列值是不能为空的。2023/1/28表表v删除表数据删除表数据Delete:删除数据时,数据库需要写日志,:删除数据时,数据库需要写日志,ORACLE数据库还需要占用回
11、滚段,每次事务越数据库还需要占用回滚段,每次事务越大,对数据库的冲击越大,所以在删除或者更新数大,对数据库的冲击越大,所以在删除或者更新数据时,一定要注意控制事务的大小据时,一定要注意控制事务的大小Truncate:删除表中所有数据,并回收空间。:删除表中所有数据,并回收空间。2023/1/28删除表删除表v删除表命令为删除表命令为DROP,利用,利用DROP命令命令删除表注意:删除表注意:删除表中全部行。删除表中全部行。删除表中全部索引。删除表中全部索引。如果它不是聚集的成分,系统将收回该表的所有存如果它不是聚集的成分,系统将收回该表的所有存储空间。储空间。如果该表为视图的基表,或在存储过程
12、、函数或包如果该表为视图的基表,或在存储过程、函数或包中被引用,中被引用,ORACLE将使这些对象无效但没有被将使这些对象无效但没有被删除,在表恢复后,这些对象仍可使用。删除,在表恢复后,这些对象仍可使用。2023/1/28建表约束建表约束v非空完整性约束非空完整性约束v唯一完整性约束唯一完整性约束v主码完整性约束主码完整性约束vcheck完整性约束完整性约束检查处理检查处理 sex check(m,w)限制插入限制插入sex字段只能是检查中的两种字段只能是检查中的两种v引用完整性约束。引用完整性约束。2023/1/28建表约束建表约束v引用完整性约束时需要注意以下几点引用完整性约束时需要注意
13、以下几点先建主表先建主表,后从表。后从表。从表引用的必须是主表的主码或定义了唯一性约束从表引用的必须是主表的主码或定义了唯一性约束的列。的列。从表的外来码值必须匹配与主表的引用码的值从表的外来码值必须匹配与主表的引用码的值当删除主表记录时,从表指定了当删除主表记录时,从表指定了on delete cascade子句,连带删除从表记录,否则,若从表子句,连带删除从表记录,否则,若从表中有对应记录中有对应记录,则不能删除主表记录。则不能删除主表记录。2023/1/28视图(视图(View)数据中表的窗口,在表上的查询所数据中表的窗口,在表上的查询所形成的一个数据集体。通过视图,你将形成的一个数据集
14、体。通过视图,你将看到你所需要的信息,而排除其它不关看到你所需要的信息,而排除其它不关心的内容心的内容。主要作用如下。主要作用如下将表中所需要的列和行选取出来传递给用户。将表中所需要的列和行选取出来传递给用户。不是真正将数据重新复制一遍,不占用存储空间。不是真正将数据重新复制一遍,不占用存储空间。不仅在表的基础上建立,还可在视图的基础之上再不仅在表的基础上建立,还可在视图的基础之上再建立视图建立视图2023/1/28视图(视图(View)v建立视图主要基于建立视图主要基于保护数据安全,防止机密数据泄露。保护数据安全,防止机密数据泄露。简化数据查询方式,建立有效的查询。简化数据查询方式,建立有效
15、的查询。保持数据独立性,保证程序不会随着数据的位置变保持数据独立性,保证程序不会随着数据的位置变化、名称变化而需要修改。化、名称变化而需要修改。2023/1/28索引(索引(Index)v索引是与表相关的一种选择结构。索引是与表相关的一种选择结构。v索引可建立在一表的一列或多列上,由索引可建立在一表的一列或多列上,由ORACLE自动维护和使自动维护和使用。用。v加快查询速度。加快查询速度。v确保唯一性特征。确保唯一性特征。索引是一种数据库对象,并不改变表的逻辑结构,而是在物索引是一种数据库对象,并不改变表的逻辑结构,而是在物理存储结构上增加一些辅助信息,以提高查询速度。理存储结构上增加一些辅助
16、信息,以提高查询速度。当表中记录增加或删除时,索引结构均要发生变化,因此,当表中记录增加或删除时,索引结构均要发生变化,因此,当有大量数据装入数据库时,应该先装入数据,后建立索引,当有大量数据装入数据库时,应该先装入数据,后建立索引,以提高数据装入速度。以提高数据装入速度。只有当按指定的索引列的值查找或按索引列的顺序存取表时,只有当按指定的索引列的值查找或按索引列的顺序存取表时,才可利用索引提高性能。才可利用索引提高性能。2023/1/28B-tree索引索引v适合于大量的增、删、改操作适合于大量的增、删、改操作v适合高基数的列(唯一值多)适合高基数的列(唯一值多)v典型的树状结构典型的树状结
17、构v每个节点都是数据块每个节点都是数据块v大多都在物理上一层、两层或三层不定。大多都在物理上一层、两层或三层不定。v叶子块数据是排序的,从左到右递增叶子块数据是排序的,从左到右递增v在分支块或根块中放的是索引的范围。在分支块或根块中放的是索引的范围。2023/1/28位图索引位图索引v适合于决策支持系统(适合于决策支持系统(OLAP););v做做update操作时代价非常高;操作时代价非常高;v基数比较少的时候才适合建位图索引基数比较少的时候才适合建位图索引2023/1/28不会使用索引的情况(一)不会使用索引的情况(一)v存在数据类型隐形转换的存在数据类型隐形转换的vselect*from
18、emp where emp_id=123;-emp_id是是number型型v列上有数学运算的列上有数学运算的vselect*from emp where salary*210000;v使用使用substr字符串函数的,如:字符串函数的,如:vselect*from emp where substr(last_name,1,4)=FRED;v%通配符在第一个字符的,如通配符在第一个字符的,如:vselect*from staff_member where first_name like%DON;v然而当通配符出现在字符串其他位置时,优化器就能利用索引。然而当通配符出现在字符串其他位置时,优化器
19、就能利用索引。vPS.9i以上版本可用以上版本可用2023/1/28不会使用索引的情况(二)不会使用索引的情况(二)v字符串连接字符串连接(|)的,如:的,如:vselect*from emp where first_name|s=DONALD;vIS NULL 与与 IS NOT NULL v不能用不能用null作索引,任何包含作索引,任何包含null值的列都将不会被包含在索引中。即使索引值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。,该列就会从索引中排除。也就是说如果某列存在空值,即
20、使对该列建索引也不会提高性能。任何在也就是说如果某列存在空值,即使对该列建索引也不会提高性能。任何在where子句中使用子句中使用is null或或is not null的语句优化器是不允许使用索引的。的语句优化器是不允许使用索引的。v函数的索引函数的索引 v日期类型也是很容易用到的,而且在日期类型也是很容易用到的,而且在SQL语句中会使用语句中会使用to_char函数以查询具函数以查询具体的的范围日期。如:体的的范围日期。如:vselect*from emp where TO_CHAR(birth_day,YYYY)=2003;v如果频繁使用类似语句,可以建立基于此函数的索引如:如果频繁使用
21、类似语句,可以建立基于此函数的索引如:vCREATE INDEX Ind_emp_birth ON emp(to_char(birth_day,YYYY);2023/1/28组合索引组合索引v即同时包含两个或两个以上的列的索引即同时包含两个或两个以上的列的索引v当使用基于规则的优化器(当使用基于规则的优化器(RBO)时,只有组合索引的前导列出现在)时,只有组合索引的前导列出现在SQL语句的语句的where子句时,才会使用到该索引;子句时,才会使用到该索引;A、B、Cv在使用在使用oracle9i之前基于成本的优化器(之前基于成本的优化器(CBO)时,只有组合索引的)时,只有组合索引的前导列出现
22、在前导列出现在SQL语句的语句的where子句时,才会使用到该索引,这取决子句时,才会使用到该索引,这取决于优化器计算的使用索引的成本和使用全表扫描的成本,于优化器计算的使用索引的成本和使用全表扫描的成本,Oracle会自会自动选择成本低的访问路径;动选择成本低的访问路径;v从从Oracle9i起,起,Oracle引入了一种新的索引扫描方式引入了一种新的索引扫描方式索引跳跃索引跳跃扫描(扫描(index skip scan),这种扫描方式只有基于成本的优化器),这种扫描方式只有基于成本的优化器(CBO)才能使用。这样,当)才能使用。这样,当SQL语句的语句的where子句中即使没有组合子句中即
23、使没有组合索引的前导列,并且索引跳跃扫描的成本低于其他扫描方式的成本时,索引的前导列,并且索引跳跃扫描的成本低于其他扫描方式的成本时,Oracle就会使用该方式扫描组合索引;就会使用该方式扫描组合索引;2023/1/28执行计划执行计划v按按F5查看查看 v执行计划相关参数执行计划相关参数基数(基数(Card):指计划中这一步所处理的):指计划中这一步所处理的行数。行数。耗费(耗费(Cost):指):指cbo中这一步耗费的资中这一步耗费的资源,这个值是相对值。源,这个值是相对值。字节(字节(bytes):指):指cbo中这一步所处理的中这一步所处理的所有记录的字节数,是估算出来的一组值。所有记
24、录的字节数,是估算出来的一组值。2023/1/28数据扫描数据扫描v全表扫描(全表扫描(Full Table Scans,FTS)oracle读取表中的所有行,并检查每一行是否满足语句的读取表中的所有行,并检查每一行是否满足语句的WHERE限制条件。一个多块读操作可以一次限制条件。一个多块读操作可以一次IO读取多块数据读取多块数据(db_block_multiblock_read_count参数设定),而不是一次只参数设定),而不是一次只读取一个数据块,这极大的减少了读取一个数据块,这极大的减少了IO总次数,提供系统的吞吐量,总次数,提供系统的吞吐量,所以多块读的方法可以十分高效地实现全表扫描
25、,而且只有在全表所以多块读的方法可以十分高效地实现全表扫描,而且只有在全表扫描的情况下才能使用多块读操作。扫描的情况下才能使用多块读操作。使用使用FTS的前提条件:在较大的表上不建议使用全表扫描,除非取的前提条件:在较大的表上不建议使用全表扫描,除非取出数据量比较多,超过总量的出数据量比较多,超过总量的5%10%。通过通过rowid存取存取行的行的ROWID指出了该行所在的数据文件、数据块以及行在该块中指出了该行所在的数据文件、数据块以及行在该块中的位置,所以通过的位置,所以通过ROWID来存取数据可以快速定位到目标数据上,来存取数据可以快速定位到目标数据上,是是oracle存取单行数据的最快
26、方法。存取单行数据的最快方法。这种存取方法不会用到多块读操作,一次这种存取方法不会用到多块读操作,一次IO只能读取一个数据块。只能读取一个数据块。我们会经常在执行计划中看到该存取方法,如通过索引查询数据。我们会经常在执行计划中看到该存取方法,如通过索引查询数据。2023/1/28数据扫描数据扫描 索引扫描索引扫描:先通过先通过index查询到数据对应的查询到数据对应的rowid(对于非(对于非唯一索引可能返回多个唯一索引可能返回多个rowid值),然后根据值),然后根据rowid直接从表中得到具体的数据,这种查找方式称直接从表中得到具体的数据,这种查找方式称为索引扫描。一个为索引扫描。一个ro
27、wid唯一表示一行数据,该行对唯一表示一行数据,该行对应的数据块是通过一次应的数据块是通过一次IO得到的,在这种情况下得到的,在这种情况下oracle只会读取一个数据库块。只会读取一个数据库块。索引扫描由两步组成:索引扫描由两步组成:扫描索引得到对应的扫描索引得到对应的rowid。通过找到的通过找到的rowid从表中读出具体的数据。从表中读出具体的数据。2023/1/28 索引扫描索引扫描:v每步都是单独的一次每步都是单独的一次IO,对于索引,由于经常使用,绝大多数已经,对于索引,由于经常使用,绝大多数已经cache到内存中,所以第一步的到内存中,所以第一步的IO经常是逻辑经常是逻辑IO,即数
28、据可以从内存中得到。,即数据可以从内存中得到。但是对于第二步,如果表比较大,其数据不可能全在内存中,所以其但是对于第二步,如果表比较大,其数据不可能全在内存中,所以其IO很有可很有可能是物理能是物理IO,这是一个机械操作,相对于逻辑,这是一个机械操作,相对于逻辑IO来说,是机器费时间的。所以来说,是机器费时间的。所以如果大表进行索引扫描,取出的数据如果大于总量的如果大表进行索引扫描,取出的数据如果大于总量的5%10%,使用索引扫,使用索引扫描效率会下降。描效率会下降。v如果查询的数据全在索引中找到,就可以避免第二步操作,避免了不必要如果查询的数据全在索引中找到,就可以避免第二步操作,避免了不必
29、要的的IO,此时即使通过索引扫描取出的数据比较多,效率还是很高的。,此时即使通过索引扫描取出的数据比较多,效率还是很高的。v如果如果sql语句中对索引列进行排序,因为索引已经预先排好序了,那么在语句中对索引列进行排序,因为索引已经预先排好序了,那么在执行计划中不需要再对索引列进行排序。执行计划中不需要再对索引列进行排序。v根据索引的类型以及根据索引的类型以及where限制条件的不同,有限制条件的不同,有4种类型的索引扫描:种类型的索引扫描:v(1)索引唯一扫描()索引唯一扫描(index unique scan);v(2)索引范围扫描()索引范围扫描(index range scan););v
30、(3)索引全扫描()索引全扫描(index full scan)v(4)索引快速扫描()索引快速扫描(index fast full scan)2023/1/28数据扫描数据扫描v索引唯一扫描(索引唯一扫描(index unique scan)通过唯一索引查找一个数值返回单个通过唯一索引查找一个数值返回单个rowid,如果存在,如果存在unique或或primary key约束,约束,oracle经常使用唯一性扫描。经常使用唯一性扫描。v索引范围扫描(索引范围扫描(index range scan)使用使用index range scan的的3种情况:种情况:(1)在唯一所列列上使用了)在唯一
31、所列列上使用了range操作符(操作符(、=、create sequence SEQ_T increment by 10 start with 10 maxvalue 1000 cycle;上例说明:上例说明:increment by 10 增量值为增量值为10。start with 10 指定生成的第一个序列号为指定生成的第一个序列号为10。maxvalue 1000 指定序列可生成的最大值。指定序列可生成的最大值。cycle 序列上升到最大值序列上升到最大值1000后,继续由开始值后,继续由开始值10开始生成。开始生成。引用序列:引用序列:序列当前值:序列当前值:SEQ_T.currval
32、 序列下一个值:序列下一个值:SEQ_T.nextval2023/1/28数据库链(数据库链(Database Link)v数据库链是本地数据库中的一个对象,利用它可以存数据库链是本地数据库中的一个对象,利用它可以存取远程数据库上的对象。取远程数据库上的对象。v在远程表或视图之后附加在远程表或视图之后附加db链名,即可在链名,即可在SQL语语句中引用远程表或视图。句中引用远程表或视图。v有专用数据库链和公用数据库链之分,专用数据库链有专用数据库链和公用数据库链之分,专用数据库链仅为建立者使用;公用数据库链必须用关键字仅为建立者使用;公用数据库链必须用关键字public定义,公用数据库链可为全部
33、用户使用定义,公用数据库链可为全部用户使用create database link USER2(连接名字,利用该名字就可以直接(连接名字,利用该名字就可以直接上数据库)上数据库)using USER2(服务名称,即在本地的(服务名称,即在本地的net manager中配置的连中配置的连接远程数据库的服务名)接远程数据库的服务名)connect to SCOTT1(连接远程数据库时的用户名)(连接远程数据库时的用户名)identified by TIGER1(密码)(密码)2023/1/28数据字典数据字典vORACLE数据库的最重要的部分之一,是由一组只读数据库的最重要的部分之一,是由一组只读
34、的表及其视图所组成。这些表和视图是数据库被建立同的表及其视图所组成。这些表和视图是数据库被建立同时由数据库系统建立起来的,起着系统状态的目录表的时由数据库系统建立起来的,起着系统状态的目录表的作用。数据字典描述表、列、索引、用户、访问权以及作用。数据字典描述表、列、索引、用户、访问权以及数据库中的其它实体,当其中的一个实体被建立、修改数据库中的其它实体,当其中的一个实体被建立、修改或取消时,数据库将自动修改数据字典。因此,数据字或取消时,数据库将自动修改数据字典。因此,数据字典总是包含着数据库的当前描述。数据字典提供有关该典总是包含着数据库的当前描述。数据字典提供有关该数据库的信息,可提供的信
35、息如下:数据库的信息,可提供的信息如下:vORACLE用户的名字。用户的名字。v每一个用户所授的特权和角色。每一个用户所授的特权和角色。v模式对象的名字模式对象的名字(表、视图、索引、同义词等表、视图、索引、同义词等)。v关于完整性约束的信息。关于完整性约束的信息。v列的缺省值。列的缺省值。v有关数据库中对象的空间分布信息及当前使用情况。有关数据库中对象的空间分布信息及当前使用情况。v审计信息审计信息(如谁存取或修改各种对象如谁存取或修改各种对象)。v其它一般的数据库信息。其它一般的数据库信息。2023/1/28数据字典数据字典v可用可用SQL存取数据字典,由于数据字典为只读,只允许查询。存取
36、数据字典,由于数据字典为只读,只允许查询。数据字典中全部基本表和用户可存取视图为数据字典中全部基本表和用户可存取视图为ORACLE用户用户SYS所持有,所有对象包含在所持有,所有对象包含在SYS模式中,安全管理员对该帐号要模式中,安全管理员对该帐号要严格控制。严格控制。v当当ORACLE数据库系统启动后,数据字典总是可用,它驻留在数据库系统启动后,数据字典总是可用,它驻留在SYSTEM表空间中。数据字典包含视图集,在许多情况下,每表空间中。数据字典包含视图集,在许多情况下,每一视图集有三种视图包含有类似信息,彼此以前缀相区别,前一视图集有三种视图包含有类似信息,彼此以前缀相区别,前缀为缀为US
37、ER、ALL和和DBA。v前缀为前缀为USER的视图,为用户视图,是在用户的模式内。的视图,为用户视图,是在用户的模式内。v前缀为前缀为ALL的视图为扩展的用户视图(为用户可存取的视图)。的视图为扩展的用户视图(为用户可存取的视图)。v前缀为前缀为DBA的视图为的视图为DBA的视图(为全部用户可存取的视图)。的视图(为全部用户可存取的视图)。2023/1/28常用数据字典与视图常用数据字典与视图ORACLE数据库有三个可查看系统数据数据库有三个可查看系统数据库字典的用户:库字典的用户:system、internal、sys,其它用户只能查看授权表空间的数据库字,其它用户只能查看授权表空间的数据
38、库字典,以某一用户登录数据库后可查看一些数典,以某一用户登录数据库后可查看一些数据字典,了解数据库的资源情况,对日常维据字典,了解数据库的资源情况,对日常维护的故障定位能起很大的帮助,下面就一些护的故障定位能起很大的帮助,下面就一些常用的数据表(视图)进行简单的说明常用的数据表(视图)进行简单的说明:vdba_tablespaces(user_tablespaces)除三个系统用户以外的用户登录可查看除三个系统用户以外的用户登录可查看user_tablespaces表。表。dba_tablespaces(user_tablespaces)表可查看本数据库的表)表可查看本数据库的表空间,它存放各
39、个表空间的属性,包括:表空间名、表空间宿主、空间,它存放各个表空间的属性,包括:表空间名、表空间宿主、以及存储参数(以及存储参数(initial、next、maxextents、minextents、blocks等)等。等)等。vdba_data_files(user_data_files)该表可查看数据库所有数据库数据文件,它存放了各个数据文件的该表可查看数据库所有数据库数据文件,它存放了各个数据文件的属性,包括:表空间名、宿主、数据文件名、大小、可用空间以及属性,包括:表空间名、宿主、数据文件名、大小、可用空间以及ID号等。号等。vdba_segments(user_segments)该表
40、可查看数据库所有段,它存放了各个段的属性,包括:段名、该表可查看数据库所有段,它存放了各个段的属性,包括:段名、表空间名、宿主、大小、第一个区间的块号等。表空间名、宿主、大小、第一个区间的块号等。vdba_rollback_segs 该表可查看数据库所有回滚段,它存放了各个数据库回滚段该表可查看数据库所有回滚段,它存放了各个数据库回滚段的属性,包括:回滚段名、表空间名、宿主、存储参数的属性,包括:回滚段名、表空间名、宿主、存储参数(initial、next、maxextents、minextents等)、第一个等)、第一个区间的块号、占用数据库文件区间的块号、占用数据库文件ID号。号。vdba
41、_extents 该表可查看数据库所有区间,它存放了各个区间的属性,包该表可查看数据库所有区间,它存放了各个区间的属性,包括:区间括:区间ID、使用段、使用段ID、所属对象(、所属对象(object)名、宿主、占)名、宿主、占用数据库文件用数据库文件ID(对应(对应dba_data_files中的中的ID号)、块号等。号)、块号等。常见应用:查看各对象的区间是否已达到了最大区间数量常见应用:查看各对象的区间是否已达到了最大区间数量select object_name,sum(*)from dba_extents group by object_name;vdba_free_spaces可查看数
42、据库表空间的使用情况,如查看各数据库表空间的可可查看数据库表空间的使用情况,如查看各数据库表空间的可用空间:用空间:select tablespace_name,sum(bytes)from dba_free_spaces group by talbespace_name;2023/1/28事务管理事务管理v事务事务(transaction)数据库是多用户的共享资源,在多个用户并行地存取数据时,数据库是多用户的共享资源,在多个用户并行地存取数据时,应对数据做并发控制,以免存取不正确的数据,破坏数据库应对数据做并发控制,以免存取不正确的数据,破坏数据库的一致性。的一致性。数据库的任何状态变化都要
43、能反映客观世界的某种真实存在数据库的任何状态变化都要能反映客观世界的某种真实存在的合理状态,反映到数据库中,就是数据要满足一定的约束的合理状态,反映到数据库中,就是数据要满足一定的约束条件,这种约束条件就是一致性约束。条件,这种约束条件就是一致性约束。为了完成复杂的修改动作,往往需要临时破坏数据库的状态为了完成复杂的修改动作,往往需要临时破坏数据库的状态一致性。因此,就有必要把这种对数据库复杂修改的一连串一致性。因此,就有必要把这种对数据库复杂修改的一连串动作序列合并起来,这就是事务。动作序列合并起来,这就是事务。事务是数据库维护数据一致性的单位,它将数据库从一致性事务是数据库维护数据一致性的
44、单位,它将数据库从一致性状态转换成新的一致性状态。状态转换成新的一致性状态。2023/1/28事务管理事务管理v事务提交事务提交提交事务:即将在事务中由提交事务:即将在事务中由SQL语句所执行的改变永久化。数据库数据语句所执行的改变永久化。数据库数据的更新操作提交以后,这些更新操作就不能再撤消。的更新操作提交以后,这些更新操作就不能再撤消。ORACLE的提交的提交命令如下:命令如下:SQLCOMMIT;v事务回退事务回退事务回退的含义是:撤消未提交事务中的事务回退的含义是:撤消未提交事务中的SQL语句所作的对数据修改。语句所作的对数据修改。ORACLE允许撤消未提交的整个事务,也允许撤消部分允
45、许撤消未提交的整个事务,也允许撤消部分(需设置保存点需设置保存点)。回退之后,数据库将恢复事务开始时的状态或保留点状态。回退命。回退之后,数据库将恢复事务开始时的状态或保留点状态。回退命令如下:令如下:SQLROLLBACK;v保存点保存点保存点就是将一个事务划分成为若干更小的部分,以便在必要时,使当前事务只回退保存点就是将一个事务划分成为若干更小的部分,以便在必要时,使当前事务只回退一部分,而其余工作得到保留一部分,而其余工作得到保留SAVEPOINT ROLLBACK TO 保存点名保存点名2023/1/28Oracle安装安装vOracle默认用户默认用户SYS用户是用户是Oracle中
46、的超级用户,主要用于维护中的超级用户,主要用于维护系统信息和管理实例,数据库中数据字典的所有表系统信息和管理实例,数据库中数据字典的所有表和视图都存储在和视图都存储在SYS模式中模式中 SYSTEM用户是用户是Oracle中默认的管理员,它拥有中默认的管理员,它拥有DBA权限。该用户拥有权限。该用户拥有Oracle管理工具使用的内管理工具使用的内部表和视图,通常通过部表和视图,通常通过SYSTEM用户管理用户管理Oracle数据库的用户、权限和存储等数据库的用户、权限和存储等 2023/1/28ORACLE的四种状态的四种状态vORACLE数据库任何时候可以处于四种数据库任何时候可以处于四种状
47、态之一:状态之一:SHUTDOWN:数据库关闭:数据库关闭NOMOUNT:例程启动:例程启动MOUNT:例程启动,控制文件打开:例程启动,控制文件打开OPEN:例程启动,所有数据文件打开:例程启动,所有数据文件打开v数据库可以在几种状态之间转变数据库可以在几种状态之间转变ALTER DATABASE 状态状态2023/1/28SQL*Plus方式的方式的ORACLE数据库启动和关闭数据库启动和关闭v启动数据库启动数据库sqlplus user_name/user_password as sysdbaSTARTUP;2023/1/28关闭数据库关闭数据库v用用IMMEDIATE选项关闭选项关闭未
48、授权的事务退回(如果长期有未授权的事务存在,未授权的事务退回(如果长期有未授权的事务存在,这种关闭的方法可能不会完成得很快)。这种关闭的方法可能不会完成得很快)。ORACLE不等待用户当前的数据库连接断开,不等待用户当前的数据库连接断开,ORACLE不问原因地退回激活事务,并断开所有不问原因地退回激活事务,并断开所有的连接用户。的连接用户。数据库下次启动将不要求任何实例恢复程序。数据库下次启动将不要求任何实例恢复程序。2023/1/28关闭数据库关闭数据库v用用NORMAL选项关闭选项关闭在语句发生后不允许新的连接。在语句发生后不允许新的连接。在数据库关闭前,在数据库关闭前,ORACLE等待当
49、前所有与数据等待当前所有与数据库连接的用户断开连接。库连接的用户断开连接。数据库的下一次启动将不需要任何实例恢复程序。数据库的下一次启动将不需要任何实例恢复程序。2023/1/28关闭数据库关闭数据库v带有带有TRANSACTIONAL选项关闭选项关闭当用户希望在允许活动事务首先完成时进行一个计当用户希望在允许活动事务首先完成时进行一个计划中的事务关闭时应用此种方式。划中的事务关闭时应用此种方式。v带有带有ABORT选项关闭选项关闭ORACLE处理的当前客户端处理的当前客户端SQL语句立即中断。语句立即中断。未递交的事务将不会退回。未递交的事务将不会退回。ORACLE将不等待当前与数据库的连接
50、断开,即将不等待当前与数据库的连接断开,即ORACLE将断开所有的连接用户。将断开所有的连接用户。数据库的下一次启动将要求实例恢复程序。数据库的下一次启动将要求实例恢复程序。如果正常与立即关闭选项都不能工作,要立即退出如果正常与立即关闭选项都不能工作,要立即退出当前的数据库实例当前的数据库实例2023/1/28使用企业管理器进行性能监控使用企业管理器进行性能监控v输入网址,例如:输入网址,例如:http:/127.0.0.1:1158/em,进入,进入EM。2023/1/28进入性能页进入性能页2023/1/28进入顶级活动进入顶级活动2023/1/28EM2023/1/28查询耗资源的查询耗