oracle 10g数据库基础教程(第2版)孙风栋主编 课后实训答案 下载本文

1.为USERS表空间添加一个数据文件,文件名为USERS03.DBF,大小为50MB。 alter tablespace users add datafile 'd:\%users03.dbf' size 50m;

2.为EXAMPLE表空间添加一个数据文件,文件名为example02.dbf,大小为20MB。 alter tablespace example add datafile 'd:\\example02.dbf' size 20m;

3.修改USERS表空间中的userdata03.dbf为自动扩展方式,每次扩展5MB,最大为100MB。 alter database datafile 'd:\%userdata03.dbf' autoextend on next 5m maxsize 100m; 4.修改EXAMPLE表空间中的example02.dbf文件的大小为40MB。 alter database datafile 'd:\\example02.dbf' resize 40m;

5.将表空间USERS中的数据文件USERS03.DBF更名为userdata04.dbf,将表空间EXAMPLE中的数据文件example03.dbf更名为example04.dbf。 alter tablespace users offline;

在磁盘d:\\手动更改users03.dbf为userdata04.dbf

alter tablespace users rename datafile 'd:\%users03.dbf' to 'd:\%userdata04.dbf'; alter tablespace example offline;

在磁盘d:\\手动更改example03.dbf为example04.dbf

alter tablespace example rename datafile 'd:\\example03.dbf' to 'd:\\example04.dbf';

7.为数据库添加一个重做日志文件组,组内包含两个成员文件,分别为redo4a.log和redo4b.log,大小分别为5MB。 alter database add logfile group 4

('d:\\redo4a.log','d:\\redo4b.log')size 5m;

8.为新建的重做日志文件组添加一个成员文件,名称为redo4c.log。 alter database add logfile member 'd:\\redo4c.log' to group 4; 9.将数据库设置为归档模式,并采用自动归档方式。 shutdown immediate startup mount

alter database archivelog; alter database open;

10.设置数据库归档路径为D:\\ORACLE\\BACKUP。 alter system set log_archive_dest='d:\\oracle\\backup';

实验五

1.创建一个口令认证的数据库用户usera_exer,口令为usera,默认表空间为USERS,配额为10MB,初始账户为锁定状态。

create user usera_exer identified by usera default tablespace users quota 10m on users account lock;

2.创建一个口令认证的数据库用户userb_exer,口令为userb。 create user userb_exer identified by userb;

3.为usera_exer用户授予CERATE SESSION 权限、scott.emp的SELECT权限和UPDATE权限。同时允许该用户将获得的权限授予其他用户。

grant create session to usera_exer with admin option;

grant select,update on scott.emp to usera_exer with grant option; 4.将用户usera_exer的账户解锁。 alter user usera_exer account unlock;

5.用usera_exer登录数据库,查询和更新scott.emp中的数据。同时,将scott.emp的SELECT和UPDATA权限授予用户userb_exer。 conn usera_exer/usera;

grant select,update on scott.emp to userb_exer;

6.禁止用户usera_exer将获得的CREATE SESSION权限再授予其他用户。 revoke create session from usera_exer; grant create session to usera_exer;

7.禁止用户usera_exer将获得的scott.emp的SELECT权限和UPDATA权限再授予其他用户。 revoke select,update on scott.emp from usera_exer; grant select,update on scott.emp to usera_exer;

8.创建角色rolea和roleb,将CREATE TABLE权限、scott.emp的INSERT权限和DELETE权限授予rolea;将CONNECT,RESOURCE角色授予roleb。 create role rolea; create role roleb;

grant create table to rolea;

grant insert,delete on scott.emp to rolea; grant connect,resource to roleb;

9.将角色rolea,roleb授予用户usera_exer。 grant rolea,roleb to usera_exer; 实验三

(1)使用SQL命令创建一个本地管理方式下自动分区管理的表空间USERTBS1,其对应的文件大小为20MB。

create tablespace usertbs1 datafile 'd:\\data1.dbf' size 20m;

(2)使用SQL命令创建一个本地管理方式下的表空间USERTBS2,要求每个分区大小为512K。

create tablespace usertbs2 datafile 'd:\\data2.dbf' size 20m extent management local uniform size 512k

(3)修改USERTBS1表空间的大小,将表空间的数据文件改为自动扩展方式,最大值为100MB。

alter database datafile 'd:\\data1.dbf' autoextend on maxsize 100m; (4)为USERTBS2表空间添加一个数据文件,以改变表空间的大小。 alter tablespace usertbs2 add datafile 'd:\\data2-2.dbf' size 20m;

(5)使用SQL命令创建一个本地管理方式下的临时表空间TEMPTBS,并将表空间作为当前数据库实例的默认临时表空间。

create temporary tablespace temptbs tempfile 'd:\\temp1.dbf' size 20m; alter database default temporary tablespace temptbs;

(6)使用SQL命令对USERTBS1表空间进行联机和脱机状态转换。 alter tablespace usertbs1 offline; alter tablespace usertbs1 online;

(7)创建一个回滚表空间UNDOTBS,并作为数据库的撤销表空间。 create undo tablespace undotbs datafile 'd:\%undo1.dbf' size 20m;

(8)删除表空间USERTBS2,同时删除该表空间的内容以及对应的操作文件系统。 drop tablespace usertbs2 including contents and datafiles;

(9)查询当前数据库所有的表空间及其对应的数据文件信息。 select tablespace_name,file_name from dba_data_files;

实验四

(1)按下表结构利用SQL语句创建class、student俩个表。 create table class(cno number(2) primary key, cname varchar2(20), num number(3));

(2)为student表添加一个延迟的外键约束,其CNO列参照class表的CNO列。 create table student(sno number(4) primary key, sname varchar2(10) unique, sage number, sex char(2),

cno number(2));

(3)为student表的SAGE列添加一个检查约束,保证该列取值在0~100之间。 alter table student add constraint s_fk

foreign key(cno) references class(cno) on delete cascade

deferrable initially immediate;

(4)为student表的SEX列添加一个检查约束,保证该列取值为“M”或“F”,且默认值为M。

alter table student

add constraint s_ck check(sage between 0 and 100);

(5)在class表的CNAME列上创建一个唯一性索引。 alter table student

add constraint s_ck2 check(sex in('M' , 'F')) modify sex default 'M';

(6)利用子查询分别创建一个事务级的临时表和会话级的临时表,其结构与student表的结构相同。

create global temporary table temp1 on commit delete rows as

select * from student;

create global temporary table temp2 on commit preserve rows as

select * from student;

(7)创建一个student_range表,按学生年龄分别为3个区 create table student_range( sno number(4) primary key, sname varchar2(10) unique, sage number, sex char(2),

cno number(2))

partition by range(sage)

(partition part1 values less than(20) tablespace example, partition part2 values less than(30) tablespace orcltbs1,

partition part3 values less than(maxvalue) tablespace orcltbs2);

(8)创建一个student_list表,按学生性别分为2个区。 create table student_list( sno number(4) primary key, sname varchar2(20) unique, 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)创建一个起始值为1000的序列,步长为2,最大值为100000,不可循环。

create sequence sequ1 increment by 2 start with 10000 maxvalue 100000 nocycle;

(297)实训题:

(1)编写一个PL/SQL块,输出所有员工的员工姓名,员工号,工资和部门号。 declare

cursor c_emp is select * from scott.emp; v_emp c_emp%rowtype; begin

open c_emp; loop

fetch c_emp into v_emp; exit when c_emp%notfound;

dbms_output.put_line(v_emp.ename||' '||v_emp.empno||' '||v_emp.sal||' '||v_emp.deptno); end loop; close c_emp; end; .

(2)编写一个PL/SQL块,输出所有比部门平均工资高的与员工信息。 declare

cursor c_emp is select * from emp where sal>(select avg(sal) from scott.emp); v_emp c_emp%rowtype; begin