oracle19c之用户、权限、表空间

  一、用户相关操作

  1、查询用户

select * from dba_users; --查询全库所有的用户
select
* from all_users; --查询当前用户可看到的用户
select
* from user_users; --查询当前登录的用户

  2、创建用户(创建者需要有dba权限,用户名必须以c##开头,默认的表空间是users,新用户没有任何权限。)

create user c##sl IDENTIFIED BY 123456;

  3、删除用户

drop user c##sl2 cascade; --删除用户不会删除其表空间

  注意:无法删除用户C##SL3,报错“[Err] ORA-01940: 无法删除当前连接“的用户解决方法:

select username,sid,serial#,paddr from v$session where username='C##SL3';

  

alter system kill session '17,55857';

  4、修改密码

alter user c##sl3 identified by 1234;

  二、权限相关操作

  a、系统权限:用户在系统层面的权限,如CREATE SESSION、SELECT ANY TABLE等不依赖于对象的权限

  b、对象权限:用户关于某个具体对象的权限,如SELECT、UPDATE、INSERT等依赖于表、视图、存储过程的权限

  c、角色:一组权限的集合

  注意:PUBLIC用户具有的权限,其他用户都会有,即修改PUBLIC用户的权限,其他用户也会对应得改变权限

  1、查看权限、角色

select * from user_tab_privs; --当前用户具有的对象权限
select
* from dba_tab_privs WHERE grantee='C##SL' OR grantor='C##SL'; --全部用户具有的对象权限,查询C##SL用户的
select
* from user_sys_privs; --当前用户具有的系统权限
select
* from dba_sys_privs WHERE grantee='C##SL'; --全部用户具有的系统权限,查询C##SL用户的
SELECT
* FROM user_role_privs; --当前用户具有的角色
SELECT
* FROM dba_role_privs where grantee='C##SL'; --全部用户具有的角色,查询C##SL用户的

  注意:上面每一对查询出的结果应该一样,因为全部用户中肯定也包含当前用户,普通用户没有查询全部用户角色、权限表的权限

  2、常用权限、角色

dba    管理员角色
connect    连接数据库角色,能修改、删除表及数据,不能创建表
resource  能创建表 create session 连接数据库权限 create table 建表权限 unlimited tablespace 操作表空间权限 select any table 查询任何表的权限 select on c##test.book 查询c##test用户的book表的权限

  说明:

  a、一般来说,新建的普通用户后授予connect和resource角色就好了、如果是管理员需要再授予dba角色。

  b、对于普通用户,如果操作表时报错“[Err] ORA-01950: 对表空间 'xxx' 无权限”,需要执行一下语句

alter user c##sl3 quota unlimited on 表空间名;

  3、赋予权限、角色

grant create session to c##sl;
grant create session to c##sl with admin option; --授予的权限,c##sl用户可以再授予其它用户,具有传递性
grant create session,select any table to c##sl;

  4、撤销权限、角色

revoke select any table from c##sl;
revoke select any table,update any table from c##sl;

  三、表空间

  Oracle的数据存储在数据文件(data files)中,表空间只是一个逻辑概念,把一组数据文件放一起就是称为表空间。表空间与数据文件是一对多的关系,用户与表空间是多对多的关系。

  1)查询表空间

select * FROM dba_tablespaces;--查询所有表空间
select
* from dba_data_files;--查询表空间对应数据文件的地址
select username,default_tablespace from dba_users where username
='C##SL';--查询用户c##sl的表空间
SELECT--查看表空间详细信息 FILE_NAME as 数据文件,TABLESPACE_NAME as 表空间名称, AUTOEXTENSIBLE as 自动扩展,STATUS as 状态,MAXBYTES as 可扩展最大值, USER_BYTES as 已使用大小,INCREMENT_BY as 自动扩展增量 FROM dba_data_files

  2)创建表空间

create tablespace sl datafile '/opt/oracle/oradata/ORCLCDB/sl01.dbf' size 100M;--固定大小100M

create tablespace sl datafile '/opt/oracle/oradata/ORCLCDB/sl01.dbf' size 100M autoextend on next 5M
maxsize unlimited;--初始大小100M,每次自动扩展5M,最大无限制

create tablespace sl datafile '/opt/oracle/oradata/ORCLCDB/sl01.dbf' size 100M autoextend on next 5M 
maxsize 2048M;--初始大小100M,每次自动扩展5M,最大扩展到2048M

  3)修改表空间

alter database datafile '/opt/oracle/oradata/ORCLCDB/sl01.dbf' resize 100M; --大小设为100M
alter database datafile
'/opt/oracle/oradata/ORCLCDB/sl01.dbf' autoextend off; --关闭自动增长
alter database datafile
'/opt/oracle/oradata/ORCLCDB/sl01.dbf' autoextend on; --打开自动增长
alter database datafile
'/opt/oracle/oradata/ORCLCDB/sl01.dbf' autoextend on next 200M; --每次自动增长200m
alter database datafile
'/opt/oracle/oradata/ORCLCDB/sl01.dbf' autoextend on next 200M maxsize 2048M;
--每次自动增长200m,最大不超过2G

  4)为用户指定表空间

alter user c##sl default tablespace sl

  5)删除表空间

drop tablespace sl;--删除空表空间,不删除物理文件
drop tablespace sl including contents;
--删除表空间,不删除物理文件
drop tablespace sl including contents and datafiles;
--删除表空间,也删除物理文件
drop tablespace sl including contents and datafiles cascade constraint;
--如果其它表空间有外键依赖,也删除表空间

  备注:如果只删除了表空间,忘记删数据文件,然后再补删数据文件,可按如下操作:

create tablespace sl datafile '/opt/oracle/oradata/ORCLCDB/sl01.dbf'--没有指定size,只是表空间名、文件路径与原来的一致
drop tablespace sl including contents and datafiles;--重新执行操作

 

posted @ 2021-08-17 10:45  雷雨客  阅读(4082)  评论(0编辑  收藏  举报