Oracle用戶、角色、受權和表空間

oracle數據庫的權限系統分爲系統權限與對象權限。系統權限( database system privilege )可讓用戶執行特定的命令集。例如,create table權限容許用戶建立表,grant any privilege 權限容許用戶授予任何系統權限。對象權限( database object privilege )可讓用戶可以對各個對象進行某些操做。例如delete權限容許用戶刪除表或視圖的行,select權限容許用戶經過select從表、視圖、序列(sequences)或快照(snapshots)中查詢信息。

每一個oracle用戶都有一個名字和口令,並擁有一些由其建立的表、視圖和其餘資源。oracle角色(role)就是一組權限(privilege)(或者是每一個用戶根據其狀態和條件所需的訪問類型)。用戶能夠給角色授予或賦予指定的權限,而後將角色賦給相應的用戶。一個用戶也能夠直接給其餘用戶受權。

1、建立用戶

oracle內部有兩個建好的用戶:system和sys。用戶可直接登陸到system用戶以建立其餘用戶,由於system具備建立別 的用戶的 權限。 在安裝oracle時,用戶或系統管理員首先能夠爲本身創建一個用戶。例 如 :

Sql代碼

create user user01 identified by u01;  

該命令還能夠用來設置其餘權限。要 改變一個口令,可使用alter user命令:

alter user user01 identified by usr01;

如今user01的口令已由「u01」改成「usr01」。

除了alter user命令之外,用戶還可使用password命令。若是使用password命令,用戶輸入的新口令將不在屏幕上顯示。有dba特權的用戶能夠經過password命令改變任何其餘用戶的口令;其餘用戶只能改變本身的口令。

當用戶輸入password命令時,系統將提示用戶輸入舊口令和新口令,以下所示:

password

changing password for user01

old password:

new password:

retype new password:

當成功地修改了口令時,用戶會獲得以下的反饋:

password changed

二 、刪除用戶

刪除用戶,可使用drop user命令,以下所示:

drop user user01;

若是用戶擁有對象,則不能直接刪除,不然將返回一個錯誤值。指定關鍵字 cascade,可刪除用戶全部的對象,而後再刪除用戶。下面的例子用來刪除用戶與其對象:

drop user user01 cascade;

三 、3種標準角色

oracle爲了兼容之前的版本,提供了三種標準的角色(role):connect、resource和dba。

1. connect role(鏈接角色)

臨時用戶,特別是那些不須要建表的用戶,一般只賦予他們connectrole。connect是使用oracle的簡單權限,這種權限只有在對其餘用戶的表有訪問權時,包括select、insert、update和delete等,纔會變得有意義。擁有connect role的用戶還可以建立表、視圖、序列(sequence)、簇(cluster)、同義詞(synonym )、會話(session)和與其餘數據庫的鏈(link)。

2. resource role(資源角色)

更可靠和正式的數據庫用戶能夠授予resource role。resource提供給用戶另外的權限以建立他們本身的表、序列、過程(procedure)、觸發器(trigger)、索引(index)和簇(cluster)。

3. dba role(數據庫管理員角色)

dba role擁有全部的系統權限----包括無限制的空間限額和給其餘用戶授予各類權限的能力。system由dba用戶擁有。下面介紹一些dba常用的典型權限。

(1)grant(受權)命令

下面對剛纔建立的用戶user01受權,命令以下:

grant connect, resource to user01;

(2)revoke(撤消)權限

已授予的權限能夠撤消。例如撤消(1)中的受權,命令以下:

revoke connect, resource from user01;

一個具備dba角色的用戶能夠撤消任何別的用戶甚至別的dba的connect、resource 和dba的其餘權限。固然,這樣是很危險的,所以,除非真正須要,dba權限不該隨便授予那些不是很重要的通常用戶。 撤消一個用戶的全部權限,並不意味着從oracle中刪除了這個用戶, 也不會破壞用戶建立的任何表;只是簡單禁止其對這些表的訪問。其餘要訪問這些表的用戶能夠象之前那樣地訪問這些表。

4、建立角色

除了前面講到的三種系統角色----connect、resource和dba,用戶還能夠在oracle建立本身的role。用戶建立的role能夠由表或系統權限或二者的組合構成。爲了建立role,用戶必須具備create role系統權限。下面給出一個create role命令的實例:

create role student;

這條命令建立了一個名爲student的role。

一旦建立了一個role,用戶就能夠給他受權。給role受權的grant命令的語法與對對用戶的語法相同。在給role受權時,在grant命令的to子句中要使用role的名稱,以下所示:

grant select on class to student;

如今,擁有student 角色的全部用戶都具備對class 表的select權限。

5、刪除角色

要刪除角色,可使用drop role命令,以下所示:

drop role student;

指定的role連同與之相關的權限將從數據庫中所有刪除。

6、刪除表的注意事項

在刪除一個表中的所有數據時,須使用

Sql代碼

truncate table 表名  

由於用drop table,delete * from 表名時,tablespace表空間該表的佔用空間並未釋放,反覆幾回drop,delete操做後,該tablespace上百兆的空間就被耗光了。  

7、oracle建立表空間

注意:

1.若是在PL/SQL 等工具裏打開的話,直接修改下面的代碼中[斜體加粗部分]執行

2.確保路徑存在,好比【D:\oracle\oradata\Oracle9i\】也就是你要保存文件的路徑存在

/*分爲四步 */

/*第1步:建立臨時表空間  */

create temporary tablespace user_temp  

tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'

size 50m  

autoextend on  

next 50m maxsize 20480m  

extent management local;  

/*第2步:建立數據表空間  */

create tablespace user_data  

logging  

datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf'

size 50m  

autoextend on  

next 50m maxsize 20480m  

extent management local;  

/*第3步:建立用戶並指定表空間  */

create user username identified by password  

default tablespace user_data  

temporary tablespace user_temp;  

/*第4步:給用戶授予權限  */

grant connect,resource,dba to username; sql

/*分爲四步 */

/*第1步:建立臨時表空間  */
create temporary tablespace user_temp  
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' 
size 50m  
autoextend on  
next 50m maxsize 20480m  
extent management local;  
 
/*第2步:建立數據表空間  */
create tablespace user_data  
logging  
datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf' 
size 50m  
autoextend on  
next 50m maxsize 20480m  
extent management local;  
 
/*第3步:建立用戶並指定表空間  */
create user username identified by password  
default tablespace user_data  
temporary tablespace user_temp;  
 
/*第4步:給用戶授予權限  */
grant connect,resource,dba to username;

Sql代碼整理:
/*查看oracle數據庫中某個用戶下有哪些表*/
/*查看hr用戶下有哪些表*/
select table_name from dba_tables where owner='HR';
/*查看scott用戶下有哪些表*/
select table_name from dba_tables where owner='SCOTT';

/*在安裝oracle以後默認狀況下scott賬號是鎖定的,咱們可使用下面的命令來解鎖scott(別的用戶也如此)*/
alter user scott account unlock; 
/*解鎖以後更改密碼*/
alter user scott identified by tiger;
/*一樣咱們也能夠用命令去鎖定一個用戶*/
alter user scott account lock;

/*Oracle建立用戶並授予dba權限*/
create user 用戶名 identified by 密碼;
grant connect,resource,dba to 用戶名;
grant unlimited tablespace to 用戶名;  

/*oracle 查看特定用戶所擁有的表 */

1.普通用戶下
  1.1查看user_tables視圖
  select table_name from user_tables;
  TABLE_NAME
  ------------------------------
  PROJECT_MANAGE
  SALGRADE
  BONUS
  EMP
  DEPT
  //
  1.2查看all_tables視圖[sysdba用戶下,或者普通用戶均可以查看]
  select table_name from all_tables where owner='SCOTT';
  TABLE_NAME
  ------------------------------
  DEPT
  EMP
  BONUS
  SALGRADE
  PROJECT_MANAGE
  //
2.sysdba權限下
  查看dba_tables視圖
  select table_name from dba_tables where owner= 'SCOTT';
  TABLE_NAME
  ------------------------------
  DEPT
  EMP
  BONUS
  SALGRADE
  PROJECT_MANAGE
  //
注意:all_objects視圖也能夠查看當前特定用戶全部的表,
可是這個視圖裏面不光只有table,還有其餘的該用戶所擁有的對象
如:view,primary key,foreign key,procedure,function,sequence,...

/*查看Oracle有哪些表或者視圖*/
 
一、查詢當前用戶下,有哪些表
SELECT * FROM user_tables  

二、查詢當前用戶下, 能夠訪問哪些表 [也就是訪問本身 和 其餘用戶的]
SELECT * FROM all_tables  
 
三、查詢當前數據庫全部的表, 須要你有 DBA 的權限 
SELECT * FROM dba_tables  
 
四、查詢當前用戶下的全部對象
select * from tab;  

五、查看視圖 
select view_name from user_views  
 


下面是sql plus中經常使用的幾個命令:

oracle打開命令行的方式:
在運行裏輸入:sqlplusw 或者sqlplus(傳統的命令行)

怎麼設置能讓SQLPLUS查詢出來的結果集好看一些?

如今是一行數據分了不少行,很差看

------解決方案--------------------

<1> SQL code 能夠用第三方工具,PL/SQL DEVELOPER!


<2> 經常使用的格式化命令就是設置每行的寬度和每列的寬度!

set linesize 120 行寬度默認是80個字符;

col 列名 for a30其中a30是寬度,能夠設置一列的寬度,或者 col colname format a20;

col userid for a30 或者 col userid format a40

1.set linesize 300(表示一行爲300個字符)
set linesize能夠設置一行顯示的字符數,默認狀況下爲80個字符

2.l(list)
能夠顯示緩衝區中的最後執行的內容

3.run / r
以上三個命令功能是一致的,從新運行緩存區中的語句

4.save
save能夠將最後一次在緩存區中執行的語句保存到文件
例如:save e:\emp.sql

5.get
get能夠將文件中的sql語句放到緩存區中,採用/或r或run,能夠執行

6.ed(edit)
ed能夠採用記事原本編輯緩存區中的內容

7.如何直接執行sql腳本:
@e:\sql\yy.sql shell

相關文章
相關標籤/搜索