资源描述
(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) 表空间管理时应考虑哪些问题?
表空间管理时,应当遵循以下原则: l 将数据字典与用户数据分离; l 将回退数据与用户数据分离;l 将表空间的数据文献分散保存到不同的硬盘上; l 为不同的应用创建独立的表空间。
(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), CNO number(2) );
2、 Alter table student add constraint fk_cno foreign key (cno) references class(cno) deferrable;外键约束
3、 Alter table student add constraint ck_sage check (sage>0 and sage<=100);检查约束
4、 alter table 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, sex char(2),cno number(2)) partition by list(sex) (partition man values('M') tablespace orcltbs1, partition woman values('F') tablespace orcltbs2) ;
9、 Create sequence sequ1 increment by 2 start with 10000 maxvalue 100000 nocycle; 序列
10、 Create view employee_v(empno,ename,mgr_no,mgr_name) As Select e1.empno,e1.ename,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 SELECT ,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_exer;
24、 创建角色、授予权限:CREATE ROLE rolea; CREATE ROLE roleb;
GRANT CREATE TABLE TO rolea; GRANT INSERT,UPDATE ON scott.emp TO rolea; GRANT 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_DATE(‘2023-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 emp 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<2023)
(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<2023)
(16)select * from dept where deptno not in
(select deptno from emp where sal not between 2023 and 3000)
17select * from emp where deptno in (select distinct deptno from emp where sal between 2023 and 3000)
18select detp.deptno,dname,loc from dept, emp worker,emp manager where dept.deptno=manager.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区 由数据缓冲区、共享池、重做日记缓冲区、大型池、JAVA池构成;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、
展开阅读全文