1. 程式人生 > >Oracle中Service Name、Database name、Instance Name的區別

Oracle中Service Name、Database name、Instance Name的區別

1,資料庫名是Oracle資料庫的內部標識,一般在安裝完後不應該改變,資料庫的很多物理儲存目錄都用到了資料庫名。

2,Instance_Name,ORACLE_SID,資料庫例項名,是資料庫和作業系統互動時用到的名稱。

如果在一臺機器上建立了多個數據庫,通過Sqlplus想連線到其中的一個數據庫,就需要指明ORACLE_SID:

set ORACLE_SID=SIDNAME

sqlplus / as sysdba(這種連法只能在本機用,會根據ORACLE_SID連線到對應的例項)

通常碰到的12560錯誤一般就是因為例項名被錯誤修改或者服務沒有被啟動。

Instance_Name則是資料庫的一個引數.

3,Service Name:服務名,如果資料庫有域名則等同於Global DB Name、沒有的話則等同於資料庫名,這是因為資料庫啟動後會自動把資料庫名註冊到監聽成為服務名,同時資料庫引數service_names也會註冊為服務名,所以一個數據庫可以有多個服務名.

當在Oracle8i,9i,10g的客戶端連線Oracle8i,9i,10g伺服器的時候,主機字串應該使用服務名。

4,Net Service Name:網路服務名,也有人叫TNS別名、網路連線串(connect string),在tnsnames.ora中配置的名稱,如下面例子的DBTNS.
sqlplus sys/[email protected]

as sysdba(這種連法會根據tnsnames.ora中配置的網路服務名連線到本機或者遠端的oracle,走的是網路通訊)

看看資料庫引數設定:
SQL> show parameter instance_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------
instance_name                        string      orcl
SQL> show parameter service_names
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------
service_names                        string      orcla,orclb
SQL> show parameter db_name
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------
db_name                              string      orcl
service_names也可以通過alter system set service_names=orclA,orclB;修改為對應多個值。

listener啟動時候根據listener.ora配置的資訊靜態註冊可用的服務,同時資料庫例項啟動以後(PMON)會把

service_names,db_name的值動態的註冊到Listener。

例如,如果service_names的值為orcla,orclb,db_name的值為orcl,在listener.ora裡有如下配置:

    (SID_DESC =
      (GLOBAL_DBNAME = orclst) 
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (SID_NAME = orcl)
    )

則在Tnsname.ora中可以作為SERVICE_NAME的值為orcla,orclb,orcl,orclst

通過lsnrct status 可以看到這些服務的資訊: status READY的為動態註冊的(因為是在例項啟動之後才註冊到listener的,所以狀態為ready),status UNKNOWN的為靜態註冊的(因為是listener啟動的時候根據配置啟動的,這是例項是否啟動是不知道的,所以為unknown)。

通過連線後看v$session中的service_name也可以判斷用的服務名是靜態註冊的還是動態註冊的.SYS$USERS表示為靜態的.

其中orclst為靜態的註冊,檢視session可以看到如下

SQL> select service_name from v$session where sid=(select distinct(sid) from v$mystat);
SERVICE_NAME
----------------------------------------------------------------
SYS$USERS

其中通過orclsa為動態的註冊,檢視session可以看到如下

SQL> select service_name from v$session where sid=(select distinct(sid) from v$mystat);
SERVICE_NAME
----------------------------------------------------------------
orcla


Services Summary...
Service "ORCLA" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "ORCLB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
  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).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl_XPT" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclst" has 1 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

動態註冊預設只能註冊1521的listener,如果監聽埠不是1521,需要:

1,在伺服器端的Tnsname.ora中配置一個tns指明埠號,只有ADDRESS配置沒有CONNECT_DATA配置項:

lclsn=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = PC-6753184)(PORT = 1522))
  )

2,將資料庫的引數 local_listener的值改為伺服器端的Tnsname.ora配置的lclsn:

 alter system set local_listener=lclsn;

Tnsname.ora中配置: 通過lsnrct status得到可以用的SERVICE_NAME ,如orcla,orclb,orcl...

DBTNS =
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.19.11.28)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = teldb)
    )
)

上面例子中的SERVICE_NAME = teldb也可以換成SID=orcl.

一個數據庫叢集的例子:

DBCLUSTER=
  (DESCRIPTION_LIST =

    (LOAD_BALANCE = OFF)

    (FAILOVER = ON)

    (DESCRIPTION =

      (ADDRESS_LIST =

        (LOAD_BALANCE = ON)

        (FAILOVER = ON)

        (ADDRESS = (PROTOCOL = TCP)(HOST = rdl701d001-oravip.test.com)(PORT = 6191))

        (ADDRESS = (PROTOCOL = TCP)(HOST = rdl701d002-oravip.test.com)(PORT = 6191))

        (ADDRESS = (PROTOCOL = TCP)(HOST = rdl701d003-oravip.test.com)(PORT = 6191))

        (ADDRESS = (PROTOCOL = TCP)(HOST = rdl701d004-oravip.test.com)(PORT = 6191))

        (ADDRESS = (PROTOCOL = TCP)(HOST = rdl701d005-oravip.test.com)(PORT = 6191))

        (ADDRESS = (PROTOCOL = TCP)(HOST = rdl701d006-oravip.test.com)(PORT = 6191))

      )

      (CONNECT_DATA =

        (SERVICE_NAME = opofs_rd)

        (FAILOVER_MODE =

          (TYPE = SESSION)

          (METHOD = BASIC)

          (RETRIES = 120)

          (DELAY = 5)

        )

      )

    )

  )

相關推薦

OracleService NameDatabase nameInstance Name區別

1,資料庫名是Oracle資料庫的內部標識,一般在安裝完後不應該改變,資料庫的很多物理儲存目錄都用到了資料庫名。 2,Instance_Name,ORACLE_SID,資料庫例項名,是資料庫和作業系統互動時用到的名稱。 如果在一臺機器上建立了多個數據庫,通過Sqlplus想

oracle三種循環(ForWhileLoop)案例

acl end tput out class toolbar 代碼 exit for循環 1.ORACLE中的FOR循環用法(九九乘法表) 1 declare 2 i int:=0; 3 j int:=0; 4 begin 5 for i in 1..9 lo

oracle,建立資料表空間使用者,為使用者賦許可權

在cmd中輸入sqlplus/nolog使用者oracle超級管理員使用者登入SQL>conn / as sysdba;建立表空間(刪除表空間語句:drop tablespace test;)SQ

Oracle給表新增主鍵外來鍵

1、建立表的同時建立主鍵約束 (1)無命名 create table student ( studentid int primary key not null, studentname varchar(8), age int); (2)有命名 create tab

Oracle 給表新增主鍵外來鍵

(1)無命名 create table student ( studentid int primary key not null, studentname varchar(8), age int); (2)有命名 create table students ( studentid int , stu

Oracle的時間函式用法(to_dateto_char)

一、24小時的形式顯示出來要用HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual; 二、

Sqoop_具體總結 使用Sqoop將HDFS/Hive/HBase與MySQL/Oracle的數據相互導入導出

能夠 mes south ase form html 技術 popu 沒有 一、使用Sqoop將MySQL中的數據導入到HDFS/Hive/HBase 二、使用Sqoop將HDFS/Hive/HBase中的數據導出到MySQL 2.3 HBase中的數據

oraclescott/tigersysSYSDBAsystem都是什麽用

blank ora fff col system detail acl .net details     oracle中scott/tiger、sys、SYSDBA、system都是什麽用     點我,點我~oracle中scott/tiger、sys、SYSDBA、sy

oracledropdelete和truncate的區別

win style 刪除數據 oracl 數據庫 不能 存在 表空間 結構 oracle中可以使用drop、delete和truncate三個命令來刪除數據庫中的表, 1. delete和truncate都是刪除表中的內容而不能刪除表的結構,而drop則是刪除表的結構和內容

Oracle count(1) count(*) 和count(列名) 函數的區別

select sdn 快的 包含 varchar2 into 要去 tails lan 1)count(1)與count(*)比較: 1、如果你的數據表沒有主鍵,那麽count(1)比count(*)快2、如果有主鍵的話,那主鍵(聯合主鍵)作為count的條件也比count

Oracle inexistsnot in,not exists的比較

src inf .... blog pos str bug class exists 最基本的區別: in 對主表使用索引 exists 對子表使用索引 not in 不使用索引 not exists 對主子表都使用索引 寫法: exist的where條件是: "..

Oracle對象下集(序列同義詞分區表database link)

databse link Oracle同義詞 Oracle序列 Oracle分區表 張晨 本人所有博文純手碼,給個關註或者贊吧!博主:張晨晨QQ:1445696451歡迎隨時加Q討論技術。一、Oracle的序列·序列是用來生成惟一的連續的整數的數據庫對象。序列通常可以用來自動生成主鍵或者唯

關於Oraclesyssystem和Scott用戶下的數據庫連接問題

連接 con str sta sys oracle cot conn nag system默認:manager sys默認:change_on_install 使用SQL Plus登錄數據庫時,system使用密碼manager可直接登錄。 由於為自己的密碼時更改過

Oraclenvl()instr()及執行多條sql事務操作

col blog acl val 關鍵字 關鍵字查詢 tps art 數據類型 Oracle的Nvl函數 nvl( ) 函數 從兩個表達式返回一個非null 值。 語法 NVL(eExpression1, eExpression2) 參數 eExpression1, eE

oracle 如何查詢當前用戶可以看到的表名表對應的所有字段

tables .com pre column inner bsp nts .data code 前言:利用 oracle 的視圖來查詢表的相關信息。 oracle 查詢當前用戶下的表名 + 表註釋 select t.table_name tableName, f.co

MySQLSQL server Oracle資料庫查詢所有的資料庫,查詢指定資料庫所有表名,查詢所有的欄位的名字

MySQL中查詢所有資料庫名和表名 1.查詢所有資料庫 show databases; 2.查詢指定資料庫中所有表名 select table_name from information_schema.tables where table_schema='database_name' a

oraclelength()lengthb()replace()regexp_substr()函式使用

oracle中length()、lengthb()、replace()、regexp_substr()函式使用  1. length()、lengthb():     lengthb(string)獲取string所佔的位元組長度:返回字串的長度,單位是位元組

oracle三種迴圈(ForWhileLoop)案例

1.ORACLE中的FOR迴圈用法(九九乘法表) 1 declare 2 i int:=0; 3 j int:=0; 4 begin 5 for i in 1..9 loop 6 for j in 1..i loop 7 Dbms_Output.p

OraclePL/SQL之 whileforloop 三種迴圈方式的使用

PL/SQL  while、for、loop 三種迴圈方式的使用 1、WHILE ... LOOP ... END LOOP 語法: WHILE 條件 LOOP 語句; END LOOP; 例子:輸出1到5的數字 declare num number :

OraclePL/SQL之常量和變數的定義遊標(游標)的使用

PL/SQL常量和變數的定義 變數的資料型別:char、varchar2、date、number、boolean、long 常量定義:isshow boolean :=true; 說明變數:說明變數名、資料型別和長度後用分號結束說明語句。例:e_name varchar2(20);