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