迫于大学时候的期末考试,对于很多课程都做过比较详细的笔记,比如Oracle,有时候看看笔记,背背知识点,就能很方便的把考试过了,现在想想也真是无奈。现在我把Oracle的基本知识点和大家分享,可以省去很多为了考试而整理书本的时间。
第一章 关系型数据库介绍
1. 安装Oracle 10g的软硬件要求
硬件要求:
物理内存:最小256M,建议512M以上
虚拟内存:大小为物理内存的两倍
临时磁盘空间:100M以上
视频适配器:256种颜色
硬盘空间:1.5G以上
处理器:最小550MHz
软件要求:
操作系统:Windows2000、WindowsXP、Windows2003
网络协议:TCP/IP、命名管道
Wed浏览器:IE 6以上
2. 检验安装是否成功
(1) 查看已安装的产品:打开安装包,运行setup.exe.查看已安装的产品。
(2) 查看程序组:打开“开始”菜单,查看是否注册了Oracle。
(3) 查看服务:在“管理工具”->“服务”中查看是否已经有了Oracle服务。
(4) 查看注册表
(5) 尝试运行Oracle工具:比如SQL Plus.
3. Oracle数据库的默认用户
(1) SYS:该用户被默认创建并授予DBA角色。是Oracle数据库中权限最大的管理员。数据库中所有的数据字典的基本表和视图都存储在sys方案中。这些基本表和视图对于Oracle非常重要。Sys中的表只能有系统维护,不能被任何的用户和数据库管理员修改,而且用户不能在sys方案中建表。
(2) SYSTEM:被默认创建并授予DBA角色,权限仅次于sys。用来创建和管理数据库中可显示管理信息的表和视图,以及被Oracle数据库应用和工具使用的各种数据库对象。
(3) SYSMAN:该用户是企业管理的超级管理员账号,该账号能创建和修改其他管理员账号同时也能管理数据库实例。
(4) DBSNMP:是Oracle中用于智能代理的用户,用来监控和管理数据库的相关性能。如果停止该用户,则无法提取数据库的信息。
4. Oracle的启动和关闭
启动和关闭数据库需要用户以Oracle的sysdba特权登陆。一般就是系统用户以sysdba登陆。
(1) 使用startup命令启动数据库
步骤:启动一个Oracle实例;由该实例安装数据库,只打开控制文件;最后是打开数据库。
(2) 使用shutdown命令关闭数据库
5. OEM(企业管理器)
简答题:
1. 简述Oracle中的几个默认管理员用户及其作用。
答:Oracle数据库的默认用户
(1)SYS:该用户被默认创建并授予DBA角色。是Oracle数据库中权限最大的管理员。数据库中所有的数据字典的基本表和视图都存储在sys方案中。这些基本表和视图对于Oracle非常重要。Sys中的表只能有系统维护,不能被任何的用户和数据库管理员修改,而且用户不能在sys方案中建表。
(2)SYSTEM:被默认创建并授予DBA角色,权限仅次于sys。用来创建和管理数据库中可显示管理信息的表和视图,以及被Oracle数据库应用和工具使用的各种数据库对象。
(3)SYSMAN:该用户是企业管理的超级管理员账号,该账号能创建和修改其他管理员账号同时也能管理数据库实例。
(4)DBSNMP:是Oracle中用于智能代理的用户,用来监控和管理数据库的相关性能。如果停止该用户,则无法提取数据库的信息。
第二章 Oracle的体系结构
1. 数据库包括4种类型的文件:数据文件、日志文件、控制文件、初始化参数文件。(这是Oracle的物理存储结构,是一系列的操作系统文件,是Oracle真正存储数据的地方。)
2. 数据文件:
(1)数据文件是Oracle用来存储各种数据的地方。一个数据库有一个或多个数据库文件,但一个数据文件只能属于一个数据库。
(2)数据文件和数据库中的表没有一一对应的关系。
(3)数据文件包括永久数据文件和临时数据文件
(4)数据文件根据存储的数据不同分为:系统数据文件、回滚数据文件、临时数据文件、用户数据文件、系统辅助数据文件、示例数据文件。
3. 日志文件:
(1) Oracle中日志文件记录了用户对数据库的修改。对数据库的查询操作不产生日志。
(2) 日志文件又叫重做日志文件。
(3) 日志组是日志文件的逻辑组织单元。每个日志组中有一个或多个日志文件。一个数据库中至少要有两个日志组,一组写完后切换到另一组继续写。同一个日志组中的日志文件具有相同的信息,是镜像关系。
(4) 数据库的两种工作模式:归档日志模式、非归档日志模式。
(5) 归档模式下,日志信息被覆盖前就已经复制到归档日志文件中,日志信息即使被覆盖,也能够在归档日志文件找到。
(6) 非归档模式下,重新向某个日志组写入日志信息将会覆盖原来的日志,并且不能再使用。
4. 控制文件:
(1) 控制文件记录了数据库的名称,数据文件和日志文件的名称和位置、表空间等信息。控制文件在创建数据库时自动创建。
(2) 打开数据库过程:Oracle首先从初始化参数文件中获得控制文件的名称和位置,然后打开控制文件,再从控制文件中读取数据文件和日志文件的信息,最后打开数据库。
5. 参数文件:
(1) 在启动数据库实例时,第一个被访问的就是参数文件。
(2) 参数文件分为文本参数文件和服务器参数文件。
6.将逻辑存储空间的大小依次分为表空间、段、盘区、数据块。(Oracle对存储空间的管理是在逻辑存储结构上进行的。)
7.一个数据库从逻辑上划分为多个表空间,一个表空间划分为多个段、一个划分为多个盘区、一个盘区划分为多个数据块。
8.盘区是最小的磁盘空间分配单位。
9.数据块是Oracle最小的数据读写单元。
10.表空间:数据库中的所有数据都存储在表空间中。数据库中一个表空间至少包含一个或多个数据文件;一个数据文件只能在一个表空间中。
11. 段:盘区是按需分配的,一个段上的盘区在磁盘上不一定是连续的。(同一个段的不同
盘区可以分布在不同的数据文件中。)
12. 盘区:最小的磁盘空间分配单位。
13.数据块:Oracle最小的逻辑存储单元。Oracle从数据文件进行存取操作时是以数据块为单位进行输入输出操作的。(注意:数据块和操作系统中的块不同。Oracle每次存取数据时,是以数据块的整数倍访问数据,而不是以操作系统中块为单位。
1. Oracle完成网络连接要使用三个文件:listener.ora(服务器端配置) tnsnames.ora(客户端配置) sqlnet.ora(客户端配置)
2. sqlnet.ora文件:指定数据库连接账号的验证方式以及连接字符串的解析方式。该文件决定怎样查找连接中出现的连接字符串的定义。
3. tnsnames.ora文件:定义客户端连接远程服务器时的主机字符串。
4. listener.ora文件:Oracle监听服务的配置文件。当客户端向服务器提交连接服务时,监听服务对连接账号进行有效性验证,通过后将用户进程转交服务进程处理。
简答题
1. 简述数据库的物理存储结构,并说出每种物理文件的作用是什么?
答: Oracle的物理存储结构是从物理组成的角度分析一个数据库在存储介质上的实际构成,是由操作系统组织和管理的,是Oracle的外部存储结构。由于操作系统组织和管理数据的基本单位是文件,因此Oracle的物理存储结构是由多个操作系统文件组成的。
其他的参考上面1 2 3 4 5
2.简述数据库的逻辑存储结构,并说出表空间和数据文件之间的关系是什么?
答: Oracle的逻辑存储结构是在逻辑上定义了一组存储单元,以逐层细分的思想将数据库对象占用的存储空间划分为表空间、段、盘区和数据块。表空间是最大的逻辑存储单元,一个数据库从逻辑上划分为多个表空间;一个表空间划分为多个段;一个段又划分为多个盘区,盘区是最小的磁盘空间分配单元;一个盘区划分为多个数据块,数据块是Oracle最小的数据读写单元。因此,Oracle对存储空间的管理和分配是在逻辑存储结构上进行的。
数据库中的一个表空间至少包含一个或多个数据文件,而一个数据文件只能属于一个表空间。
3.客户端和服务器端常用的配置文件是什么?它们的作用分别是什么?
答:listener.ora(服务器端配置) tnsnames.ora(客户端配置) sqlnet.ora(客户端配置)
sqlnet.ora文件:指定数据库连接账号的验证方式以及连接字符串的解析方式。该文件决定怎样查找连接中出现的连接字符串的定义。
tnsnames.ora文件:定义客户端连接远程服务器时的主机字符串。
listener.ora文件:Oracle监听服务的配置文件。当客户端向服务器提交连接服务时,监听服务对连接账号进行有效性验证,通过后将用户进程转交服务进程处理。
第三章 用户方案的创建和管理
1. 方案与用户的关系:一个方案只能被一个数据库用户所有,并且方案的名称与用户的名称相同,当创建新用户时,系统自动创建该用户的方案。Oracle每一个用户都有一个唯一的方案。该用户创建的对象默认保存在自己的方案中。如果用户有足够的权限,也可以将自己的对象保存在别人的方案中。
2. Oracle中的方案是对数据库的局部逻辑描述。
3. 方案中的对象是数据库所有对象的一个子集。
4. 同一个方案对象在物理上可能存在于同一个表空间中的不同数据文件中。
简答题:
1. 简要介绍方案与用户之间的关系?
答:一个方案只能被一个数据库用户所有,并且方案的名称与用户的名称相同,当创建新用户时,系统自动创建该用户的方案。Oracle每一个用户都有一个唯一的方案。该用户创建的对象默认保存在自己的方案中。如果用户有足够的权限,也可以将自己的对象保存在别人的方案中。
第七章 PL/SQL编程基础
1. 一个PL/SQL程序块中可以嵌套多层,没有限制。
2. PL/SQL程序块三部分组成:定义部分、执行部分、异常处理部分。
3. 定义部分:declare关键字
4. 执行部分:关键字begin开始,关键字end结束
5. 异常处理:关键字exception
6. 定义部分和异常处理部分是可选的,执行部分是必须的。
7. PL/SQL的标识符规则:
(1) 必须以字母开头,不能超过30个字符
(2) 标识符中不能包含减号“-”和空格
(3) Oracle不区分大小写
(4) 不能使SQL保留字
8. PL/SQL的数据类型:标量数据类型(基本数据类型)、大对象数据类型、属性类型、引用类型
9. 标量数据类型包括数值类型、字符类型、布尔类型、日期时间类型
10. 数值类型中有number binary_integer pls_integer
11. number(p,s) 精度38位,p表示总位数,s是小数点后的位数
12. binary_integer 、 pls_integer 是PL/SQL专用数据类型,不能在定义表结构时使用。
13. 布尔类型(boolean):值有ture、false、null。这是PL/SQL中的数据类型,不能向数据库中插入布尔类型的值,只能对布尔类型的变量进行逻辑操作。
14. 日期时间类型: date 、 timestamp
15. 大对象数据类型(LOB):存储非结构化数据,例如文本、图形图像、视频和声音等。
16. 属性类型:%type %rowtype
17. 引用类型:ref_cursor(动态游标)和ref操作符。
18. 学会使用%type %rowtype.
19. 游标是指向查询结果集的指针。有显式游标和隐式游标。
20. 在PL/SQL中,系统为所有的select语句和DML语句自动创建隐式游标。
21. 游标常用属性:
(1)%isopen 如果游标已经打开,则返回true;若没有打开,则返回false。
(2)%found 如果提取到数据,返回true,若未提取到数据,返回false。
(3)%notfound 和%isopen相反。
(4)%rowcount 返回游标从结果记录集中得到的记录总数。
22. 异常分为两种:系统异常和用户自定义异常。
23. 系统异常分为:预定义异常和非预定义异常。
24. 系统预定义异常:由系统根据发生的错误已经定义好的异常,有错误编号和异常名称用来处理常见的Oracle错误,例如:
(1) case_not_found:在case语句条件中没有满足条件的分支。
(2) dup_val_on_index:在唯一索引的列上插入了重复值。
(3) too_many_rows:返回的记录超过一行。
(4) no_data_found:没有返回行。
25.系统的非预定义异常指Oracle已经为它定义了错误编号,但是没有定义异常的名字。
注意:SQL语句!!!
第八章 存储过程
1. 如果在应用程序中经常需要通过执行SQL语句来返回特定的数据,就可以基于这些操作建立特定的函数。
2. 用户调用存储过程必须具有execute执行权限。如果是存储过程的创建者,则不需要授权。如果用户需要执行其他用户下的存储过程,则需要授予execute权限。
3. 创建存储过程需要有create procedure系统权限。
4. 在存储过程内部执行各种操作需要显式的权限。隐式权限在匿名块中起作用,在命名块中不起作用。
5. 删除存储过程需要有drop any procedure权限。
简答题:
1. 创建与调用存储过程时,应事先授予那些权限?
答:创建时涉及两类权限:
(1) 创建存储过程自身需要的权限,即create procedure系统权限。这是创建存储过程需要的最基本的权限,只有获得该权限后,用户才能执行create procedure语句。
(2) 在存储过程内部执行各种操作时的显式权限。因为隐式权限在匿名块中起作用,在命名块中不起作用。
调用时的权限:execute权限。如果是存储过程的创建者,则不需要授权。如果是其他用户执行该存储过程,则需要获得execute权限。
第九章 索引
1. 索引的主要用途就是提高表的查询速度,可以独立于表进行存储。
2. 索引是一个单独的物理存储结构,可以有自己的存储空间,不必与相关联的表在同一个表空间中。索引由表中一列或多列值的集合和这些值所在行的ROWID组成。
3. ROWID是表中数据行的唯一性标识。
4. 使用索引的好处:
(1) 创建唯一索引后保证每行数据的唯一性。
(2) 可以加速检索数据的速度。
(3) 多表查询时加速表之间的连接。
(4) 减少分组和排序的时间。
5. 适合创建索引的字段具有的特点:
(1) 取值范围较大的字段
(2) Null值比较多的字段
(3) 经常作为查询和连接条件的字段
(4) 经常需要排序的字段
6. 不适合创建索引的表或字段的特点:
(1) 较小的表
(2) 经常更新的表
(3) 不经常作为查询和连接条件的字段
7. 索引类型:B树索引、位图索引、反向键索引、基于函数的索引、全局索引、局部索引
8. B树索引是Oracle默认的索引类型。适合被索引的列值基本没有相同的值。
9. B树索引优点:
(1) B树中所有叶子节点基本处于同一深度。所以查询任何记录的时间基本相同。
(2) B树的索引结构是自动保持平衡的。
(3) B树为一定范围的查询提供了极好的性能。
(4) B树的插入、更新、删除效率高。
(5) B树索引的性能不会因为表的大小增长而降低。
10. 位图索引:也采用B树索引,只是索引值全部集中在叶子节点上。适合检索很少有唯一值的列,比如性别。
11. Oracle中,系统会自动为表的主键列建立索引,这个默认的索引是B树索引。
12. 反向键索引:特殊的B树索引,适合为有序数列建立索引。避免有序数列构成B树的“歪树”现象,使树比较均匀。
13. 函数索引:也是B树索引,是基于字段的函数建立的,而不是直接建立在字段上。
14. 函数索引的作用:
(1) 只对限定的行创建索引,节约空间,提高检索速度。
(2) 优化where子句使用了函数的SQL语句。
简答题:
1. 简述索引的类型有哪些,并说明什么情况下适合建立反向键索引,什么情况下适合建立位图索引?
答:索引类型:B树索引、位图索引、反向键索引、基于函数的索引、全局索引、局部索引
反向键索引适合建立在有序数列上。
位图索引适合建立在很少有唯一值的列,比如性别。如果列中的唯一值和总的记录数之比少于1%,则适合于位图索引。
第十章 序列
1. 序列也是方案对象,用于产生一系列唯一数字。可以用它自动生成主键值
2. 序列可以在多用户并发环境中使用,为所有用户生成不重复的顺序数字而且不需要额外的IO开销。
3. 用户在自己的方案中创建序列,必须要有create sequence系统权限,在其他方案中创建序列,必须要有create any sequence系统权限。
4. 用户可以使用nextval和currval两个运算符访问序列的值。nextval将返回序列生成的下一个值,currval将返回序列的当前值。第一次使用序列时,需要使用nextval,此时返回的是初始值。以后再使用nextval运算符,序列会自动增加increment by后面的值。
5. 修改其他方案中的序列时,用户必须具有alter any sequence系统权限。
简答题:
1. 简述序列的概念。
答:序列可在当前方案下产生一系列唯一数字,可以用这些数字产生表的主键值,也可以参与其他运算。序列也可在多用户并发环境中使用,为所有用户生成不重复的顺序数字,而不需要任何的额外I/O开销.
2. 序列常用的两个运算符是什么?各代表什么意义?
答:nextval运算符和currval运算符
nextval将返回序列生成的下一个值,currval将返回序列的当前值。
第十一章 触发器
1. 触发器是一种特殊的存储过程,是通过事件触发被系统自动调用的(不是由程序调用,也不是手工启动)。是一个独立的事务,被当做整体执行,在执行过程中发生错误,则整个事务自动回滚。触发器用于加强数据的完整性约束。
2. 按触发器时间划分:before触发器、after触发器、instead of触发器。
3. 按触发事件划分:DML触发器、DDL触发器、用户事件触发器、系统事件触发器。
4. DML触发器分为:行级触发器、语句级触发器
5. DDL触发器分为:数据库级DDL触发器、用户级DDL触发器
6. 行级触发器:使用了for each row. DML 命令每操作一行记录,触发器就被触发一次。当DML语句影响多行记录时,行级触发器被触发多次。
7. 行级触发器有一个重要的特点就是可以在触发器中引用当前DML命令正在操作的行值,包括新值和旧值。这些值被保存在Oracle中的两张临时表中分别是new表和old表。这两张表的结构和DML正在操作的表结构完全相同,但只有一行记录。在new表中包含insert语句要插入的新数据或update语句修改后的新数据,可以在行级触发器中修改他们的值。在old表中包含delete语句删除以前的旧数据或update语句修改前的旧数据,不允许在触发器中修改它们的值。
8. new表和old表是内存中的两张逻辑表,只能在行级触发器中使用,不能在语句级触发器中使用。当用户添加数据或修改数据时,系统先将这些新数据写到内存的new表中,再将new表中的数据写到数据库的物理表中。当用户删除数据或修改数据时,系统先将旧数据写到old表中,再更新物理表中的数据。
简答题:
1. 简述Oracle中的触发器的类型及触发器的条件。
答:
(1) 按触发时间分:
Before触发器:在触发语句执行前被触发。
After触发器:在触发语句执行后被触发。
Instead of触发器:触发语句被触发器替代。
(2) 按触发事件分
DML触发器:对表或试图执行DML操作(select、insert、update)时触发。
DDL触发器:对数据库执行DDL操作(create、alter、drop)时触发。
用户事件触发器:用户执行DCL操作时触发。
系统事件触发器:由系统事件进行触发。
第十二章 事务
1. 事务是一个单独的逻辑工作单元,也是一个操作序列,包含一条或多条语句。这些语句被当做一个整体执行。
2. 一个事务中的语句要么都执行成功,要么都执行失败。一旦某个操作发生异常,则整个是误会重新开始,数据库就会返回事务最开始的状态,所做的所有操作都会取消。如果成功,所有的操作都被执行。
3. Oracle中不能显式的定义一个事务开始,一般在上一个事务结束(回滚或提交)后的第一条语句隐式的定义事务。
4. Oracle可以显式或隐式地结束一个事务。
5. 以下情况表示事务结束
(1) commit显式提交事务
(2) rollback回滚事务。注意:若只回滚到保存点(savepoint),整个事务不会结束
(3) 执行DDL语句(create、drop、alter),这些命令单独作为一个事务。在执行这些DDL命令之前将提交以前执行的所有命令;执行DDL命令之后将该DDL命令单独作为一个事务提交;DDL执行之后的其他语句将作为新的事务。
(4) 用户正常断开与Oracle的连接,当前的事务被自动提交。
(5) 用户进程意外终止,当前事务被回滚。
(6) 关闭SQL *Plus会话,默认回滚事务。
6. 事务的特性:ACID 原子性 一致性 隔离性 持久性
简答题:
1. 哪些情况发生后事务将终止?
答:
1. commit显式提交事务
2. rollback回滚事务。注意:若只回滚到保存点(savepoint),整个事务不会结束
3. 执行DDL语句(create、drop、alter),这些命令单独作为一个事务。在执行这些DDL命令之前将提交以前执行的所有命令;执行DDL命令之后将该DDL命令单独作为一个事务提交;DDL执行之后的其他语句将作为新的事务。
4. 用户正常断开与Oracle的连接,当前的事务被自动提交。
5. 用户进程意外终止,当前事务被回滚。
6. 关闭SQL *Plus会话,默认回滚事务。
第十三章 数据库安全
系统权限管理
1. 系统权限是指对整个数据库进行操作的权力。
2. 系统权限可以由dba角色的用户授予,比如sys或system;也可以由对该权限有with admin option选项的用户授予。
3. 回收系统权限的用户不一定是原来分配该权限的用户,只要具有dba角色或对系统权限有with admin option选项的用户都可以执行收回权限的操作。
4. 系统权限没有级联关系。可以跨用户回收。
对象权限管理
1. Oracle对象权限是指用户在某个方案对象上执行操作的权力。
2. 对象权限可以由具有dba角色的用户授权,通常是sys或system用户执行操作;也可以由对该对象有with grant option选项的用户授权;也可以由该对象的所有者授权。
3. 对象权限的回收注意:
(1) 回收权限的用户不一定必须是授予权限的用户。可以是任何一个具有dba角色的用户;也可以是该对象的所有者;也可以是对该对象有with grant option的用户。
(2) 对象权限的回收具有级联特性,也就是说收回了某个用户的对象权限,那么由该用户使用with grant option 授予其他用户的对象权限一并收回。
简答题:
1. grant命令为用户授予系统权限和对象权限的区别是什么?
答:(1)授予系统权限时,可以使用选项with admin option.表示将系统权限授予某个用户后,该用户不仅获得该权限的使用权,还获得该权限的管理权,可以将该系统权限继续授予其他用户,或从其他用户收回该权限。
不用指定权限操作的对象的名称,因为系统权限的操作对象是整个数据库。
(2) 但是在对象权限中,该选项是with grant option.。
还需要指定授予的该权限所能操作的对象,比如某张表,某个视图等。
第十四章 数据库备份
1. exp是export的缩写,表示从数据库中导出数据;imp是import的缩写,表示将数据导入到数据库中。
2. 有三种方式的导入导出操作。
(1) 表方式(T方式):指导入导出一个指定的基本表,包括表的定义,表的数据,以及表上的索引、约束。
(2) 用户方式(U方式):指导入导出一个用户的所有对象,包括表、视图、存储过程等。
(3) 全库方式(Full方式):指导入导出数据库中的全部对象。
3. exp导出数据的两种方式:交互式执行、预先指定参数执行。
4. 注意:如果当前执行exp命令的用户具有dba角色,那么可以选择三种导出方式:完整的数据库、用户方式、表方式。如果普通用户执行导出exp命令,那么只能使用用户方式和表方式,而且只能导出自己的数据。
5. imp导入数据的两种方式:交互式操作、命令式操作
注意:看exp 和imp的SQL语句!!!
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!