1. 程式人生 > >ORACLE 使用者、Profile 及許可權

ORACLE 使用者、Profile 及許可權

使用者管理

一、建立使用者:建立的新使用者是沒有任何許可權的,甚至連登陸的資料庫的許可權都沒有,需要為其指定相應的許可權。

 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、修改口令字:Alter user acc01 identified by "12345";
 2、修改使用者預設表空間:Alter user acc01 default tablespace users;
 3、修改使用者臨時表空間:Alter user acc01 temporary tablespace temp_data;
 4、強制使用者修改口令字:Alter user acc01 password expire;
 5、將使用者加鎖:Alter user acc01 account lock; // 加鎖
         Alter user acc01 account unlock; // 解鎖

三、刪除使用者

 SQL>drop user 使用者名稱; //使用者沒有建任何實體
 SQL>drop user 使用者名稱 CASCADE; // 將使用者及其所建實體全部刪除
 *1. 當前正連線的使用者不得刪除。

四、監視使用者:
 1、查詢使用者會話資訊:select username, sid, serial#, machine from v$session;
 2、刪除使用者會話資訊:Alter system kill session 'sid, serial#';

 3、查詢使用者SQL語句: select user_name, sql_text from v$open_cursor;

使用者Profile


一、Profile目的:


  Oracle系統中的profile可以用來對使用者所能使用的資料庫資源進行限制,使用Create Profile命令建立一個Profile,用它來實現對資料庫資源的限制使用,如果把該profile分配給使用者,則該使用者所能使用的資料庫資源都在該profile的限制之內。具體管理內容有:CPU的時間、I/O的使用、IDLE TIME(空閒時間)、CONNECT TIME(連線時間)、併發會話數量、口令機制等。

二、條件:

  建立profile必須要有CREATE PROFILE的系統許可權。為使用者指定資源限制,必須:

  1.動態地使用alter system或使用初始化引數resource_limit使資源限制生效。該改變對密碼資源無效,密碼資源總是可用。 
    SQL> show parameter resource_limit
    SQL> alter system set resource_limit=true; 
  2.使用create profile建立一個定義對資料庫資源進行限制的profile。
  3.使用create user 或alter user命令把profile分配給使用者。

三、檢視系統的預設PROFILE

  1、通過dba_profiles檢視檢視一下系統中預設都有哪些PROFILE
  資料庫建立以後,系統中只會存在一個名為DEFAULT的預設PROFILE,在使用者建立之後,如果不做特殊指定,每個使用者的PROFILE都會預設的使用個預設的PROFILE。
  [email protected]> select distinct profile from dba_profiles;

  2、全面檢視這個 PROFILE 包含哪些限制定義
  [email protected]> col PROFILE for a12
  [email protected]> col RESOURCE_NAME for a25
  [email protected]> col LIMIT for a15
  [email protected]> select * from dba_profiles order by 1,2;

  3、結論:DEFAULT PROFILE 只對密碼的錯誤嘗試次數做了限制(最多可以錯誤輸錯10次密碼)。如想改變限制條件,有兩種方法:第一種方法是對預設的PROFILE做個性化調整;第二種方法是重新定製一個新的PROFILE。

四、建立 profile 的語法如下:

  CREATE PROFILE profile
  LIMIT { resource_parameters 對資源的限制
    | password_parameters   對密碼的限制
    }... ;

  <resource_parameters> 
  {{ SESSIONS_PER_USER   每個使用者名稱並行會話數
   | CPU_PER_SESSION    每會話可用的CPU時間,單位0.01秒
   | CPU_PER_CALL     一次SQL呼叫(解析、執行和獲取)允許的CPU時間
   | CONNECT_TIME     會話連線時間(分鐘)
   | IDLE_TIME       會話空閒時間(分鐘),超出將斷開
   | LOGICAL_READS_PER_SESSION
   | LOGICAL_READS_PER_CALL
   | COMPOSITE_LIMIT   “組合打法”
   }
   { integer | UNLIMITED | DEFAULT }
   | PRIVATE_SGA
   { integer [ K | M ] | UNLIMITED | DEFAULT }
  }

  < password_parameters >
  {{ FAILED_LOGIN_ATTEMPTS 被鎖定前的試錯次數
   | PASSWORD_LIFE_TIME   密碼使用天數,預設180天
   | PASSWORD_REUSE_TIME   密碼可重用的間隔時間(結合PASSWORD_REUSE_MAX)
   | PASSWORD_REUSE_MAX   密碼最大改變次數(結合PASSWORD_REUSE_TIME)
   | PASSWORD_LOCK_TIME   超過試錯次數後,被鎖定的天數,預設1天
   | PASSWORD_GRACE_TIME   密碼過期後還可使用原密碼的天數
   }
   { expr | UNLIMITED | DEFAULT }
   | PASSWORD_VERIFY_FUNCTION
     { function | NULL | DEFAULT }
  }

五、部分解釋:

  profile:配置檔案的名稱。Oracle資料庫以以下方式強迫資源限制:
  1.如果使用者超過了connect_time或idle_time的會話資源限制,資料庫就回滾當前事務,並結束會話。使用者再次執行命令,資料庫則返回一個錯誤
  2.如果使用者試圖執行超過其他的會話資源限制的操作,資料庫放棄操作,回滾當前事務並立即返回錯誤。使用者之後可以提交或回滾當前事務,必須結束會話。 
  提示:可以將一條分成多個段,如1小時(1/24天)來限制時間,可以為使用者指定資源限制,但是資料庫只有在引數生效後才會執行限制。 

  Unlimited:分配該profile的使用者對資源使用無限制,當使用密碼引數時,unlimited意味著沒有對引數加限制。 
  Default:指定為default意味著忽略對profile中的一些資源限制,Default profile初始定義對資源不限制,可以通過alter profile命令來改變。 

  Resource_parameter部分

  Logical_reads_per_session:每會話允許讀的資料塊的數目,包括從記憶體和磁碟讀的所有資料塊。 
  Logical_read_per_call:一次執行SQL(解析、執行和提取)呼叫允許讀的資料塊最大數目。
  Private_sga:指定一個會話可以在共享池(SGA)中所允許分配的最大空間,以位元組為單位。(該限制只在使用共享伺服器結構時才有效,會話在SGA中的私有空間包括私有的SQL和PL/SQL,但不包括共享的SQL和PL/SQL)。
  Composite_limit:指定一個會話的總的資源消耗,以service units單位表示。Oracle資料庫以有利的方式計算cpu_per_session,connect_time,logical_reads_per_session和private-sga總的service units

  Password_parameter部分:

  Password_life_time:指定同一密碼所允許使用的天數。如果同時指定了password_grace_time引數,如果在grace period內沒有改變密碼,則密碼會失效,連線資料庫被拒絕。如果沒有設定password_grace_time引數,預設值unlimited將引發一個數據庫警告,但是允許使用者繼續連線。

  Password_reuse_time和password_reuse_max:這兩個引數必須互相關聯設定,password_reuse_time指定了密碼不能重用前的天數,而password_reuse_max則指定了當前密碼被重用之前密碼改變的次數。兩個引數都必須被設定為整數。
  1.如果為這兩個引數指定了整數,則使用者不能重用密碼直到密碼被改變了password_reuse_max指定的次數以後在password_reuse_time指定的時間內。
  如:password_reuse_time=30,password_reuse_max=10,使用者可以在30天以後重用該密碼,要求密碼必須被改變超過10次。 
  2.如果指定了其中的一個為整數,而另一個為unlimited,則使用者永遠不能重用一個密碼。
  3.如果指定了其中的一個為default,Oracle資料庫使用定義在profile中的預設值,預設情況下,所有的引數在profile中都被設定為unlimited,如果沒有改變profile預設值,資料庫對該值總是預設為unlimited。
  4.如果兩個引數都設定為unlimited,則資料庫忽略他們。

  Password_grace_time:指定寬限天數,資料庫發出警告到登陸失效前的天數。如果資料庫密碼在這中間沒有被修改,則過期會失效。
  Password_verify_function:該欄位允許將複雜的PL/SQL密碼驗證指令碼做為引數傳遞到create profile語句。Oracle資料庫提供了一個預設的指令碼,但是自己可以建立自己的驗證規則或使用第三方軟體驗證。 對Function名稱,指定的是密碼驗證規則的名稱,指定為Null則意味著不使用密碼驗證功能。如果為密碼引數指定表示式,則該表示式可以是任意格式,除了資料庫標量子查詢。 

六、嘗試建立一個混合型的PROFILE(包含資源限制和密碼限制):
  
  [email protected]> CREATE PROFILE sec_profile LIMIT
  2     SESSIONS_PER_USER          UNLIMITED
  3     CPU_PER_SESSION            UNLIMITED
  4     CPU_PER_CALL               6000
  5     CONNECT_TIME               60
  6     LOGICAL_READS_PER_SESSION  DEFAULT
  7     LOGICAL_READS_PER_CALL     6000
  8     COMPOSITE_LIMIT            6000000
  9     PRIVATE_SGA                66K
  10    FAILED_LOGIN_ATTEMPTS      6
  11    PASSWORD_LIFE_TIME         60
  12    PASSWORD_REUSE_TIME        60
  13    PASSWORD_REUSE_MAX         5
  14    PASSWORD_LOCK_TIME         1/24
  15    PASSWORD_GRACE_TIME        10
  16    PASSWORD_VERIFY_FUNCTION   verify_function
  17  /
  CREATE PROFILE sec_profile LIMIT
  *
  ERROR at line 1:
  ORA-07443: function VERIFY_FUNCTION not found

  出錯原因:VERIFY_FUNCTION函式不存在,要事先建立該函式,VERIFY_FUNCTION函式是通過utlpwdmg.sql指令碼建立的,該指令碼所在的目錄是$ORACLE_HOME/rdbms/admin/

  使用utlpwdmg.sql指令碼建立 VERIFY_FUNCTION 密碼複雜度校驗函式:
  [email protected]> @?/rdbms/admin/utlpwdmg.sql
  Function created.
  Profile altered.

  指令碼中,verify_function 函式的密碼複雜性校驗規則如下:
  1)密碼最小長度為4個字元
  2)密碼不能和使用者名稱相同
  3)密碼要包含至少一個字元、一個數字和一個特殊字元
  4)密碼需要至少有3個字元與之前的口令不相同

  實驗中使用了幾乎所有引數,惟一沒有包含的是IDLE_TIME,它將繼承 DEFALT 中的定義
  對上面建立的PROFILE逐行做一下詮釋,以便加深理解:
  第 2行:對使用者的併發連線會話數不做限制
  第 3行:對於連線到使用者的每一個session的CPU時間的使用不做限制
  第 4行:一次呼叫消耗的CPU時間不能超過60秒(不超過一分鐘)
  第 5行:連線到使用者的每次會話時間不能超過60分鐘(不超過一個小時)
  第 6行:一次會話使用的物理讀與邏輯讀資料塊總量與DEFAULT profile中定義保持一致
  第 7行:一次呼叫使用的物理讀與邏輯讀資料塊總量不超過6000個數據塊
  第 8行:一次會話總的資源消耗不超過6000000個服務單元(service units)
  第 9行:一次會話在SGA中不能分配超過66K的空間
  第10行:帳戶被鎖定之前允許6次的錯誤嘗試
  第11行:超過此生命週期後密碼作廢
  第12行:密碼重用時間60天
  第13行:密碼重用之前密碼需要完成5次改變
  第14行:超過錯誤嘗試次數後,使用者將被鎖定1小時
  第15行:當密碼過期之後原密碼還可以使用10天
  第16行:使用密碼複雜度校驗函式verify_function對密碼做檢查

  第12行和第13行,兩個策略搭配使用後,只有完成 5 次密碼修改且已超過60天后,之前的密碼才能被再次使用

  刪除 PROFILE 很簡單,語法:DROP PROFILE profile [CASCADE];
  如果建立的PROFILE已經授權給了具體的使用者,則需用CASCADE選項級聯的收回相應限制,在收回這些限制資訊後將以系統預設的PROFILE對該使用者進行限制。

七、PROFILE 何時生效

  PROFILE中有關密碼的限制永遠生效,不受限制。
  PROFILE中有關資源的限制與resource_limit引數的設定有關,為TRUE時生效,為FALSE時(預設)無效。

八、將配置檔案分配給使用者:
  SQL> alter user dinya profile sec_profile;
  SQL> alter user dinya profile default;
  SQL> select USERNAME,PROFILE from dba_users where USERNAME = 'dinya';

九、11g oracle 使用者密碼過期問題

  11g之前版本,預設使用者沒有密碼過期限制,在Oracle 11g 中預設 profile 密碼過期時間是180天

  檢查:select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';
  過期的密碼可用 alter user userXXX identified by xxx; 解決,可修改為和以前一樣

  如果想設定密碼不過期,可用管理員登陸,執行下面命令:
  ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

  其他相關引數:
  select * from dba_profiles where profile='DEFAULT' and RESOURCE_NAME like 'PASSWORD%';

使用者許可權

一、許可權分類:
 系統許可權:系統規定使用者使用資料庫的許可權。(系統許可權是對使用者而言)。
 實體許可權:某種許可權使用者對其它使用者的表或檢視的存取許可權。(是針對表或檢視而言的)。

二、系統許可權管理:

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; --where grantee='SYS'; 
 SQL> select * from dba_sys_privs;
 SQL> select * from role_sys_privs; --where role='DBA';

 刪除使用者: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;

 系統許可權無級聯,即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則可以查到,因為他可以訪問。

3. 將表的操作許可權授予全體使用者:
 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;  // 授出許可權的表(授出的許可權)

4. 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;
 
5. 實體許可權傳遞(with grant option):
 user01:
 SQL> grant select, update on product to user02 with grant option; // user02得到許可權,並可以傳遞。

6. 實體許可權回收:
 user01:
 SQL>Revoke select, update on product from user02; //傳遞的許可權將全部丟失。

相關推薦

ORACLE 使用者Profile 許可權

使用者管理一、建立使用者:建立的新使用者是沒有任何許可權的,甚至連登陸的資料庫的許可權都沒有,需要為其指定相應的許可權。 SQL> Create User username   Identified by password   Default Tablespace ta

使用Navicat for Oracle新建表空間使用者許可權賦予

Navicat for Oracle是有關Oracle資料庫的客戶端工具。通過這個客戶端,我們可以圖形方式對Oracle資料庫進行操作。   說明我們此次試驗的Oracle資料庫版本是Oracle 10G Express Edition,也即是我們平時所說的Oracle

Oracle——使用者角色和許可權資訊的檢視總結

Oracle在sys使用者方案中內建了許多檢視,我們可以利用它們方便地檢視系統相關的資訊。在呼叫這些檢視的時候我們可以不加schema,以下是一些 關於使用者、角色和許可權資訊的檢視總結: (1)all_users檢視:可以檢視當前使用者可以看到的所有使用者 (2)

Oracle Archivelog檢視日誌分析

編寫時間:2015年4月16日星期四 編寫人:蝸牛 QQ  295013648 說明Archivelog,也就是我們通常所說的歸檔,那什麼是歸檔,歸檔是怎麼產生的,其作用又是什麼,歸檔檔案中到底存在什麼樣的內容,這些都是作為資料庫管理員的我們應該知道,並且能夠應用到工作

oracle 建立表空間新使用者許可權

給新建立的使用者分配許可權, 如:"GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,    DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,       DBA,CONNECT,RESO

使用者管理Oracle資料庫的使用者建立刪除等;使用者角色許可權的授予與回收等;使用者的資訊查詢許可權與角色的資訊查詢。

(1)Oracle中建立新的使用者使用create user語句,一般是具有dba(資料庫管理員)的許可權才能使用。如在sql plus中以scott使用者建立使用者的命令如下:Create user xiaoming identified by m123;(注意oracle

oracle em企業管理器的安裝配置相關問題

密碼 技術分享 分享 control spa alt .com 企業管理 gre 2017-05-10 一、配置ORACLE_UNQNAME環境變量 二、重建EM資料庫:emca -repos recreate 三、配置EM賬號密碼:DBSNMP、SYSMAN 四、配置EM

Oracle 12c Windows安裝介紹簡單使用(圖文)

htm 編程 閱讀 arch 用戶 upgrade plsql windows安裝 條件 1、下載 地址為:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/inde

關於@Profile@Conditional@Primary@Qualifier@Scope等實現高階裝配的spring註解

1、關於@Profile註解的介紹 @Profile註解主要用在針對不同環境而條件選擇的注入bean 在開發過程中由於環境的不同,我們可能在針對某些功能,需要開發不同的實現,然而在某種環境中,只能啟用其中一種實現,其他的實現處於不啟用的狀態。這個時候我們在需要建立的bean上新增@Profi

[轉載]Oracle使用者建立許可權設定

出處:https://www.cnblogs.com/buxingzhelyd/p/7865194.html   許可權:   create session  允許使用者登入資料庫許可權   create table   允許使用者建立表許可權   unlim

實驗目的: 1理解使用者與模式的概念,掌握oracle中使用者管理的基本方法 2理解系統許可權、物件許可權的概念,掌握分配許可權的方法 3理解角色的概念,掌握角色的應用方法 實驗內容: 一使用者

撰寫人——軟體二班——陳喜平 一、使用者管理與應用 1、檢視使用者與模式 show USER; 2、建立使用者 sqlplus sys/[email protected] as sysdba CREATE USER t16436220 IDENTIFIED B

Sap許可權相關設定控制傳輸

1、許可權相關概念簡介 一、首先我們先來介紹以下這幅圖(PFCG),這裡麵包含幾個許可權相關的概念。 以上圖為例,我們來簡單的介紹上圖中的幾個概念: 1、Role:一堆TCODE的集合,當然還包含有TCODE必備的“許可權物件”、“許可權欄位”、“欄

1shell 重定向使用者許可權管理

1、重定向操作 1.1、< 將命令中接收輸入的途徑由預設的鍵盤更改為指定的檔案 1.2、 > 將命令的結果覆蓋地寫入檔案中,而不在螢幕上顯示 1.3、 >> 將命令的結果追加到指定檔案 1.4、 2> 將錯誤資訊覆蓋地寫入指定檔案中 1.5、 2>&

oracle序列的增使用

----------------------------------------------------------------------建立序列:示例:CREATE SEQUENCE SEQ_SSSS #建立序列名為SEQ_SSSS的序列INCREMENT BY 1 #增值值為1(負數表示遞減,如-1)S

Linux基礎02:磁碟操作,檔案許可權檔案資料夾操作網路服務

1.Linux磁碟與U盤操作 1.1 顯示系統的磁碟空間用量 ##du命令也是檢視使用空間的,但是與df命令不同的是Linux du命令是對檔案和目錄磁碟使用的空間的檢視 du -sh ##查目錄使用大小(-s表示總結) ## du -sh /bin ##df命令用於顯示磁碟分割槽

特殊許可權set_uidset_gidstick_bit(使用不多,瞭解)

set_uid存放密碼的檔案:/etc/shadow ![](http://i2.51cto.com/images/blog/201812/04/c0dc4eaedcabd4206fca25bdce8c729f.png?x-oss-process=image/watermark,si

oracle使用者建立授權和許可權設定(關於Oracle許可權2)

許可權: create session create table unlimited tablespace connect resource dba 例: #sqlplus /nolog SQL> conn / as sysdba; SQL>

第七單元 使用者群組許可權的深入討論

怎樣檢視檔案的許可權  ls命令詳解 root使用者及檔案的安全控制 什麼是root使用者 使用者分類 檔案操作許可權 檔案操作許可權的字元表示 chown chgrp 使用符號表示法設定檔案或目錄上的許可權 chmod命令的功能 chmod命令的-R選項 什麼是符號表示法 許可權狀態的3個部分

Oracle給使用者賦予dba許可權並且賦予建立檢視查詢表的許可權

1、賦予dba的許可權 grant dba to user; 2、在建立使用者的時候如果直接給使用者DBA許可權,那麼在B使用者中可以直接查詢A使用者的表,但是在建立檢視時就會報無許可權, 在這種情況下需要再在被訪問的A使用者裡面去給予要訪問該表的B使用者授權。 解決

分享知識-快樂自己:註冊使用者密碼加密登入驗證許可權驗證

***********************以下內容僅作為參考使用:********************************* 1、使用者註冊時,將使用者設定的密碼加密後存入資料庫中(顯然密碼不能簡單地用md5加密一次或者乾脆不加密,這些都是會暴露使用者隱私的,甚至是觸動使用者的利益): 加密密