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]
看看資料庫引數設定:
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)
)
)
)
)
相關推薦
Oracle中Service Name、Database name、Instance Name的區別
1,資料庫名是Oracle資料庫的內部標識,一般在安裝完後不應該改變,資料庫的很多物理儲存目錄都用到了資料庫名。 2,Instance_Name,ORACLE_SID,資料庫例項名,是資料庫和作業系統互動時用到的名稱。 如果在一臺機器上建立了多個數據庫,通過Sqlplus想
oracle中三種循環(For、While、Loop)案例
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_date、to_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中的數據
oracle中scott/tiger、sys、SYSDBA、system都是什麽用
blank ora fff col system detail acl .net details oracle中scott/tiger、sys、SYSDBA、system都是什麽用 點我,點我~oracle中scott/tiger、sys、SYSDBA、sy
oracle中drop、delete和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中 in、exists、not 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的序列·序列是用來生成惟一的連續的整數的數據庫對象。序列通常可以用來自動生成主鍵或者唯
關於Oracle中sys、system和Scott用戶下的數據庫連接問題
連接 con str sta sys oracle cot conn nag system默認:manager sys默認:change_on_install 使用SQL Plus登錄數據庫時,system使用密碼manager可直接登錄。 由於為自己的密碼時更改過
Oracle中nvl()、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
MySQL、SQL server 、Oracle資料庫中查詢所有的資料庫,查詢指定資料庫所有表名,查詢所有的欄位的名字
MySQL中查詢所有資料庫名和表名 1.查詢所有資料庫 show databases; 2.查詢指定資料庫中所有表名 select table_name from information_schema.tables where table_schema='database_name' a
oracle中length()、lengthb()、replace()、regexp_substr()函式使用
oracle中length()、lengthb()、replace()、regexp_substr()函式使用 1. length()、lengthb(): lengthb(string)獲取string所佔的位元組長度:返回字串的長度,單位是位元組
oracle中三種迴圈(For、While、Loop)案例
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
Oracle中PL/SQL之 while、for、loop 三種迴圈方式的使用
PL/SQL while、for、loop 三種迴圈方式的使用 1、WHILE ... LOOP ... END LOOP 語法: WHILE 條件 LOOP 語句; END LOOP; 例子:輸出1到5的數字 declare num number :
Oracle中PL/SQL之常量和變數的定義、遊標(游標)的使用
PL/SQL常量和變數的定義 變數的資料型別:char、varchar2、date、number、boolean、long 常量定義:isshow boolean :=true; 說明變數:說明變數名、資料型別和長度後用分號結束說明語句。例:e_name varchar2(20);