Oracle创建视图并授权

Oracle创建视图并授权

Oracle 创建视图

Oracle 用户创建、授权

Oracle创建用户、角色、授权、建表空间
Oracle创建视图(View)

Sql

test.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

--在CDR有创建视图权限的帐户下,创建视图test2

CREATE OR REPLACE VIEW TEST2 AS
SELECT HIS_PAT_PAGE from HIS_PAT_INFO
WITH READ ONLY


--在使用DBA或者有权限的用户帐户下执行

create user VTEST identified by VTEST;--创建用户VTEST

grant create session to VTEST;--授予登录权限

grant select on CDR."TEST2" to VTEST;--授予VTEST用户查看CDR的TEST2视图权限

grant CREATE SYNONYM to VTEST; --授权VTEST用户创建同义词权限

create synonym VTEST.TEST2 for CDR.TEST2;--创建同义词 TEST2 替代CDR.TEST2


--使用VTEST用户登录查询

select * from

select * from TEST2 where rownum <5;--同义词

select * from CDR.TEST2 where rownum <5;--没有同义词,必须使用用户名前缀。


--在使用DBA或者有权限的用户帐户下执行

--撤销授权

REVOKE CREATE SYNONYM FROM VTEST;--撤销创建同义词权限

REVOKE select on CDR."TEST2" FROM VTEST;--撤销TEST2视图的查看权限
--删除用户

drop user VTEST cascade;--使用 cascade参数可以删除该用户的全部objects【并没有删除相应的表空间】

--删除视图TEST2

drop view TEST2

CASCADE参数:

CASCADE

使用 cascade参数可以删除该用户的全部objects。要说明的如下:

如果用户的schema中有表,则在删除表的时候自动删除与该表相关的主键和外键。

如果用户的schema中有表,则在删除表的时候自动删除与该表相关的索引。

删除用户时,用户在其他用户中的objects不会被删除,只会被置为无效。

视图,同义词,存储过程,函数,包;

其他用户建立的基于被删除用户的物化视图不会被删除,只是不能在刷新了。

用户模式下的所有触发器全部被删除

被删除用户建立的其他用户不会被删除

参考

oracle删除当前用户以及当前用户所有表、索引等操作
Oracle中drop user和drop user cascade的区别

拓展笔记

oracle表名不打双引号查不到原因

1、oracle表和字段是有大小写的区别。oracle默认是大写,如果我们用双引号括起来的就区分大小写,如果没有,系统会自动转成大写。

2、我们在使用navicat使用可视化创建数据库时候,navicat自动给我们加上了“”

Oracle 创建、查看用户

  • 查看所有用户:
1
2
3
4
5
select * from dba_users;--描述数据库的所有用户

select * from all_users;--列出对当前用户可见的数据库的所有用户

select * from user_users;--描述当前用户。此视图不显示 PASSWORD 、 PROFILE 、 PASSWORD_VERSIONS 、 EDITIONS_ENABLED 、 AUTHENTICATION_TYPE 和 LAST_LOGIN 列。
  • 查看用户或角色系统权限(直接赋值给用户或角色的系统权限):
1
2
3
select * from dba_sys_privs;--描述授予用户和角色的系统权限

select * from user_sys_privs;-- (查看当前用户所拥有的权限)
  • 查看角色(只能查看登陆用户拥有的角色)所包含的权限
1
2
select * from role_sys_privs;

  • 查看用户对象权限:
1
2
3
4
5
select * from dba_tab_privs;

select * from all_tab_privs;

select * from user_tab_privs;
  • 查看所有角色:
1
select * from dba_roles;
  • 查看用户或角色所拥有的角色:
1
2
3
select * from dba_role_privs;

select * from user_role_privs;
  • 查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
1
select * from V$PWFILE_USERS
  • SqlPlus中查看一个用户所拥有权限
1
2
3
4
select * from dba_sys_privs where grantee='username'; --其中的username即用户名要大写才行。

--比如:
select * from dba_sys_privs where grantee='TOM';

REVOKE回收权限

  • 回收角色权限
1
REVOKE CONNECT,RESOURCE FROM chenmh;
  • 回收系统权限
1
REVOKE CREATE FROM chenmh;
  • 回收用户对象权限,回收zhang用户下person表的所有权限,如果是单个授予的权限需要单个的收回
1
REVOKE ALL PRIVILEGES ON zhang.person FROM chenmh;
作者

zhang

发布于

2022-12-28

更新于

2023-09-19

许可协议

CC BY-NC-SA 4.0

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×