ORACLE user profile配置/管理/維護
今天在新資料庫上面建立一個USER時,要求配置資源限制,很久沒有玩ORACLE了,這個東西還玩得差不多了。
user profile包括了兩部分內容,1.是資源的限制,但是這個預設是不生效的,要啟動(resource_limit為true)才生效。2.使用者密碼限制,這個配置後,再使用者下次登陸就生效。透過user profile配置的限制都是在使用者下次登陸時生效,對當前的session不生效。資料庫中有一個預設的profile,名字是DEFAULT,在11G前這個DEFAULT沒有任何的限制,但是從11G開始,對PASSWORD_LIFE_TIME 為180,FAILED_LOGIN_ATTEMPTS為10次。
資源的限制包括下面幾個部分
密碼限制由下面幾個部分組成
下面是詳細的說明
SESSIONS_PER_USER:指定每一個使用者最大可以併發sessions,如果達到了最大session後會報ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit錯誤
CPU_PER_SESSION:指定每一個SESSION總共使用CPU時間,單位是1/100秒,如果超過後會報下面的錯誤ORA-02392: exceeded session limit on CPU usage, you are being logged off
CPU_PER_CALL:每一次CALL使用的CPU時間,也就是一條SQL呼叫(a parse, execute, or fetch),單位是1/100秒,如果超過後會報ORA-02393: exceeded call limit on CPU usage。
CONNECT_TIME:限制一個session總的連線時間,單位為分鐘。如果超過最大值會報ORA-02399: exceeded maximum connect time, you are being logged off
IDLE_TIME:指定一個session空閒的時間,單位為分鐘。如果超過最大值會報ORA-02396: exceeded maximum idle time, please connect again
LOGICAL_READS_PER_SESSION:限制每一個session讀取logical塊的個數。
LOGICAL_READS_PER_CALL:限制一條SQL讀取logical塊的個數。如果超過最大值會報ORA-02395: exceeded call limit on IO usage
PRIVATE_SGA:限制一個session在sga中私有空間的分配。
COMPOSITE_LIMIT:指定一個session總的資源代價。
FAILED_LOGIN_ATTEMPTS:指定帳戶在被鎖之前可以使用錯誤密碼嘗試登陸的次數,預設是10次
PASSWORD_LIFE_TIME:指定密碼存活的天數,預設是180天。
PASSWORD_LOCK_TIME:登陸失敗過,帳戶被鎖定的天數。預設值是1天。
PASSWORD_GRACE_TIME:指密碼到期後,還可以使用多少天來登陸資料庫,預設是7天。
PASSWORD_VERIFY_FUNCTION:指定密碼驗證函式。如果為null就表示沒有。
PASSWORD_REUSE_TIME and PASSWORD_REUSE_MAX :這個兩個引數要一起配置才會生效,PASSWORD_REUSE_TIME指相同密碼被重用的間隔天數,PASSWORD_REUSE_MAX相同密碼再次被重用要求最低的密碼修改次數(不包括本次修改成重用密碼)
下面是開始測試:
測試環境:OS RHEL 5.6 X86_64 DB:11.2.0.2
1,建立profile
CREATE PROFILE test_profile LIMIT
SESSIONS_PER_USER 100
CPU_PER_SESSION 500
CPU_PER_CALL 500
CONNECT_TIME 3
IDLE_TIME 2
LOGICAL_READS_PER_SESSION 1000
LOGICAL_READS_PER_CALL 1000
COMPOSITE_LIMIT DEFAULT
PRIVATE_SGA 2
FAILED_LOGIN_ATTEMPTS 2
PASSWORD_LIFE_TIME 0.0017
PASSWORD_REUSE_TIME 0.0024
PASSWORD_REUSE_MAX 2
PASSWORD_LOCK_TIME 0.0017
PASSWORD_GRACE_TIME 1;
2.檢視profile的內容
SQL> set lines 100
SQL> col profile for a15
SQL> col resource_name for a30
SQL> col limit for a14
SQL> select * from dba_profiles where profile='TEST_PROFILE';
PROFILE RESOURCE_NAME RESOURCE LIMIT
--------------- ------------------------------ -------- --------------
TEST_PROFILE COMPOSITE_LIMIT KERNEL DEFAULT
TEST_PROFILE SESSIONS_PER_USER KERNEL 100
TEST_PROFILE CPU_PER_SESSION KERNEL 500
TEST_PROFILE CPU_PER_CALL KERNEL 500
TEST_PROFILE LOGICAL_READS_PER_SESSION KERNEL 1000
TEST_PROFILE LOGICAL_READS_PER_CALL KERNEL 1000
TEST_PROFILE IDLE_TIME KERNEL 2
TEST_PROFILE CONNECT_TIME KERNEL 3
TEST_PROFILE PRIVATE_SGA KERNEL 2
TEST_PROFILE FAILED_LOGIN_ATTEMPTS PASSWORD 2
TEST_PROFILE PASSWORD_LIFE_TIME PASSWORD .0017
PROFILE RESOURCE_NAME RESOURCE LIMIT
--------------- ------------------------------ -------- --------------
TEST_PROFILE PASSWORD_REUSE_TIME PASSWORD .0023
TEST_PROFILE PASSWORD_REUSE_MAX PASSWORD 2
TEST_PROFILE PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
TEST_PROFILE PASSWORD_LOCK_TIME PASSWORD .0017
TEST_PROFILE PASSWORD_GRACE_TIME PASSWORD 1
16 rows selected.
3 修改/檢視某個使用者的profile
SQL> select username,profile from dba_users where username='SCOTT';
USERNAME PROFILE
------------------------------ ---------------
SCOTT DEFAULT
SQL> alter user scott profile test_profile;
User altered.
SQL> select username,profile from dba_users where username='SCOTT';
USERNAME PROFILE
------------------------------ ---------------
SCOTT TEST_PROFILE
4 修改profile中的資源的值。
這裡包括兩部分的內容,1.修改成使用者指定的值,2.是修改成系統預設的值
#修改成使用者指定的值
SQL> select * from dba_profiles where profile='TEST_PROFILE' and RESOURCE_NAME='CPU_PER_SESSION'
2 ;
PROFILE RESOURCE_NAME RESOURCE LIMIT
--------------- ------------------------------ -------- --------------
TEST_PROFILE CPU_PER_SESSION KERNEL 500
SQL> alter profile test_profile limit cpu_per_session 100;
Profile altered.
SQL> select * from dba_profiles where profile='TEST_PROFILE' and RESOURCE_NAME='CPU_PER_SESSION';
PROFILE RESOURCE_NAME RESOURCE LIMIT
--------------- ------------------------------ -------- --------------
TEST_PROFILE CPU_PER_SESSION KERNEL 100
#修改成系統預設的值
SQL> alter profile test_profile limit cpu_per_session default;
Profile altered.
SQL> select * from dba_profiles where profile='TEST_PROFILE' and RESOURCE_NAME='CPU_PER_SESSION';
PROFILE RESOURCE_NAME RESOURCE LIMIT
--------------- ------------------------------ -------- --------------
TEST_PROFILE CPU_PER_SESSION KERNEL DEFAULT
5 刪除profile
當某個profile被刪除時,如果這個profile已經被分配給某個使用者,那麼我們在刪除的時候要加上cascade,並且已經被分配的使用者的profile會被自己修改成default profile。
SQL> select username,profile from dba_users where username='SCOTT';
USERNAME PROFILE
------------------------------ ---------------
SCOTT TEST_PROFILE
SQL> drop profile test_profile;
drop profile test_profile
*
ERROR at line 1:
ORA-02382: profile TEST_PROFILE has users assigned, cannot drop without CASCADE
SQL> drop profile test_profile cascade;
Profile dropped.
SQL> select username,profile from dba_users where username='SCOTT';
USERNAME PROFILE
------------------------------ ---------------
SCOTT DEFAULT
6。修改引數,使資源限制生效
這個引數預設值是false,是一個動態引數
SQL> show parameter resource_limit;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean FALSE
SQL> alter system set resource_limit=true;
System altered.
user profile這個比較操作比較簡單,重要的是要理解裡面引數的含意。
下面是資源限制達到最大值後的報錯提示。
[oracle@test dbmonitor]$ sqlplus scott/oracle
SQL*Plus: Release 11.2.0.2.0 Production on Sat Sep 8 21:26:38 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
sessions_per_user
ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit
cpu_per_session
ORA-02392: exceeded session limit on CPU usage, you are being logged off
CPU_PER_CALL;
ORA-00604: error occurred at recursive SQL level 1
ORA-02393: exceeded call limit on CPU usage
CONNECT_TIME
ORA-02399: exceeded maximum connect time, you are being logged off
IDLE_TIME
ERROR at line 1:
ORA-02396: exceeded maximum idle time, please connect again
logical_reads_per_session
ERROR:
ORA-02394: exceeded session limit on IO usage, you are being logged off
LOGICAL_READS_PER_CALL
ORA-02395: exceeded call limit on IO usage
©著作權歸作者所有:來自51CTO部落格作者7343696的原創作品,如需轉載,請註明出處,否則將追究法律責任
dba user profile oraORACLE 基礎
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2480/viewspace-2821226/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle OGG日常維護Oracle
- oracle user$Oracle
- oracle常用維護查詢Oracle
- Oracle OCP(29):PROFILEOracle
- ORACLE LOB大欄位維護Oracle
- CRM User Status profile中Business Transaction欄位的用途
- Oracle OCP(28):USEROracle
- ORACLE 11G 維護視窗和自動維護任務Oracle
- 【PDB】Oracle pdb維護常用sql命令OracleSQL
- oracle 11g data guard維護Oracle
- Oracle DG管理Broker配置Oracle
- 管理與維護Linux系統Linux
- Profile配置和載入配置檔案
- 如何解讀Oracle的LOAD PROFILEOracle
- Oracle listener log配置與管理Oracle
- 六、資料庫管理與維護資料庫
- Oracle統計資訊的收集和維護Oracle
- SpringBoot配置Profile多環境支援Spring Boot
- Spring Boot - Profile不同環境配置Spring Boot
- Oracle GoldenGate同步服務歸檔空間維護OracleGo
- Oracle OCP(31):USER & ROLE & PRIVILEGE 其它Oracle
- Oracle DG Broker配置的管理週期Oracle
- 《大型資料庫技術》MySQL管理維護資料庫MySql
- 專案二 管理與維護Linux系統Linux
- 專案二 管理與維護Linux系統Linux
- CentoS6停止維護-yum源配置問題CentOS
- Oracle SQL Profile固定執行計劃的方法OracleSQL
- Profile標準化資料庫管理資料庫
- 4.4 停止和重新啟動Oracle Restart進行維護操作OracleREST
- LDAP落地實戰(一):OpenLDAP部署及管理維護LDA
- 系統維護和配置程式:OnyX for Mac中文版Mac
- [PHP 安全] OWASP 維護的 PHP 安全配置速查表PHP
- Git 修改已初始化配置過的 user.name user.emailGitAI
- 史上最全近百條Oracle DBA日常維護SQL指令碼指令OracleSQL指令碼
- Oracle日曆表維護實踐:建表、準備資料Oracle
- 使用Profile標準化資料庫管理資料庫
- [MySQL光速入門]029 資料庫管理和維護MySql資料庫
- Oracle DG 管理Broker配置成員的狀態Oracle