一、概念
1. 資料庫 (Database)
什麼是資料庫?
資料庫是依照某種資料模型組織起來並存放二級儲存空間中的資料集合。這種資料集合具有如下特點:儘可能不重複,以最優方式為某個特定組織的多種應用服務,其資料結構獨立於使用它的應用程式,對資料的增、刪、改和檢索由統一軟體進行管理和控制。從發展的曆史看,資料庫是資料管理的進階階段,它是由檔案管理系統發展起來的。
什麼是資料庫系統?
資料庫系統是一個實際可啟動並執行儲存、維護和應用系統提供資料的軟體系統,是儲存介質、處理對象和管理系統的集合體。它通常由軟體、資料庫和資料管理員組成。其軟體主要包括作業系統、各種宿主語言、公用程式以及資料庫管理系統。資料庫由資料庫管理系統統一管理,資料的插入、修改和檢索均要通過資料庫管理系統進行。資料管理員負責建立、監控和維護整個資料庫,使資料能被任何有權使用的人有效使用。資料庫管理員一般是由業務水平較高、資曆較深的人員擔任
打個比喻吧:庫據庫就是存放資料的倉庫. 當然倉庫得組織得有序,這需要一套管理方法及管理組織,管理方法及管理組織結合就成了一個管理倉庫的有機體 -- 系統.
2. 資料資料表空間 (Tablespace)
存放資料總是需要空間, Oracle把一個資料庫按功能劃分若干空間來儲存資料。當然資料存放在磁碟最終是以檔案形式,所以一盤一個資料資料表空間包含一個以上的物理檔案
3. Oracle使用者
一個資料庫多個使用者來建立和管理自己的資料, 每個使用者有自己的許可權,也可與其他使用者共用資料
4. 資料表
在倉庫,我們可能有多間房子,每個房子又有多個貨架,每架又有多層。 我們在資料庫中存放資料,最終是資料表的單元來儲存與管理的。
5. 資料檔案
以上幾個概念都是邏輯上的, 而資料檔案則是物理上的。就是說,資料檔案是真正“看得著的東西”,它在磁碟上以一個真實的檔案體現.
二、建立
(*凡oracle命令在 sqlplus中執行, 即運行 sqlplusw system/manager@test -這是以前安裝時講到的)
1. 資料庫 當我們安裝好oracle8i後,一個資料庫系統就安裝好了,其中有一個預設的資料庫,當然,我們還可以建立新的資料庫.
2. 現在我們應該建資料資料表空間, 就如要存放貨物,起碼首先得把房子建好吧。就是存放東西的空間。資料表空間就存放資料的空間.
格式: create tablespace 表間名 datafile '資料檔案名' size 資料表空間大小;
example:
create tablespace data_test datafile 'e:\oracle\oradata\test\data_1.dbf' size 2000M;
create tablespace idx_test datafile 'e:\oracle\oradata\test\idx_1.dbf' size 2000M;
(*資料檔案名 包含全路徑, 資料表空間大小 2000M 表是 2000兆)
3. 建好 tablespace, 就可以建使用者了
格式: create user 使用者名稱 identified by 密碼 default tablespace 資料表空間表;
example:
create user study identified by study default tablespace data_test;
(*我們建立一個使用者名稱為 study,密碼為 study, 缺少資料表空間為 data_test -這是在第二步建好的.)
(*抽省資料表空間表示 使用者study今後的資料如果沒有專門指出,其資料就儲存在 data_test中, 也就是儲存在對應的物理檔案 e:\oracle\oradata\test\data_1.dbf中)
4. 授權給新使用者
grant connect,resource to study;
--表示把 connect,resource許可權授予study使用者
grant dba to study;
--表示把 dba許可權授予給 study
5. 建立資料表
在上面,我們已建好了使用者 study 我們現在進入該使用者
sqlplusw study/study@test
然後就可以在使用者study中建立資料表了
格式: create table 資料表名 , 後面的詳細參數,請你在網上搜尋 "oracle" "create table" "文法". 太多了,我就不附在這裡了。
下面給一個例子,自己體會.
create table test_user (
no number(5) not null , --pk
username varchar2(30) not null , --使用者名稱
passpord varchar2(30) not null , --密碼
constraint pk_connectdb primary key(no)
)storage (initial 10k next 10k pctincrease 0);
*下面講解上面命令的各方面的含義
create table test_user --建立資料表
no number(5) not null , --pk
(列名或欄位名) 資料類型(資料長度) 該資料列不可為空 ,是列之間的分隔字元 --後的內容是注釋
constraint pk_connectdb primary key(no)
(約束) 約束名 (主鍵) (列名) 意思就是 在資料表 test_user中所有行資料 no的值不能相同(這就是主鍵的含義)
storage (initial 10k next 10k pctincrease 0); 這個說起來比較複雜, 反正如果某個資料表要存放大量資料,就把initial和next後的值設定大一點, 否則設定小一點.
既然上面在建立資料表中沒有特別指定 資料表空間,當然該表就存放在study預設資料表空間data_test了.
create tablespace data_phonepos datefile 'd:\install\OracleXpdb\datafilephonepos.dbf' size 8000M;
create user phonepos identified by phonepos default tablespace data_phonepos;
grant connect, resource to phonepos;
grant dba to phonepos;
許可權的查詢
5。1 查詢某個使用者授予其他使用者在目前使用者模式下的對象許可權
select * from user_tab_privs_made --假如目前使用者為WENZI,那麼查詢結果就是由WENZI授權,在WENZI模式下的許可權記錄
5。2 查詢某個使用者授予其他使用者在該使用者模式對象及其他模式對象上的對象許可權
select * from all_tab_privs_made -- 假如當前登入使用者為WENZI,那麼查詢結果就是所有由WENZI授與權限的記錄
修改使用者
ALTER USER avyrros
IDENTIFIED EXTERNALLY
DEFAULT TABLESPACE data_ts
TEMPORARY TABLESPACE temp_ts
QUOTA 100M ON data_ts
QUOTA 0 ON test_ts
PROFILE clerk;
刪除使用者
DROP USER username [CASCADE] --CASECADE 選項會刪除該使用者模式下的所有對象,建議在刪除前,先確認是否有其他的依賴關係存在。
查詢屬於使用者的對象
select owner,object_name,object_type,status from dba_objects where owner='WENZI'
5.3 查詢為某個使用者授予的,在其他模式對象上的許可權
select * from user_tab_privs_recd --假如當前登入使用者為WENZI,那麼查詢結果就是WENZI在其他模式對象上的許可權
5.4 查詢為某個使用者授予的,在該使用者模式對象與其他模式對象上的許可權
select * from all_tab_privs_recd --假如目前使用者為wenzi,則查詢結果為wenzi在整個資料庫中擁有許可權的對象
角色管理
建立口令檔案
orapwd file='..........\pwd{SID}.ora' password='***(sys的密碼)' tntries=10(口令檔案最大的使用者數量)
要使某個使用者可以使用口令檔案,必須為其授予SYSDBA許可權,系統會自動將其加入到口令檔案中。
grant sysdba to wenzi
當收回SYSDBA許可權時,系統將對應的使用者從口令檔案中刪除。
revoke sysdba from wenzi
查看口令檔案管理的使用者
select * from v$pwfile_users