Linux下Oracle單實例配置多監聽


Oracle單實例配置多監聽

一、前言

有時候我們項目中需要使用Oracle數據庫,同時要需要不同的數據源,而Oracle不像Mysql那樣直接建個庫即可,Oracle是以賬號為單位,可以理解為一個賬號就是一個庫,但實際有區別,項目中數據庫連接數據源往往默認是安裝Oracle時生成的ORCL(目前只有一個ORCL實例,稱為“單實例”),這時候有人就想,那創建一個賬號不就行了,的確是需要創建賬號,但是本身數據源還是ORCL這一點始終沒有變,在Oracle數據庫中我們創建一個賬號實現了相當於創建了一個庫,但對於項目來說,還是一個ORCL數據源,無非就是賬號和密碼變了,對於他來說這一點是不行的,所以可以使用一下方法解決他

方案一

創建一個新實例,並將它注冊到監聽中即可(本篇文章暫不介紹,可自行百度)

方案二(本篇)

也就是標題說的,單個實例,配置多個監聽,此時,對內實際還是使用同一個實例,對外看似是不同數據源和不同賬號,實際上是同一實例,不同賬號(可以理解為Mysql的不同庫)罷了

 

二、單實例配置多監聽

主要修改兩個配置文件即可 在ORACLE_HOME目錄下的/network/admin/目錄下

listener.ora和tnsnames.ora文件,卻有注釋,可根據自身實際情況進行修改

listener.ora

#這是名稱為LISTENER的監聽器靜態注冊的服務
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
        #服務名 多個監聽不能配置相同,否則連接進來不知道具體在那個服務上
      (GLOBAL_DBNAME = snorcl11g)
        #oracle實例名稱
      (SID_NAME = snorcl11g)
      (ORACLE_HOME = /oracle/home)
    )
  )

#LISTENER2監聽器監聽的靜態實例注冊
SID_LIST_LISTENER2 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl11g)
        #oracle實例名稱
      (SID_NAME = snorcl11g)
      (ORACLE_HOME = /oracle/home)
    )
  )


#這是名稱為LISTENER的監聽器 默認
LISTENER =
  (DESCRIPTION_LIST =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.7)(PORT = 1521))
   )
  )

#LISTENER2的監聽器
LISTENER2 =
  (DESCRIPTION_LIST =
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.7)(PORT = 1522))
   )
  )

#oracle安裝目錄
ADR_BASE_LISTENER = /oracle

tnsnames.ora

#SNORCL11G 隨便起,建議見名知意
#snorcl11g是實例名
#表示使用TCP協議,連接IP地址為127.0.0.1,端口號為1521的數據庫主機上服務名為snorcl11g的數據庫
#如果有多個監聽,可以手動添加
SNORCL11G =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.7)(PORT = 1521))
      (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = snorcl11g)
      )
  )



LISTENER2_SNORCL11G =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.7)(PORT = 1522))
      (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = snorcl11g)
      )
  )

至此配置就結束啦,我們來啟動試試

啟動監聽服務

# 默認啟動listener監聽
# stop 停止
# status 監聽狀態
lsnrctl start

# 啟動新監聽LISTENER2
lsnrctl start listener2

可以看到默認配置的監聽啟動成功了,對外連接使用SNORCL11G,監聽實例為SNORCL11G,監聽端口1521

可以看到我們配置的第二個監聽啟動成功了,對外連接使用ORCL11G,監聽實例為SNORCL11G,監聽端口1522

# 測試實例是否被監聽
tnsping snorcl11g

此處的端口號為默認的,可忽略,只要看到OK,就表示該實例已監聽到了

這下可以通過遠程連接根據監聽的內容去嘗試連接啦

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM