小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Oracle的體系結(jié)構(gòu)之基本概念(一)

 goldbomb 2014-02-18

通過這段時間廢寢忘食的對Oracle數(shù)據(jù)庫的學習,感覺還有小有所成,Oracle確實很龐大,不計其數(shù)的參數(shù)和術語,當然其能夠?qū)崿F(xiàn)的細膩操作也不是其他數(shù)據(jù)庫系統(tǒng)所能夠相提并論的,這里對這段時間所學作一下總結(jié),也能夠讓初學者有所參考,當然本人技術水平和表達能力都有限,文中難免有錯誤之處,望指出改正。

1. oracle的基本概念

(1)全局數(shù)據(jù)庫名(global_name)

主要用于在分布式數(shù)據(jù)庫系統(tǒng)中區(qū)分不同的數(shù)據(jù)庫,它是由數(shù)據(jù)庫名和數(shù)據(jù)庫域名組成,格式為“數(shù)據(jù)庫名.數(shù)據(jù)庫域名”,數(shù)據(jù)庫域名允許為空,即只寫數(shù)據(jù)庫名。

全局數(shù)據(jù)庫名(global_name)=數(shù)據(jù)庫名(db_name)+數(shù)據(jù)庫域名(db_domain)。

如數(shù)據(jù)庫名為myOracle ,數(shù)據(jù)庫宿主機的域為mydomain,則數(shù)據(jù)庫的全局數(shù)據(jù)庫名為myOracle.mydomain,呵呵 又出來個數(shù)據(jù)庫名和數(shù)據(jù)庫域名。
 
查詢當前全局數(shù)據(jù)庫名
 
方法一:  select * from global_name;

(2)數(shù)據(jù)庫名(db_name)

oracle可以在一臺電腦上可以創(chuàng)建多個數(shù)據(jù)庫,數(shù)據(jù)庫名(db_name)就是一個數(shù)據(jù)庫的標識。db_name會保持在數(shù)據(jù)文件頭里。

查詢當前數(shù)據(jù)庫名

方法一:  select name from v$database;
方法二:show parameter db_name
方法三:查看參數(shù)文件

(3)數(shù)據(jù)庫域名(db_domain)

定義一個數(shù)據(jù)庫所在的域,該域的命名同互聯(lián)網(wǎng)的’域’沒有任何關系,只是數(shù)據(jù)庫管理員為了更好的管理分布式數(shù)據(jù)庫而根據(jù)實際情況決定的。當然為了管理方便,可以將其等于互聯(lián)網(wǎng)的域。

查詢數(shù)據(jù)庫域名

方法一:select value from v$parameter where name = 'db_domain';
方法二:show parameter db_domain
方法三:在參數(shù)文件中查詢

使用數(shù)據(jù)庫名(da_name)對一個數(shù)據(jù)庫進行唯一標識,這種表示對于單個數(shù)據(jù)庫是足夠的,但是隨著由多個數(shù)據(jù)庫構(gòu)成的分布式數(shù)據(jù)庫的普及,這種命令數(shù)據(jù)庫的方法給數(shù)據(jù)庫的管理造成一定的負擔,因為各個數(shù)據(jù)庫的名字可能一樣,造成管理上的混亂。為了解決這種情況,引入了db_domain參數(shù),這樣在數(shù)據(jù)庫的標識是由db_name和db_domain兩個參數(shù)共同決定的,避免了因為數(shù)據(jù)庫重名而造成管理上的混亂。這類似于互連網(wǎng)上的機器名的管理。我們將db_name和db_domain兩個參數(shù)用‘.’連接起來,表示一個數(shù)據(jù)庫,并將該數(shù)據(jù)庫的名稱稱為global_name,即它擴展了db_name。db_name參數(shù)只能由字母、數(shù)字、’_’、’#’、’$’組成,而且最多8個字符。

一個完整的Oracle數(shù)據(jù)庫包括兩個部分:數(shù)據(jù)庫和數(shù)據(jù)庫實例。

(4)數(shù)據(jù)庫

數(shù)據(jù)庫是存儲數(shù)據(jù)的多個物理文件的集合,如控制文件,數(shù)據(jù)文件,參數(shù)文件,日志文件,臨時文件等 ,它是靜態(tài)的、永久的,只要文件存在它就存在。數(shù)據(jù)庫名(db_name)就是對數(shù)據(jù)庫的標識。

(5)數(shù)據(jù)庫實例

oarcle數(shù)據(jù)庫服務器主要有兩部分組成:物理數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)
數(shù)據(jù)庫管理系統(tǒng)是用戶和物理數(shù)據(jù)庫之間的一個中間層,是軟件層。這個軟件層具有一定的結(jié)構(gòu),這個結(jié)構(gòu)又被稱為實例結(jié)構(gòu)。
在啟動數(shù)據(jù)庫時,oracle首先要在內(nèi)存中獲取、劃分、保留各種用途的區(qū)域,運行各種用途的后臺進程,即創(chuàng)建一個實例(instance),然后由該實例裝載、打開數(shù)據(jù)庫,最后由這個實例來訪問和控制數(shù)據(jù)庫的各種物理結(jié)構(gòu)。 數(shù)據(jù)庫至少由一個oracle實例引用,該實例由oracle系統(tǒng)標識符(system identity)唯一標識,用于區(qū)別此計算機上的任何其他實例。

在啟動數(shù)據(jù)庫并使用數(shù)據(jù)庫的時候,實際上是連接到該數(shù)據(jù)庫的實例,通過實例來連接、使用數(shù)據(jù)庫。所以實例是用戶和數(shù)據(jù)庫之間的一個中間層。
實例是由操作系統(tǒng)的內(nèi)存結(jié)構(gòu)和一系列進程所組成的,可以啟動和關閉。
一臺計算機上可以創(chuàng)建多個oracle數(shù)據(jù)庫,當同時要使用這些數(shù)據(jù)庫時,就要創(chuàng)建多個實例。為了不使這些實例相互混淆,每個實例都要用稱為SID的符號來區(qū)分,即創(chuàng)建這些數(shù)據(jù)庫時填寫的數(shù)據(jù)庫SID。

數(shù)據(jù)庫實例是用戶訪問數(shù)據(jù)庫的中間層,是使用數(shù)據(jù)庫的手段,它為用戶訪問數(shù)據(jù)庫提供了必要的內(nèi)存空間和多個工作進程,它是動態(tài)的、臨時的,簡單的說,Oracle實例就是由內(nèi)存空間和工作進程兩部分組成。 我們只能通過實例操作數(shù)據(jù)庫,同一時間,一個實例只能打開一個數(shù)據(jù)庫,也就是一個實例只能操作或管理一個數(shù)據(jù)庫,但一個數(shù)據(jù)庫可以被多個是實例打開。實例可以在沒有數(shù)據(jù)文件的情況下單獨啟動,(startup nomount)但這通常是沒有意義的,一個實例在生成期內(nèi)只能裝載(alter database mount)和打開(alter database open)數(shù)據(jù)庫。

ORACLE實例有兩種類型:單進程實例 和 多進程實例。

單進程ORACLE(又稱單用ORACLE)是一種數(shù)據(jù)庫系統(tǒng),一個進程執(zhí)行全部ORACLE代碼。由于ORACLE部分和客戶應用程序不能分別以進程執(zhí)行,所以ORACLE的代碼和用戶的數(shù)據(jù)庫應用是單個進程執(zhí)行。在單進程環(huán)境下的ORACLE 實例,僅允許一個用戶可存取。例如在MS-DOS上運行ORACLE 。

多進程ORACLE實例(又稱多用戶ORACLE)使用多個進程來執(zhí)行ORACLE的不同部分 ,對于每一個連接的用戶都有一個進程。
在多進程系統(tǒng)中,進程分為兩類:用戶進程 和ORACLE進程。當一用戶運行一應用程序,如PRO*C程序或一個ORACLE工具(如SQL*PLUS),為用戶運行的應用建立一個用戶進程。

進程是操作系統(tǒng)的基本執(zhí)行單元,它是具有獨立數(shù)據(jù)處理功能的正在執(zhí)行的程序。Oracle系統(tǒng)的進程包括三種類型:

①用戶進程

用戶在客戶端運行一個應用程序(例如 Pro*C 程序)或 Oracle 工具(如OEM或 SQL*Plus)時,系統(tǒng)將為該用戶創(chuàng)建一個用戶進程。

用戶進程負責與Oracle服務器建立連接和會話并向服務器發(fā)出數(shù)據(jù)處理請求,得到處理結(jié)果后再輸出給用戶。

Oracle允許為一個用戶同時創(chuàng)建多個會話 。

②服務進程

Oracle為用戶進程創(chuàng)建一個服務進程或分配一個空閑的服務進程。

服務進程負責在用戶進程和Oracle實例之間調(diào)度請求和響應,主要完成:

解析與運行應用程序提交的SQL語句;

數(shù)據(jù)處理時用到的數(shù)據(jù)如果不在SGA 中,負責將所需的數(shù)據(jù)塊從磁盤上的數(shù)據(jù)文件讀入SGA 的數(shù)據(jù)緩存區(qū);

以用戶進程能理解的形式返回SQL 語句的執(zhí)行結(jié)果。

用戶進程和服務進程之間的對應關系是由Oracle數(shù)據(jù)庫的工作模式?jīng)Q定的。數(shù)據(jù)庫通常有兩種工作模式:

image 專用服務器模式
image

共享服務器模式

                                                                       

 

③后臺進程

Oracle實例啟動時,為了保證該實例的正常使用,系統(tǒng)將為該實例啟動一些后臺進程。

這些進程是操作數(shù)據(jù)庫的基礎,不管有沒有用戶連接數(shù)據(jù)庫,這些進程都會被啟動。

后臺進程包括:

DBWR(Database Write) : 數(shù)據(jù)庫寫入程序

LGWR(Log Write) : 日志寫入程序

CKPT(Checkpoint) : 檢查點

SMON (System Monitor): 系統(tǒng)監(jiān)控

PMON(Process Monitor) : 進程監(jiān)控

ARCH(Archive) : 歸檔

RECO : 恢復

LCKn : 封鎖;

(6)實例名(instance_name)

數(shù)據(jù)庫實例名(instance_name)用于對外部連接。在操作系統(tǒng)中要取得與數(shù)據(jù)庫的聯(lián)系,必須使用數(shù)據(jù)庫實例名。例如,要去連接一個數(shù)據(jù)庫服務器,就必須知道其數(shù)據(jù)庫實例名。

查詢當前數(shù)據(jù)庫實例名
方法一:select instance_name from v$instance;
方法二:show parameter instance_name
方法三:在參數(shù)文件中查詢。

(7)服務名(Service_name)

該參數(shù)是oracle8i新引進的。在8i以前,我們用SID來表示標識數(shù)據(jù)庫的一個實例,但是在Oracle的并行環(huán)境中,一個數(shù)據(jù)庫對應多個實例,這樣就需要多個網(wǎng)絡服務名,設置繁瑣。為了方便并行環(huán)境中的設置,引進了Service_name參數(shù),該參數(shù)對應一個數(shù)據(jù)庫,而不是一個實例,而且該參數(shù)有許多其它的好處。該參數(shù)的缺省值為Db_name. Db_domain,即等于Global_name。一個數(shù)據(jù)庫可以對應多Service_name,以便實現(xiàn)更靈活的配置。該參數(shù)與SID沒有直接關系,即不必Service name 必須與SID一樣。如果數(shù)據(jù)庫有域名,則數(shù)據(jù)庫服務名就是全局數(shù)據(jù)庫名,否則,數(shù)據(jù)庫服務名與數(shù)據(jù)庫名相同。

查詢當前數(shù)據(jù)庫服務名
方法一
:select value from v$parameter where name = 'service_name';
方法二:show parameter service_name
方法三
:select instance_namefrom v$instance;
方法四:在參數(shù)文件中查詢。

注意:方法三:select instance_namefrom v$instance; 的值是來自操作系統(tǒng)的oracle_sid,oracle_sid是操作系統(tǒng)的環(huán)境變量。

以上這些概念非常容易混淆,且不容易理解,有的可能在使用過程中才能理解的比較透徹。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多