程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 詳解Oracle建立用戶和對用戶的管理

詳解Oracle建立用戶和對用戶的管理

編輯:Oracle數據庫基礎

# 合法的Oracle標識符號

1、不能是保留關鍵字

2、必須使用1到30個字符。數據庫的名稱最多是8個字符。

3、必須以數據庫字符集中的字母字符開頭

4、只能夠包含數據庫字符集中的字母字符,以及以下字符:#、$、_,另外數據庫鏈接可以包含@符號和'.'(句號)

5、不能包含引號

# 建立用戶

create user angeos identifIEd by angeos;

建立了用戶:angeos,密碼為:angeos

# 對用戶授權

grant connect,resource to angeos;

對用戶angeos授予了連接數據庫和訪問資源的權限

# 對用戶授權

grant create session,dba to angeos;

CREATE SESSION是一個系統特權,它可以為用戶提供連接數據庫的能力。

DBA是一個具有超過120個系統特權的角色,所以它可以讓用戶在數據庫中完成幾乎任何工作。

# 改變用戶的密碼

alter user angeos identifIEd by oracle;將用戶angeos的密碼改變為:Oracle.

# 鎖定帳號以及解鎖

alter user oe account unlock;

然後用用戶oe登錄數據庫服務器,密碼為oe.注意:用戶解鎖後,要重啟服務。

# 修改表空間的設置

默認情況下,它會使用表空間SYSTEM和TEMP(用於存放臨時數據)。

不推薦采用這種方法。所以我們需要改變表空間。

通過系統用戶連接數據庫服務器

conn sys/sysadmin@hostname_services as sysdba;

然後查看表空間

select tablespace_name,contents from dba_tablespaces
order by tablespace_name;

使用USER表空間代替SYSTEM表空間

alter user angeos default tablespace users
temporary tablespace temp;

嘗試建立一張表

create table table1
(
fIEldA varchar2(10)
)

# 刪除用戶

angeos

drop user angeos;

由於用戶angeos有一張表table1,所以刪除用戶時,我們需要指定關鍵字CASCADE

drop user angeos cascade;

# 解釋術語模式Schema

數據庫的模式定義為數據庫對象的集合,而模式的名稱就是擁有或者控制這個數據庫對象集合的用戶名稱。

所有數據庫對象,例如表、視圖、索引、觸發器、Java存儲過程、PL/SQL程序包,函數等,都是由Oracle數據庫中的一個用戶所擁有。甚至Oracle的數據詞典,系統編目也是名為SYS的模式的一部分。

用戶的傳統解釋就是能夠唯一標識一組信任憑證的名稱和密碼組合。

# 解釋系統特權

在Oracle數據庫中有兩類特權:

(1)對象級別特權是由用戶賦予的訪問或者操作數據庫對象的特權。

(2)系統特權不是控制對指定數據庫對象的訪問,而是用來許可對各種特性的訪問,或者許可Oracle數據庫中的特定任務。

查詢特權

connect system/sysadmin

desc dba_sys_privs;

查詢

select distinct privilege from dba_sys_privs order by privilege

賦予系統特權的語句

GRANT system_privIEge to username [with admin option];

撤銷系統特權的語句

REVOKE system_privIEge from username;

注意:在任何用戶能夠連接到Oracle數據庫之前,都需要向它們賦予CREATE SESSION特權,為他們提供連接許可。

##################################
# 建立數據表
##################################

# 語法規則
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的語句

通過查詢一個表,並且將查詢結果集物化到一個常規表中來建立表。

復制表的結構,但是約束、索引和觸發器等對象不會被放入新的表中。

例子:

create table emp_copy as

select * from scott.emp;

# 數據詞典

每一個數據庫都有一個數據詞典,任何管理Oracle數據庫,或者使用Oracle構建應用的用戶都需 要使用數據詞典。

數據詞典是Oracle數據庫的編目。

當建立用戶、表、約束和其它數據庫對象的時候,Oracle都會自動維護一個在數據庫中存儲的項目編目。

例如:USER_TABLES視圖可以展示當前用戶所擁有的所有表的信息。

使用DESCRIBE命令查看USER_TABLES視圖的結構信息。

具有DBA權限的用戶可以查看DBA_TABLES

select owner ,table_name,tablespace_name from dba_tables

where owner in('SCOTT','HR')

order by owner,tablesapce_name,table_name

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved