Oracle基础培训

上传人:cl****1 文档编号:569540265 上传时间:2024-07-30 格式:PPT 页数:92 大小:1.04MB
返回 下载 相关 举报
Oracle基础培训_第1页
第1页 / 共92页
Oracle基础培训_第2页
第2页 / 共92页
Oracle基础培训_第3页
第3页 / 共92页
Oracle基础培训_第4页
第4页 / 共92页
Oracle基础培训_第5页
第5页 / 共92页
点击查看更多>>
资源描述

《Oracle基础培训》由会员分享,可在线阅读,更多相关《Oracle基础培训(92页珍藏版)》请在金锄头文库上搜索。

1、Oracle基础基础2024/7/30ContentsOracle安装基础1Oracle语法基础2Sql简单优化3Oracle系统参数简介42024/7/30基本概念基本概念v数据库:是一个数据集合,我们大多数情况下讲的数据库概念不仅是指数据库:是一个数据集合,我们大多数情况下讲的数据库概念不仅是指物理数据,还指内存、进程对象的组合。物理数据,还指内存、进程对象的组合。ORACLE数据库都将数据存数据库都将数据存储在文件中,在其内部,数据库结构提供了数据对文件的逻辑映射,允储在文件中,在其内部,数据库结构提供了数据对文件的逻辑映射,允许不同类型的数据分开存放。这些逻辑划分称为表空间。许不同类型

2、的数据分开存放。这些逻辑划分称为表空间。v表空间(表空间(Tablespace):是数据库的逻辑划分,每个数据库至少有):是数据库的逻辑划分,每个数据库至少有一个表空间(一个表空间(system表空间)。表空间)。v数据文件(数据文件(DataFile):每个表空间由同一磁盘上的一个或多个文件):每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件。建立新表空间需要建立新的数据文件。组成,这些文件叫数据文件。建立新表空间需要建立新的数据文件。v实例(实例(Instance):也称为服务器():也称为服务器(server),是存取和控制数据),是存取和控制数据库的软件机制,它由系统全局

3、区库的软件机制,它由系统全局区SGA和后台进程组成。和后台进程组成。2024/7/30Oracle的物理结构的物理结构v数据文件是物理存储数据文件是物理存储ORACLE数据库数据的文件,数据库数据的文件,每一个每一个ORACLE数据库有一个或多个物理的数据文数据库有一个或多个物理的数据文件件(data file)。一个数据库的所有数据文件包含了全。一个数据库的所有数据文件包含了全部数据库数据。逻辑数据库结构(如表、索引)的数部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中据物理地存储在数据库的数据文件中每一个数据文件只与一个数据库联系每一个数据文件只与一个数据库联

4、系一个表空间可包含一个或多个数据文件一个表空间可包含一个或多个数据文件2024/7/30Oracle的物理结构的物理结构v日志文件日志文件每一个数据库有两个或多个日志文件每一个数据库有两个或多个日志文件(redo log file)的组,每一个日志的组,每一个日志文件组用于收集数据库日志。日志的主要功能是记录对数据所做的修改,文件组用于收集数据库日志。日志的主要功能是记录对数据所做的修改,所以对数据库做的全部修改是记录在日志中。日志文件的主要作用是保所以对数据库做的全部修改是记录在日志中。日志文件的主要作用是保护数据库以防止故障。为了防止日志文件本身的故障,护数据库以防止故障。为了防止日志文件

5、本身的故障,ORACLE允许允许镜象日志镜象日志(mirrored redo log),可以在不同磁盘上维护两个或多个日志,可以在不同磁盘上维护两个或多个日志副本。副本。日志文件中的信息仅在系统故障或介质故障时用来恢复数据库日志文件中的信息仅在系统故障或介质故障时用来恢复数据库2024/7/30Oracle的物理结构的物理结构v控制文件控制文件数据库名。数据库名。数据库数据文件和日志文件的名字和位置。数据库数据文件和日志文件的名字和位置。数据库建立日期。数据库建立日期。控制文件用于标识数据库和日志文件控制文件用于标识数据库和日志文件数据库的物理组成更改时,数据库的物理组成更改时,ORACLE自

6、动更改该自动更改该数据库的控制文件数据库的控制文件2024/7/30Oracle的物理结构的物理结构v参数文件(参数文件(init .ora)设置设置SGA的大小。的大小。设置数据库的全部缺省值。设置数据库的全部缺省值。设置数据库的范围。设置数据库的范围。在数据库建立时定义数据库的物理属性。在数据库建立时定义数据库的物理属性。指定控制文件名和路径。指定控制文件名和路径。通过调整内存结构,优化数据库性能。通过调整内存结构,优化数据库性能。2024/7/30系统全局区系统全局区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_SREVERS2024/7/30逻辑结构逻辑结构vORACLE的逻辑结构是由一个或多个表空间的逻辑结构是由一个或多个表空间组成,一个数据库划分为一个或多个逻辑单组成,一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间位,该逻辑单位称为表空间(tablespace)。一个表空间可将相关的)。一个表空间可将相关的逻辑结构组合在一起。逻辑结构组合在一起。一个表空间由一组分类段组成。一个表空间由一组

9、分类段组成。一个段由一组范围组成。一个段由一组范围组成。一个范围由一批数据库块组成。一个范围由一批数据库块组成。一个数据库块对应一个或多个物理块。一个数据库块对应一个或多个物理块。 2024/7/30表表v表是数据库的最基本的逻辑结构,一切数据都存放在表是数据库的最基本的逻辑结构,一切数据都存放在表中,一个表中,一个ORACLE数据库就是由若干个数据表组数据库就是由若干个数据表组成。其它数据库对象都是为了用户很好地操作表中的成。其它数据库对象都是为了用户很好地操作表中的数据。表是关系模型中反映实体与属性关系的二维表数据。表是关系模型中反映实体与属性关系的二维表格,它由列和行组成,通过行与列的关

10、系,表达出了格,它由列和行组成,通过行与列的关系,表达出了实体与属性的关系实体与属性的关系列名:列的名称。列名:列的名称。长度:该列所能容纳的最大数据位数。长度:该列所能容纳的最大数据位数。类型:该列存储的数据类型,常用数据类型如类型:该列存储的数据类型,常用数据类型如0.0.0 0. 所示。所示。关键字:该列能唯一表示一行内容,则称该列为关键字。关键字:该列能唯一表示一行内容,则称该列为关键字。非空列:该列值是不能为空的。非空列:该列值是不能为空的。2024/7/30表表v删除表数据删除表数据Delete :删除数据时,数据库需要写日志,:删除数据时,数据库需要写日志,ORACLE数据库还需

11、要占用回滚段,每次事务越数据库还需要占用回滚段,每次事务越大,对数据库的冲击越大,所以在删除或者更新数大,对数据库的冲击越大,所以在删除或者更新数据时,一定要注意控制事务的大小据时,一定要注意控制事务的大小Truncate:删除表中所有数据,并回收空间。:删除表中所有数据,并回收空间。2024/7/30删除表删除表v删除表命令为删除表命令为DROP,利用,利用DROP命令命令删除表注意:删除表注意: 删除表中全部行。删除表中全部行。删除表中全部索引。删除表中全部索引。如果它不是聚集的成分,系统将收回该表的所有存如果它不是聚集的成分,系统将收回该表的所有存储空间。储空间。如果该表为视图的基表,或

12、在存储过程、函数或包如果该表为视图的基表,或在存储过程、函数或包中被引用,中被引用,ORACLE将使这些对象无效但没有被将使这些对象无效但没有被删除,在表恢复后,这些对象仍可使用。删除,在表恢复后,这些对象仍可使用。2024/7/30建表约束建表约束v非空完整性约束非空完整性约束v唯一完整性约束唯一完整性约束v主码完整性约束主码完整性约束vcheck完整性约束完整性约束检查处理检查处理 sex check(m, w)限制插入限制插入sex字段只能是检查中的两种字段只能是检查中的两种v引用完整性约束。引用完整性约束。2024/7/30建表约束建表约束v引用完整性约束时需要注意以下几点引用完整性约

13、束时需要注意以下几点先建主表先建主表,后从表。后从表。从表引用的必须是主表的主码或定义了唯一性约束从表引用的必须是主表的主码或定义了唯一性约束的列。的列。从表的外来码值必须匹配与主表的引用码的值从表的外来码值必须匹配与主表的引用码的值当删除主表记录时,从表指定了当删除主表记录时,从表指定了on delete cascade子句,连带删除从表记录,否则,若从表子句,连带删除从表记录,否则,若从表中有对应记录中有对应记录,则不能删除主表记录。则不能删除主表记录。2024/7/30视图(视图(View) 数据中表的窗口,在表上的查询所数据中表的窗口,在表上的查询所形成的一个数据集体。通过视图,你将形

14、成的一个数据集体。通过视图,你将看到你所需要的信息,而排除其它不关看到你所需要的信息,而排除其它不关心的内容心的内容 。主要作用如下。主要作用如下将表中所需要的列和行选取出来传递给用户。将表中所需要的列和行选取出来传递给用户。不是真正将数据重新复制一遍,不占用存储空间。不是真正将数据重新复制一遍,不占用存储空间。不仅在表的基础上建立,还可在视图的基础之上再不仅在表的基础上建立,还可在视图的基础之上再建立视图建立视图2024/7/30视图(视图(View)v建立视图主要基于建立视图主要基于保护数据安全,防止机密数据泄露。保护数据安全,防止机密数据泄露。简化数据查询方式,建立有效的查询。简化数据查

15、询方式,建立有效的查询。保持数据独立性,保证程序不会随着数据的位置变保持数据独立性,保证程序不会随着数据的位置变化、名称变化而需要修改。化、名称变化而需要修改。2024/7/30索引(索引(Index)v索引是与表相关的一种选择结构。索引是与表相关的一种选择结构。v索引可建立在一表的一列或多列上,由索引可建立在一表的一列或多列上,由ORACLE自动维护和使自动维护和使用。用。v加快查询速度。加快查询速度。v确保唯一性特征。确保唯一性特征。索引是一种数据库对象,并不改变表的逻辑结构,而是在物索引是一种数据库对象,并不改变表的逻辑结构,而是在物理存储结构上增加一些辅助信息,以提高查询速度。理存储结

16、构上增加一些辅助信息,以提高查询速度。当表中记录增加或删除时,索引结构均要发生变化,因此,当表中记录增加或删除时,索引结构均要发生变化,因此,当有大量数据装入数据库时,应该先装入数据,后建立索引,当有大量数据装入数据库时,应该先装入数据,后建立索引,以提高数据装入速度。以提高数据装入速度。只有当按指定的索引列的值查找或按索引列的顺序存取表时,只有当按指定的索引列的值查找或按索引列的顺序存取表时,才可利用索引提高性能。才可利用索引提高性能。2024/7/30B-tree索引索引v适合于大量的增、删、改操作适合于大量的增、删、改操作v适合高基数的列(唯一值多)适合高基数的列(唯一值多)v典型的树状

17、结构典型的树状结构v每个节点都是数据块每个节点都是数据块v大多都在物理上一层、两层或三层不定。大多都在物理上一层、两层或三层不定。v叶子块数据是排序的,从左到右递增叶子块数据是排序的,从左到右递增v在分支块或根块中放的是索引的范围。在分支块或根块中放的是索引的范围。2024/7/30位图索引位图索引v适合于决策支持系统(适合于决策支持系统(OLAP););v做做update操作时代价非常高;操作时代价非常高;v基数比较少的时候才适合建位图索引基数比较少的时候才适合建位图索引2024/7/30不会使用索引的情况(一)不会使用索引的情况(一)v存在数据类型隐形转换的存在数据类型隐形转换的vsele

18、ct * from 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以上版本可用以上版本可用2024/7/30不会使用索引的情况(二)不会使用索引的情况(二)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);2024/7/30组合索引组合索引v即同时包含两个或两个以上的列的索引即同时包含两个或两个以上的列的索引v当使用基于规则的优化器(当使用基于规则的优化器(RBO)时,只有组合索引的前导列出现在)时,只有组合索引的前导列出现在SQL语句的语句的where子句时,才会使用到该索引;子句时,才会使用到该索引;A、B、Cv在使用在使用oracle9i之前基于成本的优化器(之前基于成本的优化器(

22、CBO)时,只有组合索引的)时,只有组合索引的前导列出现在前导列出现在SQL语句的语句的where子句时,才会使用到该索引,这取决子句时,才会使用到该索引,这取决于优化器计算的使用索引的成本和使用全表扫描的成本,于优化器计算的使用索引的成本和使用全表扫描的成本,Oracle会自会自动选择成本低的访问路径;动选择成本低的访问路径;v从从Oracle9i起,起,Oracle引入了一种新的索引扫描方式引入了一种新的索引扫描方式索引跳跃索引跳跃扫描(扫描(index skip scan),这种扫描方式只有基于成本的优化器),这种扫描方式只有基于成本的优化器(CBO)才能使用。这样,当)才能使用。这样,

23、当SQL语句的语句的where子句中即使没有组合子句中即使没有组合索引的前导列,并且索引跳跃扫描的成本低于其他扫描方式的成本时,索引的前导列,并且索引跳跃扫描的成本低于其他扫描方式的成本时,Oracle就会使用该方式扫描组合索引;就会使用该方式扫描组合索引;2024/7/30执行计划执行计划v按按F5查看查看 v执行计划相关参数执行计划相关参数基数(基数(Card):指计划中这一步所处理的):指计划中这一步所处理的行数。行数。耗费(耗费(Cost):指):指cbo中这一步耗费的资中这一步耗费的资源,这个值是相对值。源,这个值是相对值。字节(字节(bytes):指):指cbo中这一步所处理的中这

24、一步所处理的所有记录的字节数,是估算出来的一组值。所有记录的字节数,是估算出来的一组值。2024/7/30数据扫描数据扫描v全表扫描(全表扫描(Full Table Scans, FTS)oracle读取表中的所有行,并检查每一行是否满足语句的读取表中的所有行,并检查每一行是否满足语句的WHERE限制条件。一个多块读操作可以一次限制条件。一个多块读操作可以一次IO读取多块数据读取多块数据(db_block_multiblock_read_count参数设定),而不是一次只参数设定),而不是一次只读取一个数据块,这极大的减少了读取一个数据块,这极大的减少了IO总次数,提供系统的吞吐量,总次数,提

25、供系统的吞吐量,所以多块读的方法可以十分高效地实现全表扫描,而且只有在全表所以多块读的方法可以十分高效地实现全表扫描,而且只有在全表扫描的情况下才能使用多块读操作。扫描的情况下才能使用多块读操作。使用使用FTS的前提条件:在较大的表上不建议使用全表扫描,除非取的前提条件:在较大的表上不建议使用全表扫描,除非取出数据量比较多,超过总量的出数据量比较多,超过总量的5%10%。通过通过rowid存取存取行的行的ROWID指出了该行所在的数据文件、数据块以及行在该块中指出了该行所在的数据文件、数据块以及行在该块中的位置,所以通过的位置,所以通过ROWID来存取数据可以快速定位到目标数据上,来存取数据可

26、以快速定位到目标数据上,是是oracle存取单行数据的最快方法。存取单行数据的最快方法。这种存取方法不会用到多块读操作,一次这种存取方法不会用到多块读操作,一次IO只能读取一个数据块。只能读取一个数据块。我们会经常在执行计划中看到该存取方法,如通过索引查询数据。我们会经常在执行计划中看到该存取方法,如通过索引查询数据。2024/7/30数据扫描数据扫描 索引扫描索引扫描: 先通过先通过index查询到数据对应的查询到数据对应的rowid(对于非(对于非唯一索引可能返回多个唯一索引可能返回多个rowid值),然后根据值),然后根据rowid直接从表中得到具体的数据,这种查找方式称直接从表中得到具

27、体的数据,这种查找方式称为索引扫描。一个为索引扫描。一个rowid唯一表示一行数据,该行对唯一表示一行数据,该行对应的数据块是通过一次应的数据块是通过一次IO得到的,在这种情况下得到的,在这种情况下oracle只会读取一个数据库块。只会读取一个数据库块。索引扫描由两步组成:索引扫描由两步组成:扫描索引得到对应的扫描索引得到对应的rowid。通过找到的通过找到的rowid从表中读出具体的数据。从表中读出具体的数据。2024/7/30 索引扫描索引扫描:v每步都是单独的一次每步都是单独的一次IO,对于索引,由于经常使用,绝大多数已经,对于索引,由于经常使用,绝大多数已经cache到内存中,所以第一

28、步的到内存中,所以第一步的IO经常是逻辑经常是逻辑IO,即数据可以从内存中得到。,即数据可以从内存中得到。但是对于第二步,如果表比较大,其数据不可能全在内存中,所以其但是对于第二步,如果表比较大,其数据不可能全在内存中,所以其IO很有可很有可能是物理能是物理IO,这是一个机械操作,相对于逻辑,这是一个机械操作,相对于逻辑IO来说,是机器费时间的。所以来说,是机器费时间的。所以如果大表进行索引扫描,取出的数据如果大于总量的如果大表进行索引扫描,取出的数据如果大于总量的5%10%,使用索引扫,使用索引扫描效率会下降。描效率会下降。v如果查询的数据全在索引中找到,就可以避免第二步操作,避免了不必要如

29、果查询的数据全在索引中找到,就可以避免第二步操作,避免了不必要的的IO,此时即使通过索引扫描取出的数据比较多,效率还是很高的。,此时即使通过索引扫描取出的数据比较多,效率还是很高的。v如果如果sql语句中对索引列进行排序,因为索引已经预先排好序了,那么在语句中对索引列进行排序,因为索引已经预先排好序了,那么在执行计划中不需要再对索引列进行排序。执行计划中不需要再对索引列进行排序。v根据索引的类型以及根据索引的类型以及where限制条件的不同,有限制条件的不同,有4种类型的索引扫描:种类型的索引扫描:v(1)索引唯一扫描()索引唯一扫描(index unique scan);v(2)索引范围扫描

30、()索引范围扫描(index range scan););v(3)索引全扫描()索引全扫描(index full scan)v(4)索引快速扫描()索引快速扫描(index fast full scan)2024/7/30数据扫描数据扫描v索引唯一扫描(索引唯一扫描(index unique scan) 通过唯一索引查找一个数值返回单个通过唯一索引查找一个数值返回单个rowid,如果存在,如果存在unique或或primary key约束,约束,oracle经常使用唯一性扫描。经常使用唯一性扫描。v索引范围扫描(索引范围扫描(index range scan)使用使用index range s

31、can的的3种情况:种情况:(1)在唯一所列列上使用了)在唯一所列列上使用了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开始生成。开始生成。引用序

32、列:引用序列:序列当前值:序列当前值:SEQ_T.currval 序列下一个值:序列下一个值: SEQ_T.nextval2024/7/30数据库链(数据库链(Database Link)v数据库链是本地数据库中的一个对象,利用它可以存数据库链是本地数据库中的一个对象,利用它可以存取远程数据库上的对象。取远程数据库上的对象。v在远程表或视图之后附加在远程表或视图之后附加db链名,即可在链名,即可在SQL语语句中引用远程表或视图。句中引用远程表或视图。v有专用数据库链和公用数据库链之分,专用数据库链有专用数据库链和公用数据库链之分,专用数据库链仅为建立者使用;公用数据库链必须用关键字仅为建立者使

33、用;公用数据库链必须用关键字public定义,公用数据库链可为全部用户使用定义,公用数据库链可为全部用户使用create database link USER2(连接名字,利用该名字就可以直接(连接名字,利用该名字就可以直接上数据库)上数据库) using USER2(服务名称,即在本地的(服务名称,即在本地的net manager中配置的连中配置的连接远程数据库的服务名)接远程数据库的服务名) connect to SCOTT1(连接远程数据库时的用户名)(连接远程数据库时的用户名) identified by TIGER1(密码)(密码)2024/7/30数据字典数据字典vORACLE数据

34、库的最重要的部分之一,是由一组只读数据库的最重要的部分之一,是由一组只读的表及其视图所组成。这些表和视图是数据库被建立同的表及其视图所组成。这些表和视图是数据库被建立同时由数据库系统建立起来的,起着系统状态的目录表的时由数据库系统建立起来的,起着系统状态的目录表的作用。数据字典描述表、列、索引、用户、访问权以及作用。数据字典描述表、列、索引、用户、访问权以及数据库中的其它实体,当其中的一个实体被建立、修改数据库中的其它实体,当其中的一个实体被建立、修改或取消时,数据库将自动修改数据字典。因此,数据字或取消时,数据库将自动修改数据字典。因此,数据字典总是包含着数据库的当前描述。数据字典提供有关该

35、典总是包含着数据库的当前描述。数据字典提供有关该数据库的信息,可提供的信息如下:数据库的信息,可提供的信息如下:vORACLE用户的名字。用户的名字。v每一个用户所授的特权和角色。每一个用户所授的特权和角色。v模式对象的名字模式对象的名字(表、视图、索引、同义词等表、视图、索引、同义词等)。v关于完整性约束的信息。关于完整性约束的信息。v列的缺省值。列的缺省值。v有关数据库中对象的空间分布信息及当前使用情况。有关数据库中对象的空间分布信息及当前使用情况。v审计信息审计信息(如谁存取或修改各种对象如谁存取或修改各种对象)。v其它一般的数据库信息。其它一般的数据库信息。2024/7/30数据字典数

36、据字典v可用可用SQL存取数据字典,由于数据字典为只读,只允许查询。存取数据字典,由于数据字典为只读,只允许查询。数据字典中全部基本表和用户可存取视图为数据字典中全部基本表和用户可存取视图为ORACLE用户用户SYS所持有,所有对象包含在所持有,所有对象包含在SYS模式中,安全管理员对该帐号要模式中,安全管理员对该帐号要严格控制。严格控制。v当当ORACLE数据库系统启动后,数据字典总是可用,它驻留在数据库系统启动后,数据字典总是可用,它驻留在SYSTEM表空间中。数据字典包含视图集,在许多情况下,每表空间中。数据字典包含视图集,在许多情况下,每一视图集有三种视图包含有类似信息,彼此以前缀相区

37、别,前一视图集有三种视图包含有类似信息,彼此以前缀相区别,前缀为缀为USER、ALL和和DBA。v前缀为前缀为USER的视图,为用户视图,是在用户的模式内。的视图,为用户视图,是在用户的模式内。v前缀为前缀为ALL的视图为扩展的用户视图(为用户可存取的视图)。的视图为扩展的用户视图(为用户可存取的视图)。v前缀为前缀为DBA的视图为的视图为DBA的视图(为全部用户可存取的视图)。的视图(为全部用户可存取的视图)。 2024/7/30常用数据字典与视图常用数据字典与视图ORACLE数据库有三个可查看系统数据数据库有三个可查看系统数据库字典的用户:库字典的用户:system、internal、sy

38、s,其它用户只能查看授权表空间的数据库字,其它用户只能查看授权表空间的数据库字典,以某一用户登录数据库后可查看一些数典,以某一用户登录数据库后可查看一些数据字典,了解数据库的资源情况,对日常维据字典,了解数据库的资源情况,对日常维护的故障定位能起很大的帮助,下面就一些护的故障定位能起很大的帮助,下面就一些常用的数据表(视图)进行简单的说明常用的数据表(视图)进行简单的说明 :vdba_tablespaces(user_tablespaces) 除三个系统用户以外的用户登录可查看除三个系统用户以外的用户登录可查看user_tablespaces表。表。 dba_tablespaces(user_

39、tablespaces)表可查看本数据库的表)表可查看本数据库的表空间,它存放各个表空间的属性,包括:表空间名、表空间宿主、空间,它存放各个表空间的属性,包括:表空间名、表空间宿主、以及存储参数(以及存储参数(initial、next、maxextents、minextents、blocks等)等。等)等。vdba_data_files(user_data_files) 该表可查看数据库所有数据库数据文件,它存放了各个数据文件的该表可查看数据库所有数据库数据文件,它存放了各个数据文件的属性,包括:表空间名、宿主、数据文件名、大小、可用空间以及属性,包括:表空间名、宿主、数据文件名、大小、可用空

40、间以及ID号等。号等。vdba_segments(user_segments) 该表可查看数据库所有段,它存放了各个段的属性,包括:段名、该表可查看数据库所有段,它存放了各个段的属性,包括:段名、表空间名、宿主、大小、第一个区间的块号等。表空间名、宿主、大小、第一个区间的块号等。vdba_rollback_segs 该表可查看数据库所有回滚段,它存放了各个数据库回滚段该表可查看数据库所有回滚段,它存放了各个数据库回滚段的属性,包括:回滚段名、表空间名、宿主、存储参数的属性,包括:回滚段名、表空间名、宿主、存储参数(initial、next、maxextents、minextents等)、第一个

41、等)、第一个区间的块号、占用数据库文件区间的块号、占用数据库文件ID号。号。vdba_extents 该表可查看数据库所有区间,它存放了各个区间的属性,包该表可查看数据库所有区间,它存放了各个区间的属性,包括:区间括:区间ID、使用段、使用段ID、所属对象(、所属对象(object)名、宿主、占)名、宿主、占用数据库文件用数据库文件ID(对应(对应dba_data_files中的中的ID号)、块号等。号)、块号等。常见应用:查看各对象的区间是否已达到了最大区间数量常见应用:查看各对象的区间是否已达到了最大区间数量select object_name,sum(*) from dba_extent

42、s group by object_name;vdba_free_spaces可查看数据库表空间的使用情况,如查看各数据库表空间的可可查看数据库表空间的使用情况,如查看各数据库表空间的可用空间:用空间:select tablespace_name,sum(bytes) from dba_free_spaces group by talbespace_name;2024/7/30事务管理事务管理v事务事务(transaction)数据库是多用户的共享资源,在多个用户并行地存取数据时,数据库是多用户的共享资源,在多个用户并行地存取数据时,应对数据做并发控制,以免存取不正确的数据,破坏数据库应对数据

43、做并发控制,以免存取不正确的数据,破坏数据库的一致性。的一致性。数据库的任何状态变化都要能反映客观世界的某种真实存在数据库的任何状态变化都要能反映客观世界的某种真实存在的合理状态,反映到数据库中,就是数据要满足一定的约束的合理状态,反映到数据库中,就是数据要满足一定的约束条件,这种约束条件就是一致性约束。条件,这种约束条件就是一致性约束。为了完成复杂的修改动作,往往需要临时破坏数据库的状态为了完成复杂的修改动作,往往需要临时破坏数据库的状态一致性。因此,就有必要把这种对数据库复杂修改的一连串一致性。因此,就有必要把这种对数据库复杂修改的一连串动作序列合并起来,这就是事务。动作序列合并起来,这就

44、是事务。事务是数据库维护数据一致性的单位,它将数据库从一致性事务是数据库维护数据一致性的单位,它将数据库从一致性状态转换成新的一致性状态。状态转换成新的一致性状态。2024/7/30事务管理事务管理v事务提交事务提交提交事务:即将在事务中由提交事务:即将在事务中由SQL语句所执行的改变永久化。数据库数据语句所执行的改变永久化。数据库数据的更新操作提交以后,这些更新操作就不能再撤消。的更新操作提交以后,这些更新操作就不能再撤消。ORACLE的提交的提交命令如下:命令如下:SQLCOMMIT;v事务回退事务回退事务回退的含义是:撤消未提交事务中的事务回退的含义是:撤消未提交事务中的SQL语句所作的

45、对数据修改。语句所作的对数据修改。ORACLE允许撤消未提交的整个事务,也允许撤消部分允许撤消未提交的整个事务,也允许撤消部分(需设置保存点需设置保存点)。回退之后,数据库将恢复事务开始时的状态或保留点状态。回退命。回退之后,数据库将恢复事务开始时的状态或保留点状态。回退命令如下:令如下:SQLROLLBACK;v保存点保存点保存点就是将一个事务划分成为若干更小的部分,以便在必要时,使当前事务只回退保存点就是将一个事务划分成为若干更小的部分,以便在必要时,使当前事务只回退一部分,而其余工作得到保留一部分,而其余工作得到保留SAVEPOINT ROLLBACK TO 保存点名保存点名2024/7

46、/30Oracle安装安装vOracle默认用户默认用户SYS用户是用户是Oracle中的超级用户,主要用于维护中的超级用户,主要用于维护系统信息和管理实例,数据库中数据字典的所有表系统信息和管理实例,数据库中数据字典的所有表和视图都存储在和视图都存储在SYS模式中模式中 SYSTEM用户是用户是Oracle中默认的管理员,它拥有中默认的管理员,它拥有DBA权限。该用户拥有权限。该用户拥有Oracle管理工具使用的内管理工具使用的内部表和视图,通常通过部表和视图,通常通过SYSTEM用户管理用户管理Oracle数据库的用户、权限和存储等数据库的用户、权限和存储等 2024/7/30ORACLE

47、的四种状态的四种状态vORACLE数据库任何时候可以处于四种数据库任何时候可以处于四种状态之一:状态之一:SHUTDOWN:数据库关闭:数据库关闭NOMOUNT:例程启动:例程启动MOUNT:例程启动,控制文件打开:例程启动,控制文件打开OPEN:例程启动,所有数据文件打开:例程启动,所有数据文件打开v数据库可以在几种状态之间转变数据库可以在几种状态之间转变ALTER DATABASE 状态状态2024/7/30SQL*Plus方式的方式的ORACLE数据库启动和关闭数据库启动和关闭v启动数据库启动数据库sqlplus user_name/user_password as sysdbaSTAR

48、TUP;2024/7/30关闭数据库关闭数据库v用用IMMEDIATE选项关闭选项关闭未授权的事务退回(如果长期有未授权的事务存在,未授权的事务退回(如果长期有未授权的事务存在,这种关闭的方法可能不会完成得很快)。这种关闭的方法可能不会完成得很快)。ORACLE不等待用户当前的数据库连接断开,不等待用户当前的数据库连接断开,ORACLE不问原因地退回激活事务,并断开所有不问原因地退回激活事务,并断开所有的连接用户。的连接用户。数据库下次启动将不要求任何实例恢复程序。数据库下次启动将不要求任何实例恢复程序。2024/7/30关闭数据库关闭数据库v用用NORMAL选项关闭选项关闭在语句发生后不允许

49、新的连接。在语句发生后不允许新的连接。在数据库关闭前,在数据库关闭前,ORACLE等待当前所有与数据等待当前所有与数据库连接的用户断开连接。库连接的用户断开连接。数据库的下一次启动将不需要任何实例恢复程序。数据库的下一次启动将不需要任何实例恢复程序。2024/7/30关闭数据库关闭数据库v带有带有TRANSACTIONAL选项关闭选项关闭当用户希望在允许活动事务首先完成时进行一个计当用户希望在允许活动事务首先完成时进行一个计划中的事务关闭时应用此种方式。划中的事务关闭时应用此种方式。v带有带有ABORT选项关闭选项关闭ORACLE处理的当前客户端处理的当前客户端SQL语句立即中断。语句立即中断

50、。未递交的事务将不会退回。未递交的事务将不会退回。ORACLE将不等待当前与数据库的连接断开,即将不等待当前与数据库的连接断开,即ORACLE将断开所有的连接用户。将断开所有的连接用户。数据库的下一次启动将要求实例恢复程序。数据库的下一次启动将要求实例恢复程序。如果正常与立即关闭选项都不能工作,要立即退出如果正常与立即关闭选项都不能工作,要立即退出当前的数据库实例当前的数据库实例2024/7/30使用企业管理器进行性能监控使用企业管理器进行性能监控v输入网址,例如:输入网址,例如:http:/127.0.0.1:1158/em,进入,进入EM。2024/7/30进入性能页进入性能页2024/7

51、/30进入顶级活动进入顶级活动2024/7/30EM2024/7/30查询耗资源的查询耗资源的SQL语句语句v在时间进度条上,选择时间段,在左下方显示在时间进度条上,选择时间段,在左下方显示该时间段耗资源的语句。该时间段耗资源的语句。v点击耗资源点击耗资源SQL的的“SQL散列值散列值”列,显示该列,显示该SQL语句的详细内容。语句的详细内容。v对耗资源的对耗资源的SQL语句进行优化。语句进行优化。2024/7/30PL/SQLvORACLE对对SQL规范的扩展,是一种规范的扩展,是一种块结构语言,包括一整套的数据类型、块结构语言,包括一整套的数据类型、条件结构、循环结构和异常处理结构条件结构

52、、循环结构和异常处理结构模块化结构。模块化结构。定义标识符(常量、变量、游标等)。定义标识符(常量、变量、游标等)。用过程化语言控制结构进行程序设计。用过程化语言控制结构进行程序设计。错误处理。错误处理。提高操作性能提高操作性能2024/7/30PL/SQL块的基本结构块的基本结构v声明部分(声明部分(declarative section)(可选)。)(可选)。v执行部分(执行部分(executable section)(必须)。)(必须)。v异常处理部分(异常处理部分(exception section)(可选)。)(可选)。2024/7/30PL/SQLvPL/SQL常见的类型转换函数常

53、见的类型转换函数TO_CHAR按照可选的格式将参数转换为字符按照可选的格式将参数转换为字符类型类型TO_DATE按照可选的格式将参数转换为日期按照可选的格式将参数转换为日期类型类型TO_NUMBER 按照可选的格式将参数转换为按照可选的格式将参数转换为NUMBER类型类型2024/7/30PL/SQL控制结构控制结构v条件控制:条件控制:IF-THEN-ELSEv循环:循环:LOOP、FOR、WHILEv跳转控制:跳转控制:GOTOvGOTO sss;2024/7/30异常处理异常处理v异常情况处理异常情况处理(EXCEPTION)是用来处理正常执行过程中未预是用来处理正常执行过程中未预料的事

54、件料的事件,程序块的异常处理预定义的错误和自定义错误程序块的异常处理预定义的错误和自定义错误,由于由于PL/SQL程序块一旦产生异常而没有指出如何处理时程序块一旦产生异常而没有指出如何处理时,程序就会程序就会自动终止整个程序运行自动终止整个程序运行v 预定义预定义 ( Predefined )错误错误v 非预定义非预定义 ( Predefined )错误错误即其他标准的即其他标准的ORACLE错误。对这种异常情况的处理,需要用户在程错误。对这种异常情况的处理,需要用户在程序中定义,然后由序中定义,然后由ORACLE自动将其引发。自动将其引发。v 用户定义用户定义(User_define) 错误

55、错误 程序执行过程中,出现编程人员认为的非正常情况。对这种异常情况程序执行过程中,出现编程人员认为的非正常情况。对这种异常情况的处理,需要用户在程序中定义,然后显式地在程序中将其引发。的处理,需要用户在程序中定义,然后显式地在程序中将其引发。2024/7/30异常处理标准格式异常处理标准格式v异常处理部分一般放在异常处理部分一般放在 PL/SQL 程序体的后程序体的后半部半部,结构为结构为:EXCEPTION WHEN first_exception THEN WHEN second_exception THEN WHEN OTHERS THEN END;异常处理可以按任意次序排列异常处理可以

56、按任意次序排列,但但 OTHERS 必须放必须放在最后在最后.2024/7/30非预定义的异常处理非预定义的异常处理v在在PL/SQL 块的定义部分定义异常情况块的定义部分定义异常情况 EXCEPTION;v将其定义好的异常情况,与标准的将其定义好的异常情况,与标准的ORACLE错误联系起来,使用错误联系起来,使用EXCEPTION_INIT语语句:句:PRAGMA EXCEPTION_INIT(, );v在在PL/SQL 块的异常情况处理部分对异常情块的异常情况处理部分对异常情况做出相应的处理。况做出相应的处理。2024/7/30非预定义的异常处理非预定义的异常处理INSERT INTO d

57、epartments VALUES(50, FINANCE, CHICAGO);DECLARE v_deptno departments.department_id%TYPE := &deptno; deptno_remaining EXCEPTION; PRAGMA EXCEPTION_INIT(deptno_remaining, -2292); /* -2292 是违反一致性约束的错误代码是违反一致性约束的错误代码 */BEGIN DELETE FROM departments WHERE department_id = v_deptno;EXCEPTION WHEN deptno_rem

58、aining THEN DBMS_OUTPUT.PUT_LINE(违反数据完整性约束违反数据完整性约束!); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLCODE|-|SQLERRM);END;2024/7/30用户自定义的异常处理用户自定义的异常处理v当与一个异常错误相关的错误出现时,就会隐当与一个异常错误相关的错误出现时,就会隐含触发该异常错误。用户定义的异常错误是含触发该异常错误。用户定义的异常错误是通过显式使用通过显式使用 RAISE 语句来触发。当引发语句来触发。当引发一个异常错误时,控制就转向到一个异常错误时,控制就转向到 EXCEPTION块

59、异常错误部分,执行错误处块异常错误部分,执行错误处理代码。步骤如下:理代码。步骤如下:v在在PL/SQL 块的定义部分定义异常情况:块的定义部分定义异常情况: EXCEPTION;vRAISE ;在在PL/SQL 块的异常情况处理部分对异常情况做出块的异常情况处理部分对异常情况做出相应的处理。相应的处理。2024/7/30用户自定义的异常处理用户自定义的异常处理DECLARE v_empno employees.employee_id%TYPE :=&empno; no_result EXCEPTION;BEGIN UPDATE employees SET salary = salary+10

60、0 WHERE employee_id = v_empno; IF SQL%NOTFOUND THEN RAISE no_result; END IF;EXCEPTION WHEN no_result THEN DBMS_OUTPUT.PUT_LINE(你的数据更新语句失败了你的数据更新语句失败了!); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLCODE|-|SQLERRM);END;2024/7/30在声明部分引发异常错误在声明部分引发异常错误v 如果在声明部分引起异常情况,即在声明部分出现错误,那么该错误如果在声明部分引起异常情况,即在声明部分出现错

61、误,那么该错误就能影响到其它的块就能影响到其它的块1.DECLARE2. name varchar2(12):=EricHu;3. 其它语句其它语句4.BEGIN5. 其它语句其它语句6.EXCEPTION7. WHEN OTHERS THEN 8. 其它语句其它语句9.END;10.例子中,由于例子中,由于Abc number(3)=abc; 出错,尽管在出错,尽管在EXCEPTION中说明了中说明了WHEN OTHERS THEN语句,但语句,但WHEN OTHERS THEN也不会被执行。也不会被执行。2024/7/30异常处理异常处理v 在一般的应用处理中,建议程序人员要用异在一般的应

62、用处理中,建议程序人员要用异常处理,因为如果程序中不声明任何异常处常处理,因为如果程序中不声明任何异常处理,则在程序运行出错时,程序就被终止,理,则在程序运行出错时,程序就被终止,并且也不提示任何信息并且也不提示任何信息v在在 PL/SQL 中使用中使用 SQLCODE, SQLERRM异常处理函数异常处理函数SQLCODE 返回遇到的返回遇到的Oracle错误号错误号,SQLERRM 返回遇到的返回遇到的Oracle错误信息错误信息.2024/7/30游标属性游标属性vSQL%FOUND和和SQL%NOTFOUND在执行任何在执行任何DML语句前语句前SQL%FOUND和和SQL%NOTFO

63、UND的值都是的值都是NULL,在执行在执行DML语句后,语句后,SQL%FOUND的属性值将是:的属性值将是:a. TRUE :INSERTb. TRUE :DELETE和和UPDATE,至少有一行被,至少有一行被DELETE或或UPDATE.c. TRUE :SELECT INTO至少返回一行至少返回一行当当SQL%FOUND为为TRUE时时,SQL%NOTFOUND为为FALSE。vSQL%ROWCOUNT在执行任何在执行任何DML语句之前,语句之前,SQL%ROWCOUNT的值都是的值都是NULL,对于对于SELECT INTO语语句,如果执行成功,句,如果执行成功,SQL%ROWCO

64、UNT的值为的值为1,如果没有成功,如果没有成功,SQL%ROWCOUNT的值为的值为0,同时产生一个异常,同时产生一个异常NO_DATA_FOUND.vSQL%ISOPENSQL%ISOPEN是一个布尔值,如果游标打开,则为是一个布尔值,如果游标打开,则为TRUE, 如果游标关闭,则为如果游标关闭,则为FALSE.对于隐式游标而言对于隐式游标而言SQL%ISOPEN总是总是FALSE,这是因为隐式游标在,这是因为隐式游标在DML语句语句执行时打开,结束时就立即关闭。执行时打开,结束时就立即关闭。2024/7/30游标游标-For 循环游标循环游标-(1)定义游标)定义游标-(2)定义游标变量

65、)定义游标变量-(3)使用)使用for循环来使用这个游标循环来使用这个游标declare -类型定义类型定义 cursor c_job is select empno,ename,job,sal from emp where job=MANAGER; -定义一个游标变量定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标,该类型为游标c_emp中的一行数据类型中的一行数据类型 c_row c_job%rowtype;begin for c_row in c_job loop dbms_output.put_line(c_row.empno|-|c_row.ename|-|

66、c_row.job|-|c_row.sal); end loop;end;2024/7/30Fetch游标游标-Fetch游标游标-使用的时候必须要明确的打开和关闭使用的时候必须要明确的打开和关闭declare -类型定义类型定义 cursor c_job is select empno,ename,job,sal from emp where job=MANAGER; -定义一个游标变量定义一个游标变量 c_row c_job%rowtype;begin open c_job; loop -提取一行数据到提取一行数据到c_row fetch c_job into c_row; -判读是否提取

67、到值,没取到值就退出判读是否提取到值,没取到值就退出 -取到值取到值c_job%notfound 是是false -取不到值取不到值c_job%notfound 是是true exit when c_job%notfound; dbms_output.put_line(c_row.empno|-|c_row.ename|-|c_row.job|-|c_row.sal); end loop; -关闭游标关闭游标 close c_job;end;2024/7/30Fetch游标游标使用游标和使用游标和while循环来显示所有部门的的地理位置(用循环来显示所有部门的的地理位置(用%found属性)属

68、性)declare -游标声明游标声明 cursor csr_TestWhile is -select语句语句 select LOC from Depth; -指定行指针指定行指针 row_loc csr_TestWhile%rowtype;begin -打开游标打开游标 open csr_TestWhile; -给第一行喂数据给第一行喂数据 fetch csr_TestWhile into row_loc; -测试是否有数据,并执行循环测试是否有数据,并执行循环 while csr_TestWhile%found loop dbms_output.put_line(部门地点:部门地点:|ro

69、w_loc.LOC); -给下一行喂数据给下一行喂数据 fetch csr_TestWhile into row_loc; end loop; close csr_TestWhile;end; 2024/7/30动态游标动态游标v使用动态游标步骤:使用动态游标步骤: 定义游标类型:定义游标类型: TYPE 游标类型名游标类型名 REF CURSOR; 声明游标变量:声明游标变量: 游标变量名游标变量名 游标类型名游标类型名; 生成查询语句作为游标:生成查询语句作为游标: OPEN 游标变量名游标变量名 FOR 查询语句字符串查询语句字符串; 2024/7/30动态游标动态游标declare b

70、m number; zw varchar2(10); tt number; str varchar2(50); type cur_type is ref cursor; -定义游标类型定义游标类型 cur cur_type; -定义游标变量定义游标变量 begin str:= select deptno,sum(sal) from emp group by deptno; -查查询字符串询字符串 open cur for str; dbms_output.put_line(每个部门的工资总和:每个部门的工资总和:); while cur%found loop dbms_output.put_l

71、ine(bm| |tt); fetch cur into bm,tt; end loop;end; 2024/7/30ORACLE的用户管理的用户管理v创建用户命令格式创建用户命令格式说说 明明实例实例create user 用户名用户名;创建用户的操作必须由创建用户的操作必须由DBA来做,一般用户无权创建用来做,一般用户无权创建用户。用户名必须是唯一的,户。用户名必须是唯一的,即同一数据库中不能有两个即同一数据库中不能有两个相同的用户。相同的用户。create user scott;identified by 口令口令;为用户设置口令为用户设置口令identified by tiger;de

72、fault tablespace 表空间名表空间名表示该用户存放数据的缺省表示该用户存放数据的缺省表空间表空间default tablespace data_tstemporary tablespace 表空表空间名间名表明用户使用的缺省临时表表明用户使用的缺省临时表空间名空间名temporary tablespace temp_ts;quota 大小大小 on 表空间名表空间名quota 可以限制用户在某个可以限制用户在某个表空间上最多可使用多少字表空间上最多可使用多少字节节quota 500K on data_ts;profile 资源文件资源文件profile 为用户指定各种资源为用户指

73、定各种资源的使用的使用profile newprofile;2024/7/30修改用户修改用户v任任 务务命命 令令将将scott的口令改为的口令改为helloALTER USER scott IDENTIFIED BY hello;将将scott的缺省表空间改为的缺省表空间改为data2_tsALTER USER scott DEFAULT TABLESPACE data2_ts;将将scott的临时表空间修改为的临时表空间修改为temp2_tsALTER USER scott TEMPORARY TABLESPACE temp2_ts;将将scott的资源文件改为的资源文件改为otherp

74、rofileALTER USER scott PROFILE otherprofile;将将scott的缺省角色改为的缺省角色改为DEVELOPERALTER USER scott DEFAULT ROLE DEVELOPER;将当前系统所有角色都授予将当前系统所有角色都授予scott,除,除Payroll外外 ALTER USER scott DEFAULT ROLE ALL EXCEPT Payroll;2024/7/30删除用户删除用户vDROP USER 用户名用户名 CASCADE若不使用若不使用CASCADE选项,则必须在该用户的所有选项,则必须在该用户的所有实体都删除之后,才能删

75、除该用户。使用实体都删除之后,才能删除该用户。使用CASCADE后,则不论用户实体有多大,都一并删后,则不论用户实体有多大,都一并删除除2024/7/30ORACLE的权限管理的权限管理vORACLE的安的安全机制,是由系全机制,是由系统权限、实体权统权限、实体权限和角色权限这限和角色权限这三级体系结构组三级体系结构组成的成的 v系统权限的授予系统权限的授予命令为命令为GRANTv系统权限的回收系统权限的回收命令为命令为REVOKE权限类型权限类型说说 明明系统权限系统权限是指对数据库系统及数据结构的操作是指对数据库系统及数据结构的操作权,例如创建权,例如创建/删除用户、表、同义词、删除用户、

76、表、同义词、索引等等索引等等实体权限实体权限是指用户对数据的操作权,如查询、是指用户对数据的操作权,如查询、更新、插入、删除、完整性约束等等更新、插入、删除、完整性约束等等角色权限角色权限是把几个相关的权限组成角色,角色是把几个相关的权限组成角色,角色之间可以进一步组合而成为一棵层次之间可以进一步组合而成为一棵层次树,以对应于现实世界中的行政职位。树,以对应于现实世界中的行政职位。角色权限除了限制操作权、控制权外,角色权限除了限制操作权、控制权外,还能限制执行某些应用程序的权限。还能限制执行某些应用程序的权限。2024/7/30管理角色管理角色v创建角色,如创建一个名为创建角色,如创建一个名为

77、dept1的角色,的角色,口令字为口令字为hello CREATE ROLE dept1 IDENTIFIED BY hellov使用角色,可以通过修改用户的缺省角色来使用角色,使用角色,可以通过修改用户的缺省角色来使用角色,或通过授权的方法来将角色授予其它角色或用户或通过授权的方法来将角色授予其它角色或用户ALTER USER scott DEFAULT ROLE DEVELOPERv使角色生效或失效,使角色生效或失效,DBA可以通过控制角色的生效或可以通过控制角色的生效或失效,来暂时回收用户的一部分权限失效,来暂时回收用户的一部分权限SET ROLE dept1 DISABLEv删除角色删

78、除角色DROP ROLE dept12024/7/30ORACLE数据库的备份与恢复数据库的备份与恢复vExport 转入程序转入程序 ORACLE数据库有两类备份方法,第一类为数据库有两类备份方法,第一类为物理备份,该方法实现数据库的完整恢复,但数据物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归档模式下,且需要极大的外部存储库必须运行在归档模式下,且需要极大的外部存储设备,例如磁带机;第二类备份方式为逻辑备份,设备,例如磁带机;第二类备份方式为逻辑备份,客户服务中心业务数据库就是采用这种方式,这种客户服务中心业务数据库就是采用这种方式,这种方法不需要数据库运行在归档模式下,不但备

79、份简方法不需要数据库运行在归档模式下,不但备份简单,而且可以不需要外部存储设备单,而且可以不需要外部存储设备2024/7/30逻辑备份逻辑备份v表模式(表模式(T):这种模式可以卸出当前用户数据库模式下的表,):这种模式可以卸出当前用户数据库模式下的表,甚至是所有的表。具有特权的用户可根据所指定的数据库模式甚至是所有的表。具有特权的用户可根据所指定的数据库模式来(限制表)卸出他们所包含的表。缺省情况是卸出属于当前来(限制表)卸出他们所包含的表。缺省情况是卸出属于当前正在进行卸出的用户的所有表。正在进行卸出的用户的所有表。v用户模式(用户模式(U):这种模式可以卸出当前用户数据库模式下的所):这

80、种模式可以卸出当前用户数据库模式下的所有实体(表、数据和索引)。有实体(表、数据和索引)。v全数据库模式(全数据库模式(F):只有具有):只有具有EXP_FULL_DATABASE角色角色的用户才可能以这种模式卸出。以这种模式进行卸出的用户,的用户才可能以这种模式卸出。以这种模式进行卸出的用户,除除SYS模式下的内容之外,数据库中所有实体都可以卸出。模式下的内容之外,数据库中所有实体都可以卸出。 下下面列出给用户赋予面列出给用户赋予EXP_FULL_DATABASE角色的方法。角色的方法。2024/7/30表模式表模式EXP ICDMAIN/ICD BUFFER=8192(或或64000)FI

81、LE=EXP_ICDMAIN_SERVICEINFO.DMP TABLES=ICDMAIN.SERVICEINFO(多个表以逗号分隔(多个表以逗号分隔)ROWS=Y COMPRESS=NLOG= EXP_ICDMAIN_SERVICEINFO.LOGBUFFER缓冲区大小缓冲区大小FILE由由Export创建的输出文件的名字创建的输出文件的名字TABLES将要卸出的表名列表将要卸出的表名列表ROWS指明是否卸出表中数据的行数,缺省为指明是否卸出表中数据的行数,缺省为“Y”。COMPRESS指明在装入期间是否将表中数据压缩到一个区域中。如果在指明在装入期间是否将表中数据压缩到一个区域中。如果在卸

82、出数据时,指定参数卸出数据时,指定参数COMPRESS=Y,那么装入时,就会将数,那么装入时,就会将数据压缩到一个初始区域中。这种选择可以保持初始化区域的据压缩到一个初始区域中。这种选择可以保持初始化区域的原始大小。缺省为原始大小。缺省为“Y”。LOG指定一个接收有用信息和错误信息的文件指定一个接收有用信息和错误信息的文件2024/7/30用户模式用户模式EXP ICDMAIN/ICD OWNER=ICDMAIN BUFFER=8192(或(或64000)FILE=EXP_ICDMAINDB.DMP 或(磁带设备或(磁带设备/dev/rmt0)ROWS=Y COMPRESS=N LOG= EX

83、P_ICDMAINDB.LOGBUFFER缓冲区大小缓冲区大小FILE由由Export创建的输出文件的名字创建的输出文件的名字TABLES将要卸出的表名列表将要卸出的表名列表ROWS指明是否卸出表中数据的行数,缺省为指明是否卸出表中数据的行数,缺省为“Y”。COMPRESS指明在装入期间是否将表中数据压缩到一个区域中。如果在指明在装入期间是否将表中数据压缩到一个区域中。如果在卸出数据时,指定参数卸出数据时,指定参数COMPRESS=Y,那么装入时,就会将数,那么装入时,就会将数据压缩到一个初始区域中。这种选择可以保持初始化区域的据压缩到一个初始区域中。这种选择可以保持初始化区域的原始大小。缺省

84、为原始大小。缺省为“Y”。LOG指定一个接收有用信息和错误信息的文件指定一个接收有用信息和错误信息的文件OWNER将要卸出的用户名列表将要卸出的用户名列表2024/7/30全数据库模式全数据库模式 EXP ICDMAIN/ICD BUFFER=8192(或或64000) FILE=EXP_ICDMAIN_DB.DMP (或磁带设备(或磁带设备/dev/rmt0)FULL=Y ROWS=Y COMPRESS=NLOG= EXP_ICDMAIN_DB.LOG 对于数据库备份,建议采用增量备份,即只备份上一次备份以来对于数据库备份,建议采用增量备份,即只备份上一次备份以来更改的数据更改的数据EXP

85、ICDMAIN/ICD BUFFER=8192(或(或64000)FILE=EXP_ICDMAIN_DB.DMP (或磁带设备(或磁带设备/dev/rmt0)FULL=Y INCTYPE=INCREMENTAL ROWS=Y COMPRESS=NLOG=EXP_ICDMAIN_DB.LOGBUFFER、FILE、ROWS、COMPRESS、LOG同上同上FULL指明是否卸出完整的数据库。如果指明是否卸出完整的数据库。如果FULL=Y,将以全数据库模式进行卸出。,将以全数据库模式进行卸出。INCTYPE增加卸出的类型,有效值有增加卸出的类型,有效值有complete(完全)、(完全)、comul

86、ative(固(固定)和定)和incremental(增量)。(增量)。complete输出所有表输出所有表comulative将输入第一次完全输出后修改过的表将输入第一次完全输出后修改过的表incremental将输出前一次输出后修改过的表将输出前一次输出后修改过的表2024/7/30Import 转入程序转入程序vmport和和Export是两个相配套的实用程序,是两个相配套的实用程序,Export把数据库把数据库中的数据卸出到操作系统文件中,而中的数据卸出到操作系统文件中,而Import实用程序则把实用程序则把Export卸出的数据恢复到数据库中。卸出的数据恢复到数据库中。v按备份方案确

87、定恢复方案,例如:采用表逻辑备份方案,则恢复按备份方案确定恢复方案,例如:采用表逻辑备份方案,则恢复方案也采用恢复到表的方式(不应恢复到用户)。方案也采用恢复到表的方式(不应恢复到用户)。v要使用要使用Import,必须具有,必须具有CREATE SESSION特权,以便能特权,以便能注册到注册到ORACLE RDBMS中去。这一特权属于在数据库创建时中去。这一特权属于在数据库创建时所建立的所建立的CONNECT角色。角色。v如果卸出文件是由某用户利用如果卸出文件是由某用户利用EXP_FULL_DATABASE角色角色创建的全数据库卸出,那么只有具有创建的全数据库卸出,那么只有具有IMP_FU

88、LL_DATABASE角色的用户才能装入这样的文件。角色的用户才能装入这样的文件。下面给用户赋予下面给用户赋予IMP_FULL_DATABASE角色的方法角色的方法v数据库的逻辑恢复分为表、用户、数据库三种模式数据库的逻辑恢复分为表、用户、数据库三种模式2024/7/30表模式表模式IMP ICDMAIN/ICD FILE=文件名文件名 LOG=LOG文件名文件名 ROWS=Y COMMIT=Y BUFFER=Y IGNORE=Y TABLES=(表名(表名1,表名,表名2,表名,表名3,表名,表名4,.) BUFFER缓冲区大小缓冲区大小FILE用于装入的卸出文件名字用于装入的卸出文件名字T

89、ABLES将要装入的表名列表将要装入的表名列表ROWS指明是否装入表数据的行数,缺省为指明是否装入表数据的行数,缺省为“Y”。IGNORE指明如何处理实体创建错误。指定指明如何处理实体创建错误。指定IGNORE=Y,当试图创建数据库实体时,忽略,当试图创建数据库实体时,忽略实体存在错误。对除了表之外的其他实体,指定实体存在错误。对除了表之外的其他实体,指定IGNORE=Y,Import不报告错误,不报告错误,继续执行。而指定继续执行。而指定IGNORE=N时,时,Import在继续执行前报告实体创建错误。在继续执行前报告实体创建错误。COMMIT指明在每个矩阵插入之后是否提交。缺省时,指明在每

90、个矩阵插入之后是否提交。缺省时,Import在装入每个实体之后提交。在装入每个实体之后提交。指定指定COMMIT=N时,如有错误产生,时,如有错误产生,Import在记录装入下一个实体之前,完成一在记录装入下一个实体之前,完成一个回退。指定个回退。指定COMMIT=Y时,可以抑制回滚字段无限制增大,并改善大量装入时时,可以抑制回滚字段无限制增大,并改善大量装入时的性能,表具有唯一约束时,这种选择比较好。如果再次开始装入,将拒绝装的性能,表具有唯一约束时,这种选择比较好。如果再次开始装入,将拒绝装入已经装入的任何行,原因是非致命性错误。表具有非唯一约束时,指定入已经装入的任何行,原因是非致命性错

91、误。表具有非唯一约束时,指定COMMIT=N可能是比较好的选择。因为重新装入可能会产生重复行。可能是比较好的选择。因为重新装入可能会产生重复行。LOG指定一个接收有用信息和错误信息的文件指定一个接收有用信息和错误信息的文件2024/7/30用户模式用户模式IMP SYSTEM/MANAGER FROMUSER=ICDMIAN TOUSER=ICDMAIN FILE=文件名文件名 LOG=LOG文件名文件名 ROWS=Y COMMIT=YBUFFER=Y IGNORE=Y参数说明同上。参数说明同上。2024/7/30数据库模式数据库模式如果备份方式为数据库模式,采用下列恢如果备份方式为数据库模式

92、,采用下列恢复方法:复方法:IMP SYSTEM/MANAGER FULL=Y FILE=文件名文件名 LOG=LOG文件名文件名 ROWS=Y COMMIT=YBUFFER=Y IGNORE=Y参数说明同上。参数说明同上。2024/7/30增量卸出增量卸出/装入装入v“完全完全”增量卸出增量卸出对整个对整个ORACLE数据库进行完全卸出数据库进行完全卸出$ exp system/口令口令 inctype=complete full=y file=today.dmpv“增量型增量型”增量卸出增量卸出从从ORACLE数据库中卸出上次卸出操作之后所有数据库的变化信息数据库中卸出上次卸出操作之后所有

93、数据库的变化信息$exp system/口令口令 inctype=incremental file=today.dmpv“累积型累积型”增量卸出增量卸出累积型卸出方式只是卸出自上次累积型卸出方式只是卸出自上次“完全完全” 卸出之后数据库中变化了卸出之后数据库中变化了的信息的信息$exp system/口令口令 inctype=cumulative file=today.dmp2024/7/30配置配置listener.oravistener.ora文件中存放了客户机与服文件中存放了客户机与服务器连接所需要的监听地址,以及服务务器连接所需要的监听地址,以及服务器启动监听进程时的信息。器启动监听进

94、程时的信息。listener.ora文件缺省放置在文件缺省放置在/ORACLE_HOME/product/11.1.2/network/admin之下之下2024/7/30配置配置listener.oravLISTENER =v (DESCRIPTION_LIST =v (DESCRIPTION =v (ADDRESS_LIST =v (ADDRESS = (PROTOCOL = TCP)(HOST = sun62)(PORT = 1521)v )v (ADDRESS_LIST =v (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)v )v )v )vSID

95、_LIST_LISTENER =v (SID_LIST =v (SID_DESC =v (SID_NAME = PLSExtProc)v (ORACLE_HOME = /opt/ORACLE/product/8.1.7)v (PROGRAM = extproc)v )v (SID_DESC =v (GLOBAL_DBNAME = )v (ORACLE_HOME = /opt/ORACLE/product/8.1.7)v (SID_NAME = ora817)v )v ) 2024/7/30配置配置listener.orav其中,其中,LISTENER是服务器中监听进程的名称;是服务器中监听进程

96、的名称;PROTOCOL表明所使用的网络协议,若是表明所使用的网络协议,若是TCP/IP协议,则该值必须为协议,则该值必须为“TCP”;HOST表示服务器的网络地址;表示服务器的网络地址;PORT指指TCP/IP协协议在主机中所占用端口号,议在主机中所占用端口号,ORACLE缺省使用缺省使用1521,是在安,是在安装装ORACLE数据库时定义的,在安装时可以改变,安装完成后数据库时定义的,在安装时可以改变,安装完成后不能改变此值;不能改变此值;SID_NAME指服务器上运行的指服务器上运行的ORACLE数据数据库名称,该值应与库名称,该值应与.bash_profile文件中的环境变量文件中的环

97、境变量ORACLE_SID相同(一般情况下此文件为缺省值相同(一般情况下此文件为缺省值“PLSExtProc”););ORACLE_HOME是指是指ORACLE数据库的数据库的主目录,该值也应与主目录,该值也应与. bash_profile文件中的环境变量文件中的环境变量ORACLE_HOME相同。相同。2024/7/30配置配置tnsnames.ora文件文件v客户机为了和服务器连接,必须先和服务器上的监听客户机为了和服务器连接,必须先和服务器上的监听进程联络。进程联络。ORACLE通过通过tnsnames.ora文件中的文件中的连接描述符来说明连接信息。一般连接描述符来说明连接信息。一般t

98、nsnames.ora 是建立在客户机上的。如果是客户机是建立在客户机上的。如果是客户机/服务器结构,服务器结构,整个网络上只有一台机器安装了整个网络上只有一台机器安装了ORACLE数据库服数据库服务器,那么只需在每个要访问务器,那么只需在每个要访问ORACLE服务器的客服务器的客户机上定义该文件,在服务器上无需定义。但是,如户机上定义该文件,在服务器上无需定义。但是,如果网络上有多台机器均安装了果网络上有多台机器均安装了ORACLE数据库服务数据库服务器,并且服务器之间有数据共享的要求,那么在每台器,并且服务器之间有数据共享的要求,那么在每台服务器上都必须定义该文件。服务器上都必须定义该文件

99、。tnsnames.ora文件文件缺省放在缺省放在/ORACLE_HOME/ product/11.1.2/network/admin目录下目录下2024/7/30配置配置tnsnames.ora文件文件vORA817 =v (DESCRIPTION =v (ADDRESS_LIST =v (ADDRESS = (PROTOCOL = TCP)(HOST = sun62)(PORT = 1521)v )v (CONNECT_DATA =v (SERVICE_NAME = )v )v )vvINST1_HTTP =v (DESCRIPTION =v (ADDRESS_LIST =v (ADDRE

100、SS = (PROTOCOL = TCP)(HOST = sun62)(PORT = 1521)v )v (CONNECT_DATA =v (SERVER = SHARED)v (SERVICE_NAME = )v (PRESENTATION = http:/admin)v )v )vvEXTPROC_CONNECTION_DATA =v (DESCRIPTION =v (ADDRESS_LIST =v (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)v )v (CONNECT_DATA =v (SID = PLSExtProc)v (PRESENTATIO

101、N = RO)v )v )2024/7/30配置配置tnsnames.ora文件文件ADDRESS_LIST表示该客户机要经由多种协议与一台或多台服表示该客户机要经由多种协议与一台或多台服务器连接。在该样式文件中就表示该客户机要务器连接。在该样式文件中就表示该客户机要用用TCP/IP协议来和服务器相连。协议来和服务器相连。PROTOCOL指明要连接使用的协议。指明要连接使用的协议。SERVICE_NAME “SERVICE_NAME”就是就是“Global Database Name”,ORACLE8i数据库使用数据库使用“Global Database Name”来唯一标识自己,通常的格式为

102、来唯一标识自己,通常的格式为“name.domain”,此处的值为,此处的值为“”。HOST是是TCP/IP协议使用的服务器协议使用的服务器IP地址。地址。PORT是是TCP/IP使用的端口地址。使用的端口地址。SID指定要连接的服务器上指定要连接的服务器上ORACLE数据库的数据库的ORACLE_SID。SERVER=DEDICATED表示用专用服务器连接表示用专用服务器连接ORACLE数据库。数据库。2024/7/30如何恢复被误删的数据文件如何恢复被误删的数据文件vSvrmgrl alter database datafile 文文件名件名 offline;或重启;或重启ORACLE;v

103、Svrmgrlalter database create datafile 原文件名原文件名 as 新文件名;新文件名;vSvrmgrlrecover datafile 新文件名新文件名vSvrmgrlalter database datafile 新新文件名文件名 online;vSvrmgrlalter database open;2024/7/30如何杀掉吊死如何杀掉吊死sessionv找出吊死找出吊死sessionSelect sid,serial#,program,machine,lockwait from v$session; v杀死杀死sessionSvrmgrlalter sy

104、stem kill session init1,init2;v 说明:说明:其中其中init1为为sid,init2为为serial#。2024/7/30如何修改字符集如何修改字符集v以以sys用户执行如下命令用户执行如下命令Update props$ set value$=新字符集新字符集 Where ltrim(name)=NLS_CHARACTERSET;commit;v注意:如果有数据,不要修改数据集。注意:如果有数据,不要修改数据集。 2024/7/30Hot Tipv如何追加表空间如何追加表空间Alter tablespace 表空间表空间 add datafile 文件名文件名(

105、带路径)(带路径)size Xm;v如何加大表的如何加大表的maxextents值值Alter table 表名表名 storage(maxextents 新值新值)2024/7/30复制表与表回滚复制表与表回滚v复制表创建复制表创建create table T_BAK AS SELECT * FROM Tcreate table table_name_new like table_name_old(不复制数据)(不复制数据)v误删数据回滚误删数据回滚SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSDATE-1/24 (一小时前的一小时前的)v闪回闪回DBMS_FLASHBACK.enable_at_time(to_timestamp(2006-5-24 8:26:0, yyyy-mm-dd hh24:mi:ss)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号