Oracle用户管理学习总结
生活随笔
收集整理的這篇文章主要介紹了
Oracle用户管理学习总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Oracle 用戶管理
一、用戶的概念
用戶,即user,通俗的講就是訪問oracle數據庫的“人”。在oracle中,可以對用戶的各種安全參數進行控制,以維護數據庫的安全性,這些概念包括模式(schema)、權限、角色、存儲設置、空間限額、存取資源限制、數據庫審計等。每個用戶都有一個口令,使用正確的用戶/口令才能登錄到數據庫進行數據存取。
二、用戶默認表空間
表空間是信息存儲的最大邏輯單位、當用戶連接到數據庫進行資料存儲時,若未指出數據的目標存儲表空間時,則數據存儲在用戶的默認表空間中。比如:create table mytable(id varchar2(20),name varchar2(100));這條語句創建了一個表mytable,并將其存儲在當前用戶的默認表空間中,若要指定表空間,則:create table mytable(id varchar2(20),name varchar2(100)) tablespace tbs1;。用戶的默認表空間可以在創建用戶時指定,也可以使用aler user命令進行指定,具體語法見后面的介紹。
三、用戶臨時表空間
臨時表空間主要用于order by語句的排序以及其它一些中間操作。在oracle9i之前,可以指定用戶使用不同的臨時表空間,從9i開始,臨時表空間是通用的,所的用戶都使用TEMP作為臨時表空間。
四、用戶資源文件
用戶資源文件用來對用戶的資源存取進行限制,包括:cpu使用時間限制、內存邏輯讀個數限制、每個用戶同時可以連接的會話數據限制、一個會話的空間和時間限制、一個會話的持續時間限制、每次會話的專用SGA空間限制。
五、用戶表空間限額
表空間存儲限制是用戶在某一個表空間中可以使用的存儲空間總數。在創建或修改用戶時,可以由參數quota指出。若用戶在向表空間存儲數據時,超出了此限額,則會產生錯誤。錯誤信息如:'ORA-01536:space quota exceeded for tablespace tablespacename..'。可以通過查詢字典dba_ts_quotas查看表空間限額信息。
六、創建用戶資源文件
創建用戶資源文件的語法如下:
CREATE PROFILE filename LIMIT
SESSION_PER_USER integer
CPU_PER_SESSION integer
USER_PER_CALL integer
CONNECT_TIME integer
......
基中:
SESSION_PER_USER: 用戶可以同時連接的會話數量限額;
CPU_PER_SESSION:用戶在一次數據庫會期間可占用的CPU時間總量限額,單位為百分之一秒;
USER_PER_CALL:用戶一次SQL調用可用的CPU時間總量限額,單位為百分之一秒;
LOGICAL_READS_PER_SESSION:在一次數據庫會話期間能夠讀取的數據庫塊的個數限額;
LOGICAL_READS_PER_CALL:一次SQL調用可以讀取的數據庫塊數限額;
IDLE_TIME:用戶連接到數據庫后的可空閑時間限額,單位為分鐘,若空閑時間超過此值,則連接被斷開;
CONNECT_TIME:一次連接的時間總量限額,單位為分鐘,連接時間超過此值時,連接被斷開;
PRIVATE_SGA:用戶么有的SGA區的大小,單位為數據庫塊,默認值為UNLIMITED;
COMPOSITE_LIMIT:這是一項由上述限制參數構成的組合資源項。舉例來說,假設資源設置如下:
IDLE_TIME 20
? ? CONNECT_TIME 120
? ? CPU_PER_CALL 750
? ? COMPOSITE_LIMT 800
那么,當會話空間超過20分鐘,或者連接時間超過120分鐘,又或者執行一個SQL耗費超過7.5秒,再或者這幾個資源限制加起來的總數超過800,則系統自動終止會話。
FAILED_LOGIN_ATTEMPTS:用戶登錄時,允許用戶名/密碼校驗失敗致使用登錄失敗的次數限額,超過該次數,帳戶被鎖定;
PASSWORD_LIFE_TIME:口令有效時間,單位為天數,超過這一時間,拒絕登錄,須重新設置口令,默認值為UNLIMITED;
PASSWORD_REUSE_TIME:一個失效口令經過多少天后才可重新利用,默認為UNLIMITED;
PASSWORD_REUSE_MAX:一個口令可重復使用的次數;
PASSWORD_LOCK_TIME:當登錄失敗達到FAILED_LOGIN_ATTEMPS時,帳戶被鎖定,該參數用于設定被鎖定的天數;
下面舉例如下:
1)創建一個用戶資源文件
create profile tax_users limit
session_per_user 3
cpu_per_session UNLIMITED
connect_time 30
logical_reads_per_session DEFAULT
logical_reads_per_call 1000
private_sga 15K
composite_limit 500000
password_life_time 90
2)查詢用戶資源文件信息
sql>select *from dba_profile where profile = 'tax_users'
3)指定用戶資源文件給用戶
sql>alter user us1 profile tax_users
七、創建、修改、刪除用戶
1.創建用戶
創建用戶的詳細語法請查詢oracle的官方參數文檔,這里介紹典型的語法。語法如下:
CREATE USER username
IDENTIFIED BY password
DEFAULT TABLESPACE tablespace
TEMPORARY TABLESPACE tablespace
PROFILE profile
QUOTA integer|UNLIMITED ON tablespace
各選項含義如下:
IDENTIFIED BY password:用戶口令;
DEFAULT TABLESPACE tablespace:默認表空間;
TEMPORARY TABLESPACE tablespace:臨時表空間;
PROFILE profile|DEFAULT:用戶資源文件;
QUOTA integer[K|M]|UNLIMITED ON tablespace:用戶在表空間上的空間使用限額,可以指定多個表空間的限額。
舉例:
CREATE USER us1 IDENTITIED BY abc123
DEFAULT TABLESPACE user01
TEMPORARY TABLESPACE temp
PROFILE DEFAULT
QUOTA 1000M ON user01;
2.修改用戶
修改用戶的語法是與創建用戶的語法類似的,主要是CREATE USER 變成 ALTER USER,具體請參考oracle文檔。
3.刪除用戶
? 刪除用戶,是將用戶及用戶所創建的schema對象從數據庫刪除。如下:
SQL>DROP USER us1;
若用戶us1含有schema對象,則無上述語句將執行失敗,須加入關鍵字CASCADE才能刪除,意思是連并其對象一起刪除,如下:
SQL>DROP USER us1 CASCADE;
一、用戶的概念
用戶,即user,通俗的講就是訪問oracle數據庫的“人”。在oracle中,可以對用戶的各種安全參數進行控制,以維護數據庫的安全性,這些概念包括模式(schema)、權限、角色、存儲設置、空間限額、存取資源限制、數據庫審計等。每個用戶都有一個口令,使用正確的用戶/口令才能登錄到數據庫進行數據存取。
二、用戶默認表空間
表空間是信息存儲的最大邏輯單位、當用戶連接到數據庫進行資料存儲時,若未指出數據的目標存儲表空間時,則數據存儲在用戶的默認表空間中。比如:create table mytable(id varchar2(20),name varchar2(100));這條語句創建了一個表mytable,并將其存儲在當前用戶的默認表空間中,若要指定表空間,則:create table mytable(id varchar2(20),name varchar2(100)) tablespace tbs1;。用戶的默認表空間可以在創建用戶時指定,也可以使用aler user命令進行指定,具體語法見后面的介紹。
三、用戶臨時表空間
臨時表空間主要用于order by語句的排序以及其它一些中間操作。在oracle9i之前,可以指定用戶使用不同的臨時表空間,從9i開始,臨時表空間是通用的,所的用戶都使用TEMP作為臨時表空間。
四、用戶資源文件
用戶資源文件用來對用戶的資源存取進行限制,包括:cpu使用時間限制、內存邏輯讀個數限制、每個用戶同時可以連接的會話數據限制、一個會話的空間和時間限制、一個會話的持續時間限制、每次會話的專用SGA空間限制。
五、用戶表空間限額
表空間存儲限制是用戶在某一個表空間中可以使用的存儲空間總數。在創建或修改用戶時,可以由參數quota指出。若用戶在向表空間存儲數據時,超出了此限額,則會產生錯誤。錯誤信息如:'ORA-01536:space quota exceeded for tablespace tablespacename..'。可以通過查詢字典dba_ts_quotas查看表空間限額信息。
六、創建用戶資源文件
創建用戶資源文件的語法如下:
CREATE PROFILE filename LIMIT
SESSION_PER_USER integer
CPU_PER_SESSION integer
USER_PER_CALL integer
CONNECT_TIME integer
......
基中:
SESSION_PER_USER: 用戶可以同時連接的會話數量限額;
CPU_PER_SESSION:用戶在一次數據庫會期間可占用的CPU時間總量限額,單位為百分之一秒;
USER_PER_CALL:用戶一次SQL調用可用的CPU時間總量限額,單位為百分之一秒;
LOGICAL_READS_PER_SESSION:在一次數據庫會話期間能夠讀取的數據庫塊的個數限額;
LOGICAL_READS_PER_CALL:一次SQL調用可以讀取的數據庫塊數限額;
IDLE_TIME:用戶連接到數據庫后的可空閑時間限額,單位為分鐘,若空閑時間超過此值,則連接被斷開;
CONNECT_TIME:一次連接的時間總量限額,單位為分鐘,連接時間超過此值時,連接被斷開;
PRIVATE_SGA:用戶么有的SGA區的大小,單位為數據庫塊,默認值為UNLIMITED;
COMPOSITE_LIMIT:這是一項由上述限制參數構成的組合資源項。舉例來說,假設資源設置如下:
IDLE_TIME 20
? ? CONNECT_TIME 120
? ? CPU_PER_CALL 750
? ? COMPOSITE_LIMT 800
那么,當會話空間超過20分鐘,或者連接時間超過120分鐘,又或者執行一個SQL耗費超過7.5秒,再或者這幾個資源限制加起來的總數超過800,則系統自動終止會話。
FAILED_LOGIN_ATTEMPTS:用戶登錄時,允許用戶名/密碼校驗失敗致使用登錄失敗的次數限額,超過該次數,帳戶被鎖定;
PASSWORD_LIFE_TIME:口令有效時間,單位為天數,超過這一時間,拒絕登錄,須重新設置口令,默認值為UNLIMITED;
PASSWORD_REUSE_TIME:一個失效口令經過多少天后才可重新利用,默認為UNLIMITED;
PASSWORD_REUSE_MAX:一個口令可重復使用的次數;
PASSWORD_LOCK_TIME:當登錄失敗達到FAILED_LOGIN_ATTEMPS時,帳戶被鎖定,該參數用于設定被鎖定的天數;
下面舉例如下:
1)創建一個用戶資源文件
create profile tax_users limit
session_per_user 3
cpu_per_session UNLIMITED
connect_time 30
logical_reads_per_session DEFAULT
logical_reads_per_call 1000
private_sga 15K
composite_limit 500000
password_life_time 90
2)查詢用戶資源文件信息
sql>select *from dba_profile where profile = 'tax_users'
3)指定用戶資源文件給用戶
sql>alter user us1 profile tax_users
七、創建、修改、刪除用戶
1.創建用戶
創建用戶的詳細語法請查詢oracle的官方參數文檔,這里介紹典型的語法。語法如下:
CREATE USER username
IDENTIFIED BY password
DEFAULT TABLESPACE tablespace
TEMPORARY TABLESPACE tablespace
PROFILE profile
QUOTA integer|UNLIMITED ON tablespace
各選項含義如下:
IDENTIFIED BY password:用戶口令;
DEFAULT TABLESPACE tablespace:默認表空間;
TEMPORARY TABLESPACE tablespace:臨時表空間;
PROFILE profile|DEFAULT:用戶資源文件;
QUOTA integer[K|M]|UNLIMITED ON tablespace:用戶在表空間上的空間使用限額,可以指定多個表空間的限額。
舉例:
CREATE USER us1 IDENTITIED BY abc123
DEFAULT TABLESPACE user01
TEMPORARY TABLESPACE temp
PROFILE DEFAULT
QUOTA 1000M ON user01;
2.修改用戶
修改用戶的語法是與創建用戶的語法類似的,主要是CREATE USER 變成 ALTER USER,具體請參考oracle文檔。
3.刪除用戶
? 刪除用戶,是將用戶及用戶所創建的schema對象從數據庫刪除。如下:
SQL>DROP USER us1;
若用戶us1含有schema對象,則無上述語句將執行失敗,須加入關鍵字CASCADE才能刪除,意思是連并其對象一起刪除,如下:
SQL>DROP USER us1 CASCADE;
?本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/truexf/archive/2006/09/06/1184869.aspx
ORACLE中數據字典視圖分為3大類, ? ? 用前綴區別,分別為:USER,ALL 和 DBA,許多數據字典視圖包含相似的信息。
USER_*:有關用戶所擁有的對象信息,即用戶自己創建的對象信息
ALL_*:有關用戶可以訪問的對象的信息,即用戶自己創建的對象的信息加上其他用戶創建的對象但該用戶有權訪問的信息
DBA_*:有關整個數據庫中對象的信息
(這里的*可以為TABLES, INDEXES, OBJECTS, USERS等。
1.查看所有用戶:
select * from dba_user;
select * from all_users;
select * from user_users;
2.查看用戶系統權限:
select * from dba_sys_privs;
select * from all_sys_privs;
select * from user_sys_privs;
3.查看用戶對象權限:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;
4.查看所有角色:
select * from dba_roles;
5.查看用戶所擁有的角色:
select * from dba_role_privs;
select * from user_role_privs;
6.查看當前用戶的缺省表空間
select username,default_tablespace from user_users;
7.查看某個角色的具體權限,如grant connect,resource,create session,create view to TEST;查看RESOURCE具有那些權限,用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE';
例:
限制user1用戶只允許100個并發連接
SQL> alter system set resource_limit=true;
System altered
SQL> create profile profile_user1 limit sessions_per_user 100;
Profile created
SQL> ALTER USER user1 profile profile_user1;
User altered
========
Oracle用戶、權限、角色管理
Oracle 權限設置
一、權限分類:
系統權限:系統規定用戶使用數據庫的權限。(系統權限是對用戶而言)。
實體權限:某種權限用戶對其它用戶的表或視圖的存取權限。(是針對表或視圖而言的)。
?
二、系統權限管理:
1、系統權限分類:
DBA: 擁有全部特權,是系統最高權限,只有DBA才可以創建數據庫結構。
RESOURCE:擁有Resource權限的用戶只可以創建實體,不可以創建數據庫結構。
CONNECT:擁有Connect權限的用戶只可以登錄Oracle,不可以創建實體,不可以創建數據庫結構。
對于普通用戶:授予connect, resource權限。
對于DBA管理用戶:授予connect,resource, dba權限。
?
2、系統權限授權命令:
[系統權限只能由DBA用戶授出:sys, system(最開始只能是這兩個用戶)]
授權命令:SQL> grant connect, resource, dba to 用戶名1 [,用戶名2]...;
[普通用戶通過授權可以具有與system相同的用戶權限,但永遠不能達到與sys用戶相同的權限,system用戶的權限也可以被回收。]
例:
SQL> connect system/manager
SQL> Create user user50 identified by user50;
SQL> grant connect, resource to user50;
查詢用戶擁有哪里權限:
SQL> select * from dba_role_privs;
SQL> select * from dba_sys_privs;
SQL> select * from role_sys_privs;
刪除用戶:SQL> drop user 用戶名 cascade; ?//加上cascade則將用戶連同其創建的東西全部刪除
?
3、系統權限傳遞:
增加WITH ADMIN OPTION選項,則得到的權限可以傳遞。
SQL> grant connect, resorce to user50 with admin option; ?//可以傳遞所獲權限。
?
4、系統權限回收:系統權限只能由DBA用戶回收
命令:SQL> Revoke connect, resource from user50;
?
說明:
1)如果使用WITH ADMIN OPTION為某個用戶授予系統權限,那么對于被這個用戶授予相同權限的所有用戶來說,取消該用戶的系統權限并不會級聯取消這些用戶的相同權限。
2)系統權限無級聯,即A授予B權限,B授予C權限,如果A收回B的權限,C的權限不受影響;系統權限可以跨用戶回收,即A可以直接收回C用戶的權限。
?
三、實體權限管理
1、實體權限分類:select, update, insert, alter, index, delete, all ?//all包括所有權限
execute ?//執行存儲過程權限
user01:
SQL> grant select, update, insert on product to user02;
SQL> grant all on product to user02;
user02:
SQL> select * from user01.product;
// 此時user02查user_tables,不包括user01.product這個表,但如果查all_tables則可以查到,因為他可以訪問。
2. 將表的操作權限授予全體用戶:
SQL> grant all on product to public; ?// public表示是所有的用戶,這里的all權限不包括drop。
[實體權限數據字典]:
SQL> select owner, table_name from all_tables; // 用戶可以查詢的表
SQL> select table_name from user_tables; ?// 用戶創建的表
SQL> select grantor, table_schema, table_name, privilege from all_tab_privs; // 獲權可以存取的表(被授權的)
SQL> select grantee, owner, table_name, privilege from user_tab_privs; ? // 授出權限的表(授出的權限)
?
3. DBA用戶可以操作全體用戶的任意基表(無需授權,包括刪除):
DBA用戶:
SQL> Create table stud02.product(
?id number(10),
?name varchar2(20));
SQL> drop table stud02.emp;
SQL> create table stud02.employee
?as
?select * from scott.emp;
?
4. 實體權限傳遞(with grant option):
user01:
SQL> grant select, update on product to user02 with grant option; // user02得到權限,并可以傳遞。
?
5. 實體權限回收:
user01:
SQL>Revoke select, update on product from user02; ?//傳遞的權限將全部丟失。
?
說明
1)如果取消某個用戶的對象權限,那么對于這個用戶使用WITH GRANT OPTION授予權限的用戶來說,同樣還會取消這些用戶的相同權限,也就是說取消授權時級聯的。
?
?
Oracle 用戶管理
一、創建用戶的Profile文件
SQL> create profile student limit ?// student為資源文件名
?FAILED_LOGIN_ATTEMPTS ?3 ?//指定鎖定用戶的登錄失敗次數
?PASSWORD_LOCK_TIME 5 ?//指定用戶被鎖定天數
?PASSWORD_LIFE_TIME 30 ?//指定口令可用天數
?
二、創建用戶
SQL> Create User username
?Identified by password
?Default Tablespace tablespace
?Temporary Tablespace tablespace
?Profile profile
?Quota integer/unlimited on tablespace;
例:
SQL> Create user acc01
?identified by acc01 ? // 如果密碼是數字,請用雙引號括起來
?default tablespace account
?temporary tablespace temp
?profile default
?quota 50m on account;
SQL> grant connect, resource to acc01;
[*] 查詢用戶缺省表空間、臨時表空間
SQL> select username, default_tablespace, temporary_tablespace from dba_users;
[*] 查詢系統資源文件名:
SQL> select * from dba_profiles;
資源文件類似表,一旦創建就會保存在數據庫中。
SQL> select username, profile, default_tablespace, temporary_tablespace from dba_users;
SQL> create profile common limit
?failed_login_attempts 5
?idle_time 5;
?
SQL> Alter user acc01 profile common;
?
三、修改用戶:
SQL> Alter User 用戶名
?Identified 口令
?Default Tablespace tablespace
?Temporary Tablespace tablespace
?Profile profile
?Quota integer/unlimited on tablespace;
?
1、修改口令字:
SQL>Alter user acc01 identified by "12345";
2、修改用戶缺省表空間:
SQL> Alter user acc01 default tablespace users;
3、修改用戶臨時表空間
SQL> Alter user acc01 temporary tablespace temp_data;
4、強制用戶修改口令字:
SQL> Alter user acc01 password expire;
5、將用戶加鎖
SQL> Alter user acc01 account lock; ?// 加鎖
SQL> Alter user acc01 account unlock; ?// 解鎖
?
四、刪除用戶
SQL>drop user 用戶名; ?//用戶沒有建任何實體
SQL> drop user 用戶名 CASCADE; ?// 將用戶及其所建實體全部刪除
*1. 當前正連接的用戶不得刪除。
五、監視用戶:
1、查詢用戶會話信息:
SQL> select username, sid, serial#, machine from v$session;
2、刪除用戶會話信息:
SQL> Alter system kill session 'sid, serial#';
3、查詢用戶SQL語句:
SQL> select user_name, sql_text from v$open_cursor;
?
?
Oracle 角色管理
一、何為角色
角色。角色是一組權限的集合,將角色賦給一個用戶,這個用戶就擁有了這個角色中的所有權限。
二、系統預定義角色
預定義角色是在數據庫安裝后,系統自動創建的一些常用的角色。下介簡單的介紹一下這些預定角色。角色所包含的權限可以用以下語句查詢:
sql>select * from role_sys_privs where role='角色名';
1.CONNECT, RESOURCE, DBA
這些預定義角色主要是為了向后兼容。其主要是用于數據庫管理。oracle建議用戶自己設計數據庫管理和安全的權限規劃,而不要簡單的使用這些預定角色。將來的版本中這些角色可能不會作為預定義角色。
?
2.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE
這些角色主要用于訪問數據字典視圖和包。
?
3.EXP_FULL_DATABASE, IMP_FULL_DATABASE
這兩個角色用于數據導入導出工具的使用。
?
4.AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE
AQ:Advanced Query。這兩個角色用于oracle高級查詢功能。
?
5. SNMPAGENT
用于oracle enterprise manager和Intelligent Agent
?
6.RECOVERY_CATALOG_OWNER
用于創建擁有恢復庫的用戶。關于恢復庫的信息,參考oracle文檔《Oracle9i User-Managed Backup and Recovery Guide》
?
7.HS_ADMIN_ROLE
A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary.
?
三、管理角色
1.建一個角色
sql>create role role1;
2.授權給角色
sql>grant create any table,create procedure to role1;
3.授予角色給用戶
sql>grant role1 to user1;
4.查看角色所包含的權限
sql>select * from role_sys_privs;
5.創建帶有口令以角色(在生效帶有口令的角色時必須提供口令)
sql>create role role1 identified by password1;
6.修改角色:是否需要口令
sql>alter role role1 not identified;
sql>alter role role1 identified by password1;
7.設置當前用戶要生效的角色
(注:角色的生效是一個什么概念呢?假設用戶a有b1,b2,b3三個角色,那么如果b1未生效,則b1所包含的權限對于a來講是不擁有的,只有角色生效了,角色內的權限才作用于用戶,最大可生效角色數由參數MAX_ENABLED_ROLES設定;在用戶登錄后,oracle將所有直接賦給用戶的權限和用戶默認角色中的權限賦給用戶。)
sql>set role role1;//使role1生效
sql>set role role,role2;//使role1,role2生效
sql>set role role1 identified by password1;//使用帶有口令的role1生效
sql>set role all;//使用該用戶的所有角色生效
sql>set role none;//設置所有角色失效
sql>set role all except role1;//除role1外的該用戶的所有其它角色生效。
sql>select * from SESSION_ROLES;//查看當前用戶的生效的角色。
8.修改指定用戶,設置其默認角色
sql>alter user user1 default role role1;
sql>alter user user1 default role all except role1;
詳見oracle參考文檔
9.刪除角色
sql>drop role role1;
角色刪除后,原來擁用該角色的用戶就不再擁有該角色了,相應的權限也就沒有了。
?
說明:
1)無法使用WITH GRANT OPTION為角色授予對象權限
2)可以使用WITH ADMIN OPTION 為角色授予系統權限,取消時不是級聯
========
Oracle用戶管理與權限分配
用戶與模式的關系
Oracle數據庫的安全保護流程可以分為3個步驟。首先,用戶向數據庫提供身份識別信息,即提供一個數據庫賬號。接下來用戶還需要證明他們所給出的身份識別信息是有效的,這是通過輸入密碼來實現的,用戶輸入的密碼經過數據庫的核對確認用戶提供的密碼是否正確。最后,假設密碼是正確的,那么數據庫認為身份識別信息是可信賴的。此時,數據庫將會在基于身份識別信息的基礎上確定用戶所擁有的權限,即用戶可以對數據庫執行什么操作。因此,為了確保數據庫的安全,首要的問題就是對用戶進行管理。?
這里所有的用戶并不是數據庫的操作人員,而是在數據庫中定義的一個名稱,更準確地說它是賬戶,只是習慣上稱其為用戶,它是Oracle數據庫的基本訪問控制機制,當連接到Oracle數據庫時,操作人員必須提供正確的用戶名和密碼。?
連接到數據庫的用戶所具有的權限是不同的,Oracle提供了一些特權用戶,比如,SYSDBA或SYSOPER,這類用戶主要用于執行數據庫的維護操作,如啟動數據庫、關閉數據庫、建立數據庫,以及執行備份和恢復等操作。SYSDBA和SYSOPER的區別在于:SYSDBA不僅具備SYSOPER的所有權限,而且還可以建立數據庫,執行不完全恢復。在Oracle 11g中,Oracle提供了默認的特權用戶SYS,當以特權用戶身份登錄數據庫時,必須帶有AS SYSDBA或AS SYSOPER選項。例如;
SQL> connect system/1qaz2wsx as sysdba;
已連接。
與用戶密切關系的另一個概念是模式,模式也稱作方案(Schema)。模式或方案實際上是用戶所擁有的數據庫對象的集合。在Oracle數據庫中,對象是以用戶來組織的,用戶與模式是一一對應的關系,并且兩者名稱相同。?
SCOTT用戶擁有的所有對象都屬于SCOTT模式,而HR用戶擁有的所有對象都屬于HR模式。?
這里寫圖片描述
兄弟連--Android培訓! 【點擊進入】
保障薪資4-6K簽就業保障協議 0學費、0食宿、一個月免費學
查 看
當訪問數據庫對象時,需要注意如下一些事項:
在同一個模式中不能存在同名對象,但是不同模式中的對象名稱則可以相同。 用戶可以直接訪問其它模式對象,但如果要訪問其它模式對象,則必須具有該對象的相應訪問權限。例如,用戶SCOTT可以直接查看其模式中的EMP表,但如果用戶HR要查看SCOTT模式中的EMP表時,則必須在EMP表上具有SELECT操作的權限。 當用戶要訪問其它模式對象時,必須附加模式名作為前綴。
創建與管理用戶
Oracle為用戶賬戶提供了三種身份驗證方法。?
密碼驗證 當一個使用密碼驗證機制的用戶視圖連接到數據庫時,數據庫會核實用戶名是否是一個有效的數據庫賬戶,并且提供與該用戶在數據庫中存儲的密碼相匹配的密碼。由于用戶信息和密碼都存儲在數據庫內部,所以使用密碼驗證用戶也稱為數據庫驗證用戶。?
外部驗證外部驗證是指當用戶試圖連接到數據庫時,數據庫會核實用戶名是否是一個有效的數據庫賬戶,并且確認該用戶已經完成了操作系統級別的身份驗證。?
注意:外部驗證用戶并不在數據庫中存儲一個驗證密碼。?
全局驗證全局驗證是指用戶不在數據庫中存儲驗證密碼,而是通過一種高級安全選項所提供的身份驗證服務來進行的。?
在上述的三種驗證方式中,密碼驗證是最常使用的驗證方法。
創建用戶
要創建一個新的用戶,可采用CREATE USER命令。其語法格式如下:
create user user_name identified by pass_word
[or identified exeternally]
[or identified globally as ‘CN=user’]
[default tablespace tablespace_default]
[temporary tablespace tablespace_temp]
[quota [integer k[m]] [unlimited] ] on tablesapce_ specify1
[,quota [integer k[m]] [unlimited] ] on tablesapce_ specify2
[,…]…on tablespace_specifyn
[profiles profile_name]
[account lock or account unlock]
參數說明如下:
user_name:用戶名,一般為字母數字型和“#”及“_”符號。 pass_word:用戶口令,一般為字母數字型和“#”及“_”符號。 identified exeternally:表示用戶名在操作系統下驗證,這種情況下要求該用戶必須與操作系統中所定義的用戶名相同。 identified globally as ‘CN=user’:表示用戶名由Oracle安全域中心服務器驗證,CN名字表使用戶的外部名。 [default tablespace tablespace_default]:表示該用戶在創建數據對象時使用的默認表空間 [temporary tablespace tablespace_temp]:表示該用戶所使用的臨時表空間。 [quota [integer K[M]] [unlimited]] on?
tablespace_specify1:表示該用戶在指定表空間中允許占用的最大空間。 [profiles profile_name]:資源文件的名稱。 [account lock or account unlock]:用戶是否被加鎖,默認情況下是不加鎖的。?
(1)創建用戶,并指定默認表空間和臨時表空間。
----創建一個mr用戶,口令為mrsoft,并設置默認的表空間為users,臨時表空間為temp的用戶
SQL> create user mr identified by mrsoft
? 2 ?default tablespace users
? 3 ?temporary tablespace temp;
(2)創建用戶,并配置其在指定表空間上的磁盤限額。有時,為了避免用戶在創建表和索引對象時占用過多的空間,可以配置用戶在表空間上的磁盤限額。在創建用戶時,可通過QUOTA xxxM ON tablespace_ specify子句配置指定表空間的最大可用限額,下面來看一個例子。
----創建一個用戶east,口令為mrsoft,默認表空間為users,臨時表空間為temp的用戶,并指定該用戶在tbsp_1表空間上最多可使用的大小為10m
SQL> create user east identified by mrsoft
? 2 ?default tablespace users
? 3 ?temporary tablespace temp
? 4 ?quota 10m on tbsp_1;
說明:如果要禁止用戶使用某個表空間,則可以通過quota關鍵字設置該表空間的使用限額為0。?
(3)創建用戶,并配置其在指定表空間上不受限制,如果要設置用戶在指定表空間上不受限制,可以使用QUOTA UNLIMITED ON tablespace_ specify子句。
----創建一個用戶名為df,口令為mrsoft,臨時表空間為temp,默認表空間為tbsp_1,并且該用戶使用tbsp_1表空間不受限制
SQL> create user df identified by mrsoft
? 2 ?default tablespace tbsp_1
? 3 ?temporary tablespace temp
? 4 ?quota unlimited on tbsp_1;
在創建完用戶之后,需要注意以下幾點:?
- 如果建立用戶時不指定DEFAULT TABLESPACE子句,Oracle會將SYSTEM表空間作為用戶默認表空間。?
- 如果建立用戶時不能指定TEMPORARY TABLESPACE子句,Oracle會將數據庫默認臨時表空間作為用戶的臨時表空間。?
- 初始建立的用戶沒有任何權限,所以為了是用戶可以連接到數據庫,必須授權其CREATE SESSION權限
- 如果建立用戶時沒有為表空間指定QUOTA子句,那么用戶在特定表空間上的配額為0,用戶將不能在相應的表空間上建立數據對象。?
- 初始建立的用戶沒有任何權限,不能執行任何數據庫操作。
修改用戶
用戶創建完后,管理員可以對用戶進行修改,包括修改用戶口令,改變用戶默認表空間、臨時表空間、磁盤配額及資源限制等。修改用戶的語法與創建的用戶的語法基本相似,只是把創建用戶語法中的“CREATE”關鍵字替換成“ALTER”罷了。?
修改用戶的磁盤限額?
如果DBA在創建用戶時,指定了用戶在某個表空間的磁盤限額,那么經過一段時間,該用戶使用該表空間已經達到了DBA所設置的磁盤限額時,Oracle系統就會顯示如圖13-2所示的錯誤提示。?
這里寫圖片描述
表示該用戶使用的資源已經超出了限額,DBA需要為該用戶適當增加資源。
?----修改用戶east在表空間上的磁盤限額為20m(原始為10m,先增加10m)。
SQL> alter user east quota 20m on tbsp_1;
修改用戶的口令?
用戶的口令在使用一段時間之后,根據系統安全的需要或在PROFILE文件中(資源配置文件)設置的規定,用戶必須要修改口令。
----修改用戶east的新口令為123456(原始為mrsoft)。
SQL> alter user east identified by 123456;
解鎖被鎖住的用戶?
Oracle默認安裝完成后,為了安全起見,很多用戶處于LOCKED狀態,DBA可以對LOCKED狀態的用戶解除鎖定。
----使用alter user命令解除被鎖定的賬戶SH。
SQL> alter user SH account unlock;
刪除用戶
刪除用戶通過DROP USER語句完成的,刪除用戶后,Oracle會從數據字典中刪除用戶、方案及其所有對象方案,語法如下:
drop user user_name[cascade]
參數說明如下:
user_name:要刪除的用戶名。 cascade:級聯刪除選項,如果用戶包含數據庫對象,則必須加?
CASCADE選項,此時連同該用戶所擁有的對象一起刪除。
----使用drop user語句刪除用戶df,并連同該用戶所擁有的對象一起刪除。
SQL> drop user df cascade;
用戶權限管理
權限簡介
根據系統管理方式的不同,在Oracle數據庫中將權限分為兩大類:系統權限和對象向權限。?
系統權限是在系統級對數據庫進行存取和使用的機制,比如,用戶是否能夠連接到數據庫系統(SESSION權限),執行系統級的DDL語句(如CREAT、ALTER、和DROP)等。?
對象權限是指某一個用戶對其他用戶的表、視圖、序列、存儲過程、函數、包等的操作權限。不同類型的對象具有不同的對象權限,對于某些模式對象,比如簇、索引、觸發器、數據庫鏈接等沒有相應的實體權限,這些權限由系統權限進行管理。
授權操作
在Oracle 11g中含有200多種系統特權,并且所有這些系統特權均被列舉在SYSTEM_PRIVILEGE_MAP數據目錄視圖中。授權操作使用GRANT命令,其語法格式如下:
grant sys_privi | role to user | role | public [with admin option]
參數說明如下:
sys_privi:表示Oracle系統權限,系統權限是一組約定的保留字。比如,若能夠創建表,則為“CREATE TABLE”。 role:角色,關于角色會在后面小節中介紹。 user:具體的用戶名,或者是一些列的用戶名。 public:保留字,代表Oracle系統的所有用戶。 with admin option:表示被授權者可以再將權限授予另外的用戶。?
—-為用戶east授予連接和開發系統權限,并嘗試使用east連接數據庫。
SQL> connect system/1qaz2wsx
已連接。
SQL> grant connect,resource to east;
授權成功。?
SQL> connect east/123456;
已連接。
在上面的代碼中,使用east連接數據庫后,Oracle顯示“已連接”,這說明給east授予“connect”的權限是成功的。另外,如果想要east將這兩個權限可以傳遞給其他的用戶,則需要在grant語句中使用“with admin option”關鍵字。
?----在創建用戶dongfang和xifang后,首先system將創建session和創建-table的權限授權給dongfang,然后dongfang再將這兩個權限傳遞給xifang,最后通過xifang這個用戶創建一個數據表
SQL> create user dongfang identified by mrsoft
? 2 ?default tablespace users
? 3 ?quota 10m on users;
?用戶已創建。
?SQL> create user xifang identified by mrsoft
? 2 ?default tablespace users
? 3 ?quota 10m on users;
?用戶已創建。
?SQL> grant create session,create table to dongfang with admin option;
?授權成功。
?SQL> connect dongfang/mrsoft;
已連接。
SQL> grant create session,create table to xifang;
?授權成功。
?SQL> connect xifang/mrsoft;
已連接。
SQL> create table tb_xifang
? 2 ?( id number,
? 3 ? ?name varchar2(20)
? 4 ?);
?表已創建。
回收系統權限
一般用戶若被授予過高的權限就可能給Oracle系統帶來安全隱患。作為Oracle系統的管理員,應該能夠查詢當前Oracle系統各個用戶的權限,并且能夠使用REVOKE命令撤銷用戶的某些不要的系統權限,REVOKE命令的語法格式如下:
revoke sys_privi | role from user | role | public
參數說明如下:
sys_privi:系統權限或角色; role:角色; user:具體的用戶名; public:保留字,代表Oracle系統所有的用戶;
—- 撤銷east用戶的resource系統權限,代碼及運行結果如下。
SQL> connect system/1qaz2wsx;
已連接。
SQL> revoke resource from east;
撤銷成功。
如果數據庫管理員用GRANT命令給用戶A授予系統權限是帶有WITH ADMIN OPTION選項,則該用戶A有權將系統權限再次授予另外的用戶B。在這種情況下,如果數據庫管理員使用REVOKE命令撤銷A用戶的系統權限,則用戶B的系統權限仍然有效。?
首先撤銷用戶dongfang的create table權限,然后嘗試是否還可以通過用戶xifang創建數據表(注:是dongfang將create table權限傳遞給xifang),代碼及運行結果如下。
SQL> revoke create table from dongfang;
撤銷成功。
SQL> connect xifang/mrsoft;
已連接。
SQL> create table tb_xifang_2
? 2 ?( id number,
? 3 ? name varchar2(10)
? 4 ?);
表已創建。
對象授權
與將系統權限授予用戶基本相同,授予對象權限給用戶或角色也使用GRANT命令,其語法格式如下:
Grant obj_privi | all column on schema.object to user | role | public [with grant option] | [with hierarchy option]
參數說明如下:
obj_privi:表示對象的權限,可以是ALTER、EXECUTE、SELECT、UPDATE和INSERT等; role:角色名; user:被授權的用戶名; with admin option:表示被授權者可再將系統權限授予其他的用戶; with hierarchy option:在對象的子對象(在視圖上再建立視圖)上授權給用戶。
----給用戶xifang授予select、insert、delete和update表soctt.emp的權限。
SQL> grant select,insert,delete,update on scott.emp to xifang;
授權成功。
回收對象權限
要從用戶或角色中撤銷對象權限,仍然要使用REVOKE命令,其語法格式如下:
revoke obj_privi | all on schema.object from user | role | public cascade constraints
參數說明如下:
obj_privi:表示對象的權限。 public:保留字,代表Oracle系統的所有權限。 cascade ascade constraints:表示有關聯關系的權限也被撤銷。
----從xifang用戶撤銷scott.emp表的update和delete權限。
SQL> connect system/1qaz2wsx;
已連接。
SQL> revoke delete,update on scott.emp from xifang;
撤銷成功。
說明:如果數據庫管理員GRANT命令給用戶A授予對象權限時帶有WITH ADMIN OPTION選項,則該用戶A有權將權限再次授予另外的用戶B。在這種情況下,如果數據庫管理員用REVOKE命令撤銷A用戶的對象權限時,用戶B的對象權限也被撤銷。由此可見,在進行系統權限回收和進行對象權限回收時,效果是不同的。
查詢用戶與權限
用戶被授予的系統權限或對象權限都被記錄在Oracle的數據字典里,了解某個用戶被授予哪些系統權限和對象權限是確保應用系統安全的重要工作。表是Oracle 11g用于存放用戶、系統權限、對象權限有關的數據字典。
這里寫圖片描述
40-50女性如何留住月經! 【點擊進入】
月經量少,月經不調,月經推遲,如何調理月經? 全國免費咨詢熱線:400-600-8218
查 看
角色管理
角色簡介
角色是一個獨立的數據庫實體,它包括一組權限。也就是說,角色是包括一個或者多個權限的集合,它并不被哪個用戶所擁有。角色可以被授予任何用戶,也可以從用戶中將角色收回。?
使用角色可以簡化權限的管理,可以僅用一條語句就能從用戶那里授予或回收權限,而不必對用戶一一授權。使用角色還可以實現權限的動態管理,比如,隨著應用的變化可以增加或者減少角色的權限,這樣通過改變角色的權限,就實現了改變多個用戶的權限。?
角色、用戶及權限是一組關系密切的對象,既然角色是一組權限的集合,那么,它只有被授予某個用戶才能有意義,可以用如圖所示的圖形來幫助我們理解角色、用戶及權限的關系。?
這里寫圖片描述
各行業真賬實操,15天免費試學 【點擊進入】
20多個行業真賬實操,105位老會計線上輔導, 做賬報稅30天包學精通!首選會計學堂!
查 看
vcfJq8qxssXE3Mq508NPUkFDTEXPtc2z18rUtKGjIDxicj4KICAgIMHtzeKjrNTatLS9qL3HyavKsaOsv8nS1M6qvcfJq8no1sPTptPDsLLIq9DUoaO9x8mrtcSwssir0NTNqLn9zqq9x8mryejWw7/awe69+NDQsaO7pKOssdjQ68zhuanV/ci3tcS/2sHussXUytDt0N64xLvyyejWw73HyauhozwvcD4KCgoKPGgyIGlkPQ=="預定義角色">預定義角色
所謂系統預定義角色是指在數據庫安裝完成后由系統自動創建的一些常用角色,這些角色已經由系統授予了相應的系統權限,可以由數據庫管理員直接使用。一旦將這些角色授予用戶以后,用戶便具有了角色中所包含的系統權限。下面列出的這幾個系統預定義角色是最常被用到的。
CONNECT; RESOURCE; DBA; EXP_FULL_DATABASE;
IMP_FULL_DATABASE。
角色CONNECT,RESOURCE及DBA主要用于數據庫管理,這3個角色之間相互沒有包含關系(有些系統權限可能有重疊)。數據庫管理員需要分別授予CONNECT,RESOURCE和DBA角色。對于一般的數據庫開發人員,則需要授予CONNECT,RESOURCE角色。?
角色IMP_FULL_DATABASE和EXP_FULL_DATABASE分別用于操作數據庫的導入或導出工具,如,操作數據庫工具EXPDP,IMPDP,或者系統的EXP,IMP。在使用這些工具進行整個數據庫的到導出與導入工作時,需要具備這兩個角色。
這里寫圖片描述
別去算命了,生肖決定你的財富! 【點擊進入】
你的生肖決定了你這輩子是窮苦命, 還是富貴命!生肖本命佛改變你的運勢!
查 看
不同版本的Oracle預定義的角色不一樣多,但都可以從DBA_ROLES數據字典中查詢到,下面通過該數據字典來看一下Oracle 11g的預定義系統角色有哪些。
----使用select語句查詢dba_roles數據字典中的角色信息。
SQL> set pagesize 50;
SQL> select * from dba_roles;
?這里寫圖片描述
創建角色與授權
如果系統預定義的角色不符合用戶需要,那么,數據庫管理員可以創建更多的角色,創建用戶自定義角色可以使用CREATE ROLE語句來實現,其語法格式如下:
create role role_name [ not identified | identified by [password] | [exeternally] | [globally]]
參數說明如下:
role_name:角色名; identified by password:角色口令; identified by exeternally:表示角色名在操作系統下驗證; identified globally:表示用戶是Oracle安全域中心服務器來驗證,此角色由全局用戶來使用。
----創建一個名為designer的角色,該角色的口令為123456。
SQL> connect system/1qaz2wsx;
已連接。
SQL> create role designer identified by 123456;
一旦角色創建完成,就可以對角色進行授權,給角色授權也是使用GRANT…TO語句來實現的。如果系統管理員具有GRANT_ANY_PRVILEGE權限,就可以對某個角色進行授權。比如,授權CREATE SESSION,CREATE SYNONYM,CREATE VIEW等。
----給designer角色授予create view和create table權限。
SQL> grant create view,create table to designer;
在角色獲得了權限之后,就可以把這個有使用價值的角色授予給某個用戶了。把角色授予給某個用戶仍然使用GRANT…TO語句來實現。
?----把designer角色授權給用戶dongfang,代碼及運行結果如下。
SQL> grant designer to dongfang;
管理角色
在學習過管理用戶(包括創建、修改、刪除等操作)之后,再學習如何管理角色就相對簡單多了,因為這二者之間有很多相似之處,這里僅通過一些簡單實例來對角色的管理進行說明。?
查看角色所包含的權限?
查看角色權限通常使用ROLE_SYS_PRIVS數據字典,來看下面的例子。
----查詢角色designer被屬于的權限有哪些。
SQL> select * from role_sys_privs where role = 'DESIGNER';
?這里寫圖片描述
修改角色密碼?
修改角色密碼包括取消角色密碼和修改角色密碼兩種情況,可以使用ALTER ROLE語句來實現。
?----首先取消designer角色的密碼,然后再重新給該角色設置一個密碼。
SQL> alter role designer not identified;
角色已丟棄。
SQL> alter role designer identified by mrsoft;
角色已丟棄。
設置當前用戶要生效的角色?
角色的生效是一個什么概念呢?假設用戶a有b1,b2,b3三個角色,那么,如果b1未生效,則b1所包含的權限對于a來講是不擁有的,只有角色生效了,角色內的權限才作用于用戶,最大可生效角色數由參數MAX_ENABLED_ROLES設定;用戶登錄后,Oracle將所有直接賦值給用戶的權限和用戶默認角色中的權限賦給用戶。設置角色生效可使用SET ROLE語句。?
創建一個無需密碼驗證的角色queryer,然后設置該角色生效,接下來再設置帶有密碼的角色designer也生效。
SQL> create role queryer;
角色已創建。
SQL> set role queryer;
角色集
SQL> set role designer identified by mrsoft;
角色集
說明:如果要設置帶有密碼的角色生效,則必須在SET ROLE語句后面使用“IDENTIFIED BY”關鍵字指定角色的密碼。?
刪除角色?
刪除角色很簡單,使用DROP ROLE語句即可實現,來看下面的例子。
----使用drop role語句刪除角色queryer。
SQL> drop role queryer;
角色已刪除。
刪除角色后,原來擁有該角色的用戶將不再擁有該角色,相應的權限也將失去。
角色與權限查詢
創建角色和用戶以后,給角色和用戶授予的權限被記錄在Oracle數據字典里,作為Oracle數據庫管理員,需要了解角色被授予了哪些權限及用戶被授予了哪些權限和角色,從而對這個數據庫的所有用戶進行全面的管理,如表所示是Oracle 11g用于存放用戶、角色及權限的相關數據字典。
這里寫圖片描述
----查詢HR用戶被授予的系統角色。
SQL> select granted_role,default_role from dba_role_privs
? 2 ?where grantee = 'HR';
?這里寫圖片描述
在某個模式下,如果用戶要確定當前會話中的所有有效角色,可以通過SESSION_ROLE數據字典來查詢。
----在scott模式下,查詢當前用戶的所有有效角色。
SQL> connect scott/1qaz2wsx;
已連接。
SQL> select * from session_roles;
?這里寫圖片描述
資源配置PROFILE
PROFILE簡介
PROFILE作為用戶配置文件,它是密碼限制、資源限制的命名集合。PROFILE文件作為Oracle安全策略的重要組成部分,利用它可以對數據庫用戶進行基本的資源限制,并且可以對用戶的密碼進行管理。
在安裝數據庫時,Oracle會自動建立名為DEFAULT的默認配置文件。如果沒有為新創建的用戶指定DEFAULT文件,Oracle將自動為它指定DEFAULT配置文件。初始的DEFAULT文件沒有進行任何密碼和資源限制。使用PROFILE文件時需要注意如下事項。
建立用戶時,如果不指定PROFILE選項,Oracle會自動將DEFAULT分配給相應的數據庫用戶。 建立PROFILE文件時,如果只設置了部分密碼和資源限制選項,其他選項會自動使用默認值,即使DEFAULT文件中有相應選項的值。 使用PROFILE管理密碼時,密碼管理選項總是處于被激活狀態,但是如果使用PROFILE管理資源,必須要激活資源限制。 一個用戶只能分配一個PROFILE文件。如果要同時管理用戶的密碼和資源,那么在建立PROFILE時應該同時指定密碼和資源選項。
使用PROFILE管理密碼
當操作人員要連接到Oracle數據庫時,需要提供用戶名和密碼。對于黑客或某些人而言,他們可能通過猜測或反復實驗來破解密碼。為了加強密碼的安全性,可以使用PROFILE文件管理密碼。PROFILE文件提供了一些密碼管理選項,他們提供了強大的密碼管理功能,從而確保密碼的安全。為 了實現密碼限制,必須首先建立PROFILE文件。建立PROFILE文件是使用CREATE PROFILE語句完成的, 一般情況下,該語句是由DBA執行的,如果要以其他用戶身份建立PROFILE文件,則要求該用戶必須具有CREATE PROFILE系統權限。?
使用PROFILE文件可以實現如下四種密碼管理:賬戶鎖定、密碼的過期時間、密碼歷史和密碼的復雜度。?
1.賬戶鎖定?
賬戶的鎖定策略是指用戶在連續輸入多少次錯誤密碼后,Oracle會自動鎖定用戶的賬戶,并且可以規定賬戶的鎖定時間。Oracle為鎖定賬戶提供了以下兩個參數。
FAILED_LOGIN_ATEMPTS 該參數限制用戶在登錄到Oracle數據庫時允許失敗的次數。一旦某個用戶嘗試登陸數據庫的次數達到該值,則系統將該用戶賬戶鎖定。 PASSWORD_LOCK_TIME 該參數用于指定賬戶被鎖定的天數。
---- 創建的profile文件,要求設置連續失敗次數為5,超過該次數后,賬戶將被鎖定7天,然后使用alter user語句將profile文件(即lock_account)分配給用戶dongfang。
SQL> create profile lock_account limit
? 2 ?failed_login_attempts 5
? 3 ?password_lock_time 7;
配置文件已創建
SQL> alter user dongfang profile lock_account;
用戶已更改。
在建立lock_account文件并將該文件分配給用戶dongfang后,如果以用戶dongfang身份連接到數據庫,并且連續連接失敗5次后,Oracle將自動鎖定該用戶賬戶。此時,即使為用戶dongfang提供了正確的密碼,也無法連接到數據庫。?
在建立lock_account文件時,由于指定password_lock_time的參數為7,所以賬戶鎖定天數達到7天后,Oracle會自動解鎖賬戶。?
說明:如果建立PROFILE文件時沒有提供該參數,將自動使用默認值UNLIMITED,這種情況下,需要DBA手動解鎖用戶賬戶。
2.密碼的過期時間?
密碼的過期時間是指強制用戶定期修改自己的密碼,當密碼過期后,Oracle會隨時提醒用戶修改密碼。密碼寬限期是指密碼到期之后的寬限使用時間。默認情況下,建立用戶并為其提供密碼之后,密碼會一直生效。為了防止其他人員破解用戶賬戶的密碼,可以強制普通用戶定期改變密碼。為了將強制用戶定期修改密碼,Oracle提供了如下參數。
PASSWORD_LIFE_TIME 該參數用于設置用戶密碼的有效時間,單位為天數。超過這一段時間,用戶必須重新設置口令。 PASSWORD_GRACE_TIME 該參數用于設置口令失效的“寬限時間”。如果口令到達PASSWORD_LIFE_TIME設置的失效時間,設置寬限時間后,用戶仍然可以繼續使用一段時間。
----下面創建一個profile文件(即password_lift_time),并設置用戶的密碼有效期為30天,密碼寬限期為3天,然后使用alter user語句將profile文件(即password_lift_time)分配給用戶dongfang。
SQL> create profile password_lift_time limit
? 2 ?password_life_time 30
? 3 ?password_grace_time 3;
配置文件已創建
SQL> alter user dongfang profile password_lift_time;
用戶已更改。
?這里寫圖片描述
若果用戶在30天內沒有修改密碼,那么在第31天、第32天、第33天連接時,仍然會顯示類似的警告信息。如果在33天內仍然沒有修改密碼,那么當第34天連接時,Oracle會強制用戶修改密碼,否則不允許連接到數據庫。?
3.密碼歷史?
密碼歷史是用于控制賬戶密碼的可重復使用次數或可重用時間。使用密碼歷史參數后,Oracle會將密碼修改信息存放到數據字典中。這樣,當修改密碼時,Oracle會對新、舊密碼進行比較,以確保用戶不會重用過去已經用過的密碼。關于密碼歷史有如下兩個參數。
PASSWORD_REUSE_TIME 該參數指定密碼可重用的時間,單位為天。
PASSWORD_REUSE_MAX 該參數設置口令在能夠被重新使用之前,必須改變的次數。?
說明:在使用密碼歷史選項時,只能使用其中的一個參數,并將另一個參數設置為UNLIMITED。?
4.密碼復雜度?
在PROFILE文件中,可以通過指定的函數來強制用戶的密碼必須具有一定的復雜度。例如,強制用戶的密碼不能與用戶名相同。使用校驗函數驗證用戶密碼的復雜度時,只需要將這個函數的名稱指定給PROFILE文件中的PASSWORD_VERIFY_FUNCTION參數,Oracle就會自動使用該函數對用戶的密碼和格式進行驗證。?
在Oracle 11g中,驗證密碼復雜度功能有新的改進。在$ORACLE_HOME/rdbms/admin目錄下創建了一個新的密碼驗證文件UTLPWDMG.SQL,其中不僅提供了先前的驗證函數VERIFY_FUNCTION,還提供了一個新建的VERIFY_FUNCTION_11G函數。
使用PROFILE管理資源
在大而復雜的多用戶數據庫環境中,因為用戶眾多,所以系統資源可能會成為影響性能的主要瓶頸,為了有效地利用系統資源,應該根據用戶所承擔任務的不同為其分配合理資源。PROFILE不僅可用于管理用戶密碼,還可以用于管理用戶資源。需要注意,如果是使用PROFILE管理資源,必須將RESOURCE_LIMIT參數設置為TRUE,以激活資源限制。由于該參數是動態參數,所以可以使用ALTER SYSTEM語句進行修改。
----首先使用show命令查看RESOURCE_LIMIT參數的值,然后使用alter system命令修改該參數的值為true,從而激活資源限制。
SQL> show parameter resource_limit;
NAME ? ? ? ? ? ? ? ?TYPE ? ? ? ? ? ?VALUE
-------------------- ? ? ? ?----------- ? ? ? ? ------
resource_limit ? ? ? ? ?boolean ? ? ? ? FALSE
SQL> alter system set resource_limit=true;
系統已更改。
利用PROFILE配置文件,可以對以下系統資源進行限制:
CPU時間:為了防止無休止地使用CPU時間,限制用戶每次調用是使用的CPU時間以及在一次會話期間所使用的CPU時間。 邏輯讀:為了防止過多使用系統的I/O操作,限制每次調用即會話時讀取的邏輯數據塊數目。 用戶的并發會話數。 會話空閑的限制:當一個會話空閑的時間達到了限制值時,當前事務被回滾,會話被終止并且所占用的資源被釋放。 會話可持續的時間:如果一個會話的總計連接時間達到了該限制值,當前事務被回滾,會話被終止并釋放所占用的資源。 會話所使用的SGA空間限制。
當一個會話或SQL語句占用的資源超過PROFILE文件中的限制時,Oracle將終止并回退當前的事務,然后向用戶返回錯誤的信息,如果受到的限制是會話級的,在提交或回退事務后,用戶會話將被終止;而受到調用級限制時,用戶會話還能夠繼續進行,只是當前執行的SQL語句將被終止。下面是PROFILE文件中對各種資源限制的參數。
SESSION_PER_USER:用戶可以同時連接的會話數量。如果用戶的連接數達到該限制,則試圖登錄時將產生一條錯誤信息。 CPU_PER_SESSION:限制用戶再一次數據庫會話期間可以使用的CPU時間,單位為百分之一秒。當達到該時間值后,系統就會終止該會話。如果用戶還需要執行操作,則必須重建立連接。 CUP_PER_CALL:該參數用戶限制每條SQL語句所能使用的CPU時間,參數值是一個整數,單位百分之一秒。 LOGICAL_READS_PER_SESSION:限制每個會話所能讀取的數據塊數量,包括從內存中讀取的數據塊和從磁盤中讀取的數據塊。 CONNECT_TIME:限制每個用戶連接到數據庫的最長時間,單位分鐘,當連接時間超出該設置時,該鏈接終止。 IDLE_TIME:該參數限制每個用戶會話連接到數據庫的最長時間。超過該空閑時間的會話,系統會終止該會話。
維護PROFILE文件
在Oracle中,PROFILE文件也是一種數據資源。DBA也可以使用相應的語句對其進行管理,包括修改配置文件、刪除配置文件按、激活或禁用配置文件。?
1.修改PROFILE文件?
在創建PROFILE文件之后,還可以使用ALTER PROFILE語句修改其中的資源參數和密碼參數,來看下面的例子。
----對password_lift_time文件(即PROFILE文件)的資源限制參數進行修改。
SQL> alter profile password_lift_time limit
? 2 ?cpu_per_session 20000
? 3 ?sessions_per_user 10
? 4 ?cpu_per_call 500
? 5 ?password_life_time 180
? 6 ?failed_login_attempts 10;
配置文件已更改
說明:對配置文件所做的修改只有在用戶開始新的會話時才會生效
2.刪除PROFILE文件?
使用DROP PROFILE語句可以刪除PROFILE文件。如果要刪除的配置文件已經被指定給了用戶,則必須在DROP PROFILE語句中使用CASCADE關鍵字,來看下面的例子。
----刪除被分配給dongfang這個用戶的password_lift_time配置文件。
SQL> drop profile password_lift_time cascade;
配置文件已刪除。
說明:如果為用戶指定的配置文件被刪除,則Oracle將自動為用戶重新指定DEFAULT配置文件
顯示PROFILE信息
在PROFILE文件被創建后,其信息被存儲在數據字典中。通過查詢這些數據字典,可以了解PROFILE文件的信息。?
1.顯示用戶的資源配置信息?
建立或修改用戶時,可以為用戶分配PROFILE文件,如果沒有為用戶分配PROFILE文件,Oracle會自動將DEFAULT分配給用戶。通過查詢數據字典視圖DBA_USERS,可以顯示用戶使用的PROFILE文件,下面來看一個例子。
----顯示用戶的DONGFANG所使用的PROFILE文件。
SQL> select profile from dba_users where username='DONGFANG';
PROFILE
------------------------
LOCK_ACCOUNT
2.顯示指定PROFILE文件的資源配置信息?
建立或修改PROFILE文件時,Oracle將會PROFILE參數存放在數據字典中。通過查詢DBA_PROFILES,可以顯示PROFILE的密碼限制、資源限制信息,下面來看一個例子。
----顯示RESOURCE_LIMIT文件的密碼和資源限制信息。
SQL> column limit for a20
SQL> select resource_name,resource_type,limit
? 2 ?from dba_profiles
3 ?where profile = 'LOCK_ACCOUNT';
========
總結
以上是生活随笔為你收集整理的Oracle用户管理学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ntdll.dll学习总结
- 下一篇: Oracle表空间离线在线切换和数据库关