Oracle系統管理員基礎 Oracle資料字典

2022-04-09 08:43:29 字數 4907 閱讀 6618

oracle系統管理員基礎:oracle資料字典

對於oracle系統管理員而言,oracle資料字典就像是乙個寶庫:它是oracle資料庫的重要組成部分,提供了諸如資料庫結構、資料庫物件空間分配和資料庫使用者等等有關資料庫的資訊。本文試圖從資料庫管理系統的若干基本概念出發,具體介紹從oracle資料字典來了解oracle的方法。

不同的作業系統、不同版本的oracle資料字典有所差異,本文均以unix作業系統、oracle 7為例加以說明。

資料庫系統例項和資料庫標識

oracle資料庫系統包含兩個方面,即oracle資料庫和oracle例項,使用者是通過oracle例項來訪問oracle資料庫的。

1.資料庫(database)

資料庫是作為整體看待的資料集合,通常在安裝oracle軟體的最後階段建立,用資料庫名加以標識(允許1~8個字元),資料庫名在建立資料庫時確認,且儲存在控制檔案中。

2.例項(instance,也譯作例程)

例項是訪問和控制資料庫的軟體機制。它由系統全域性區(system global area,即sga)和oracle程序兩部分組成,和資料庫名一樣,例項也要唯一標識,並且在安裝oracle軟體時確認。

我們可以採用下述方法來了解例項標識。

有的系統管理員有意無意地將資料庫名和例項標識取相同的識別符號,當然是可以的,有時甚至會帶來某些方便,但筆者認為,還是取不同識別符號為宜。

資料庫的初始化引數檔案

在資料庫的建立和執行中,都要閱讀乙個初始化引數檔案,它是個文字檔案,可以用一般的編輯程式編輯。

每乙個資料庫至少有乙個初始化引數檔案,一般命名為init.ora,在unix系統下,按照預設規定,其初始化引數檔名的命名原則為init後緊跟例項的標識,再加ora字尾,例如,某例項標識為test,其初始化引數檔名為inittest.ora。

資料庫的初始化引數有100多個,前面提到的db_name即是其中之一。此外,還有許多其他引數,如

control-files 控制檔名

rollback-segments 分配給例項的回滾段名

init-sql-files 資料庫建立時執行的命令檔案

processes 多程序系統中最大程序數

資料庫的物理結構

資料庫的物理結構是面向作業系統的,它描述資料庫中的資料的儲存形式。在物理上oa

cle資料庫檔案包括資料檔案、日誌檔案和控制檔案。

1.資料檔案(data files)

oracle資料庫中的資料,邏輯上存放在表空間裡,但物理上卻是存放在資料檔案裡的,資料檔案有如下特點,即每乙個資料檔案只與乙個資料庫相聯絡,資料庫檔案一旦建立,就不能改變大小,乙個表空間可以包含乙個或多個資料檔案等。

我們可以用下述方法來了解資料庫的全部資料檔案。

(1)sqldba>select*from dba-data-files;結果中,列名file-name即為資料檔名。

(2)sqldba>select*from v$datafile;結果中,列名name即為資料檔名。

(3)sqldba>select*from v$dbfile;結果中,列名name即為資料檔名。

2.日誌檔案(redo log files)

日誌檔案用於記錄資料庫所做的全部變更,以便在系統發生故障時進行恢復。每乙個資料庫至少有兩個日誌檔案。

3.控制檔案(control files)

控制檔案雖然是乙個較小的二進位制檔案,但很重要。如果控制檔案一旦被破壞,則無法對資料庫進行操作。為防止控制檔案被破壞,一般乙個資料庫應至少有二個控制檔案,且分別放在不同的磁碟上,控制檔案的名字是記錄在引數control_files中的。

資料庫的邏輯結構

資料庫的邏輯結構是面向使用者的,資料庫的邏輯結構包含表空間、段、範圍、資料塊和模式物件。從邏輯上看資料庫有以下特點。

乙個資料庫(database)由乙個或多個表空間所組成。

乙個表空間(tablespace)由段組成,作為system表空間,它由自舉段、回滾段、資料段、臨時段等多個段組成,而作為非system表空間,則因用途而異由不同段組成。

乙個段(segment)由一組範圍組成。乙個範圍(extent)由一組連續的資料塊組成。乙個資料塊(database block)對應磁碟上的乙個或多個物理塊。

在資料庫的邏輯結構中,表空間和回滾段比較重要,下面分別加以介紹。

1.表空間

每乙個資料庫都必須包含乙個名為system的表空間。該錶空間在建立資料庫時由系統自動建立,為了保證資料庫能正常執行,system表空間必須處於**狀態。

為了增強對資料庫的控制和維護,一般乙個資料庫都包含多個表空間。使用多個表空間有許多優點,例如可以使使用者資料與資料字典相分離,可以在不同的磁碟上儲存不同表空間的資料檔案,從而減少i/o衝突,還可以使一些表空間**,而使另一些表空間離線等等。

2.回滾段

每乙個表空間是都由段組成。oracle資料庫中的段有資料段、索引段、臨時段、回滾段和自舉段。比較重要的是回滾段,它記錄資料庫的變更資訊,以實現資料庫的讀一致性及恢復工作。

在system表空間裡有乙個system回滾段,是在建立資料庫時隨之產生的。如果使用多個表空間,至少還應有乙個另外的回滾段。回滾段分專用和公用兩種,要使用專用回滾段,需要在初始化引數檔案的rollback-segments引數上寫上專用回滾段的段名並且重新啟動資料庫,或者通過回滾段**命令使它**。

資料庫的使用者

oracle資料庫是個多使用者系統。為了保證資料庫系統的安全,oracle資料庫管理系統配製了良好的安全機制。例如,每乙個oracle資料庫都有乙個使用者表,它記載著每乙個使用者的有關資訊,一旦使用者進入系統,oracle系統會通過這張表來檢查使用者的合法性。又如,oracle系統通過合理分配使用者的許可權來管理使用者。通常,oracle將使用者分為三類,即dba、resouce和connect三類角色,使不同的使用者的許可權各不相同。

在建立資料庫時,系統自動建立了兩個使用者,即sys和system使用者,且授給這兩個使用者db許可權,由於dba具有最高許可權,建議將它們的口令及時修改,以免個別使用者以dba角色進入系統,有意無意地給系統造成損害。

除了sys、system使用者外,其餘使用者都要一一建立,建立使用者的方法如下:

假設要建的使用者名為rsxt,口令為rspass;預設的表空間為user,臨時表空間為temp,表空間限額為3m,其餘預設,則可用下面方法建立新使用者:

sqldba>create user rsxt identified by rspass  

default tablespace user 

temporary tablespace temp 

quota 3m on user;  

請注意,該使用者建立後,還要及時授權,否則像上述剛剛建成的使用者,則一無所為,甚至都不能連線資料庫。對一般使用者,通常授予connect和resource角色許可權,命令如下:

sqldba>grant connect,resource to rsxt;

對於乙個有著許多使用者的資料庫系統,我們可以通過下述方法來了解資料庫的使用者情況。

1.對於非dba使用者

對於非dba使用者,有兩條命令,即:

(1)sql>select*from all-users;

(2)sql>select*from user-users;

其中,從user-users表中,可以了解到該使用者的預設表空間和臨時表空間等資訊。

2.對於dba使用者

對於dba使用者,有三條命令,即:

(1)sqldba>select*from all-users;

(2)sqldba>select*from user-users;

(3)sqldba>select*from dba-users;

其中,從dba-users中,可以了解到所有使用者的詳細資訊,因而該命令對於資料庫管理員來說是很有用的。

關於非dba使用者的資訊

由於dba使用者具有最高許可權,為安全起見,只有oracle系統管理員才授予dba許可權,大多數使用者均為非dba使用者。儘管相應的許可權少了,但是從oracle資料字典中,還是可以得到 很多關於非dba使用者的有用資訊。

我們可以採用下述方法來了解有關非dba使用者的資訊。

1.sql>select*from user-users;

可以檢視該使用者的預設表空間,臨時表空間和使用者建立時間。

2.sql>select*from user-tables;

可以檢視該使用者建立的所有表的詳細資訊,由於列名較多,一屏看不了幾個表。

如果僅僅想檢視使用者所建表的表名,可以用下面的命令:

sql>select table-name from user-tables;

3.sql〉select*from user-views;

可以檢視該使用者所建立的檢視,包括建立檢視的文字。

同樣,如果僅僅想檢視使用者所建檢視的檢視名,可以用下面的命令:

sql>select view-name from user-views;

4.sql>select*from user-tablespaces;

可以檢視該使用者可訪問的表空間的資訊。

5.sql>select tablespace-name,sum(bytes),sum(blocks)

from user-free-space group by tablespace-name;

可以檢視該使用者可訪問的表空間的剩餘空間。

6.sql>select *from user-ts-quotas;

可以檢視該使用者的表空間的份額。

7.sql>select *from user-role-privs;

可以檢視該使用者被授予的角色。

8.sql>select *from user-sys-privs;

可以檢視該使用者的系統許可權及能否再授予其它使用者的許可權。

9.sql>select *from user-tab-privs-recd;

可以檢視該使用者能訪問其它使用者的表、檢視等的物件許可權。

10.sql>select *from user-tab-privs-made;

可以檢視該使用者授予其它使用者的表、檢視等的物件許可權。

4 1系統管理員

本章要點 v 系統管理員 v 使用者管理 v 使用者組管理 v 使用使用者管理器管理使用者和組 學習要求 v 了解系統管理員的作用及其許可權 v 掌握使用 useradd 命令新增使用者的方法 v 掌握使用passwd命令為所新增的使用者設定密碼的方法 v 掌握使用groupadd 命令新增使用者組...

Linux系統管理員必備

linux系統管理工具包系列彙總 linux系統管理員必看 vandyke securecrt 6.1.3 附特別檔案 linux administration handbook 第二版 linux伺服器配置全程實錄 時間管理 給系統管理員 中文高畫質pdf time management for ...

linux 系統管理員操作

1.檢查系統版本 cat etc redhat release 2.檢視網絡卡ip位址 ifconfig 或者 ifconfig eth0 或者 ifconfig head 2 檢視前兩行 3.檢視主機名 hostname 一般情況下伺服器在遠端資料中心,我們通過遠端管理.遠端登入 ssh 命令格式...