oracle 體系結構及內存管理 02_監聽及網絡配置

一、Oracle監聽
    監聽具備獨立性:與數據庫的啓動順序無關前後,監聽知道數據庫的位置與端口,與數據庫沒有常鏈接。
    鏈接創建流程:客戶端鏈接監聽,監聽將客戶端鏈接轉發給數據庫實例,數據庫實例專門爲鏈接啓動一個
server process,同時將SP的地址告訴監聽,監聽再轉告客戶端,客戶端直接對SP發起鏈接請求,SP校驗經過
用戶名密碼後正式創建鏈接。監聽只在創建鏈接時啓做用,與數據庫沒有常鏈接,鏈接創建後,監聽關閉不影
響會話正常執行SQL。
    當鏈接時有@網絡服務名,客戶端會自動調用tnsname.ora文件,解析成IP,端口,連的服務名html

listener.ora文件:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
          (PROGRAM = extproc)
        )
        -- 靜態鏈接配置,靜態註冊在查詢監聽狀態時會有UNKNOWN狀態的服務,靜態鏈接穩定,數據庫將服務名註冊到監聽
        (SID_DESC =
          (GLOBAL_DBNAME =ipems)      --服務名
          (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
          ( SID_NAME = ipems)         --實例名
        )
      )    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1521))
        )
      )    
-- 同一listener中配置一動態一靜態監聽
    LSNR2 =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1526))
        )
      )    
    SID_LIST_LSNR2 =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
          (PROGRAM = extproc)
        )
      )    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1521))
        )
      )    
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = ipems)
          (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
          (GLOBAL_DBNAME = ipems)
        )
      )       
tnsnames.ora文件
    ipems =                           --網絡服務名
     (DESCRIPTION =
       (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.200)(PORT = 1521))
        )
       (CONNECT_DATA =
          (SERVER= DEDICATED)        --服務器模式
          (SERVICE_NAME = ipems)     --服務名
        )
      ) 
    lsnr2 =                          --網絡服務名
     (DESCRIPTION =
       (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.200)(PORT = 1526))
        )
       (CONNECT_DATA =
          (SERVER= DEDICATED)        --服務器模式 dedicated,shared
          (SERVICE_NAME = ipems)     --服務名
        )
      )    
rac tnsnames.ora
racdb=
 (DESCRIPTION=
  (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.10)(PORT=1521))   --vip
    (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.11)(PORT=1521)))
  (CONNECT_DATA=
    (SERVICE_NAME=racdb)))      
-- 非默認的動態listener能夠正常起來須要在initSID.ora中配置local_listener='lsnr2';    --動態網絡服務名

二、Oracle數據庫的幾個名字
    show parameter name
    數據庫名:select dbid,name from v$database;
    實例名:  show parameter instance
              select INSTANCE_NUMBER,INSTANCE_NAME from v$instance;
    服務名:  show parameter service
    主機名:數據庫IP地址
    網絡服務名:隨便啓,最好與實例名相同
三、netca 配置監聽程序和本地Net服務
    [root@redhat7 ~]# xhost +
    [root@redhat7 ~]# export DISPLAY=192.168.0.1:0.0 --將圖形界面映射到本地
    [root@redhat7 ~]# su - oracle
    [oracle@redhat7 ~]$ netca
    lsnrctl start| status| stop      --監聽的啓動關閉狀態查詢
    tnsping ipems                    --tnsping網絡服務名,測試是否能夠ping通,能ping通不必定能連上
    netstat -tulnp|grep 1521         --監聽是否正常啓動
    alter system register;           --手動註冊,pmon註冊數據庫service name到監聽裏
四、幾種鏈接方式
    sqlplus hr/hr                               --不走監聽,本地連
    sqlplus / as sysdba                         --不走監聽
    sqlplus hr/hr@ipems                         --走監聽
    sqlplus hr/hr@192.168.0.100:1521/ipems      --走監聽,沒有走tnsname.ora
    鏈接時oracle發現有@字符串,會利用tnsnames.ora解析爲主機IP和端口號,經過這兩找到監聽,監聽再根據service_name
找到具體實例。
五、雙監聽:雙IP或者雙端口
    遺留,雙網卡,負載均衡。
六、oracle的監聽日誌
查找日誌:
    # find /u01/app/ -name listener.log
    lsnrctl status
oracle監聽日誌解析
    監聽日誌記錄監聽器的工做過程,由於一些32bitOS自帶的文件系統不支持2GB以上的文件,致使監聽服務進程
(tnslsnr)append write日誌文件出錯關於「LISTENER.LOG日誌大小不能超過2GB,超過會致使LISTENER監聽器無
法處理新的鏈接。
清理監聽日誌:
    lsnrctl set log_status off
    mv listener.log listener.yyyymmdd
    lsnrctl set log_status on
lsnrctl status顯示信息解析
    UNKNOWN,READY狀態說明其目前有一個靜態註冊和一個動態註冊
    SID_XPT服務:爲DG準備的服務,DB BROKER會用到,若是不用DG能夠刪掉。
    SID:啓動數據庫實例的服務
    SIDXDB:高效處理XML數據的服務,默認會佔用8080端口。
    PLSExtProc:PL/SQL調用外部接口(C、JAVA編寫的過程)的服務,能夠從listerner.ora中移除該項,在監聽
啓動時再也不啓動PLSExtProc服務。
七、sqlnet.ora用來決定oracle怎麼解析一個鏈接中出現的字符串。在域用戶即非系統管理員用戶安裝oracle
建立數據庫實例時會報錯,能夠將用戶添加到DBA組或者刪掉sqlnet.ora文件。sql

八、涉及IP地址有關的文件
    Oracle默認會在..\product\10.2.0\db_1下面建立一個名爲「當前IP或機器名_SID」的目錄,該目錄存儲
的是SID實例的配置等信息;
    同時Oracle默認在..\product\10.2.0\db_1\oc4j\j2ee目錄下建立一個名爲「OC4J_DBConsole_當前IP或機器名_SID」
的目錄,存放的是OracleDBConsole服務的相關配置等信息;
    Oracle 監聽文件listener.ora,本地網絡服務tnsnames.ora中的HOST設爲當前IP地址;
數據庫遷移或修改IP後只用關注第三種狀況,對應修改便可。數據庫

參考資料:
http://www.cnblogs.com/kerrycode/p/4227579.html
http://blog.itpub.net/17203031/viewspace-701017
http://www.ha97.com/4785.html服務器

相關文章
相關標籤/搜索