作為程式員,oracle 資料庫是我們必須學習的 ,下面我將自己學到的基礎知識總結一下,希望分享學習,指教!
在將資料庫安裝好後,我們會得到一個預設的資料庫,我的資料庫預設名是orcl,並且會得到三個預設的使用者名稱,分別是sys、system、scott。sys預設的登陸密碼是manager、system預設登入密碼是change_on_install。其中,管理資料庫的使用者主要是sys和system,這兩個超級使用者的關係如同是 董事長和總經理的關係,當然 Sys是董事長,System是總經理,這下你知道誰的權利更大了吧!
Sys:所有的Oracle資料字典和視圖都主要存放在Sys使用者中,由資料庫自己維護,任何使用者都不能手動更改。這個超級使用者擁有dba、sysdba、sysoper角色和許可權,是oracle中許可權最高的使用者,相當於Microsoft Sql Server 中的Sa使用者。當然,sys登陸時必須以sysdba、sysoper形式登陸,即 conn sys/manager as sysdba或則 conn sys/manager as sysoper。
System:用於存放次一級的內部資料,擁有dba、sysdba的角色或系統許可權。正常登陸時以dba使用者登陸的,但如果以sysdba登陸,實質上任然是以sys使用者登陸的。
SQL> conn system/change_on_install as sysdba;Connected to Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 Connected as SYS
當我們需要建立新的新的使用者時,可以用以下代碼建立新的使用者,其中xianrongbin是我建立的使用者名稱,123是此使用者的登陸密碼。
SQL> create user xianrongbin identified by 123;
然後,有了新建立的使用者後,我們卻不能用此賬戶登陸資料庫的,這是為什麼呢?這裡打個比方:給A人封了一個司令的官銜,但卻沒有給他任何權利,那A人能在軍隊幹什麼了,因此,我們必須要個這個使用者賦予一定的許可權,那麼在這裡我們就要引入角色和許可權這連個基本概念了。
我的理解是----許可權:是指為了保證職責的有效履行,對某事項進行決策的範圍和程度,說白了就是能幹什麼事。角色:就是許可權的集合,是擁有多項許可權的,一個或多個許可權。
因此,我們建立一個使用者後,也應該給於其分配一些許可權。角色分為預定義角色和自訂角色。我們常用的角色是 connect、resource、dba三種角色。許可權也分為兩種,系統許可權和對象許可權。系統許可權 描述使用者對資料庫訪問的許可權 ;對象許可權是 使用者對其他使用者的資料對象操作的許可權。
其中connect 角色擁有的許可權是 alter session、create cluster、create database link、create table、create view、create sequence。
resource可以讓使用者在任何一個資料表空間建表,resource 角色隱含了 unlimited tablespace 系統許可權,擁有create cluster、create indextype、create table、create sequence、create type、create procedure、create trigger
dba具有所有的系統許可權,但不具備 sysdba sysoper的特權,啟動和關閉資料庫、建立角色。
因此,建立使用者後必須賦予其許可權,才能夠登入資料庫,命令語句如下:
SQL> grant connect to xianrongbin;
然後再次登入才能夠登入上去資料庫!
如果你希望刪除這個使用者,則使用如下命令語句。在刪除使用者時候,如果刪除的使用者已經有表了 那麼就需要在刪除的時候帶一個參數 cascade。
SQL> drop user xianrongbin;
接下來是建立角色了,建立角色的命令如下
SQL> create role role1 not identified; ---不用驗證方式
SQL> create role role2 identified by m123; --驗證的方式
角色建立後,但並沒有許可權,因此必須授予相應的系統許可權和對象許可權,命令如下
SQL> grant owb_user to role1;
刪除角色一般是dba 來執行的,如果是其他使用者則要求該使用者具有 drop any role系統許可權;
SQL> drop role role2;--刪除角色
使用 select * from dba_roles 可以顯示使用者中所有的角色。
使用命令語句 select privilege,admin_option from role_sys_privs where role='角色名稱' 可以顯示角色具有的系統許可權,這裡用角色OLAP_USER查看系統許可權。
SQL> select privilege,admin_option from role_sys_privs where role='OLAP_USER';
PRIVILEGE ADMIN_OPTION
---------------------------------------- ------------
CREATE CUBE BUILD PROCESS NO
CREATE CUBE DIMENSION NO
CREATE JOB NO
CREATE MEASURE FOLDER NO
CREATE TABLE NO
CREATE VIEW NO
CREATE SEQUENCE NO
CREATE CUBE
好的,今天就總結到這裡吧!