詳解Oracle建立用戶和對(duì)用戶的管理
# 合法的Oracle標(biāo)識(shí)符號(hào)
1、不能是保留關(guān)鍵字
2、必須使用1到30個(gè)字符。數(shù)據(jù)庫(kù)的名稱最多是8個(gè)字符。
3、必須以數(shù)據(jù)庫(kù)字符集中的字母字符開頭
4、只能夠包含數(shù)據(jù)庫(kù)字符集中的字母字符,以及以下字符:#、$、_,另外數(shù)據(jù)庫(kù)鏈接可以包含@符號(hào)和'.'(句號(hào))
5、不能包含引號(hào)
# 建立用戶
create user angeos identified by angeos;
建立了用戶:angeos,密碼為:angeos
# 對(duì)用戶授權(quán)
grant connect,resource to angeos;
對(duì)用戶angeos授予了連接數(shù)據(jù)庫(kù)和訪問(wèn)資源的權(quán)限
# 對(duì)用戶授權(quán)
grant create session,dba to angeos;
CREATE SESSION是一個(gè)系統(tǒng)特權(quán),它可以為用戶提供連接數(shù)據(jù)庫(kù)的能力。
DBA是一個(gè)具有超過(guò)120個(gè)系統(tǒng)特權(quán)的角色,所以它可以讓用戶在數(shù)據(jù)庫(kù)中完成幾乎任何工作。
# 改變用戶的密碼
alter user angeos identified by oracle;將用戶angeos的密碼改變?yōu)椋簅racle.
# 鎖定帳號(hào)以及解鎖
alter user oe account unlock;
然后用用戶oe登錄數(shù)據(jù)庫(kù)服務(wù)器,密碼為oe.注意:用戶解鎖后,要重啟服務(wù)。
# 修改表空間的設(shè)置
默認(rèn)情況下,它會(huì)使用表空間SYSTEM和TEMP(用于存放臨時(shí)數(shù)據(jù))。
不推薦采用這種方法。所以我們需要改變表空間。
通過(guò)系統(tǒng)用戶連接數(shù)據(jù)庫(kù)服務(wù)器
|
然后查看表空間
|
使用USER表空間代替SYSTEM表空間
|
嘗試建立一張表
|
# 刪除用戶
angeos
drop user angeos;
由于用戶angeos有一張表table1,所以刪除用戶時(shí),我們需要指定關(guān)鍵字CASCADE
drop user angeos cascade;
# 解釋術(shù)語(yǔ)模式Schema
數(shù)據(jù)庫(kù)的模式定義為數(shù)據(jù)庫(kù)對(duì)象的集合,而模式的名稱就是擁有或者控制這個(gè)數(shù)據(jù)庫(kù)對(duì)象集合的用戶名稱。
所有數(shù)據(jù)庫(kù)對(duì)象,例如表、視圖、索引、觸發(fā)器、Java存儲(chǔ)過(guò)程、PL/SQL程序包,函數(shù)等,都是由Oracle
數(shù)據(jù)庫(kù)中的一個(gè)用戶所擁有。甚至Oracle的數(shù)據(jù)詞典,系統(tǒng)編目也是名為SYS的模式的一部分。
用戶的傳統(tǒng)解釋就是能夠唯一標(biāo)識(shí)一組信任憑證的名稱和密碼組合。
# 解釋系統(tǒng)特權(quán)
在Oracle數(shù)據(jù)庫(kù)中有兩類特權(quán):
(1)對(duì)象級(jí)別特權(quán)是由用戶賦予的訪問(wèn)或者操作數(shù)據(jù)庫(kù)對(duì)象的特權(quán)。
(2)系統(tǒng)特權(quán)不是控制對(duì)指定數(shù)據(jù)庫(kù)對(duì)象的訪問(wèn),而是用來(lái)許可對(duì)各種特性的訪問(wèn),或者許可Oracle數(shù)據(jù)庫(kù)中的特定任務(wù)。
查詢特權(quán)
connect system/sysadmin
desc dba_sys_privs;
查詢
select distinct privilege from dba_sys_privs order by privilege
賦予系統(tǒng)特權(quán)的語(yǔ)句
GRANT system_priviege to username [with admin option];
撤銷系統(tǒng)特權(quán)的語(yǔ)句
REVOKE system_priviege from username;
注意:在任何用戶能夠連接到Oracle數(shù)據(jù)庫(kù)之前,都需要向它們賦予CREATE SESSION特權(quán),為他們提供連接許可。
##################################
# 建立數(shù)據(jù)表
################################### 語(yǔ)法規(guī)則
CREATE TABLE [SCHEMA.](
[default ] [ ]
[,[default ] [ ]]
[,...]
);# 建表的例子
********************************************************************
CREATE TABLE CD_COLLECTION (
ALBUM_TITLE VARCHAR2(100),
ARTISTVARCHAR2(100),
COUNTRYVARCHAR2(25),
RELEASE_DATE DATE,
LABELVARCHAR2(25),
PRIMARY KEY (ALBUM_TITLE, ARTIST)
);
********************************************************************
CREATE TABLE seagal.SONGS (
SONG_TITLEVARCHAR2(100),
COMPOSER VARCHAR2(100),
LENGTHNUMBER,
TRACKNUMBER,
ARTISTVARCHAR2(100),
ALBUM_TITLE VARCHAR2(100),
FOREIGN KEY (ARTIST, ALBUM_TITLE) REFERENCES seagal.CD_COLLECTION(ARTIST, ALBUM_TITLE),
PRIMARY KEY (SONG_TITLE, ARTIST, ALBUM_TITLE)
);
********************************************************************
select * from seagal.cd_collection;
select * from seagal.songs;
****************************************************************************************************************************************
INSERT INTO seagal.CD_COLLECTION
VALUES('Black Sheets of Rain', 'Bob Mould', 'USA',to_date('01-01-92','DD-MM-YY'), 'Virgin');INSERT INTO seagal.CD_COLLECTION
VALUES('Candy Apple Grey', 'Husker Du', 'USA',to_date('01/01/86','DD/MM/YY'), 'Warner Brothers');INSERT INTO seagal.SONGS
VALUES('Black Sheets of Rain','Mould', NULL,1, 'Bob Mould', 'Black Sheets of Rain');INSERT INTO seagal.SONGS
VALUES('Crystal','Mould', 3.28, 1, 'Husker Du', 'Candy Apple Grey');INSERT INTO seagal.SONGS
VALUES('Don''t want to know if you are lonely ','Hart', 3.28, 2, 'Husker Du', 'Candy Apple Grey');INSERT INTO seagal.SONGS
VALUES('I don''t know for sure','Mould', 3.28, 3, 'Husker Du', 'Candy Apple Grey');INSERT INTO SONGS VALUES('Black Sheets of Rain','Mould', NULL,1, 'Bob Mould', 'Black Sheets of Rain');
COMMIT;
*************************************************************************************************************
DROP TABLE FRUITS;CREATE TABLE FRUITS (
FRUIT VARCHAR2(12),
COLOR VARCHAR2(12),
QUANTITY NUMBER,
PRICE NUMBER,
PICKED DATE
);INSERT INTO FRUITS VALUES('Apple', 'Green', 12, 0.5, '12-Sep-2002');
INSERT INTO FRUITS VALUES('Apple', 'Red', 12, 0.5, '15-Sep-2002');
INSERT INTO FRUITS VALUES('Mango', 'Yellow', 10, 1.5,
'22-Sep-2002');
INSERT INTO FRUITS VALUES('Mangosteen', 'Purple', 5, 2,
'25-Sep-2002');
INSERT INTO FRUITS VALUES('Durian', 'NULL', 2, 15, NULL);
INSERT INTO FRUITS VALUES('Orange', 'Orange', 10, 1.5, '28-Aug-2002');COMMIT;
*********************************************************
COMMIT;
# CREATE TABLE AS SELECT的語(yǔ)句
通過(guò)查詢一個(gè)表,并且將查詢結(jié)果集物化到一個(gè)常規(guī)表中來(lái)建立表。
復(fù)制表的結(jié)構(gòu),但是約束、索引和觸發(fā)器等對(duì)象不會(huì)被放入新的表中。
例子:
create table emp_copy as
select * from scott.emp;
# 數(shù)據(jù)詞典
每一個(gè)數(shù)據(jù)庫(kù)都有一個(gè)數(shù)據(jù)詞典,任何管理Oracle數(shù)據(jù)庫(kù),或者使用Oracle構(gòu)建應(yīng)用的用戶都需 要使用數(shù)據(jù)詞典。
數(shù)據(jù)詞典是Oracle數(shù)據(jù)庫(kù)的編目。
當(dāng)建立用戶、表、約束和其它數(shù)據(jù)庫(kù)對(duì)象的時(shí)候,Oracle都會(huì)自動(dòng)維護(hù)一個(gè)在數(shù)據(jù)庫(kù)中存儲(chǔ)的項(xiàng) 目編目。
例如:USER_TABLES視圖可以展示當(dāng)前用戶所擁有的所有表的信息。
使用DESCRIBE命令查看USER_TABLES視圖的結(jié)構(gòu)信息。
具有DBA權(quán)限的用戶可以查看DBA_TABLES
|
【編輯推薦】