oracle数据库基础教程期末考试简答与实践小抄范文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)第十章模式对象重点
数据是描述事物的符号,是数据库中存储的基本对象。
在计算机中,用记录的形式来描述数据。
数据与数据的解释即数据的语义是紧密结合的。
数据库是指按一定的数据模型组织、描述和存储的数据的集合。
数据库管理系统是位于操作系统与用户之间的一层数据管理软件。
数据库系统是指数据库、数据库管理系统与计算机系统的结合。
通常,在不引起混淆的情况下将数据库系统简称为数据库。
(2)数据库管理系统的主要功能包括:数据定义、数据操纵、数据库运行与控制、数据库建立与维护、数据字典定义以及数据通信等。
数据库管理系统的内部分多个层次,由应用层、语言定义及其翻译处理层、数据存取层、数据存储层、操作系统以及数据库组成。
(3)数据库系统由数据库、操作系统、数据库管理系统、开发工具、应用系统、数据库管理员以及数据库用户组成。
(4)概念模型是用简单、清晰、用户易于理解的概念来描述现实世界具体事物及事物之间的关系。
它是现实世界到信息世界的抽象,是数据库设计人员进行数据库设计的工具,与具体的数据库管理系统无关。
组织数据模型是从数据组织方式的角度来描述信息,它决定了数据在数据库中的组织结构。
(5)关系数据库的完整性约束包括三类:实体完整性、参照完整性和用户定义完整性。
实体完整性:是指关系中必须定义主键,以惟一的确定一个元组。
主键由一个或多个属性构成,其取值惟一且不能为空(NULL)。
参照完整性:在关系模型中,通过外键来表示表之间的联系。
参照完整性是指一个表中的外键的取值必须是参照表中主键存在的值或为空(NULL)。
例如,学生信息表中“班号”属性为外键,其取值必须是班级信息表中“班号”属性的某一个值或为空。
用户定义完整性:是指用户根据特定应用情况,设定一些约束,反映某一具体应用所涉及的数据必须满足的语义要求。
例如,“性别”属性的域为“男、女”。
(6)
(7)
Oracle数据库体系结构由物理存储结构、逻辑存储结构和实例组成。
其中物理存储结构描述了操作系统层次数据的存储与管理,包括数据文件、日志文件、重做日志文件等组成。
逻辑结构描述了数据库内部数据的组织与管理,由表空间、段、区、块组成。
实例是数据库运行的软件结构,由内存结构和后台进程组成。
数据库运行过程中,用户的操作在内存区中进行,最终通过后台进行转化为对数据库的操作。
关系模式如下:
教师(教师号,姓名,性别,出生日期,系,职称,课程号)课程(课程号,课程名,学分)
学生(学号,姓名,性别,年龄,班级,系)学习(学号,课程号,成绩)
7、文本初始化参数文件是一个本地的参数化文件,无论是启动本地数据库还是远程数据库,都需要读取一个本地化参数文件,并使用其中的设置来配置数据库实例。
因此要启动远程数据库,则必须在本地的客户机中保存一份文本初始化文件的副本。
本初始化参数文件的修改必须经过管理员手动进行。
8、服务器初始化参数文件是一个保存在数据库服务器端的二进制文件。
如果管理员需要远程启动数据库实例,并不需要在客户机中保存一份初始化参数文件副本,实例会自动从服务器中读取服务器初始化参数文件。
确保同一个数据库的多个实例都具有相同的初始化参数设置;
8、Oracle数据库物理存储结构包括数据文件、控制文件、重做日志文件、初始化参数文件、归档文件、口令文件等。
在控制文件中记录了当前数据库所有的数据文件的名称与位置、重做日志文件的名称与位置,以及数据文件、重做日志文件的状态等。
9、数据文件中保存了数据库中的所有数据,包括数据字典以及用户数据。
10、控制文件保存数据库的物理结构信息,包括数据库名称、数据文件的名称与状态、重做日志文件的名称与状态等。
在数据库启动时,数据库实例依赖初始化参数定位控制文件,然后根据控制文件的信息加载数据文件和重做日志文件,最后打开数据文件和重做日志文件。
11、重做日志文件是以重做记录的形式记录、保存用户对数据库所进行的修改操作,包括用户执行DDL、DML语句的操作。
如果用户只对数据库进行查询操作,那么查询信息是不会记录到重做日志文件中的。
12、归档:数据库能够在崇左日志文件被覆盖之前将其内容保存到指定的位置,被保存的重做日志文件的集合称为归档重做日志,这个过程称为归档。
归档是数据库恢复及热备份的基础。
只用当数据库归档模式时,才可以进行热备份和完全恢复。
进行归档设置包括归档模式设置(ARCHIVELOG)、归档方式设置以及归档路径的设置等。
13、重做日志文件德工作方法:每个数据库至少需要两个重做日志文件,采用循环写的方式进行工作。
当一个重做日志文件在进行归档时,还有另一个重做日志文件可用。
当一个重做日志文件被写满后,后台进程LGWR开始写入下一个重做日志文件,即日志切换,同时产生一个“日志序列号”,并将这个号码分配给即将开始使用的重做日志文件。
当所有的日志文件都写满后,LGWR进程再重新写入第一个日志文件。
1、说明数据库逻辑存储结构的组成和相互关系。
Oracle9i数据库的逻辑存储结构分为数据块、区、段和表空间四种。
其中,数据块是数据库中的最小I/O单元,由若干个连续的数据块组成的区是数据库中最小的存储分配单元,由若干个区形成的段是相同类型数据的存储分配区域,由若干个段形成的表空间是最大的逻辑存储单元,所有的表空间构成一个数据库。
(2)说明数据库表空间的种类,以及不同类型表空间的作用。
数据库表空间分为系统表空间和非系统表空间两类,其中非系统表空间包括撤销表空间、临时表空间和用户表空间等。
SYSTEM表空间主要用于存储数据库的数据字典、PL/SQL程序的源代码和解释代码、数据库对象的定义。
撤销表空间专门进行回退信息的自动管理。
临时表空间是专门进行临时段管理的表空间。
用户表空间用于分离不同应用的数据,而且能够减少读取数据文件时产生的I/O冲突。
(3)说明数据库、表空间、数据文件以及数据库对象之间的关系。
一个数据库由一个或多个表空间构成,不同的表空间用于存放不同应用的数据,表空间的大小决定了数据库的大小。
一个表空间对应一个或多个数据文件,数据文件的大小决定了表空间的大小。
一个数据文件只能从属于一个表空间。
一个数据库对象只能存储在一个表空间中,但可以存储在该表空间所对应的一个或多个数据文件中。
(4)数据库表空间的管理方式有几种,各有什么特点?
数据库表空间的管理方式有两种:字典管理方式和本地管理方式。
在字典管理方式下,表空间使用数据字典来管理存储空间的分配,当进行区的分配与回收时,Oracle将对数据字典中的相关基础表进行更新,同时会产生回退信息和重做信息。
在本地管理方式中,区的分配和管理信息都存储在表空间的数据文件中,而与数据字典无关。
(5)表空间管理时应考虑哪些问题?
表空间管理时,应该遵循以下原则:将数据字典与用户数据分离;将回退数据与用户数据分离;将表空间的数据文件分散保存到不同的硬盘上;为不同的应用创建独立的表空间。
(6)利用手动管理方式,如何有效管理数据块的使用?
DBA可以利用手动管理方式,通过为段设置PCTFREE和PCTUSED两个参数来控制数据块中空闲空间的使用。
(7)数据库中常用的段有哪几种,分别起什么作用?
根据存储对象类型不同,可以分为数据段、索引段、临时段和回退段四类。
数据段用来存储表或簇的数据。
索引段用来存放索引信息,包括ROWID和索引键值。
临时段用来保存SQL 语句在解释和执行过程中所产生的临时数据。
回退段用于保存数据修改之前的信息,包括数据修改前的值及其位置,即记录数据库中所有事务修改之前信息的段。
(8)说明回退段的作用,以及回退段的管理方式。
利用回退段中保存的信息,可以实现事务回滚、数据库恢复和数据的读一致性。
回退段的管理有两种方式,即自动撤销管理和手动撤销管理。
实训题
章10
1、建表:Create table class(
CNO number(2) primary key, CNAME varchar2(20), NUM number(3) ) ;
Create table student(
SNO number(4) primary key, SNAME varchar2(10) unique, SAGE number, SEX char(2), C NO number(2) );
2、Alter table student add constraint fk_cno foreign key (cno) references class(cno) deferrab le;外键约束
3、Alter table student add constraint ck_sage check (sage>0 and sage<=100);检查约束
4、alter tabl e student add constraint ck_stu check(sex='M' or sex='F')modify sex default 'M';
5、Create unique index ind_cname on class(cname); ;唯一性约束
6、Create global temporary table stu_trans On commit delete rows as Select * from student; Create global temporary table stu_sess On commit preserve rows as Select * from student;
7、Create table student( SNO number(4) primary key, SNAME varchar2(10) unique, SAGE number, SEX char(2), CNO number(2) ) Organization index;索引化表
8、create table student_list( sno number(4) primary key, sname varchar2(10),sage number, s ex char(2),cno number(2)) partition by list(sex) (partition man values('M') tablespace orcltbs 1, partition woman values('F') tablespace orcltbs2) ;
9、Create sequence sequ1 increment by 2 start with 10000 maxvalue nocycle; 序列
10、Create view employee_v(empno,ename,mgr_no,mgr_name) As Select e1.empno,e1.enam e,e1.mgr,e2.ename from emp e1 join emp e2 on e1.mgr=e2.empno;视图
21、CREATE USER usera_exer IDENTIFIED BY usera DEFAULT TABLESPACE USERS QUOTA 10M ON USERS ACCOUNT LOCK;初始账户为锁定状态
22、GRANT CREATE SESSION TO usera_exer WITH ADMIN OPTION; GRANT SELE CT ,UPDATE ON scott.emp TO usera_exer WITH GRANT OPTION;为usera_exer授予权限并允许其将权限授予其他用户;
23、禁止用户usera_exer将获得的CREATE SESSION 权限再授予其他用户:REVOKE CREATE SESSION FROM usera_exer; GRANT CREATE SESSION TO usera_e xer;
24、创建角色、授予权限:CREATE ROLE rolea; CREATE ROLE roleb;
GRANT CREATE TABLE TO rolea; GRANT INSERT,UPDATE ON scott.emp TO rolea; G RANT CONNECT ,RESOURCE TO roleb;
25、屏蔽用户usera_exer的roleb角色:
ALTER USER usera_exer DEFAULT ROLE ALL EXCEPT roleb;
(1)使用SQL命令创建一个本地管理方式下的自动分区管理的表空间USERTBS1,其对应的数据文件大小为20MB。
create tablespace USERTBS1
datafile 'd:\oracle\oradata\orcl\usertbs1.dbf' size 50M extent management local autoallocate; (2)使用SQL命令创建一个本地管理方式下的表空间USERTBS2,要求每个分区大小为512KB。
create tablespace USERTBS2
datafile 'd:\oracle\oradata\orcl\usertbs2.dbf' size 50M extent management local uniform size 512K ;
(3)修改USERTBS1表空间的大小,将该表空间的数据文件修改为自动扩展方式,最大值为100MB。
alter database
datafile 'd:\oracle\oradata\orcl\usertbs1.dbf' autoextend on next 5M maxsize 100M;
(4)为USERTBS2表空间添加一个数据文件,以改变该表空间的大小。
alter tablespace USERTBS2
add datafile 'd:\oracle\oradata\orcl\usertbs2a.dbf' size 50M;
(5)使用SQL命令创建一个本地管理方式下的临时表空间TEMPTBS,并将该表空间作为当前数据库实例的默认临时表空间。
create temporary tablespace TEMPTBS
tempfile 'd:\oracle\oradata\orcl\temptbs.dbf' size 20M extent management local uniform size 16K; (6)使用SQL命令对USERTBS1表空间进行联机和脱机状态转换。
alter tablespace USERTBS1 offline;
alter tablespace USERTBS1 online;
(7)创建一个回退表空间UNDOTBS,并作为数据库的撤销表空间。
create undo tablespace UNDOTBS
datafile 'd:\oracle\oradata\orcl\undotbs.dbf' size 20M;
alter system set UNDO_MANAGEMENT=AUTO,UNDO_TABLESPACE=UNDOTBS
scope=both;
(8)删除表空间USERTBS2,同时删除该表空间的内容以及对应的操作系统文件。
drop tablespace USERTBS2 including contents and datafiles;
(9)为USERTBS1表空间创建一个回退段,其中回退段的最优大小设置为2MB。
create rollback segment undoseg tablespace USERTBS1
storage (initial 100K next 100K optimal 2MB
minextents 20 maxextent 100);
(10)查询当前数据库中所有的表空间及其对应的数据文件信息。
select tablespace_name,file_name from dba_data_files;
实训:
(1)insert into emp(empno,ename,sal,deptno,hiredate)
values(1357,’oracle’,2050,20,TO_DA TE(‘2002-5-10’,’YYYY-MM-DD’);
(2)select ename,empno,sal,dept.deptno,dname,loc
from emp left join dept on emp.deptno=dept.depno
(3)select ename,empno,sal,dept.deptno,dname,loc
from emp right join dept on emp.deptno=dept.deptno
(4)select worker.ename,worker.empno,worker.sal,manager.ename,manager.empno,manager.sal from emp worker,emp manager where worker.mgr=manager.empno and worker.deptno=10 select worker.ename,worker.empno,worker.sal,manager.ename,manager.empno,manager.sal from e mp worker left join emp manager on worker.mgr=manager.empno
(5)select count(*) ,avg(sal) from emp group by deptno
(6)select * from emp where sal = any(select avg(sal) from emp group by deptno)
(7)select * from emp e where e.sal > (select avg(sal) from emp where deptno=e.deptno)
8)查询工资高于本部门平均工资的员工的信息及其部门的平均工资:select e.ename,e.empno,e.sal,e.deptno,s.avgsal from emp e,(select deptno ,avg(sal) avgsal from emp group by deptno) s where e.sal>s.avgsal and e.deptno=s.deptno
(9)select * from emp sal>any(select sal from emp where deptno=20)
(10)Select job, count(*),avg(sal) from emp group by job
(11)select deptno,job,count(*), avg(sal) from emp group by deptno,job
(12)select * from emp where (sal, nvl(comm.,0)) in (select sal,nvl(comm,0) from emp where deptno=10)
(13)select * from emp where deptno in (select deptno from emp group by deptno having count(*)>5)
(14)select * from dept where deptno not in (select deptno from emp where sal<2000)
(15)select dept.deptno,dname,loc,ename,empno,sal from emp ,dept
where emp.deptno=dept.deptno and deptno not in (select deptno from emp where sal<2000) (16)select * from dept where deptno not in
(select deptno from emp where sal not between 2000 and 3000)
17select * from emp where deptno in (select distinct deptno from emp where sal between 200 0 and 3000)
18select detp.deptno,dname,loc from dept, emp worker,emp manager where dept.deptno=man ager.deptno and worker.mgr=manager.empno
(19)insert into emp(ename,empno,mgr,job,hirdate,sal, comm.,deptno)
select ‘FAN’,8000,mgr,job,hirdate,sal,comm.,deptno from emp where ename=’SMITH’(20)update emp e set sal=1000+(select avg(sal) from emp where deptno=e.deptno)
简答:
1、数据库实例是数据库系统的软件结构,由内存结构与后台进程组成,处于用户与物理
数据库之间,实现对数据库的操作。
2、SGA区由数据缓冲区、共享池、重做日志缓冲区、大型池、JA V A池构成;PGA区
由排序区、私有SQL区以及堆栈构成。
SGA区是由Oracle分配的共享内存结构,包含一个数据库实例共享的数据和控制信息。
当多个用户同时连接同一个实例时,SGA区数据供多个用户共享,所以SGA区又称为共享全局区。
用户对数据库的各种操作主要在SGA区中进行。
该内存区随数据库实例的创建而分配,随实例的终止而释放。
PGA区是在用户进程连接数据库,创建一个会话时,由Oracle为用户分配的内存区域,保存当前用户私有的数据和控制信息,因此该区又称为私有全局区。
每个服务器进程只能访问自己的PGA区,所有服务器进程PGA区总和即为实例的PGA区的大小。
3、数据库中有哪些类型的表?各有什么特征?在Oracle 数据库中,根据表生存周期不
同,可以分为永久性表和临时表;根据表中数据组织方式不同,可以分为标准表、索引化表和分区表。
索引化表是一种特殊的表,它按B树的结构来组织和存储数据,将表的数据和索引的数据存储在一起。
分区表是将一个表分成若干个独立的组成部分进行存储和管理。
4、主键约束:定义了主键约束的列取值不能为空,也不能重复。
唯
一值约束:定义了唯一值约束的列取值不能重复。
检查约束:定义了检查约束的列取值要满足检查条件。
外键约束:定义了外键约束的列取值要么是主表参照列的值,要么是空值。
空/非空约束:定义了非空约束的列取值不能为空。
5、使用索引的优点和缺点,索引如何工作?在数据库中使用索引可以提高对表
中数据的查询速度,但是,向表中插入数据需要更新索引,会影响更新速度。
如果表建了索引,在有条件查询时,系统先对索引表进行查询,利用索引表可以找到相应记录的ROWID。
索引建好后,由系统负责更新。
6、Oracle数据库中权限有哪几种?Oracle数据库中权限有两类,系统权限和对象权限。
系
统权限是指在数据库级别执行某种操作的权限,或针对某一类对象执行某种操作的权限。
对象权限是指对某个特定的数据库对象执行某种操作的权限。
例如,对特定表的插入、删除、修改、查询的权限。
7、角色的种类、作用:Oracle数据库中角色分为系统预定义的角色和用户自定义的角色两
类。
角色是一系列相关权限的集合,可以将要授予相同身份用户的所有权限先授予角色,然后再将角色授予用户,简化了权限的管理。
8、对象权限回收与系统权限回收的区别?:(简)系统权限授予与回收时不需要指定权限
的所有者,因为系统权限是数据库级别的权限;而对象权限的授予与回收需要指定权限所依附的数据库对象。
1、后者:多个管理员授予用户同一个系统权限后,其中一个管理员回收其授予该用户的的系统权限时,该用户不再拥有相应的系统权限;而系统权限回收多个管理员授予用户同一个对象权限后,其中一个管理员回收其授予该用户的的对象权限时,不影响该用户从其他管理员处获得的该对象权限;2、为了回收用户对象的传递性,必须先回收其对象权限,然后再授予其相应的对象权限;这与系统权限回收相同3、如果一个用户获得的系统权限具有传递性(授权时用了with admin option 子句),并且给其他用户授权,那么该用户系统权限被回收后,其他用户的系统权限并不受影响;
但是对象权限回收时,其他用户的对象权限也被回收。
9、什么是备份?什么是恢复?备份和恢复是两个相互联系的概念,备份是将数据信息保存
起来,以防意外事件发生,恢复则是当意外事件发生或某种需要时,将已备份的数据信息还原到数据库系统中的过程。
10、物理备份和逻辑备份的主要区别是什么?分别适用于什么情况?物理备份就是
在操作系统层面上复制物理文件,逻辑备份是在数据库中用EXPORT导出二进制文件。
物理备份主要为了防止操作系统级的数据库组件丢失,逻辑备份主要用于在实例之间移动指定的数据或在不同的系统结构、操作系统版本或Oracle版本之间移动数据。
11、物理备份分为冷备份与热备份。
冷备份又称为脱机备份,是在数据库保持关闭状态
下进行的备份。
热备份又称为联机备份或者归档备份,是在数据库保持开放状态下对数据库进行备份。
12、SQL语言的分类:数据定义语言DDL:用于定义、修改、删除数据库对象,包括
create、alter、drop、grant、revoke等;数据操纵语言DML:改变数据库中的数据,包括insert、update、delete;数据查询语言DQL:select;事务控制:包括事物提交、事务回滚、设置保存点、设置事物状态;系统控制;会话控制。
13、。