profile檔案 密碼檔案 游標共享的介紹

2021-09-06 02:05:05 字數 4104 閱讀 4763

2023年12月24日 13:18:38

profile檔案的介紹:

1、設定乙個使用者只能有乙個會話

sql> create profile one_session limit sessions_per_user 1;

sql> alter user lttfm profile one_session;

sql> alter system set resource_limit=true; --限制生效的前提(resource_limit=true)

做了以上設定後,若lttfm使用者已經登陸,再次用lttfm登陸會提示錯誤(ora-02391:exceeded simultaneous sessions_per_user limit)則不能再次登陸即lttfm使用者不能開啟兩個會話。

2、檢視資訊

select * from dba_users;--檢視使用者的引數

select * from dba_profiles;--顯示所有profile檔案及其限制

select * from user_password_limits;--描述指定給使用者的profile中的口令限制情況

select * from user_resource_limits;--描述指定給使用者的profile中的資源限制情況

select *from resource_cost;--列舉每個資源的價值 3

、profile引數修改

--修改profile引數

alter profile one_session limit sessions_per_user 10;

--刪除乙個新的尚未分配給使用者的profile

drop profile one_session

--刪除已建立的profile,如果已經指定了使用者則要加上cascade關鍵字

drop profile one_session cascade

注:default profile不可以被刪除

4、profile的引數含義

composite_limit:乙個會話的資源成本限制,cpu_per_session, connect_time, logical_reads_per_session, and private_sga

sessions_per_user:乙個使用者允許同時(併發)會話的總數,超過後系統禁止該使用者的後續會話

cpu_per_session:定義了乙個session占用的cpu的時間(1/100 秒),當達到這個限制使用者不能在此會話中執行任何操作,此時必須先斷開連線,再連線才行

cpu_per_call:限制每次呼叫sql語句期間(parse、execute、fetch)可用的cpu時間總量,單位是百分之一秒。達到限制時語句以報錯結束。不同於       cpu_per_session的是,沒達到cpu_per_session限制,還可以進行新的查詢

logical_reads_per_session:乙個會話允許讀寫的邏輯塊的數量限制

logical_reads_per_call:一次呼叫的sql期間,允許讀資料庫塊數限制

idle_time:乙個連線會話的最長連線時間;當使用者空閒時間超過idle_time指定的時間,oracle將回滾當前事務,並且結束他的會話

connect_time:乙個連線會話的最長連線時間(分鐘);當使用者會話時間超過connect_time指定的時間,oracle將回滾當前事務,並且結束他的會話

private_sga:乙個會話允許分配的最大sga大小,使用k/m定義

failed_login_attempts:當連續登陸失敗次數達到該引數指定值時,使用者被加鎖;

password_life_time:口令的有效期(天),預設為unlimited

password_reuse_time:口令被修改後原有口令隔多少天被重新使用,預設為unlimited

password_reuse_max:口令被修改後原有口令被修改多少次才允許被重新使用

password_verify_function:口令效驗函式

password_lock_time:帳戶因failed_login_attempts鎖定時,加鎖天數

password_grace_time:口令修改的寬限期(天)

密碼檔案

1、密碼檔案的使用

sqlplus "/ as sysdba" --可以直接登陸本機資料庫,但是登陸遠端資料庫時失敗(error:ora-01031: insufficient privileges)

如果登陸遠端資料庫就要寫上使用者名稱密碼,而且該使用者名稱具有sysdba許可權

建立密碼檔案

orapwd file=《密碼檔名》 password =《登陸密碼》 entries=《允許使用該密碼檔案的最大使用者數》

密碼檔案位置

d:\oracle\product\10.2.0\db_1\database下的pwdsid.ora,其中sid代表相應的oracle資料庫系統識別符號

2、密碼檔案的remote_login_passwordfile引數

有了密碼檔案之後,需要設定初始化引數remote_login_passwordfile來控制密碼檔案的使用狀態。

sql> show parameter password --檢視密碼檔案的狀態

none:指示oracle系統不使用密碼檔案,特權使用者的登入通過作業系統進行身份驗證;

exclusive:指示只有乙個資料庫例項可以使用此密碼檔案。只有在此設定下的密碼檔案可以包含有除internal/sys以外的使用者資訊,

即允許將系統許可權sysoper/sysdba授予除internal/sys以外的其他使用者。

shared:指示可有多個資料庫例項可以使用此密碼檔案。在此設定下只有internal/sys帳號能被密碼檔案識別,即使檔案中存有其他使用者的資訊,

也不允許他們以sysoper/sysdba的許可權登入。此設定為預設值。

--修改'remote_login_passwordfile'引數值

alter system set remote_login_passwordfile=exclusive scope=spfile

--授權給其它使用者

建立相應使用者帳號,對其授權(包括sysoper和sysdba):

grant sysdba to user_name;

游標共享的使用

預設情況下,cursor_sharing的引數為exact

select * from i_manhole_info where g3e_id=50041841;

--開啟游標共享

alter session set cursor_sharing=force;

--再查詢

select * from i_manhole_info where g3e_id=50041841;

--通過sql_text表檢視前後兩次查詢的結果

select * from v$sql where sql_text like 'select * from i_manhole_info%';

查詢結果:

select * from i_manhole_info where g3e_id=50041841;

select * from i_manhole_info where g3e_fid=:"sys_b_0" --游標共享開啟後將直接變數刪除,採用繫結變數

--停止游標共享

alter session set cursor_sharing=exact;

備註:一般情況下,我們不採用通過開啟游標共享來調整效能

20151116 密碼檔案

檢視oracle資料庫版本號 select from v version 檢視當前使用者 select user from dual show user sysdba不是許可權,當使用者以sysdba身份登入資料庫時,登入使用者都會變成sys.sysdba身份登入可以開啟關閉資料庫,建立spfile...

oracle密碼檔案

很多時候需要對oracle密碼檔案進行重建,oracle對密碼檔案有著較為嚴格的要求,比如檔名,檔名大小寫等等,有一次因oracle sid的大小寫折騰了很久,現記錄如下 linux平台 orapwd file oracle home dbs orapw oracle sid password en...

oracle密碼檔案

很多時候需要對oracle密碼檔案進行重建,oracle對密碼檔案有著較為嚴格的要求,比如檔名,檔名大小寫等等,有一次因oracle sid的大小寫折騰了很久,現記錄如下 linux平台 orapwd file oracle home dbs orapw oracle sid password en...