模式对象和用户权限管理

  • 一.实验目标
    • 1. 掌握Oracle常用对象的操作方法。会使用常用对象解决一些实际问题。
    • 2. 掌握Oracle的安全管理方法。
  • 二.实验项目
    • 1.索引,写出相应SQL命令。
    • 2.同义词,写出相应SQL命令。
    • 3.序列,写出相应SQL命令。
    • 4.用户,写出相应SQL命令(在自己的计算机上完成)。
    • 5.视图,针对a_db模式中的表:学生、课程、成绩、emp等,创建视图,视图名依次命名为obj1_10、obj1_11、… 、obj1_14
  • 三.实验错误解决方案
    • 问题一: ORA-01045问题
    • 问题二: ORA-00933问题

一.实验目标

1. 掌握Oracle常用对象的操作方法。会使用常用对象解决一些实际问题。

2. 掌握Oracle的安全管理方法。

二.实验项目

1.索引,写出相应SQL命令。

创建索引

(1) 创建student1表,并为student1表建立主键。(“student1”的结构与“a_db.学生”表一样)

 create table student1(学号 varchar2(4)not null,
姓名 varchar2(4 char) not null,
性别 varchar2(1 char) not null,
专业 varchar2(10 char not null,
注册日期 date,
状态 varchar2(8),
Primary key(学号));

(2) 为student1表的“姓名”创建索引,索引名为“obj1_1”。
create index obj1_1 on student1(姓名);

(3) 为student1表的“注册日期”创建索引,并以降序排列,索引名为“obj1_2”。

create index obj1_2 on student1(注册日期 desc);

(4) 为student1表的“性别”创建位图索引,索引名为“student_gender_index”。

Create bitmap index student_gender_index on student1(性别);

(5) 为student1表的“性别”与“姓名”创建组合索引,索引名为“obj1_3”。

create index obj1_3 on student1(性别,姓名);

查看索引

利用数据字典视图USER_INDEXES、USER_IND_COLUMNS查看索引信息。

select * from USER_INDEXES where table_name='student1';
select * from USER_IND_COLUMNS where table_name='student1';

删除索引

删除索引“student_ gender _index”。

drop index student_gender_index;

2.同义词,写出相应SQL命令。

创建同义词

(1) 创建student1表的同义词,名为“obj1_4”。

Create synonym obj1_4 from student;

(2) 创建obj1_3的同义词,名为“obj1_5”。

Create synonym obj1_5 from obj1_3;

(3) 创建同义词obj1_5的同义词,名为“st1”。

craete  st1 for obj1_5

(4) 创建某Oracle对象的公共同义词,公共同义词的命名规则:字符串“obj1_”后面跟上你的学号。(Oracle对象任意,在自己的计算机上完成)

create public synonym obj1_201705961429 for scott.emp;

查看同义词

利用数据字典视图user_synonyms、all_synonyms查看同义词信息。

select synonym_name,table_name,table_owner from user_synonyms;

删除同义词

删除同义词st1。

drop synonym st1;

3.序列,写出相应SQL命令。

创建序列
(1) 创建序列,该序列起始值50,步长为10,不缓冲,序列名为“obj1_6”。

create sequence obj1_6 start with 50 increment by 10 nocache;

(2) 创建序列,该序列最大值无限制,最小值为1,步长为1,序列名为“obj1_7”。

create sequence obj1_7 start with 1 nomaxvalue increment by 1;

(3) 创建序列,该序列起始值为1000,步长为2,最大值为10000,不可循环,序列名为“seq_1”。

create sequence seq_1 start with 1000 increment by 2 maxvalue 10000 nocycle;

查看序列

利用数据字典视图user_SEQUENCES、all_SEQUENCES查看序列信息。

select * from all_SEQUENCES where sequence_owner='A201705961429';
select * from user_SEQUENCES;

引用序列

向DEPT表中插入三条记录,利用序列obj1_6生成部门编号。

insert into dept values(obj1_6.nextval,null,null,null,null,null);
insert into dept values(obj1_6.nextval,null,null,null,null,null);
insert into dept values(obj1_6.nextval,null,null,null,null,null);

修改序列
(1) 修改序列“obj1_6”,将该序列最大值设为“82000”,最小值设为“10”,步长设为“5”。

  alter sequence obj1_6maxvalue 82000minvalue 10increment by 5;

(2) 修改序列“obj1_7”,将该序列最大值设为“1000”。

  alter sequence obj1_7maxvalue 1000;

删除序列
删除序列seq_1。

drop sequence seq_1;

4.用户,写出相应SQL命令(在自己的计算机上完成)。

创建用户

(1) 创建一个用户。注意:如果用户名的命名违背了公俗良序原则,将给予某些处罚。

create user a
identified by 123456;

(2) 该用户授予一定的权限

grant connect, resource to a;
grant create session to a;

授予用户权限

新开一个会话,以新创建的用户身份连接并对scott中的emp表进行查询、删除操作。如果权限不够,则授予相应权限。最后,回滚事务。

grant select,delete on scott.emp to a;
select * from scott.emp where empno=7369;
delete from scott.emp where empno=7369;
select * from scott.emp where empno=7369;
rollback;
select * from scott.emp where empno=7369;

修改用户信息

(1) 修改该用户的口令,然后用新口令重新连接。

alter user a identified by 123;

(2) 封锁该用户的账号,然后解锁。

alter user a account lock;
alter user a account unlock;

查询用户与权限信息

(1) 利用数据字典视图dba_users、user_sys_privs、user_tab_privs、user_role_privs、session_privs查询用户与权限信息。

select * from dba_users;
select * from user_sys_privs;
select * from user_tab_privs;
select * from user_role_privs;
select * from session_privs;

删除用户

drop user a201705961429;

5.视图,针对a_db模式中的表:学生、课程、成绩、emp等,创建视图,视图名依次命名为obj1_10、obj1_11、… 、obj1_14

· 查询每门课程考试成绩第一名(可以并列)的学生的学号与课程号,按课程号升序排列。

create view obj1_10 as select 学号,rank() over(partition by 课程号 order by 分数 asc nulls last)名次 from a_db.成绩 where 课程号='C13';

· 查询每门课程考试成绩第一名(可以并列)的学生的学号与课程号,按课程号升序排列。

create view obj1_11 as
select 学号,课程号 from (select 学号,课程号,rank()
over(partition by 课程号 order by 分数 asc nulls last名次
from a_db.成绩 )where 名次=1;
select 学号,课程号 from ( select 学号,课程号,rank()
over(partition by 课程号 order by 分数 asc nulls last名次
from a_db.成绩 )where 名次=1;

· 按平均分数对课程连续排名(可以并列),显示名次、课程号与平均分数(保留2位小数),按名次、课程号升序排列。

create view obj1_12 as
select rank()over(order by avg(分数) desc) 名次,课程号,round(avg(分数),2)as 平均分数from a_db.成绩 group by 课程号 order by 名次,课程号;select rank()over(order by avg(分数) desc) 名次,课程号,round(avg(分数),2)as 平均分数from a_db.成绩 group by 课程号 order by 名次,课程号;

· 查询每门课程的课程号,以及每门课程考试成绩第一名(可以并列)的学生的姓名,按课程号与姓名升序排列。

create view v100 asselect distinct 课程号,姓名 FROM (select 成绩.*,rank()over(PARTITION by 课程号 order by 分数 DESC NULLS LAST)RK from a_db.成绩)R left join a_db.学生 on R.学号=学生.学号 where rk=1order by 课程号,姓名 asc;select distinct 课程号,姓名 FROM (select 成绩.*,rank()over(PARTITION by 课程号 order by 分数 DESC NULLS LAST)RK from a_db.成绩)R left join a_db.学生 on R.学号=学生.学号 where rk=1
order by 课程号,姓名 asc;

· 列出工资在3500到5000之间的员工的姓名,但只取姓名的前5个字符,不足5个则以*补足,按姓名升序排列。

create view  obj1_14 asselect rpad(ename,5,'*')as 姓名 from a_db.emp where sal between 3500 and 5000 order by ename asc;select rpad(ename,5,'*')as 姓名 from a_db.emp where sal between 3500 and 5000 order by ename asc;

三.实验错误解决方案

问题一: ORA-01045问题

1、问题的出现
在实验项目4(a)中创建“创建用户”,SQL语句如下:

create user a identified by 123456;

出现错误:
ORA-01045:user A lacks CREATE SESSION privilege;
Logon denied;

2、问题分析

  1. 掌握Oracle创建用户的操作方法。会使用常用对象解决一些实际问题。

  2. 掌握Oracle的安全管理方法。
    错误出现在第1行,表明新建的“用户”的权限不够。新建用户至少需要会话的权利,否则连接也不成功;用户在会话的权利上,应该有其他操作的权利。但在第1行中没有给新建用户会话的权限,所以出错。

3、解决方案
解决方案如下:

grant connect, resource to a;
grant create session to a;

执行该语句后,用户已连接,问题解决。

问题二: ORA-00933问题

1、问题的出现
在实验项目5(3)中创建“obj1_11”表,SQL语句如下:

create table 专业(ID        varchar(5),course_id    varchar(8),foreign key (ID) references)
;
select 成绩.课程号,姓名 from a_db.学生,a_db.成绩(select 课程号,max(分数)mfrom a_db.成绩 group by 课程号)f0Where 学生.学号=成绩.学号 and 成绩.课程号=f0.课程号
and f0.m=成绩.分数 order by 成绩.课程号,姓名asc;

出现错误:
ORA-00933: SQL命令未正确结束

2、问题分析

  1. 掌握Oracle常用对象的操作方法。会使用常用对象解决一些实际问题。

  2. 掌握Oracle的安全管理方法。
    错误出现在第2行,表明外码定义错误中的括号没有用英文状态下的括号。sql编程都需要在英文状态下编程,出现中文字符则会被误以为是符号。但在第2行中采用中文括号且selecte语句应用不正确不符合题意,所以出错。

3、解决方案
解决方案如下:

create view obj1_11 as
select 学号,课程号 from (select 学号,课程号,rank()
over(partition by 课程号 order by 分数 asc nulls last名次
from a_db.成绩 )where 名次=1;
select 学号,课程号 from ( select 学号,课程号,rank()
over(partition by 课程号 order by 分数 asc nulls last名次
from a_db.成绩 )where 名次=1;

执行该语句后,视图已创建,问题解决。

模式对象和用户权限管理相关推荐

  1. 大型门户网站的RBAC用户权限管理设计

    这是我在网上找的一些设计比较好的RBAC权限管理 不知道,像新浪.搜狐.网易.百度.阿里巴巴.淘宝网的RBAC用户权限这一块,都是这种细颗粒的RBAC设计开发,还是把他们像用户组.角色组.权限组.操作 ...

  2. Hive用户权限管理理解

    HiverServer2支持远程多客户端的并发和认证,支持通过JDBC.Beeline等连接操作.hive默认的Derby数据库,由于是内嵌的文件数据库,只支持一个用户的操作访问,支持多用户需用mys ...

  3. 数据库实验四 用户权限管理

    广州大学学生实验报告 开课实验室:计算机科学与工程实验(电子楼418B)     2019年5月22日 学院 计算机科学与网络工程学院 年级.专业.班 计科172 姓名 学号 实验课程名称 数据库原理 ...

  4. 基于LDAP的WebLogic虚拟化统一用户权限管理

    0 引言 随着国家电网SG186工程建设的深入,企业门户的建设也开始由省电力公司一级向地市供电公司一级延伸.根据国家电网门户典型设计,河南省电力公司采用了虚拟方式建设全省各地市门户.由于虚拟门户的软. ...

  5. oracle 权限控制表,Oracle 用户权限管理与常用权限数据字典列表

    用户权限管理 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊 ...

  6. ASP.NET MVC 企业级实战 —— 创建用户权限管理范例程序(三)

    上一篇,主要讲解了模型的创建和利用Entity Framework来操作数据库,这篇我们会讲解如何创建控制器和视图. 由于最近很多网友反馈在VS 2012 无法安装NBlock框架模版,故再次声明,N ...

  7. 【SAP Basis】SAP用户权限管理

    SAP用户权限管理 1.术语说明 2.用户授权(添加菜单事务码-功能) (1)主要TCODE: (2)创建用户 SU01 (3)创建角色 PFCG (4)权限验证 3.用户授权(添加系统权限对象-功能 ...

  8. MySQL添加用户及用户权限管理

    目录 1.用户 <1> 用户信息 <2> 创建用户 <3> 删除用户 <4> 修改用户密码 2.用户权限管理 <1> 查看用户权限 < ...

  9. 数据库实验-实验二-用户权限管理

    一.实验目的 1. 对ORACLE数据库系统的用户权限管理有感性认识. 2. 事务是由用户定义的一个数据库的操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位. Oracle数据库使用事 ...

最新文章

  1. FZU 1649 Prime number or not (Miller-Rabin素数测试)
  2. .NET程序员的C\C++情结(3)
  3. 物理光学 计算倏逝波/渐逝波在界面上存在的范围
  4. Android逆向笔记-通过tracerPid对抗IDA调试
  5. java魔兽争霸_GitHub - mzhg/jw3gparser: Java解析《魔兽争霸3》游戏录像工具
  6. 韩立刚计算机网络——第五章:传输层
  7. 如何阅读看懂datasheet
  8. 攻防世界-logmein
  9. 微信小程序连接蓝牙打印机打印图片示例
  10. 不使用redis,在前后端分离项目的条件下将验证码进行储存
  11. opencv 角点检测
  12. 学习笔记8--惯性导航定位技术
  13. 【Unity】Mesh网格编程(四)麦比乌斯环
  14. css实现自定义鼠标样式
  15. 【KingstVIS】逻辑分析仪连不上竟然是因为电源
  16. 第1章CRM核心业务介绍
  17. 福布斯反击胡润榜 撒手锏祭出严介和
  18. 作为管理者的第8周工作感悟
  19. 金属化薄膜电容器的发展现状
  20. pop3 postfix 命令_postfix+pop3+imap+cyrus

热门文章

  1. webpack4.x的学习
  2. java入门学习教程,详细说明
  3. java中package_java 中 package 是什么?
  4. Ruby on rails 实战圣经: 深度剖析环境设定与Bundler
  5. 未来是一个三无的世界,三无具体指什么?
  6. 【考研英语语法】强调结构
  7. 初中计算机竞赛面试题目及答案,2019上半年初中信息技术教师资格面试真题及答案(第四批)...
  8. apache服务器(下)
  9. 底层进阶 | 移动端 GPU 架构 -- TBR 模型
  10. 【Web基础入门】一文搞懂HTML + CSS + JavaScript 简单了解