一 登入SQLPLUS
sqlplus使用者名稱/密碼@資料庫執行個體as登入角色;
如:使用者sys(密碼為123)以sysdba的角色登入資料庫ORACL,我們可以輸入:sqlplus sys/123@oracl as sysdba;
這種登入方式會直接暴露密碼,如果想隱藏密碼,可以在此省略密碼的輸入,如:sqlplus sys@oracl as sysdba;斷行符號以後ORACLE會給出輸入密碼的提示符。
登入以後如果想切換其他的使用者,可以直接使用connect 命令,如:connect user2/password@oracl as sysdba,同上一樣,可以將密碼分開輸入。
Oracle 分頁和排序常用的4條查詢語句
1. 查詢前10條記錄
SELECT * FROM TestTable WHERE ROWNUM <= 10
2. 查詢第11到第20條記錄
SELECT * FROM (SELECT TestTable.*, ROWNUM ro FROM TestTable WHERE ROWNUM <=20) WHERE ro > 10
3. 按照name欄位升序排列後的前10條記錄
SELECT * FROM (SELECT * FROM TestTable ORDERY BY name ASC) WHERE ROWNUM <= 10
4. 按照name欄位升序排列後的第11到第20條記錄
SELECT * FROM (SELECT tt.*, ROWNUM ro FROM (SELECT * FROM TestTable ORDER BY name ASC) tt WHERE ROWNUM <=20) WHERE ro > 10
二、表的操作
1、修改列的資料類型或列名(不能有資料)
SQL>alter table表名modify(列名 列資料類型);
2、添加一個欄位
SQL>alter table表名add(列名 列資料類型);
3、刪除一個欄位
SQL>alter table 表名drop column 列名;
4、修改表名
SQL>rename 舊錶名to 新表名;
5、插入日期欄位
Oracle中預設的格式為"dd-mm-yy"如‘20-5月-87’其中月一定要為漢字;
更改日期的預設格式:alter session nls_date_format='yyyy-mm-dd';
6、插入空值
insert into student(xh,xm,sex,birthday)values('1001','小明',null)
查詢的時候select * from student where birthday is (not)null;
7、修改含有null的資料
update student set sex='女' where birthday is null;
8、刪除資料
delete from 表名 刪除所有的記錄,表結構還在,寫日誌,可以恢複,刪除速度慢;
drop table表名;刪除表的結構和資料;
truncate table表名:刪除所有的記錄,表結構還在,不寫日誌,無法找回刪除的記錄,刪除速度快
三、表的複雜查詢
1、分組查詢的總結
A、分組函數只能出現在挑選清單、Having、Order by子句中
B、如果在Select語句中同時包含有group by,having,order by那麼他們的順序是group by,having,order by
C、在選擇列中如果有列、運算式和分組函數,那麼這些列和運算式必須有一個出現在Group by子句中,否則就會出錯。如select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal)<2000;這裡的deptno就一定要出現在group by中。
2、子查詢
單行子查詢:只返回一行資料的子查詢語句
多行子查詢:指返回多行資料的子查詢
執行SQL語句時是從右至左掃描。最右的先掃描。
在多行子查詢中使用ALL操作符
select ename,sal,dept from emp where sal>all(select sal from emp where deptno=0);
在多行子查詢中使用ANY操作符select ename,sal,dept from emp where sal>any(select sal from emp where deptno=0);
多列子查詢是指查詢返回多個列資料的子查詢
3、在From 中使用子查詢
這裡需要說明的是當from子句中使用子查詢時,該子查詢會被作為一個視圖來對待,因此叫作內嵌視圖,當在from子句中使用子查詢時必須給子查詢指定別名,給表名取別名是不能加AS,給列加別名可以用AS
4、分頁查詢
Oracle的分頁有三種方式
按僱員的ID號升序取出
1)、Rownum分頁
select * from (select a1.*,rownum rn from (select * from emp) a1 where rownum<=10) where rn>=6;
2)、按分析函數來分
select * from (select t.*,row_number() over(order by cid desc)rk from
t_xiaoxi t)where rk<10000 and rk>9980;
3、按ROWID來分
select * from t_xiaoxi where rowid in(select rid from (select rownum rn,rid from (select rowid rid,cid from t_xiaoxi order by cid desc)where
rownum<10000 )where rn>9980 order by cid desc;
其中1的效率最好,3次之,2最差
5、用查詢結果建立新表
create table mytable(id,name,sal,job,deptno)
as select empno,ename,sal,job,deptno from emp;
6、合并查詢
有時候在實際應用中為了合并多個select語句的結果可以使用集合操作符號union,union all,intersect,minus
1)union該操作用於取得兩個結果集的並集,當使用該操作符時會自動去掉結果中重複的行;
2)union all
該操作賦於union相似,但是它不會取消重複的行,而且也不會排序。
3)intersect使用該操作符用於取得兩個結果集的交集
4)minus使用該操作用於取得兩個結果集的差集,它只會顯示在第一個集合中,而不存在第二個集合中的資料。
四、資料庫的操作
1、使用子查詢來插入大量的資料
當使用values子句時,一次子查詢能插入一行資料,當使用子查詢插入資料時,一條insert語句可以插入大量的資料,當處理行遷移或裝載外部表格的資料到資料庫時,可以使用子查詢來插入資料。
2、使用UPDATE語句更新資料時,即可以使用運算式或資料直接修改資料,也可以使用子查詢修改資料。
update emp set(job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT'
五、事務
事務用於保證資料的一致性,它由一組相關的DML語句組成,該組的DML語句要麼全部成功,要麼全部失敗。
六、資料庫管理員
1、Oracle管理員的基本職能:
1)安裝和升級Oracle資料庫
2)建庫、資料表空間、表、視圖、索引
3)制定並實施備份與恢複計劃
4)資料庫許可權管理,調優,故障排除
5)對於進階DBA,要求能參與項目開發,會編寫預存程序、觸發器、規則、約束、包
2、資料庫管理員
1)sys和system的區別在於儲存資料的重要性不同
sys:所有Oracle的資料字典的基表和視圖都存放在sys使用者中,這些基表和視圖對於Oracle的運行是至關重要的,由資料庫自己維護,任何使用者都不能手動更改,sys使用者擁有dba,sysdba,sysoper角色或許可權,是Oracle許可權最高的使用者
system:用於存放次一級的內部資料,如Oracle的一些特性或工具的管理資訊,system使用者擁有dba,sysdba角色或系統許可權
2)其實的區別是許可權的不同
sys使用者必須以as sysdba或as sysoper形式登陸,不能以normal方式登陸資料庫
system如果正常登陸,它其實就是一個普通的DBA使用者,但如果以as sysdba登陸,其結果實際上它是作為sys使用者登陸的,從登陸資訊裡面我們可以看得出來。
dba使用者指具有DBA角度的資料庫,特權使用者可以執行啟動執行個體,關閉執行個體等特殊操作而DBA使用者只能在資料庫執行個體啟動完後才能進行各種管理工作
3、管理初始化參數
1)如何修改參數
要修改初始化參數要到檔案路徑。。。/oracle/admin/myoral/pfile/init.ora檔案中去修改。如要修改執行個體中的名字
4、資料庫的邏輯備份和恢複和物理備份和恢複
邏輯備份是指用工具export將資料對象的結構和資料匯出到檔案的過程,邏輯恢複是指當資料庫物件被誤操作而損壞後使用工具import利用備份的檔案把資料庫物件匯入到資料庫的過程。
物理備即可在資料庫open的狀態下進行也可以在關閉資料庫後進行但是邏輯備份和恢複只能在open的狀態下進行。
1)匯出
匯出具體分為:匯出表、匯出方案、匯出資料庫三種方式。
在匯入匯出的時候要到Oracle目錄的Bin目錄下(執行EXP命令一定要在cmd命令方式下進入此路徑下的exp進行)
EXP命令說明:
a)、匯出自己的表:exp userid=scott/tiger@orcl tables=(emp,dept...) file=d:/a.dmp; (存放的路徑)
b)、匯出其它方案的表:此使用者必須具備DBA許可權或是擁有exp_full_database的許可權
exp userid=system/manager@orcl tables=(scott.emp,scott.dept) file=d:/b.dmp;(存放的路徑)
tables
owner:用於指定執行匯出操作的方案full=y:用於指定執行匯出操作的方案。
inctype:用於指定執行匯出操作的增量類型
rows:用於指定執行匯出操作是否要匯出表中的資料
file:用於指定匯出檔案名稱
匯出表的結構:exp userid=scott/tiger@orcl tables=(emp) file=d:/c.dmp rows=n
使用直接匯出方式
exp userid=scott/tiger@orcl tables=(emp) file=d:/d.dmp direct=y這種方式比預設的常規方式速度要快,當選資料量大的時候可以考慮使用這樣的方法(這時需要資料庫的字元集要與用戶端的字元集完全一致,否則會報錯。。)
匯出方案:指用export工具匯出一個方案或是多個方案中的所有對象和資料,並存放到檔案中。
c)匯出自己的方案
exp scott/tiger@orcl owner=scott file=d:/scott.dmp;
d)、匯出其它方案:如果使用者要匯出其它方案,則需要DBA的許可權或是exp_full_database的許可權,如:
exp system/manager@orcl owner=(system,scott) file=d:/system.dmp;
e)匯出資料庫
要求該使用者具有DBA的許可權或是exp_full_database許可權
exp userid=system/manager@orcl full=y inctype=complete file=d:/x.dmp;
2)、匯入
a)、匯入自己的表
imp userid=scott/tiger@orcl tables=(dept,emp) file=d:/xx.dmp;
b)、匯入表到其它使用者
要求該使用者具有DBA的許可權或是imp_full_database
imp userid=system/manager@orcl tables=(dept,emp) file=d:/xx.dmp touser=scott
c)、匯入表的結構
只匯入表的結構而不匯入資料
imp userid=scott/tiger@rocl tables=(emp) file=d:/xx.dmp rows=n;
d)、匯入資料
如果對象已經存在可以只匯入表的資料
imp userid=scott/tiger@orcl tables=(emp) file=d:/xx.dmp ignore=y;
4、匯入方案
a)、匯入自己的方案
imp userid=scott/tigger@orcl file=d:/xx.dmp;
b)、匯入其它方案
要求該使用者具有DBA的許可權
imp userid=system/manager file=d:/xxx.dmp fromuser=system touser=scott;
5、匯入資料庫
在預設的情況下,匯入資料時會匯入所有對象結構和資料
imp userid=system/manager full=y file=d:/xxx.dmp;
五、資料字典和視圖
1、資料字典
資料字典記錄了資料庫的系統資訊,它是唯讀表和視圖的集合,資料字典的所有者為SYS使用者
使用者只能在資料字典上執行查詢操作而其維護和修改是系統自動完成的
資料字典包括資料字典基表和資料字典視圖,其中基表儲存資料庫的基本資料,資料字典視圖正是基於資料字典基表而建立的視圖,普通使用者可以通過查詢資料字典視圖取得系統資訊,資料字典包括user_xxx,all_xxx,dba_xxx三種類型
2、動態效能檢視
user_tables:用於顯示目前使用者所擁有的所有表,它只返回使用者所對應方案的表
all_tables:用於顯示目前使用者可以訪問的所有表,它不僅會返回目前使用者方案的所有表,還會返回目前使用者可以訪問的其它方案的表
dba_tables:它會顯示所有方案擁有的資料庫表,但查詢這種資料庫字典視圖要求使用者必須是DBA角色或是有Select any table系統許可權。
六、使用者名稱、許可權、角色
1、在建立使用者時,oracle會把使用者的資訊存放到資料字典中,當給使用者授予許可權或是角色時,oracle會將許可權和角色資訊存放到資料字典中
通過查詢dba_users可以顯示所有資料庫使用者的詳細資料;
通過查詢dba_sys_privs可以顯示使用者所具有的系統許可權;
通過查詢dba_tab_privs可以顯示使用者所具胡的對象許可權;
通過查詢dba_col_privs可以顯示使用者所具有的列的許可權
通過查詢dba_role_privs可以顯示使用者所具有的角色
2、角色和許可權的關係
一個角色包含一個及一個以上的許可權,許可權分兩種:系統許可權和對象許可權
Oracle究竟有多少種角色:
select * from dba_roles;
一個角色擁有多少個許可權
a)、一個角色包含的系統許可權
select * from dba_sys_privs where grantee='CONNECT'(角色名稱)
另外也可以這樣查看
select * from role_sys_privs where role='CONNECT'(角色名稱)
b)、一個角色包含的對象許可權
select * from dba_tab_privs where grantee='CONNECT'(角色名稱)
查詢oracle系統中有多少系統許可權
select * from system_privilege_map order by name;
查詢oracle系統中有多少對象許可權
select distinct privilege from from dba_tab_privs;
如果查看某個使用者具具有什麼樣的角色?
select * from dba_role_privs where grantee='使用者名稱';
3、顯示目前使用者可以訪問的所有資料字典視圖
select * from dict where comments like '%grant%';
顯示當前資料庫的全稱
select * from global_name;
4、其它說明
資料字典記錄有oracle資料庫的所有系統資訊,通過查詢資料字典可以取得以下系統資訊:
對象定義情況、對象佔用空間大小、列資訊、約束資訊。。。
要得到這些資訊可以通過PL/SQL developer工具查詢得到
動態效能檢視:用於記錄當前常式活動資訊,當啟動oracle server時系統會建立動態效能檢視,當停止oracle server時系統會刪除動態效能檢視。oracle的所有動態效能檢視是以v_$開始的,並且oracle為每個動態效能檢視都提供了相應的同義司,並且同義字是以V$開始的,如v_$datafile的同義字為v$datafile,動態效能檢視的所有者為SYS一般情況下由DBA或是特權使用者來查詢動態效能檢視
六、資料表空間與資料檔案
資料表空間是資料庫的邏輯組成部份,從物理上講資料庫存放在資料檔案中,從邏輯上講資料庫則是存放在資料表空間中,資料表空間由一個或多個資料檔案組成;
oracle邏輯結構包括資料表空間、段、區和塊
資料庫由資料表空間構成的,而資料表空間又是由段構成,而段又是由區構成,而區又是由Oracle塊構成的這樣的一種結構,可以提高資料庫的效率
通過資料表空間可以達到以下作用:
1)、控制資料庫佔用的磁碟空間
2)、DBA可以將不同資料類型部署到不同的位置,這樣有利於提高I/O的效能,同時利於備份和恢複等管理操作。
建立資料表空間
create tablespace aa(資料表空間名) datafile 'd:/test.dbf'(資料表空間存放路徑) size 20M(資料表空間大小) uniform size 128K(區的大小)
使用資料表空間
create table mypart(deptno number(4),dname varchar2(14))tablespace aa;
改變資料表空間的狀態
當建立資料表空間時,資料表空間處於聯機的狀態,此時該資料表空間是可以訪問的,並且該資料表空間是可以讀寫的,即可以查詢該資料表空間的資料,而且還可以在資料表空間執行各種語句,但在進行系統維護或資料維護時,可能需要改變資料表空間的狀態。一般情況下由特權使用者或是DBA來操作。
1)使資料表空間離線
alter tablespace 資料表空間名offline;
2)使資料表空間聯機
alter tablespace 資料表空間名 online;
3)唯讀資料表空間
當建立資料表空間時,資料表空間可以讀寫,如果不希望在該資料表空間上執行update,delete,insert操作,那麼可以將資料表空間修改為唯讀
alter tablespace query_data read only;
4、知道資料表空間名,顯示該資料表空間包括的所有表
select * from all_table where tablespace_name='資料表空間名'
5、知道表名,查看其表屬於哪個資料表空間
select tablespace_name,table_name from user_tables where table_name='表名';
6、刪除資料表空間
一般情況下要由特權使用者或是DBA來操作,如果是其它使用者操作那麼要求使用者具有drop tablespace系統許可權
drop tablespace'資料表空間'including contents and datafiles;
說明:including contents 表示刪除資料表空間時,刪除該空間的所有資料庫物件,而datafiles表示將資料庫檔案也刪除;
7、擴充資料表空間
為其增加更多的儲存空間有三種方法:
1)、增加資料檔案
alter tablespace 資料表空間名 add datafile 'd:/bb.dbf' size 20m;
2)、增加資料檔案的大小
alter tablespace 資料表空間名 'd:/b.dbf' resize 20m;
這裡需要注意的是資料檔案的大小不要超過500m
3)、設定檔案的自動成長
alter tablespace 資料表空間名 'd:/b.dbf' autoextend on next 10m maxsize 500m;
8、移動資料檔案
1)、確定資料檔案所在的資料表空間
select tablespace_name from dba_data_files where file_name='d:/yy.dbf';
2)使用資料表空間離線
確保資料檔案的一致性,將資料表空間轉變為offline的狀態
alter tablespace yy offline;
3)使用命令移動資料檔案到指定的目標位置
host move d:/yy.dbf c:/yy.dbf;
4)、執行alter tablespace
在物理上移動了資料後還必須執行alter tablespace命令對資料庫檔案進行邏輯修改
alter tablespace yy rename datafile 'd:/yy.dbf'to'c:/yy.dbf';
5)使資料表空間聯機
在移動了資料檔案後,為了使使用者可以訪問該資料表空間,必須將其轉變為online狀態alter tablespace yy on line
9、查詢相關資料表空間資訊
1)、顯示資料表空間資訊
select tablespace_name from dba_tablespaces;
2)、顯示資料表空間所包含的資料檔案
select file_name,bytes from dba_data_files where tablespace_name='資料表空間名'
七、維護資料完整性
資料完整性可以使用約束、觸發器、應用程式(過程、函數)三種方法來實現
在這三種方法中因為約束易於維護,並且具有最好的效能,所以作為維護資料完整性的首選。
約束包括:not null(如果在列上定義了not null,那麼當插入資料時,必須為列提供資料),unique(該列值是不能重複的但可以為null),primary key(一張表只能為一個主鍵但是可以有多個unqiue約束,該列不能重複且不能為null),foreign key(定義主表和從表之間的關係,定義外鍵約束後要求外鍵列資料必須在主表的鍵列存在或是為null),check(強制行資料必須滿足的條件)五種
若在建立表的時候忘記建立必要的約束則可以在建表後使用alter table命令為表增加約束,但要注意:增加not null約束時需要使用modify選項,而增加其它四種約束使用add選項。
刪除約束:alter table表名drop constraint 約束名稱;
若刪除的約束中存在主從關係的時候,在刪除主表的主鍵約束時必須帶上cascade
查詢目前使用者的約束資訊:
select constraint_name,constraint_type,status,validated from user_constraints where table_name='表名'
顯示約束列
select colunmn_name,position from user_cons_columns where constraint_name='約束名'
列級定義和表級定義
列級定義是在定義列的同時定義約束
表級定義是在定義了所有列後再定義約束,not null約束只能在列級定義上定義。
八、索引
索引是用於加速資料存取的資料對象,合理的使用索引可以大大降低I/O的次數,從而提高資料訪問效能。
1、單列索引
單列索引是基於單個列所建立的索引
create index 索引名 on 表名(列名)
2、複合索引
索合索引是基於兩列或是多列的索引。在同張表上可以有多個索引但要求列的組合必須不同。
如:create index emp_idx1 on emp(ename,job);
create index emp_idx1 on emp(job,ename);
3、使用索引原則
1)、在大表上建立索引才有意義;
2)、在where子名或是串連條件上經常引用的列上建立索引
3)、索引的層次不要超過4層;
4、索引的缺點分析
1)、建立索引,系統要佔用大約為表的1.2倍的硬碟和內在空間來儲存索引。
2)、更新資料的時候,系統必須要有額外的時間來同時對索引進行更新,以鑑效組資料和索引的一致性
實踐表明,不恰當的索引不但於事無補,反而會降低系統效能,因為大量的索引在進行插入、修改和刪除操作時比沒有索引花費更多的系統時間。
比如在如下欄位建立索引應該是不恰當的;
1)很少或從不引用的欄位
2)邏輯型的欄位,提高查詢的效率是以消耗一定的系統資源為代價的,索引不能盲目建立,這是考驗一個DBA是否優秀的很重要的指標
5、其它索引
按照資料存放區方式可以分為B*樹(建立在重複值很少的列上)、反向索引、位元影像索引(建立在重複值很多、不同值的相對固定的列上);
按照索引列的個數分類可以分為單列索引、複合索引;
按照索引列值的唯一性,可以分為唯一索引和非唯一索引;
此外還有函數索引、全域索引、分區索引。。。
6、顯示索引的資訊
select index_name,index_type from user_indexes where table_name='表名';
顯示索引列
select table_name,column_name from user_ind_columns where index_name='IND_ENAME';
九、系統管理權限和角色
當剛建立的使用者,使用者沒有任何許可權,也不能執行任何操作,如果要執行某種特定的資料庫操作,則必須為其授予系統的許可權;如果使用者要訪問其它方案的對象,則必須為其授予對象的許可權。為簡化許可權的管理可以使用角色。
A)、系統許可權
1、系統許可權
系統許可權是指執行特定類型SQL命令的許可權,它用於控制使用者可以執行的一個或是一級資料庫操作,比如當使用者具有create table許可權時,可以在其方案中建立表,當使用者具有create any table許可權時可以在任何方案中建立表,oracle系統中提供了100多種系統許可權。
顯示系統許可權
select * from system_privilege_map order by name;
2、授予系統許可權
一般情況下,授予系統許可權是由DBA完成的,如果其它使用者來授予系統許可權則要求該使用者必須具有grant any privilege的系統許可權,在授予許可權時可以帶有with admin option選項,這樣被授予許可權的使用者或是角色還可以將該系統許可權授予其它的使用者或角色。
如grant create session,create table to ken with admin option;
3、回收系統許可權
一般情況下,回收系統許可權是DBA來完成的,如果其它使用者來回收系統許可權,要求該使用者必須具有相應系統許可權及轉授系統許可權的選項。回收系統許可權使用revoke來完成。如:revoke create session from ken;
使用者系統許可權不是級聯回收,回收後其它使用者的許可權不變
B)、對象許可權
指訪問其它方案對象的許可權,使用者可以直接存取自己方案的對象,但如果要訪問別的方案的對象則必須具有對象的許可權。如smith使用者要訪問scott使用者的表scott.emp(scott:方案,emp:ge )
常有的有:alter,delete,select,insert,update,index,references,execute
1、顯示對象許可權
select distinct privilege from dba_tab_privs;
select grantor,owner,table_name,privilege from dba_tab_privs where grantee='BLAKE';
2、授予對象許可權
對象許可權可以授予使用者,角色,和PUBLIC。在授予許可權時,如果帶有with grant option選項,則可以將該許可權轉授給其它使用者,但要注意with grant option選項不能被授予角色。如果只要求授予某個欄位的對象許可權
grant update/select on emp(sal)to uu;
3、收回許可權
收回許可權後,使用者就不能執行相關的SQL命令,但要注意的是對象的許可權是否會被級聯收回。答案是,會被級聯收回。
C)、角色
角色就是相關許可權的命令集合,使用角色的主要目的是為了簡化許可權的管理。
角色分為預定義和自訂角色
預定義角色是Oracle所提供的角色,每種角色都用於執行一些特定的管理工作。
1、connect角色具有一般應用開發人員需要的大部分許可權,當建立了一個使用者名稱,多數情況下只要給使用者授予CONNECT和resource角色就夠了。
2、resource角色具有應用開發人員所需要的其它許可權,比如建立預存程序、觸發器等,需要注意的是,resource角色隱含了unlimited tablespace系統許可權
3、dba角色具有所有的系統許可權及with admin option選項。預設使用者的DBA使用者為sys和system他們可以將任何系統許可權授予其它使用者。DBA角色不具備sysdba和sysoper的特權(啟動和關閉資料庫)
自訂角色:一般是由DBA來建立的。其它使用者具有create role的系統許可權。在建立角色時可以指定驗證方式(不驗證、資料庫驗證等)
1)、建立角色(不驗證)
如果角色是公用的角色,可以採用不驗證的方式建立角色。
create role 角色名稱 not identified;
2)、建立角色(資料庫驗證)
採用這樣的方式時,角色名稱、口令存放在資料庫中。當啟用該角色時,必須提供口令,在建立這種角色時,需要為其提供口令
create role 角色名稱identified by 口令
3)、角色授權
當建立角色時,角色沒有任何許可權,為了使得角色完成特定的任務,必須為其授予相應的系統許可權和對象許可權
給角色授權和給使用者授權沒有太多區別,但要注意系統許可權的unlimited tablespace 和對象許可權的with grant option選項是不能授予角色的。
grant create session to角色名稱with admin option
grant select on scott.emp to角色名稱
grant insert,update,delete on scott.emp to角色名稱
4)分配角色
一般分配角色是由DBA來完成的,如果要以其它使用者身份分配角色則要求使用者必須具有grant any role的系統許可權
5)刪除角色
使用drop role一般是由DBA來執行的,如果其它使用者則要求該使用者具有drop any role系統許可權。drop role 角色名稱; 角色刪除後,則分配角色後的使用者也沒有相應的許可權
6)顯示角色資訊
顯示所有角色
select * from dba_roles;
顯示角色具有的系統許可權
select privilege,admin_option from role_sys_privs where role='角色名稱'
7)顯示角色具有的對象許可權
通過查詢資料字典視圖dba_tab_privs可以查看角色具有的對象許可權或是列的許可權
8)顯示使用者具有的角色,及預設角色
當以使用者的身份串連到資料庫時,oracle會自動的啟用預設的角色,通過查詢資料字典視圖dba_role_privs可以某個使用者具有的所有角色及當前預設的角色。
select granted_role,default_role from dba_role_privs where grantee='使用者名稱'
9)精細存取控制
由於很少用到這裡就不介紹了