作者:admin 日期:2023-10-14 瀏覽: 次
Oracle體系結(jié)構(gòu)之?dāng)?shù)據(jù)庫相關(guān)概念
(一)、什么是數(shù)據(jù)庫名
數(shù)據(jù)庫名就是一個數(shù)據(jù)庫的標(biāo)識,就像人的身份證號一樣。他用參數(shù) DB_NAME 表示,如果一臺機(jī)器上裝了多全數(shù)據(jù)庫,那么每一個數(shù)據(jù)庫都有一個數(shù)據(jù)庫名。在數(shù)據(jù)庫安裝或創(chuàng)建完成之后,參數(shù) DB_NAME 被寫入?yún)?shù)文件之中。格式如下:
DB_NAME=myorcl
在創(chuàng)建數(shù)據(jù)庫時就應(yīng)考慮好數(shù)據(jù)庫名,并且在創(chuàng)建完數(shù)據(jù)庫之后,數(shù)據(jù)庫名不宜修改,即使要修改也會很麻煩。因為,數(shù)據(jù)庫名還被寫入控制文件中,控制文件是以二進(jìn)制型式存儲的,用戶無法修改控制文件的內(nèi)容。假設(shè)用戶修改了參數(shù)文件中的數(shù)據(jù)庫名,即修改DB_NAME 的值。但是在 Oracle 啟動時,由于參數(shù)文 件中的 DB_NAME 與控制文件中的數(shù)據(jù)庫名不一致,導(dǎo)致數(shù)據(jù)庫啟動失敗,將返回 ORA-01103 錯誤。
(二)、數(shù)據(jù)庫名的作用
數(shù)據(jù)庫名是在安裝數(shù)據(jù)庫、創(chuàng)建新的數(shù)據(jù)庫、創(chuàng)建數(shù)據(jù)庫控制文件、修改數(shù)據(jù)結(jié)構(gòu)、備份與恢復(fù)數(shù)據(jù)庫時都需要使用到的。有很多 Oracle 安裝文件目錄是與數(shù)據(jù)庫名相關(guān)的,如:
winnt: d:/oracle/product/10.1.0/oradata/DB_NAME/...Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/...pfile:winnt: d:/oracle/product/10.1.0/admin/DB_NAME/pfile/ini.orUnix: /home/app/oracle/product/10.1.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora
跟蹤文件目錄:winnt:
/home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/...
另外,在創(chuàng)建數(shù)據(jù)時,careate database 命令中的數(shù)據(jù)庫名也要與參數(shù)文件中 DB_NAME 參數(shù)的值一致,否則將產(chǎn)生錯誤。同樣,修改數(shù)據(jù)庫結(jié)構(gòu)的語句 alter database, 當(dāng)然也要指出要修改的數(shù)據(jù)庫的名稱。如果控制文件損壞或丟失,數(shù)據(jù)庫將不能加載,這時要重新創(chuàng)建控制文件,方法是以 nomount方式啟動實例,然后以 create controlfile 命令創(chuàng)建控制文件,當(dāng)然這個命令中也是指指DB_NAME。還有在備份或恢復(fù)數(shù)據(jù)庫時,都需要用到數(shù)據(jù)庫名??傊?,數(shù)據(jù)庫名很重要,要準(zhǔn)確理解它的作用。
揚(yáng)州數(shù)據(jù)恢復(fù)1.查詢當(dāng)前數(shù)據(jù)庫名1) select name from v$database;2) show parameter db3) 查看參數(shù)文件。
2. 修改數(shù)據(jù)庫名
前面建議:應(yīng)在創(chuàng)建數(shù)據(jù)庫時就確定好數(shù)據(jù)庫名,數(shù)據(jù)庫名不應(yīng)作修改,因為修改數(shù)據(jù)庫名是一件比較復(fù)雜的事情。那么現(xiàn)在就來說明一下,如何在已創(chuàng)建數(shù)據(jù)之后,修改數(shù)據(jù)庫名。步驟如下:1) 關(guān)閉數(shù)據(jù)庫。2) 修改數(shù)據(jù)庫參數(shù)文件中的 DB_NAME 參數(shù)的值為新的數(shù)據(jù)庫名3) 以 NOMOUNT 方式啟動實例,修建控制文件(創(chuàng)建控制文件)4) 啟動數(shù)據(jù)庫
(一)、什么是數(shù)據(jù)庫實例名
數(shù)據(jù)庫實例名是用于和操作系統(tǒng)進(jìn)行聯(lián)系的標(biāo)識,就是說數(shù)據(jù)庫和操作系統(tǒng)之間的交互用的是數(shù)據(jù)庫實例名。實例名也被寫入?yún)?shù)文件中,該參數(shù)為 instance_name,在 winnt平臺中,實例名同時也被寫入注冊表。
數(shù)據(jù)庫名和實例名可以相同也可以不同。在一般情況下,數(shù)據(jù)庫名和實例名是一對一的關(guān)系,但如果在 oracle 并行服務(wù)器架構(gòu)(即oracle 實時應(yīng)用集群)中,數(shù)據(jù)庫名和實例名是一對多的關(guān)系。
1.查詢當(dāng)前數(shù)據(jù)實例名1) select instance_name from v$instance;2) show parameter instance3) 查看參數(shù)文件。

2. 數(shù)據(jù)庫實例名與 ORACLE_SID
雖然兩者都表是 oracle 實例,但兩者是有區(qū)別的。
instance_name 是 oracle 數(shù)據(jù)庫參數(shù)。而 ORACLE_SID 是操作系統(tǒng)的環(huán)境變量。ORACLD_SID 用于與操作系統(tǒng)交互,也就是說,從操作系統(tǒng)的角度訪問實例名,必通過 ORACLE_SID。在 winnt 平臺,ORACLE_SID 還需存在于注冊表中且 ORACLE_SID 必須與 instance_name 的值一致,否則,你將會收到一個錯誤,unix 平臺,是“ORACLE not available”,在 winnt 平臺,是“TNS:協(xié)議適配器錯誤”。
(二)、數(shù)據(jù)庫實例名與網(wǎng)絡(luò)連接
數(shù)據(jù)庫實例名除了與操作系統(tǒng)交互外,還用于網(wǎng)絡(luò)連接的 oracle 服務(wù)器標(biāo)識。當(dāng)你配置oracle 主機(jī)連接串的時候,就需要指定實例名。當(dāng)然 8i 以后版本的網(wǎng)絡(luò)組件要求使用的是服務(wù)名 SERVICE_NAME。這個概念接下來說明 。
數(shù)據(jù)庫服務(wù)名與網(wǎng)絡(luò)連接
從 oracle8i 開如的 oracle 網(wǎng)絡(luò)組件,數(shù)據(jù)庫與客戶端的連接主機(jī)串使用數(shù)據(jù)庫服務(wù)名。之前用的是 ORACLE_SID,即數(shù)據(jù)庫實例名。
(一)、什么是數(shù)據(jù)庫域名
在分布工數(shù)據(jù)庫系統(tǒng)中,不同版本的數(shù)據(jù)庫服務(wù)器之間,不論運(yùn)行的操作系統(tǒng)是 unix或是 windows,各服務(wù)器之間都可以通過數(shù)據(jù)庫鏈路進(jìn)行遠(yuǎn)程復(fù)制,數(shù)據(jù)庫域名主要用于 oracle 分布式環(huán)境中的復(fù)制。舉例說明如:全國交通運(yùn)政系統(tǒng)的分布式數(shù)據(jù)庫,其中:
福建節(jié)點(diǎn): fj.jtyz
東臺數(shù)據(jù)恢復(fù)福建廈門節(jié)點(diǎn): xm.fj.jtyz
江西: jx.jtyz
江西上饒:sr.jx.jtyz
這就是數(shù)據(jù)庫域名。數(shù)據(jù)庫域名在存在于參數(shù)文件中,他的參數(shù)是 db_domain.
查詢當(dāng)前數(shù)據(jù)名1) select value from v$parameter where name = 'db_domain'2) show parameter domain3) 查看參數(shù)文件。
全局?jǐn)?shù)據(jù)庫名=數(shù)據(jù)庫名+數(shù)據(jù)庫域名,如前述福建節(jié)點(diǎn)的全局?jǐn)?shù)據(jù)庫名是:oradb.fj.jtyz
淮安數(shù)據(jù)恢復(fù)從 oracle9i 版本開始,引入了一個新參數(shù),數(shù)據(jù)庫服務(wù)名。參數(shù)名是 SERVICE_NAME。如果數(shù)據(jù)庫有域名,則數(shù)據(jù)庫服務(wù)名就是全局?jǐn)?shù)據(jù)庫名;否則,數(shù)據(jù)庫服務(wù)名與數(shù)據(jù)庫名相同。
查詢當(dāng)前數(shù)據(jù)庫服務(wù)名1) select value from v$parameter where name = 'service_name';2) show parameter service_name3) 查看參數(shù)文件。