奇葛格的BLOG

          紅塵最可笑,我自樂逍遙

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            59 隨筆 :: 23 文章 :: 11 評論 :: 0 Trackbacks

          http://oracle.itpub.net/post/20957/146513

          ??? 最近因看到論壇有人問起這方面的東西,將自己的理解加上查閱相關資料整理如下,如果不全或不當的地方,望指正并補全它。

          ??? 數據庫名(DB_NAME)、實例名(Instance_name)、以及操作系統(tǒng)環(huán)境變量(ORACLE_SID)

          ??? 在ORACLE7、8數據庫中只有數據庫名(db_name)和數據庫實例名(instance_name)。在ORACLE8i、9i中出現了新的參數,即數據庫域名(db_domain)、服務名(service_name)、以及操作系統(tǒng)環(huán)境變量(ORACLE_SID)。這些都存在于同一個數據庫中的標識,用于區(qū)分不同數據庫的參數。

          ??? 一、什么是數據庫名(db_name)

          ??? 數據庫名是用于區(qū)分數據的內部標識,是以二進制方式存儲于數據庫控制文件中的參數,在數據安裝或創(chuàng)建之后將不得修改。數據庫安裝完成后,該參數被寫入數據庫參數文件pfile中,格式如下:
          ??? .........
          ??? db_name="orcl" #(不允許修改)
          ??? db_domain=dbcenter.toys.com
          ??? instance_name=orcl
          ??? service_names=orcl.dbcenter.toys.com
          ??? control_file=(...............
          ??? .........


          ??? 在每一個運行的ORACLE8i數據庫中都有一個數據庫名(db_name),如果一個服務器程序中創(chuàng)建了兩個數據庫,則有兩個數據庫名。其控制參數據分屬在不同的pfile中控制著相關的數據庫。

          ??? 二、什么是數據庫實例名(instance_name)

          ??? 數據庫實例名則用于和操作系統(tǒng)之間的聯系,用于對外部連接時使用。在操作系統(tǒng)中要取得與數據庫之間的交互,必須使用數據庫實例名。例如,要和某一個數據庫server連接,就必須知道其數據庫實例名,只知道數據庫名是沒有用的,與數據庫名不同,在數據安裝或創(chuàng)建數據庫之后,實例名可以被修改。數據庫安裝完成后,該實例名被寫入數據庫參數文件pfile中,格式如下:
          ??? db_name="orcl" #(不允許修改)
          ??? db_domain=dbcenter.toys.com
          ??? instance_name=orcl #(可以修改,可以與db_name相同也可不同)
          ??? service_names=orcl.dbcenter.toys.com
          ??? control_file=(...............
          ??? .........


          ??? 數據庫名與實例名之間的關系。

          ??? 數據庫名與實例名之間的關系一般是一一對應關系,有一個數據庫名就有一個實例名,如果在一個服務器中創(chuàng)建兩個數據庫,則有兩個數據庫名,兩個數據庫實例名,用兩個標識確定一個數據庫,用戶和實例相連接。
          ??? 但在8i、9i的并行服務器結構中,數據庫與實例之間不存在一一對應關系,而是一對多關系,一個數據庫對應多個實例,同一時間內用戶只一個實例相聯系,當某一實例出現故障,其它實例自動服務,以保證數據庫安全運行。

          ??? 三、操作系統(tǒng)環(huán)境變量(ORACLE_SID)

          ??? 在實際中,對于數據庫實例名的描述有時使用實例名(instance_name)參數,有時使用ORACLE_SID參數。這兩個都是數據庫實例名,它們有什么區(qū)別呢?(經常弄混)?????

          ??? (ORACLE_SID)
          ??? OS<----------------> ORACLE 數據庫 <--------(Instance_name(實例名))

          ??? 上圖表示實例名instance_name、ORACLE_SID與數據庫及操作系統(tǒng)之間的關系,雖然這里列出的兩個參數都是數據庫實例名,但instance_name參數是ORACLE數據庫的參數,此參數可以在參數文件中查詢到,而ORACLE_SID參數則是操作系統(tǒng)環(huán)境變量。
          ??? 操作系統(tǒng)環(huán)境變量ORACLE_SID用于和操作系統(tǒng)交互。也就是說,在操作系統(tǒng)中要想得到實例名,就必須使用ORACLE_SID。此參數與ORACLE_BASE、ORACLE_HOME等用法相同。在數據庫安裝之后,ORACLE_SID被用于定義數據庫參數文件的名稱。如:$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。

          ??? 定義方法:
          ??? export ORACLE_SID=orcl


          ??? 如果在同一服務器中創(chuàng)建了多個數據庫,則必然同時存在多個數據庫實例,這時可以重復上述定義過程,以選擇不同實例。

          ??? 還可以用
          [oracle@Datacent]$.oraenv


          ??? 來切換不同的ORACLE_SID來通過操作系統(tǒng)來啟動不同的實例(instance) 。

          posted on 2006-08-25 16:59 奇葛格 閱讀(1436) 評論(0)  編輯  收藏 所屬分類: 數據庫|Oracle,Mysql
          主站蜘蛛池模板: 望城县| 雷州市| 南郑县| 平泉县| 湾仔区| 平江县| 碌曲县| 辽宁省| 习水县| 乌拉特前旗| 深水埗区| 土默特右旗| 长寿区| 铜川市| 保山市| 陆良县| 巴彦淖尔市| 调兵山市| 乐清市| 阜城县| 五峰| 蓝山县| 屏南县| 本溪| 中江县| 永济市| 谢通门县| 花垣县| 阳原县| 汕尾市| 舟山市| 抚顺市| 大悟县| 黄平县| 双桥区| 城口县| 紫阳县| 吴忠市| 扬州市| 寻乌县| 夏津县|