1. 程式人生 > >Oracle建立表空間、建立使用者、授權、授權物件的訪問以及檢視許可權

Oracle建立表空間、建立使用者、授權、授權物件的訪問以及檢視許可權



安裝完oracle軟體,可以用
使用者名稱sys
密碼:建立oracle例項時的密碼
伺服器型別:DBA
ORCL 為安裝軟體時的預設命名
即可進入伺服器


使用以下方法建立新的使用者名稱
使用 ccflow - ccflow - orcl - normal 此係列配置即可登入


在進行匯入資料時,會發生只能由DBA匯入到DBA,
此時需要的操作為:為ccflow使用者授權 dba 許可權
grant connect,resource,dba to ccflow


資料庫匯入命令
在cmd中 ,用imp  ccflow(使用者名稱)/ccflow(密碼)@orcl file=c:/data/data.dmp(為現有dmp檔案的儲存路徑,可以拖拽至該cmd環境中,路徑不要存在中文字元即可) log=c:\gengbao.log(為匯入時自定義生成的日誌檔案)  full=y (完全匯入) ignore=y (忽略衝突)


資料庫匯出命令
在cmd中,用exp ccflow(使用者名稱)/ccflow(密碼)@orcl file=c:/data/data.dmp(為檔案的儲存路徑) log=c:\gengbao.log(為匯出時自定義生成的日誌檔案) 


1.建立臨時表空間
Oracle臨時表空間主要用來做查詢和存放一些緩衝區資料。臨時表空間消耗的主要原因是需要對查詢的中間結

果進行排序。
臨時表空間的主要作用:
索引create或rebuild
Order by 或 group by
Distinct 操作
Union 或 intersect 或 minus
Sort-merge joins

CREATE TEMPORARY TABLESPACE "TEST_TEMP"
    TEMPFILE 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/GIS/TEST_DATA.ora'
    SIZE 20M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;

【例】
在E盤建立了ORACLE資料夾

CREATE TEMPORARY TABLESPACE "TEST_TEMP"
    TEMPFILE 'E:/ORACLE/TEST_DATA.ora'
    SIZE 20M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;


2.建立使用者表空間
CREATE TABLESPACE "TEST_DATA"
    LOGGING
    DATAFILE 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/GIS/TEST_DATA.ora'
    SIZE 20M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;

【例】
在E盤建立 新的ora檔案

CREATE TABLESPACE "TEST_DATA"
    LOGGING
    DATAFILE 'E:/ORACLE/TEST_DATA2.ora'
    SIZE 20M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;

3.建立使用者並設定其表空間
username:usertest
password:userpwd

CREATE USER usertest IDENTIFIED BY userpwd
DEFAULT TABLESPACE TEST_DATA
TEMPORARY TABLESPACE TEST_TEMP;

【例】
使用者名稱為ccflow 密碼為ccflowpwd
CREATE USER ccflow IDENTIFIED BY ccflowpwd
DEFAULT TABLESPACE TEST_DATA
TEMPORARY TABLESPACE TEST_TEMP;

4.給使用者授權
GRANT
  CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,
  ALTER ANY TABLE, ALTER ANY PROCEDURE,
  DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,
  SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
TO username;
【例--開始】
使用者名稱為 ccflow
GRANT
  CREATE SESSION, CREATE ANY TABLE, CREATE ANY VIEW ,CREATE ANY INDEX, CREATE ANY PROCEDURE,
  ALTER ANY TABLE, ALTER ANY PROCEDURE,
  DROP ANY TABLE, DROP ANY VIEW, DROP ANY INDEX, DROP ANY PROCEDURE,
  SELECT ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
TO ccflow;

【例--結束】

首先授權使用者testuser兩個基本的角色許可權

CONNECT角色:    --是授予終端使用者的典型權利,最基本的      
   CREATE    SESSION    --建立會話 

RESOURCE角色:    --是授予開發人員的     
   CREATE    CLUSTER         --建立聚簇  
   CREATE    PROCEDURE    --建立過程  
   CREATE    SEQUENCE      --建立序列  
   CREATE    TABLE              --建表  
   CREATE    TRIGGER          --建立觸發器  
   CREATE    TYPE                --建立型別
   CREATE    OPERATOR       --建立操作者
   CREATE    INDEXTYPE      --建立索引型別
   CREATE    TABLE              --建立表

授權角色給使用者的sql語句:
GRANT role TO username;

注意:這兩個角色的許可權可能需要在sys使用者下給testuser授權
grant select on  csm_mid.pob_rtu to testuser;
grant connect, resource to  testuser;

假如現在將使用者user1的表table1的select許可權賦予testuser
以user1連線到oracle,執行以下sql語句
grant select on  table1 to testuser;

現在我們用testuser使用者名稱連線後查詢table1表的資料
select * user1.table1 from testuser;
注意:表table1之前必須要加上user1

如果我們希望查詢表table1時,前面不要加user1,可以這樣做:
首先授予testuser建立檢視的許可權
grant create view to testuser;

然後在在testuser使用者先以user1.table1為基表建立檢視v_user1_table1
create view v_user1_table1
as
select *
from user1.table1;
我們就可以用如下查詢了:
select * from v_user1_table1;

 
5.檢視使用者許可權

檢視所有使用者
SELECT * FROM DBA_USERS;
SELECT * FROM ALL_USERS;
SELECT * FROM USER_USERS;

檢視使用者系統許可權
SELECT * FROM DBA_SYS_PRIVS;
SELECT * FROM USER_SYS_PRIVS;

檢視使用者物件或角色許可權
SELECT * FROM DBA_TAB_PRIVS;
SELECT * FROM ALL_TAB_PRIVS;
SELECT * FROM USER_TAB_PRIVS;

檢視所有角色
SELECT * FROM DBA_ROLES;

檢視使用者或角色所擁有的角色
SELECT * FROM DBA_ROLE_PRIVS;
SELECT * FROM USER_ROLE_PRIVS;

遇到no privileges on tablespace 'tablespace '
alter user userquota 10M[unlimited] on tablespace;