Linux hostname對Oracle實例以及監聽的影響

来源:http://www.cnblogs.com/kerrycode/archive/2016/06/18/5596725.html
-Advertisement-
Play Games

在Linux平臺中,對hostname的修改,是否對ORACLE資料庫實例或監聽進程有影響呢?如果有影響,又要如何解決問題呢?另外/etc/hosts下相關內容的修改,是否也會影響實例或監聽呢?這裡涉及的場景非常多,當然關係也非常複雜,我們下麵通過幾個例子來測試驗證一下。 如下所示,伺服器/etc/... ...


    在Linux平臺中,對hostname的修改,是否對ORACLE資料庫實例或監聽進程有影響呢?如果有影響,又要如何解決問題呢?另外/etc/hosts下相關內容的修改,是否也會影響實例或監聽呢?這裡涉及的場景非常多,當然關係也非常複雜,我們下麵通過幾個例子來測試驗證一下。

    如下所示,伺服器/etc/hosts 與/etc/sysconfig/network的原始配置信息如下

[root@test ~]# more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
#::1            localhost6.localdomain6 localhost6
127.0.0.1       localhost.localdomain localhost
192.168.27.134  test test 
[root@test ~]# 
 
 
[root@test ~]# more /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=test
GATEWAY=192.168.27.1
[root@test ~]# 

 

 

1: 首先假設有個需求,需要修改hostname,使之變成test.edution.com(加上功能變數名稱部分), 那麼此時是否有問題呢?我們先修改/etc/sysconfig/network下的HOSTNAME,然後重啟伺服器

[root@test ~]# more  /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=test.eduction.com
GATEWAY=192.168.27.1
 
[root@test ~]# vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
#::1            localhost6.localdomain6 localhost6
127.0.0.1       localhost.localdomain localhost
192.168.27.134  test test

 

然後我們重啟資料庫實例後,並沒有任何問題,但是重啟監聽的時候遇到下麵錯誤:

[oracle@test ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 10.2.0.5.0 - Production on Sat Jun 18 16:42:21 2016
 
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
 
Connected to an idle instance.
 
SQL> startup
ORACLE instance started.
 
Total System Global Area 1509949440 bytes
Fixed Size                  2096472 bytes
Variable Size            1392509608 bytes
Database Buffers           67108864 bytes
Redo Buffers               48234496 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected from Oracle Database 10g Release 10.2.0.5.0 - 64bit Production
[oracle@test ~]$ lsnrctl start
 
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 18-JUN-2016 16:42:47
 
Copyright (c) 1991, 2010, Oracle.  All rights reserved.
 
Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
 
TNSLSNR for Linux: Version 10.2.0.5.0 - Production
Log messages written to /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=test.eduction.com)(PORT=1521)))
 
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12535: TNS:operation timed out
 TNS-12560: TNS:protocol adapter error
  TNS-00505: Operation timed out
   Linux Error: 110: Connection timed out
[oracle@test ~]$ 

clip_image001

 

出現這個問題時,必須修改/etc/hosts下主機名的部分,使之與/etc/sysconfig/network下的HOSTNAME一致,上面錯誤就能解決。如下紅色部分所示:

[root@test ~]# more /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=test.eduction.com

GATEWAY=192.168.27.1

[root@test ~]# more /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

#::1 localhost6.localdomain6 localhost6

127.0.0.1 localhost.localdomain localhost

192.168.27.134 test.eduction.com test

[root@test ~]#

 

由於這裡測試,我修改了功能變數名稱,如果伺服器真實功能變數名稱部分跟/etc/resolv.conf一致,那麼資料庫實例啟動過程中,監控告警日誌,就會發現告警日誌裡面會出現大量ORA-07445 & ORA-00108錯誤

clip_image002

 

2:修改/etc/sysconfig/network下的hostname並使之生效,如下所示

[oracle@kerry ~]$ more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
#::1            localhost6.localdomain6 localhost6
127.0.0.1       localhost.localdomain localhost
192.168.27.134  test.eduction.com  test 
[oracle@kerry ~]$ more /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=kerry.eduction.com
GATEWAY=192.168.27.1

 

資料庫實例啟動並沒有任何問題,但是監聽啟動出現上面一樣的錯誤。 如果功能變數名稱使用真實的功能變數名稱,則會遇到另外一種情況,告警日誌裡面也會出現下麵錯誤

Errors in file /u01/app/oracle/admin/SCM2/bdump/scm2_ora_4494.trc:

ORA-07445: exception encountered: core dump [kslgetl()+120] [SIGSEGV] [Address not mapped to object] [0x000000210] [] []

ORA-00108: failed to set up dispatcher to accept connection asynchronously

clip_image003

關於這個,可以參考官方文檔ORA-07445: [kslgetl()+80] Followed by ORA-108: failed to set up dispatcher to accept connection asynchronously (文檔 ID 1298804.1)

 

3: 如果屏蔽/etc/hosts下的localhost部分,如下所示,此時有可能會影響監聽

 

[root@kerry ~]# more /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
#::1            localhost6.localdomain6 localhost6
#127.0.0.1       localhost.localdomain localhost
192.168.27.134  kerry.eduction.com  kerry 
[root@kerry ~]# 
 
 
[oracle@kerry ~]$ lsnrctl start
 
LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 18-JUN-2016 17:45:37
 
Copyright (c) 1991, 2010, Oracle.  All rights reserved.
 
Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
 
TNSLSNR for Linux: Version 10.2.0.5.0 - Production
Log messages written to /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=kerry.eduction.com)(PORT=1521)))
 
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12547: TNS:lost contact
 TNS-12560: TNS:protocol adapter error
  TNS-00517: Lost contact
   Linux Error: 104: Connection reset by peer

clip_image004

這是因為我沒有在$ORACLE_HOME/network/admin下配置listener.ora,所以在註釋或刪除了/etc/hosts下localhost部分後就會出現這個錯誤,因為在沒有listener.ora下的情況下,都會使用預設值(如下官方文檔描述),監聽進程會使用本機配置127.0.0.1註冊監聽服務,所以會出現上面錯誤信息,官方文檔關於這方面的描述如下所示:

 

Oracle Net Listener Configuration Overview

Note:

Oracle Database 10g and later databases require a version 10 or later listener. Earlier versions of the listener are not supported for use with Oracle Database 10g and later databases. However, you can use a version 10 listener with previous versions of Oracle Database.

A listener is configured with one or more listening protocol addresses, information about supported services, and parameters that control its runtime behavior. The listener configuration is stored in a configuration file named listener.ora.

Because all of the configuration parameters have default values, it is possible to start and use a listener with no configuration. This default listener has a name of LISTENER, supports no services on startup, and listens on the following TCP/IP protocol address:

(ADDRESS=(PROTOCOL=tcp)(HOST=host_name)(PORT=1521))

Supported services, that is, the services to which the listener forwards client requests, can be configured in the listener.ora file or this information can be dynamically registered with the listener. This dynamic registration feature is called service registration. The registration is performed by the PMON process—an instance background process—of each database instance that has the necessary configuration in the database initialization parameter file. Dynamic service registration does not require any configuration in the listener.ora file.

 

解決方案兩種:

1:在$ORACLE_HOME/network/admin/下配置listener.ora文件。則屏蔽或刪除/etc/hosts下127.0.0.1後,監聽不會有任何問題。

2:在配置文件/etc/hosts下增加localhost(紅色部分所示)也能解決這個問題。

[root@kerry ~]# more /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

#::1 localhost6.localdomain6 localhost6

#127.0.0.1 localhost.localdomain localhost

192.168.27.134 kerry.eduction.com kerry localhost

[root@kerry ~]#

具體可以參考官方文檔Starting TNS Listener or LSNRCTL Start Yields TNS-12541, Linux Error: 111: Connection Refused (文檔 ID 343295.1)

 

  另外,我們這裡也忽略了lisnter.ora裡面的配置,如果該配置文件使用的是hostname而不是IP,那麼也會遇到一些問題。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文主要介紹android中怎樣獲取系統的聯繫人數據 首先打開模擬器 點擊聯繫人圖標按鈕 說明系統聯繫人資料庫是空的,打開File explorer,找到data/data下麵的文件夾: 將contacts2.db文件導出,添加到sqlite中的時候報錯: 點擊“ok”忽略之 表結構相當的複雜,首先 ...
  • Android 開發中經常遇到各種hdpi,xhdpi,xxhdpi....很多尺寸大小的png圖片要求. 網上也有不少工具,今天我又發現一款線上轉換大小的網站,用了一下,一個png 114X114 轉換成 16X16和512X512效果還可以; 連接在這裡,希望需要的mark一下,麽麽 png工具 ...
  • “階段一”是指我第一次系統地學習Android開發。這主要是對我的學習過程作個記錄。 一、drawText的位置問題 1、先講一下Canvas畫布的坐標,原點是在畫布的左上角,往右,x為正,往下,y為正。如下圖: 2、預設的情況下,Text的左邊為x坐標,Text的Baseline為y坐標,比如dr ...
  • 我也是看了網上的一個示例代碼後,在它的基礎上進行的修改。因為項目上會用到,我相信很多人的項目上也會用到。所以實現後,也趕緊分享出來,希望後來人不需要花費時間了。 提示:這裡用到了正則表達式,使用了一個第三方開源的組件:RegexKitLite (該組件如何使用網上教程很多) #pragma mark ...
  • ....... ...
  • ORACLE資料庫中的索引到底要不要定期重建呢? 如果不需要定期重建,那麼理由是什麼? 如果需要定期重建,那麼理由又是什麼?另外,如果需要定期重建,那麼滿足那些條件的索引才需要重建呢?關於這個問題,網上也有很多爭論,也一直讓我有點困惑,因為總有點不得廬山真面目的感覺,直到上周看到了一些資料,遂整理於 ...
  • 資料庫複習⑦ 2016年6月18日 20:03 Main DDL & DML & Views 數據定義語言、數據操縱語言、視圖 DDL數據定義語言 1.聲明一個關係表和刪除一個關係表 Simplest form is: CREATE TABLE <name> ( <list of elements> ...
  • SELECT-FROM-WHERE語句、單表查詢、多表查詢、 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...