先通俗的解釋下資料庫這個概念,資料庫就是儲存在磁碟上的檔案,這些檔案中儲存的資料有一定的物理結構和邏輯結構。
資料庫名 就是資料庫的名稱標識,如myOracle, 這種叫法一般只適用於單機;
全域資料庫名 就是資料庫處於一個網路中的名稱標識。比如資料庫宿主機的域為mydomain,
則資料庫的全域資料庫名為myOracle.mydomain;
實際上myOracle和myOracle.mydomain兩者指的是同一個資料庫.
即:全域資料庫名 = 資料庫名+"."+網路位置(宿主機所在的域)
全域資料庫名:主要用於在分散式資料庫 系統中,區分不同的資料庫,由資料庫名和資料庫域組成,格式為“資料庫名.資料庫域”。例如上海的資料庫可以命名為demo.shanghai.com,
北京的資料庫可以命名為demo.beijing.com,即時資料庫名相同,但是資料庫域不同,所以也能區分開。第一個“.”之前的部分被認為是“資料庫名”而儲存在DB_NAME初始化參數中,
之後的部分就是“資料庫域”被儲存在DB_DOMAIN中。
設定全域資料庫名稱Oracle9i 的全域資料庫名稱由「資料庫名稱」與「網網域名稱稱」所組成,其中「資料庫名稱」設定於 DB_NAME 起始參數,而「網網域名稱稱」則是設定於 DB_DOMAIN 參數。這兩個參數合并之後就可以在網際網路上唯一識別每一個 Oracle9i 資料庫。舉例來說,假設我們欲建立的 Oracle9i 資料庫之全域資料庫名稱為 mydb.uuu.com.tw,那麼可在起始參數檔內設定下列兩參數:DB_NAME = mydbDB_DOMAIN = uuu.com.tw
Tips:您可以執行 ALTER DATABASE RENAME GLOBAL_NAME 指令更改 Oracle9i 資料庫的全域資料庫名稱;在您更改 DB_NAME 與 DB_DOMAIN 這兩個起始參數後必須將 Oracle9i 資料庫重新啟用才會生效。此外,控制檔也必須重建立立。 關於 DB_NAME 起始參數DB_NAME必須是文字字串,且不能超過 8 個字元。在建立資料庫的過程中,DB_NAME設定值會記錄在資料檔案、控制檔案、以及重設記錄檔之中。如果您啟用 Oracle9i Instance 的時候,起始參數檔內設定的DB_NAME不同於控制檔案內所紀錄的,那麼資料庫將無法啟用。 關於 DB_DOMAIN 起始參數DB_DOMAIN通常是資料庫主機所在位置的網網域名稱稱。如果您欲建立的資料庫將加入分散式資料庫運算環境,請特別注意此參數的設定。
SID:是system inentifier的英文簡寫,主要用於區分同一台電腦上的同一個資料庫的不同常式。
全域資料庫是外部區分的名稱,SID是內部區分的名稱。
SID = Oracle執行個體
SID是Oracle執行個體的唯一名稱標識,
使用者去訪問資料庫,實際上是向某一個Oracle執行個體發送請求,oracle執行個體負責向資料庫擷取資料。
Oracle執行個體 = 記憶體結構+後台進程,所以Oracle執行個體是臨時性的;
可以通過startup nomount去啟動執行個體,但是注意這時Oracle資料庫並沒有啟動,需要用open去啟動資料庫;
一個執行個體只能對應一個資料庫,一個資料庫可以用多個執行個體;
資料庫字元集:選擇資料庫所使用的字元集。
在進行全域資料庫名和SID輸入的時候,在取名上盡量表現出二者的區分和聯絡。如全域資料庫名為oamis,那麼我們可以把SID取名為oamissid。即SID採用資料庫名後面加sid的方式來表示兩者的聯絡和區別。
命名空間,有點複雜。
命名空間定義了一組物件類型,在命名空間裡,對象的名字必須是唯一的,當然,在不同的命名空間裡,是可以使用相同的的名字的。
下面的物件類型共用同一個命名空間:
• Tables
• Views
• Sequences
• Private synonyms
• Stand-alone procedures
• Stand-alone stored functions
• Packages
• Materialized views
• User-defined types
因此,如果資料庫中有一個表叫做myObject1,那麼就不能再建立一個叫做myObject1的視圖,至少,在一個schema中是不可能出現這種現象的;
下面的物件類型有各自的命名空間:
• Indexes
• Constraints
• Clusters
• Database triggers
• Private database links
• Dimensions
所以你可以建立一個叫做myObject1的索引,即使在相同的schema中;
不受Schema局限的物件類型(Non schema objects)有它們自己的命名空間,如下:
• User roles
• Public synonyms
• Public database links
• Tablespaces
• Profiles
• Parameter files (PFILEs) and server parameter files (SPFILEs)
所以兩個Non-schema objects可以用相同的名字。
Schema是基於使用者的, 在資料庫中建立一個使用者,就建立了一個和使用者名稱相同的Shema。
Namespace是基於資料庫的.