实验六 模式对象管理与安全管理
【实验目的】
-
了解模式对象的类型
-
掌握在OEM中操作模式对象的方法
-
掌握命令方式建立表、视图、索引等常见对象的方法
-
熟悉Oracle中权限分类和设置,理解系统提供用户的角色和权限
-
熟练使用建立用户、角色,为用户授权、授予角色的命令
【实验内容】
-
创建一个
TESTUSET
用户,密码为test,默认表空间为user表空间create user TESTUSER identified by test default tablespace users;
-
创建用户后为其授予登录数据库和创建数据库对象的权限
grant connect, resource to testuser;
-
用
TESTUSER
用户登录数据库conn testuser/test
-
创建学生信息表(学号,姓名,性别,入学成绩),定义主键和输入数据(至少5条数据),提交添加的数据。并完成下面的题目:
-
创建表
create table stu_info ( stu_no char(8) primary key not null, stu_name varchar(10) not null, stu_sex char(1) not null, /*male or female*/ stu_grade float not null );
-
-
插入数据
insert into stu_info(stu_no, stu_name, stu_sex, stu_grade) values ('20180001', 'Lunatic', 'M', '488.2'); insert into stu_info(stu_no, stu_name, stu_sex, stu_grade) values ('20180002', 'Insane', 'M', '391.5'); insert into stu_info(stu_no, stu_name, stu_sex, stu_grade) values ('20180003', 'Mad', 'M', '477.8'); insert into stu_info(stu_no, stu_name, stu_sex, stu_grade) values ('20180004', 'Faze Clan', 'F', '489.2'); insert into stu_info(stu_no, stu_name, stu_sex, stu_grade) values ('20180005', 'Astralis', 'F', '590.2');
(1) 再继续添加2条数据,设置一个保存点savepoint
,再添加1条数据,执行回退到保存点的回退命令。查看此时表中数据。
-
再次插入数据
insert into stu_info(stu_no, stu_name, stu_sex, stu_grade) values ('20200006', 'ARSENAL', 'M', '591.2'); insert into stu_info(stu_no, stu_name, stu_sex, stu_grade) values ('20200007', 'Chelsea', 'M', '488.5');
-
设置保存点
savepoint key_pointer;
-
再添加一条数据
insert into stu_info(stu_no, stu_name, stu_sex, stu_grade) values ('20200008', 'Man Utd', 'M', '388.7');
-
执行回退到保存点的回退命令
rollback to key_pointer;
-
查看此时表中数据
select * from stu_info;
(2) 查询入学成绩大于480的学生信息
select * from stu_info where stu_grade > 480;
(3) 建立男生信息视图(创建视图的权限需要提前授予)
-
授予创建视图的权限
grant dba to testuser;
-
创建男生信息视图
create view view_male as select STU_NO, STU_NAME, STU_SEX, STU_GRADE from STU_INFO where STU_SEX = 'M';
(4) 在“成绩”字段上建立B-树索引
create index B_tree_index on TESTUSER.STU_INFO(STU_GRADE);
-
创建一个表簇,名为
empl_dep
,容纳empl
表和dep
表,有公共字段depno
(簇键),大小为500,默认表空间为USERS表空间,存储参数为,初始化区间大小为 100 K 100K 100K,第二区间为 200 K 200K 200K等。create cluster emp1_dep(depno varchar2(4)) size 500 tablespace users storage ( initial 100 K next 200 K minextents 2 maxextents 20 pctincrease 33 );
-
在表簇中建立
empl
表和dep
表(1)
empl
表(职员表)的主键为eno
,外键为depno
create table empl ( e_no varchar(10) primary key, e_name varchar(10) not null, e_sex varchar(2), depno varchar(4) not null references dep ) cluster emp1_dep (depno);
(2) dep
表(部门表)的主键为depno
create table dep
(
depno varchar(4) primary key,
d_name varchar(10) not null,
rs number
)
cluster emp1_dep (depno);
-
在表簇中建立一个簇键索引,名为
empl_dep_index
create index empl_dep_index on cluster emp1_dep tablespace users;
-
授予
TESTUSER
用户在empl
表上的所有权限grant all on empl to testuser;
-
收回
empl
表上DELETE权限revoke delete on dep from testuser;
【实验心得】
创建用户命令只是创建用户的第一步,设定相关参数,并赋予相应权限之后才是完整的创建了一个可供实际操作的用户。
簇表由一组拥有相同的列而且经常被一起使用的数据表构成,优点是join
簇表所需的磁盘I/O减少,连接簇表时间减少。