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;--重新執行操作

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM