模式对象和用户权限管理
模式对象和用户权限管理
- 一.实验目标
- 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、问题分析
掌握Oracle创建用户的操作方法。会使用常用对象解决一些实际问题。
掌握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、问题分析
掌握Oracle常用对象的操作方法。会使用常用对象解决一些实际问题。
掌握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;
执行该语句后,视图已创建,问题解决。
模式对象和用户权限管理相关推荐
- 大型门户网站的RBAC用户权限管理设计
这是我在网上找的一些设计比较好的RBAC权限管理 不知道,像新浪.搜狐.网易.百度.阿里巴巴.淘宝网的RBAC用户权限这一块,都是这种细颗粒的RBAC设计开发,还是把他们像用户组.角色组.权限组.操作 ...
- Hive用户权限管理理解
HiverServer2支持远程多客户端的并发和认证,支持通过JDBC.Beeline等连接操作.hive默认的Derby数据库,由于是内嵌的文件数据库,只支持一个用户的操作访问,支持多用户需用mys ...
- 数据库实验四 用户权限管理
广州大学学生实验报告 开课实验室:计算机科学与工程实验(电子楼418B) 2019年5月22日 学院 计算机科学与网络工程学院 年级.专业.班 计科172 姓名 学号 实验课程名称 数据库原理 ...
- 基于LDAP的WebLogic虚拟化统一用户权限管理
0 引言 随着国家电网SG186工程建设的深入,企业门户的建设也开始由省电力公司一级向地市供电公司一级延伸.根据国家电网门户典型设计,河南省电力公司采用了虚拟方式建设全省各地市门户.由于虚拟门户的软. ...
- oracle 权限控制表,Oracle 用户权限管理与常用权限数据字典列表
用户权限管理 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊 ...
- ASP.NET MVC 企业级实战 —— 创建用户权限管理范例程序(三)
上一篇,主要讲解了模型的创建和利用Entity Framework来操作数据库,这篇我们会讲解如何创建控制器和视图. 由于最近很多网友反馈在VS 2012 无法安装NBlock框架模版,故再次声明,N ...
- 【SAP Basis】SAP用户权限管理
SAP用户权限管理 1.术语说明 2.用户授权(添加菜单事务码-功能) (1)主要TCODE: (2)创建用户 SU01 (3)创建角色 PFCG (4)权限验证 3.用户授权(添加系统权限对象-功能 ...
- MySQL添加用户及用户权限管理
目录 1.用户 <1> 用户信息 <2> 创建用户 <3> 删除用户 <4> 修改用户密码 2.用户权限管理 <1> 查看用户权限 < ...
- 数据库实验-实验二-用户权限管理
一.实验目的 1. 对ORACLE数据库系统的用户权限管理有感性认识. 2. 事务是由用户定义的一个数据库的操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位. Oracle数据库使用事 ...
最新文章
- FZU 1649 Prime number or not (Miller-Rabin素数测试)
- .NET程序员的C\C++情结(3)
- 物理光学 计算倏逝波/渐逝波在界面上存在的范围
- Android逆向笔记-通过tracerPid对抗IDA调试
- java魔兽争霸_GitHub - mzhg/jw3gparser: Java解析《魔兽争霸3》游戏录像工具
- 韩立刚计算机网络——第五章:传输层
- 如何阅读看懂datasheet
- 攻防世界-logmein
- 微信小程序连接蓝牙打印机打印图片示例
- 不使用redis,在前后端分离项目的条件下将验证码进行储存
- opencv 角点检测
- 学习笔记8--惯性导航定位技术
- 【Unity】Mesh网格编程(四)麦比乌斯环
- css实现自定义鼠标样式
- 【KingstVIS】逻辑分析仪连不上竟然是因为电源
- 第1章CRM核心业务介绍
- 福布斯反击胡润榜 撒手锏祭出严介和
- 作为管理者的第8周工作感悟
- 金属化薄膜电容器的发展现状
- pop3 postfix 命令_postfix+pop3+imap+cyrus
热门文章
- webpack4.x的学习
- java入门学习教程,详细说明
- java中package_java 中 package 是什么?
- Ruby on rails 实战圣经: 深度剖析环境设定与Bundler
- 未来是一个三无的世界,三无具体指什么?
- 【考研英语语法】强调结构
- 初中计算机竞赛面试题目及答案,2019上半年初中信息技术教师资格面试真题及答案(第四批)...
- apache服务器(下)
- 底层进阶 | 移动端 GPU 架构 -- TBR 模型
- 【Web基础入门】一文搞懂HTML + CSS + JavaScript 简单了解