<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      ORACLE數據庫中ORACLE_SID與INSTANCE_NAME的差異

      2023-04-06 22:07  瀟湘隱者  閱讀(509)  評論(0)    收藏  舉報

      ORACLE數據庫中ORACLE_SID與INSTANCE_NAME在概念和意義上有什么異同呢?下面簡單來總結概況一下,很多時候,不少人都搞不清楚兩者的異同,甚至認為兩者是等價的。

      ORACLE_SID與INSTANCE_NAME的異同

      ORACLE_SID參數是操作系統的環境變量,用于和操作系統進行交互。也用于定義一些數據庫參數文件的名稱。

      例如 init<ORACLE_SID>.ora ,spfile<ORACLE_SID>.ora等。

      有些目錄名稱也跟ORACLE_SID有關。例如參數core_dump_dest對應的目錄中會包含ORACLE_SID名稱的文件夾(mydb)。

      SQL> show parameter core_dump_dest

      NAME                                 TYPE        VALUE
      ------------------------------------ ----------- ------------------------------
      core_dump_dest                       string      /opt/oracle19c/diag/rdbms/mydb
                                                       /mydb/cdump
      SQL

      另外,ORACLE_SID其實主要用于本地連接,例如,一臺服務器上有多個Oracle實例,我們必須使用ORACLE_SID來識別區分。它的值一般位于/etc/oratab,~/.bash_profile中,不同操作系統可能有所不同。后面我們會詳細講述。

      INSTNACE_NAME是參數文件(pfile&spfile)中的一個初始化參數,它用來標識數據庫實例的名稱,其缺省值就是ORACLE_SID,所以很多時候我們認為實例名就是ORACLE_SID, 不同的實例可以擁有相同的INSTANCE_NAME。官方文檔的解釋如下:

      Note: The SID identifies the instance's shared memory on a host, but may not uniquely distinguish this instance from other instances.

      實例的SID

      注:數據庫實例的SID標識主機上實例的共享內存,但不能將此實例與其他實例區分開來。

      總統來說,INSTANCE_NAME是Oracle數據庫參數。而ORACLE_SID是操作系統的環境變量。 默認情況下,INSTANCE_NAME和在環境變量里面配置的ORACLE_SID是同樣的名稱。(注:正是由于這個原因,網上有些資料說SID就是INSTANCE_NAME,但是需要注意的是,實際上INSTANCE_NAME不等于ORACLE_SID。前者是數據庫層面的概念,后者是操作系統中環境變量的設置。)

      ORACLE_SID is used to distinguish this instance from other Oracle Database instances that you may create later and run concurrently on the same host computer. The maximum number of characters for ORACLE_SID is 12, and only letters and numeric digits are permitted. On some platforms, the SID is case-sensitive.

      INSTANCE_NAME與ORACLE_SID默認情況下是相同的。其實ORACLE_SID與INSTANCE_NAME本來沒有什么關系。當操作系統與數據庫交互時,用的是ORACLE_SID,而當外部連接于數據庫進行交互時用的是INSTANCE_NAME。當同一臺服務器安裝了多個數據庫時,操作系統利用ORACLE_SID來區分不同實例的進程,而當我們與這臺服務器的不同的數據庫進行連接時,用INSTANCE_NAME來決定具體連接哪個數據庫:在監聽器動態注冊時還會用于向監聽器注冊

      另外,需要注意的是v$instance下instance_name與參數instance_name的區別,v$thread中instance與instance_name的區別,下面我們來演示一下:

      echo $ORACLE_SID
      mydb
      $ env |grep ORACLE_SID
      ORACLE_SID=mydb

      SQL> set linesize 640;
      SQL> select instance_name from v$instance;

      INSTANCE_NAME
      ----------------
      mydb

      1 row selected.

      SQL> select instance from v$thread;

      INSTANCE
      ------------------------------------------------------------------
      mydb

      1 row selected.

      SQL> show parameter instance_name;

      NAME                                 TYPE        VALUE
      ------------------------------------ ----------- -----------------
      instance_name                        string      mydb
      SQL>

      然后我們修改一下參數instance_name的值:

      SQL> alter system set instance_name=kerry_test scope=spfile;

      重啟數據庫實例后,我們再驗證確認一下啊。如下所示:

      SQL> set linesize 640;
      SQL> select instance_name from v$instance;

      INSTANCE_NAME
      ----------------
      mydb

      1 row selected.

      SQL> select instance from v$thread;

      INSTANCE
      --------------------------------------------------------------------
      mydb

      1 row selected.

      SQL> show parameter instance_name;

      NAME                                 TYPE        VALUE
      ------------------------------------ ----------- ------------------------------
      instance_name                        string      KERRY_TEST
      SQL>
      SQL> col value for a30;
      SQL> select value from v$parameter where name='instance_name';

      VALUE
      ------------------------------
      KERRY_TEST

      1 row selected.

      SQL>

      如上所示,v$instance中的instance_name的值其實是ORACLE_SID的值,v$thread中的instance值也是ORACLE_SID的值,而不是參數instance_name的值。

      查看ORACLE_SID的值

      Window平臺

      方法1:注冊表查看

      HKEY_LOCAL_MACHINE > SOFTWARE > ORACLE> KEY_xxxxx

      例子:

      HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB19Home1 下查看ORACLE_SID

      方法2

      echo %ORACLE_SID%

      如果沒有設置環境變量的話,這個方法是無效的。一般我們需要通過注冊表來查看。如果沒有設置環境變量,我們可以使用命令設置當前窗口的ORACLE_SID值

      set ORACLE_SID=gsp

      方法3:

      select instance from v$thread;

      方法4:

      select instance_name from v$instance;

      Linux/Unix平臺

      方法1: echo $ORACLE_SID

      例子:

      echo $ORACLE_SID
      gsp

      方法2:

      ps -ef | grep ora_pmon_ | grep -v grep

      例子:

      如下所示,這個HP-UX上有兩個實例,你如果用方法1,只能看到當前的ORACLE_SID

      $ ps -ef | grep ora_pmon_ | grep -v grep
      oracle    5732     1  0 Sep06 ?        00:05:14 ora_pmon_hsfa
      oracle   14458     1  0 Aug18 ?        00:05:55 ora_pmon_ctest

      在多實例中切換,可以使用下面命令:

      export $ORACLE_SID=ctest

      例子:當前環境的ORACLE_SID為mydb

      $ ps -ef | grep ora_pmon_ | grep -v grep
      oracle   32272     1  0 17:07 ?        00:00:01 ora_pmon_mydb

      方法3:

      /etc/oratab

      注意,從配置文件/etc/oratab查詢ORACLE_SID,只能說可以,并不一定就能準確找出,例如,多實例的環境。這個只是僅供參考的方法。

      方法4:

      select instance from v$thread;

      方法5:

      select instance_name from v$instance;
      主站蜘蛛池模板: 冕宁县| 国产成人影院一区二区三区| 久久99精品久久久久麻豆| 免费午夜无码片在线观看影院| 亚洲成av人片天堂网无码| 亚洲深夜精品在线观看| 免费人成在线观看网站| Y111111国产精品久久久| 亚洲色大成网站www看下面| 真实国产熟睡乱子伦视频| 人人妻一区二区三区| 体态丰腴的微胖熟女的特征| 九九热视频免费在线播放| 国内精品久久久久影视| 国产成人不卡一区二区| 97在线碰| 亚洲熟女国产熟女二区三区| 欧美成人精品三级在线观看| 色综合天天综合网天天看片| 色偷偷www.8888在线观看| 在线观看中文字幕国产码| 99RE6在线观看国产精品| 欧美性xxxxx极品| 精品人妻伦九区久久69| 家庭乱码伦区中文字幕在线| 国产永久免费高清在线观看| 日韩黄色av一区二区三区| 亚洲色欲色欱WWW在线| 啊灬啊灬啊灬快灬高潮了电影片段| 在线观看中文字幕国产码| 日韩精品人妻黄色一级片| 在线a级毛片免费视频| 久久香蕉国产线看观看怡红院妓院| 久久伊99综合婷婷久久伊| 天堂mv在线mv免费mv香蕉| 99国产精品白浆在线观看免费| 狠狠色噜噜狠狠狠狠蜜桃| 日韩人妻一区中文字幕| 亚洲一区二区| 亚洲欧美成人综合久久久| 欧美巨大极度另类|