『壹』 ORACLE實例與資料庫有什麼區別
簡單來說有時候這兩個名詞有時可以互換使用、但是其概念還是不同的。
實例 instance =進程 + 進程所使用的內存(SGA)
資料庫 database=物理操作系統文件或磁碟(disk)的集合(redo文件+control文件+data文件+臨時文件)
資料庫實例也稱作伺服器, 是用來訪問資料庫文件集的存儲結構及後台進程的集合.
1、一個資料庫可以被多個實例訪問(稱為真正的應用群集選項).
2、一個實例在其生存期內只能裝載(alter database mount)和打開(alter database open)一個資料庫
3、Oracle的實例在啟動以後,只能load一次資料庫,如果想把資料庫與Instance斷開,然後再重新掛在一個資料庫Instance,那麼就需要你首先把資料庫Instance進程結束,然後重新建立這個instance的一個進程,再load另外一個資料庫。否則肯定要拋除ORA-16169錯誤,說資料庫已經被打開。因為一個資料庫Instance在其生存期中最多隻能load和打開一個instance。.
4、另外實例可以在沒有數據文件的情況下單獨啟動 startup nomount , 通常沒什麼意義
『貳』 Oracle中資料庫和資料庫實例的區別和聯系
資料庫名(DB_NAME)、實例名(Instance_name)、以及操作系統環境變數(ORACLE_SID)
在ORACLE7、8資料庫中只有資料庫名(db_name)和資料庫實例名(instance_name)。在ORACLE8i、9i中出現了新的參數,即資料庫域名(db_domain)、服務名(service_name)、以及操作系統環境變數(ORACLE_SID)。這些都存在於同一個資料庫中的標識,用於區分不同資料庫的參數。
一、什麼是資料庫名(db_name)?
資料庫名是用於區分數據的內部標識,是以二進制方式存儲於資料庫控制文件中的參數,在數據安裝或創建之後將不得修改。資料庫安裝完成後,該參數被寫入資料庫參數文件pfile中,格式如下:
[code:1:1aaf156970]
.........
db_name="orcl" #(不允許修改)
db_domain=dbcenter.toys.com
instance_name=orcl
service_names=orcl.dbcenter.toys.com
control_file=(...............
.........
[/code:1:1aaf156970]
在每一個運行的ORACLE8i資料庫中都有一個資料庫名(db_name),如果一個伺服器程序中創建了兩個資料庫,則有兩個資料庫名。其控制參數據分屬在不同的pfile中控制著相關的資料庫。
二、什麼是資料庫實例名(instance_name)
資料庫實例名則用於和操作系統之間的聯系,用於對外部連接時使用。在操作系統中要取得與資料庫之間的交互,必須使用資料庫實例名。例如,要和某一個資料庫server連接,就必須知道其資料庫實例名,只知道資料庫名是沒有用的,與資料庫名不同,在數據安裝或創建資料庫之後,實例名可以被修改。資料庫安裝完成後,該實例名被寫入資料庫參數文件pfile中,格式如下:
[code:1:1aaf156970]
db_name="orcl" #(不允許修改)
db_domain=dbcenter.toys.com
instance_name=orcl #(可以修改,可以與db_name相同也可不同)
service_names=orcl.dbcenter.toys.com
control_file=(...............
.........
[/code:1:1aaf156970]
資料庫名與實例名之間的關系。
資料庫名與實例名之間的關系一般是一一對應關系,有一個資料庫名就有一個實例名,如果在一個伺服器中創建兩個資料庫,則有兩個資料庫名,兩個資料庫實例名,用兩個標識確定一個資料庫,用戶和實例相連接。
但在8i、9i的並行伺服器結構中,資料庫與實例之間不存在一一對應關系,而是一對多關系,(一個資料庫對應多個實例,同一時間內用戶只一個實例相聯系,當某一實例出現故障,其它實例自動服務,以保證資料庫安全運行。)
三、操作系統環境變數(ORACLE_SID)
在實際中,對於資料庫實例名的描述有時使用實例名(instance_name)參數,有時使用ORACLE_SID參數。這兩個都是資料庫實例名,它們有什麼區別呢?(經常弄混)
[code:1:1aaf156970]
(ORACLE_SID)
OS<----------------> ORACLE 資料庫 <--------(Instance_name(實例名))
[/code:1:1aaf156970]
上圖表示實例名instance_name、ORACLE_SID與資料庫及操作系統之間的關系,雖然這里列出的兩個參數都是資料庫實例名,但instance_name參數是ORACLE資料庫的參數,此參數可以在參數文件中查詢到,而ORACLE_SID參數則是操作系統環境變數。
操作系統環境變數ORACLE_SID用於和操作系統交互。也就是說,在操作系統中要想得到實例名,就必須使用ORACLE_SID。此參數與ORACLE_BASE、ORACLE_HOME等用法相同。在資料庫安裝之後,ORACLE_SID被用於定義資料庫參數文件的名稱。如:
$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。
定義方法:
[code:1:1aaf156970]
export ORACLE_SID=orcl
[/code:1:1aaf156970]
如果在同一伺服器中創建了多個資料庫,則必然同時存在多個資料庫實例,這時可以重復上述定義過程,以選擇不同實例。
還可以用
[code:1:1aaf156970]
[oracle@Datacent]$ . oraenv
[/code:1:1aaf156970]
來切換不同的ORACLE_SID來通過操作系統來啟動不同的實例(instance)
『叄』 什麼是oracle實例,什麼是oracle資料庫,二者有什麼區別
資料庫(database):物理操作系統文件或磁碟( disk)的集合。使用Oracle 10g 的自動存儲管理(Automatic Storage Management,ASM)或RAW 分區時,資料庫可能不作為操作系統中單獨的文件,但定義仍然不變。
實例(instance):一組Oracle 後台進程/線程以及一個共享內存區,這些內存由同一個計算機上運行的線程/進程所共享。這里可以維護易失的、非持久性內容(有些可以刷新輸出到磁碟)。就算沒有磁碟存儲,資料庫實例也能存在。也許實例不能算是世界上最有用的事物,不過你完全可以把它想成是最有用的事物,這有助於對實例和資料庫劃清界線。
這兩個詞有時可互換使用,不過二者的概念完全不同。實例和資料庫之間的關系是:資料庫可以由多個實例裝載和打開,而實例可以在任何時間點裝載和打開一個資料庫。實際上,准確地講,實例在其整個生存期中最多能裝載和打開一個資料庫!
一般來說,我們的一個資料庫對應一個實例,但在集群RAC情況下,共享資料庫文件時,一個資料庫是可以被多個實例同時使用的。
同一時間,一個實例只能打開一個資料庫,也就是一個實例只能操作或管理一個資料庫;通常,同一時間,一個資料庫只能被一個實例打開,但RAC情況除外。
安裝oracle時,通常會安裝一個實例——資料庫對(當然可以裝多對),而且他們的名字相同(也就是實例和資料庫名字相同),他們的名字當然可以不同,不管相不相同,他們的聯系是通過xxx/pfile/init.ora初始化文件聯系的。因為xxx就是實例的名字,而xxx.ora中的db_name,則記錄相應資料庫的名字。
『肆』 oracle實例和資料庫的區別
實例由稱為系統全局區(SGA)的共享內存以及若干後台進程組成。
生存期就是它專在內存中存在的時間。數屬據庫是由磁碟上的物理文件組成,可以永久存在。
實例與資料庫可以是多對一的關系。在打開資料庫的時候,nomount階段就是創建並啟動實例,即根據初始化參數文件分配內存,啟動後台服務進程。
『伍』 sql server實例和資料庫的區別
從MS SQL Server數據管理軟體的設計層次上說:
1、最高層級:
一台電腦硬碟上,可以安裝一個或多個MS SQL Server服務軟體(一般至少版本不同),這在物理上形成了它的最高層級。
多台電腦還可以組成群集進行同一個MS SQL Server服務,在物理上視同一個MS SQL Server服務軟體。
2、並列最高層級:
一個MS SQL Server服務軟體中,可以同時安裝多個SQL Server的實例,它們相互獨立,和你安裝多個MS SQL Server服務軟體在實質上沒有不同。但同一台伺服器上同一個版本只能安裝一個。它們並行於最高層級上。在同一個版本的MS SQL Server的基礎上要做出多個MS SQL Server來,就可以建立多個實例。
直白地說,每一個SQL實例就是一個最高層級,同一台伺服器(電腦上)的每一個SQL實例原則上要使同不同的埠,否則無法同時實現服務。每實例之間基本沒有什麼關聯性,如果每個實例間需要進行數據相互影響,基本上非常難,一般需要第三方應用進行干預,進行數據互傳,及影響。
在需要高獨立性的多個資料庫的情況下,會在同一台伺服器上安裝多個實例。
3、第二層級:
每一個MS SQL Server實例中,可以安裝多個資料庫,每個資料庫在物理文件上相互獨立,可以單獨分離(脫開)與掛載(載入),但不能單獨暫停某個資料庫。
每個資料庫之間可以通過MS SQL Server的存儲過程等進行一定的互訪,數據同步等,但原則上建議盡可少的那樣干,因為獨立性越強,系統穩定性會越強。
4、第三層級、第四層級等……
每個資料庫下有存儲過程、有視圖、有表。
表裡有數據欄位……
這些組成了第四層級……
在這就不細說下去了,不是你問的問題。