日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

几个环境变量说明:ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAMES

發布時間:2024/4/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 几个环境变量说明:ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAMES 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這幾天在配置DATAGUARD,進行數據復制時,一直出錯,一時找不到原因。
開始以為是LISTENER.ORA的配置問題,
配置如下:

?? ?SID_LIST_LISTENER =
?? ?(SID_LIST =
?? ???? (SID_DESC =
?? ?????? (GLOBAL_DBNAME = tdg)
?? ?????? (ORACLE_HOME = /opt/app/oracle/product/11.2.0)
?? ?????? (SID_NAME = tdg)
?? ???? )
?? ?)
按理也已進行了靜態注冊,在主庫中,應該是可以訪問的。
但RMAN 登錄一直無法進行,錯誤如下:

?? ?
?? ?[oracle@ract1 dbs]$ rman target sys/sa@tdb auxiliary sys/sa@tdg nocatalog

?? ?RMAN-00571: ===========================================================
?? ?RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
?? ?RMAN-00571: ===========================================================
?? ?RMAN-00554: initialization of internal recovery manager package failed
?? ?RMAN-04005: error from target database: ORA-01031: insufficient privileges

后來一路跟蹤找原因,原來是拷貝過去的密碼文件文件名錯誤,沒有和當前數據庫的SID名稱一致。所以無法登錄,
報上面的權限錯誤。密碼文件名稱: orapw[SID]

ORACLE的環境目錄中,還有一個目錄,可以看出$ORACLE_SID,及 $INSTANCE_NAME,如果這幾個環境變量配置不對,會引起很多麻煩。
$ORACLE_BASE/diag/rdbms/$INSTANCE_NAME/$ORACLE_SID/alert

以下收集了這些變量的說明

(轉載內容)?? ?

??? ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAMES是Oracle中幾個重要的參數,
??? 而且也比較容易混淆,下面給出這些參數的具體描述。

? ?

一、SID、ORACLE_SID:

??? SID的全稱為site identifier,Oracle_SID則為Oracle site identifier.

??? 下面引用Tom(Thomas Kyte)的一段話來解釋Oracle_SID

? ?

??????? If you’re unfamiliar with the term SID or ORACLE_SID, a full definition is called for. The SID is a site identifier. It and ORACLE_HOME (where the Oracle software is installed) are hashed together in UNIX to create a unique key name for attaching an SGA. If your ORACLE_SID or ORACLE_HOME is not set correctly, you’ll get the ORACLE NOT AVAILABLE error, since you can’t attach to a shared memory segment that is identified by??? this unique key. On Windows, shared memory isn’t used in the same fashion as UNIX, but the SID is still? important. You can have more than one database on the same ORACLE_HOME, so you need a way to uniquely identify each one, along with their configuration files.

????? ?

??? 即:在Unix系統中,SID和ORACLE_HOME在一起哈希后得到一個唯一的值作為SGA的key。

??????? 當oracle實例啟動時,在操作系統上的fork進程則根據Oracle_SID來創建相關后臺進程。

??????? Oracle 11g 支持Oracle_SID的長度為12位,db_name的長度為8位

????? ?

??? 作用:

??????? 用于區別同一臺主機上不同的Oracle實例

??????? 決定實例所啟動后臺進程的名稱。(實例由SGA和后臺進程組成)

??????? 決定了參數文件的名稱。如spfile<ORACLE_SID>.ora,init<ORACLE_SID>.ora

??????? 決定后臺進程產生的相關跟蹤文件、日志文件等。

如alert_<ORACLE_SID>.log,<ORACLE_SID>_arc1_<spid>.trc,<SID>_ora_<SPID>.trc

??????? 同一主機上不同的$ORACLE_HOME,可以創建相同的ORACLE_SID

??????? 由此可以得出

??????????? ORACLE_HOME相同時,可以使用不同的ORACLE_SID

??????????? ORACLE_HOME不同時,可以使用相同的ORACLE_SID??? ?

?

??????? [oracle@robinson ~]$ export ORACLE_SID=orcl?? --設定ORACLE_SID為orcl

??????? [oracle@robinson ~]$ sqlplus / as sysdba;

?

??????? SQL*Plus: Release 10.2.0.1.0 - Production on Wed Sep 1 09:46:36 2010

?

??????? Copyright (c) 1982, 2005, Oracle.? All rights reserved.

?

??????? Connected to an idle instance.

?

??????? SQL> startup nomount;

??????? ORACLE instance started.

?

??????? Total System Global Area? 469762048 bytes

??????? Fixed Size????????????????? 1220048 bytes

??????? Variable Size???????????? 117441072 bytes

??????? Database Buffers????????? 348127232 bytes

??????? Redo Buffers??????????????? 2973696 bytes

????? ?

??????? SQL> ho ps -ef | grep oracle?? --ORACLE_SID參與了后臺進程命名

??????? oracle??? 3272???? 1? 0 09:46 ???????? 00:00:00 ora_pmon_orcl

??????? oracle??? 3274???? 1? 0 09:46 ???????? 00:00:00 ora_psp0_orcl

??????? oracle??? 3276???? 1? 1 09:46 ???????? 00:00:00 ora_mman_orcl

??????? oracle??? 3278???? 1? 0 09:46 ???????? 00:00:00 ora_dbw0_orcl

??????? oracle??? 3280???? 1? 0 09:46 ???????? 00:00:00 ora_lgwr_orcl

??????? oracle??? 3282???? 1? 0 09:46 ???????? 00:00:00 ora_ckpt_orcl

??????? oracle??? 3284???? 1? 0 09:46 ???????? 00:00:00 ora_smon_orcl

??????? ---------............部分結果省略.............. --------------

?

二、INSTANCE_NAME

??? 用于標識數據庫實例的名稱,缺省值通常為ORACLE_SID

??? 用于和操作系統之間聯系,根據實例名產生的響應的實例來取得與數據庫的交互

??? 初始化參數中INSTANCE_NAME與ORACLE_SID可以不同

??? 不同的實例可以擁有相同的INSTANCE_NAME,只要ORACLE_SID不同,則與ORACLE_HOME哈希可以得到不同的值

??? INSTANCE_NAME可以用于向監聽器動態注冊

?

??? [oracle@robinson ~]$ cp $ORACLE_HOME/dbs/initorcl.ora $ORACLE_HOME/dbs/initscott.ora

??? [oracle@robinson ~]$ export ORACLE_SID=scott?????????? --設定ORACLE_SID為scott

??? [oracle@robinson ~]$ env | grep ORA

??? ORACLE_SID=scott

??? ORACLE_BASE=/u01/app/oracle

??? ORACLE_HOME=/u01/app/oracle/10g

??? [oracle@robinson ~]$ sqlplus / as sysdba

?

??? SQL*Plus: Release 10.2.0.1.0 - Production on Wed Sep 1 10:04:59 2010

?

??? Copyright (c) 1982, 2005, Oracle.? All rights reserved.

?

??? Connected to an idle instance.

?

??? SQL> startup nomount;???????????????????????????????? --啟動實例scott

??? ORACLE instance started.

?

??? Total System Global Area? 469762048 bytes

??? Fixed Size????????????????? 1220048 bytes

??? Variable Size???????????? 134218288 bytes

??? Database Buffers????????? 331350016 bytes

??? Redo Buffers??????????????? 2973696 bytes

? ?

??? SQL> show parameter instance_name;??????????????? ?

?

??? NAME???????????????????????????????? TYPE??????? VALUE

??? ------------------------------------ ----------- ------------------------------

??? instance_name??????????????????????? string????? scott

?

??? SQL> ho ps -ef | grep scott???? --可以看到后臺以scott命名的進程

??? oracle??? 3489???? 1? 0 10:05 ???????? 00:00:00 ora_pmon_scott

??? oracle??? 3491???? 1? 0 10:05 ???????? 00:00:00 ora_psp0_scott

??? oracle??? 3493???? 1? 0 10:05 ???????? 00:00:00 ora_mman_scott

??? oracle??? 3495???? 1? 0 10:05 ???????? 00:00:00 ora_dbw0_scott

??? oracle??? 3497???? 1? 0 10:05 ???????? 00:00:00 ora_lgwr_scott

??? oracle??? 3499???? 1? 0 10:05 ???????? 00:00:00 ora_ckpt_scott

??? ---------............部分結果省略.............. --------------

?

??? SQL> ho ps -ef | grep ora --此時可以看到后臺啟動了orcl和scott兩個實例

??? oracle??? 3445???? 1? 0 10:01 ???????? 00:00:00 ora_pmon_orcl

??? oracle??? 3447???? 1? 0 10:01 ???????? 00:00:00 ora_psp0_orcl

??? oracle??? 3449???? 1? 0 10:01 ???????? 00:00:00 ora_mman_orcl

??? oracle??? 3451???? 1? 0 10:01 ???????? 00:00:00 ora_dbw0_orcl

??? oracle??? 3453???? 1? 0 10:01 ???????? 00:00:00 ora_lgwr_orcl

??? oracle??? 3455???? 1? 0 10:01 ???????? 00:00:00 ora_ckpt_orcl

??? oracle??? 3457???? 1? 0 10:01 ???????? 00:00:00 ora_smon_orcl

??? oracle??? 3497???? 1? 0 10:05 ???????? 00:00:00 ora_lgwr_scott

??? oracle??? 3499???? 1? 0 10:05 ???????? 00:00:00 ora_ckpt_scott

??? oracle??? 3501???? 1? 0 10:05 ???????? 00:00:00 ora_smon_scott

??? oracle??? 3503???? 1? 0 10:05 ???????? 00:00:00 ora_reco_scott

??? oracle??? 3505???? 1? 0 10:05 ???????? 00:00:00 ora_cjq0_scott

??? oracle??? 3507???? 1? 0 10:05 ???????? 00:00:00 ora_mmon_scott

??? ---------............部分結果省略.............. --------------

?

??? SQL> select * from dual;

?

??? ADDR?????????? INDX??? INST_ID D

??? -------- ---------- ---------- -

??? 0C4B2FD4????????? 0????????? 1 X

?

??? --用于向監聽器動態注冊

??? SQL> ho lsnrctl status

?

??? LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 01-SEP-2010 12:30:13

??? --------------------------部分省略---------------------------------------

??? Listener Parameter File?? /u01/app/oracle/10g/network/admin/listener.ora

??? Listener Log File???????? /u01/app/oracle/10g/network/log/listener.log

??? Listening Endpoints Summary...

????? (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))

????? (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=robinson.com)(PORT=1521)))

??? Services Summary...

??? Service "PLSExtProc" has 1 instance(s). --服務名PLSExtProc及實例名PLSExtProc

????? Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...

??? Service "orcl" has 1 instance(s).

????? Instance "orcl", status READY, has 1 handler(s) for this service...

??? Service "orclXDB" has 1 instance(s).? --服務名orcl_XDB,實例名為orcl

????? Instance "orcl", status READY, has 1 handler(s) for this service...

??? Service "orcl_XPT" has 1 instance(s). --服務名orcl_XPT,實例名為orcl

????? Instance "orcl", status READY, has 1 handler(s) for this service...

??? The command completed successfully

?

三、DB_NAME

??? 數據庫的唯一標識,是一個不超過8個字符的文本串

在創建數據庫時定義,被記錄在數據文件、控制文件和日志文件當中。

??? 用于實例與數據庫的掛接,通常缺省的情況下,INSTANCE_NAME與DB_NAME設置為相同。

??? 在RAC環境中,多實例對應于一個數據庫,故INSTANCE_NAME與DB_NAME不同。

??? 對于早期的數據庫,單單用DB_NAME參數足以表示一個數據庫,隨著多個數據庫構成分布式數據庫,因為數據庫名字可能一樣,為避免此類命名方式造成了管理上的混亂,引入DB_DOMAIN參數,即數據庫名字由DB_NAME和DB_DOMAIN兩個參數共同決定的,兩個參數中間用.連接,類似于互聯網上機器名的管理。兩者的組合即被稱為GLOBAL_NAME。關于DB_DOMAIN和GLOBAL_NAME請參照后續描述。

?

??? 實例與數據庫的關系

??????? 一個實例可以mount并打開任何數據庫,但同一時間一個實例僅僅只能打開一個數據庫

??????? 一個數據庫可以被一個或多個實例mount并打開,比如在RAC環境中,一個數據可以被多個實例打開

??????? 在非RAC環境中使用不同的實例名來打開同一個數據庫將收到錯誤提示,如下:

?

??? [oracle@robinson ~]$ export ORACLE_SID=scott? --設置實例名為scott并啟動該實例

??? [oracle@robinson ~]$ sqlplus / as sysdba

?

??? SQL*Plus: Release 10.2.0.1.0 - Production on Wed Sep 1 12:41:49 2010

?

??? Copyright (c) 1982, 2005, Oracle.? All rights reserved.

?

??? Connected to an idle instance.

?

??? SQL> startup

??? ORACLE instance started.

?

??? Total System Global Area? 469762048 bytes

??? Fixed Size????????????????? 1220048 bytes

??? Variable Size???????????? 134218288 bytes

??? Database Buffers????????? 331350016 bytes

??? Redo Buffers??????????????? 2973696 bytes

??? ORA-01102: cannot mount database in EXCLUSIVE mode --收到錯誤信息,不能夠mount該數據庫

?

??? SQL> select instance_name,status from v$instance;

?

??? INSTANCE_NAME??? STATUS

??? ---------------- ------------

??? scott??????????? STARTED

?

??? SQL> ho ps -ef | grep oracle? --查看后臺啟動了兩個實例一個為orcl,一個為scott

?

??? oracle??? 4800???? 1? 0 12:19 ???????? 00:00:00 ora_pmon_orcl

??? oracle??? 4805???? 1? 0 12:19 ???????? 00:00:00 ora_psp0_orcl

??? oracle??? 4807???? 1? 0 12:19 ???????? 00:00:00 ora_mman_orcl

??? oracle??? 4809???? 1? 0 12:19 ???????? 00:00:00 ora_dbw0_orcl

??? oracle??? 4811???? 1? 0 12:19 ???????? 00:00:00 ora_lgwr_orcl

??? oracle??? 4813???? 1? 0 12:19 ???????? 00:00:00 ora_ckpt_orcl

??? oracle??? 4961???? 1? 0 12:41 ???????? 00:00:00 ora_pmon_scott

??? oracle??? 4963???? 1? 0 12:41 ???????? 00:00:00 ora_psp0_scott

??? oracle??? 4965???? 1? 0 12:41 ???????? 00:00:00 ora_mman_scott

??? oracle??? 4967???? 1? 0 12:41 ???????? 00:00:00 ora_dbw0_scott

??? ---------............部分結果省略.............. --------------

? ?

??? SQL> ho grep name $ORACLE_HOME/dbs/initscott.ora? --initscott.ora由initorcl.ora復制而來,故有相同的數據庫名稱

??? *.db_name='orcl'????? ?

?

??? --而此時DB_NAME='orcl'已被實例orcl啟動,故收到了ORA-01102: cannot mount database in EXCLUSIVE mode

??? --關閉orcl實例后,并啟動scott實例,使之加載orcl數據庫

? ?

??? SQL> ho env | grep ORA

??? ORACLE_SID=scott

??? ORACLE_BASE=/u01/app/oracle

??? ORACLE_HOME=/u01/app/oracle/10g

?

??? SQL> startup

??? ORACLE instance started.

?

??? Total System Global Area? 469762048 bytes

??? Fixed Size????????????????? 1220048 bytes

??? Variable Size???????????? 134218288 bytes

??? Database Buffers????????? 331350016 bytes

??? Redo Buffers??????????????? 2973696 bytes

??? Database mounted.

??? Database opened.???? --正常啟動,即一個數據可以被任意實例mount并打開

?

??? SQL> select instance_name,status,database_status from v$instance;

?

??? INSTANCE_NAME??? STATUS?????? DATABASE_STATUS

??? ---------------- ------------ -----------------

??? scott??????????? OPEN???????? ACTIVE

?

??? SQL> select name,open_mode from v$database;

?

??? NAME????? OPEN_MODE

??? --------- ----------

??? ORCL????? READ WRITE

?

??? 總結:

??????? 一個實例可以mount并打開任何數據庫,但任一時刻僅僅只能打開一個數據庫

??????? 一個數據庫可以被一個或多個實例mount并打開,比如在RAC環境中,一個數據可以被多個實例打開

??????????? 如數據庫orcl 首先被orcl 實例打開。但不能被scott實例打開

??????????? 當關閉orcl實例后,數據庫orcl能夠被scott實例mount并打開

?

四、DB_DOMAIN

??? 通常用于分布式數據庫系統中標識一個數據庫的邏輯位置。為數據定義一個域,該參數作為Global_names的一部分,即在不同的域中可以使用相同的數據庫名稱,該參數缺省情況下位空,在RAC環境中需要為每一個實例指定該值,且多實例具有相同的值

??? SQL> show parameter db_domain

?

??? NAME???????????????????????????????? TYPE??????? VALUE

??? ------------------------------------ ----------- ------------------------------

??? db_domain??????????????????????????? string

? ?

五、GLOBAL_NAME

一個是GLOBAL_NAME,一個是GLOBAL_NAMES參數,GLOBAL_NAME是全局數據庫名,GLOBAL_NAMES參數設定是否啟用全局數據庫名。

??? GLOBAL_NAME的形式為:DB_NAME.DB_DOMAIN

??? 修改global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO <db_name.db_domain>命令進行修改,然后修改相應參數。

? ?

??? SQL> select * from global_name;?? --查看數據庫的global_name

?

??? GLOBAL_NAME

??? --------------------------------------------------------------------------------

??? ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM

?

??? SQL> alter database rename global_name to orcl.robinson.com; --修改數據庫的global_name

?

??? Database altered.

?

??? SQL> select * from global_name;

?

??? GLOBAL_NAME

??? --------------------------------------------------------------------------------

??? ORCL.ROBINSON.COM

? ?

??? GLOBAL_NAMES參數通常對于分布式處理,Oracle 建議將該值設為TRUE,用于確保通連接到網絡環境使用一致性的命名方式。

??? 一般情況下假定全局數據庫的名稱為orcl.robinosn.com ,當GLOBAL_NAMES設置為true時,數據庫執行調用時會核查鏈接的名字是否和遠程

??? 全局數據庫名稱一致,否則如果為false,可以任意定義數據庫鏈接的名字。

??? 假定遠程數據庫名稱為orcl.robinosn.com ,參數global_names設為true,則必須使用下面的方式來調用

??????? select * from scott.emp@orcl.robinson.com

??? 如果global_names設為false,則可以使用定義的任意名字來調用

??????? select * from scott.emp@orclalias

????? ?

??? SQL> show parameter global_names?? --查看global_names參數的設置情況

?

??? NAME???????????????????????????????? TYPE??????? VALUE

??? ------------------------------------ ----------- ------------------------------

??? global_names???????????????????????? boolean???? FALSE

? ?

??? 關于GLOBAL_NAMES更多參考:Oracle Database Administrator’s Guide(Distributed Database Concepts)

?

? ?

六、GLOBAL_DBNAME

??? 事實上,GLOBAL_DBNAME并不是一個初始化參數文件中的參數,而是在配置偵聽器中用于標識數據庫服務

??? 下面是來自Oracle的官方描述

??? Identifies the database service.

??????? While processing a client connection request, the listener tries to match the value of this parameter with? the value of the SERVICE_NAME parameter in the client connect descriptor. If the client connect descriptor uses??? the SID parameter, then the listener does not attempt to map the values. This parameter is primarily intended??? for configurations with Oracle8 release 8.0 databases(where dynamic service registration is not supported for dedicated servers). This parameter may also be required for use with Oracle8i and higher database services by some configurations.

??????? The value for this parameter is typically obtained from the combination of the DB_NAME and DB_DOMAIN parameters? (DB_NAME.DB_DOMAIN) in the initialization parameter file, but the value can also contain any valid name used by clients to identify the service.

????? ?

??? 也稱為全局數據庫名稱,是對一個數據庫(Oracle database)的唯一標識,oracle建議用此種方法命令數據庫。

??? 該值是在創建數據庫是決定,缺省值為DB_NAME.DB_DOMAIN。

??? 在以后對參數文件中DB_NAME與DB_DOMAIN參數的任何修改不影響GLOBAL_NAME的值

總結

以上是生活随笔為你收集整理的几个环境变量说明:ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAMES的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。