首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 核心配置文件全景解析:profile、oratab、init.ora、listener.ora、sqlnet.ora、tnsnames.ora

     編輯:Oracle 資料庫基礎

文件分類與職責矩陣

文件層級核心職責典型路徑
/etc/profileOS 環境Oracle 用戶環境變量 (ORACLE_HOME, SID, PATH, NLS_LANG)/etc/profile
oratab實例註冊實例名:ORACLE_HOME:啟動標誌 (Y/N),供 dbstart/dbshut、oraenv 使用/etc/oratab (Linux) /var/opt/oracle/oratab (Solaris)
init.ora / spfile.ora實例參數啟動參數 (SGA, 進程, 字符集, 兼容性, 審計...)$ORACLE_HOME/dbs (Linux) /database (Windows)
listener.ora網絡服務端監聽端點、靜態服務註冊 (SID_LIST)$ORACLE_HOME/network/admin
sqlnet.ora網絡客戶端/服務端解析策略、認證方式、加密、追蹤、死連接檢測$ORACLE_HOME/network/admin
tnsnames.ora網絡客戶端別名 → 連接描述符映射 (電話簿)$ORACLE_HOME/network/admin

重點文件深度剖析

1. /etc/profile —— Oracle 用戶運行時環境基石

# Oracle Environment
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
export TMP=/tmp
export TMPDIR=/tmp

# 立即生效
source /etc/profile

關鍵點: NLS_LANG 必須與數據庫字符集兼容;LD_LIBRARY_PATH 影響 OCI/JDBC-OCI 載入。

2. oratab —— 實例清單與自動化腳本橋樑

# 格式: SID:ORACLE_HOME:AUTO_START_FLAG
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y
test:/u01/app/oracle/product/11.2.0/dbhome_1:N
  • dbstart 讀取 :Y 的實例自動啟動
  • oraenv 交互式設置環境變量時查詢此文件
  • 安裝/補丁工具驗證實例歸屬

3. init.ora / spfile —— 實例靈魂

關鍵參數分類:

  • 內存:MEMORY_TARGET / SGA_TARGET / PGA_AGGREGATE_TARGET
  • 進程:PROCESSES / SESSIONS / JOBS
  • 字符集:NLS_LANGUAGE / NLS_TERRITORY / NLS_CHARACTERSET (創建後不可變)
  • 存儲:DB_FILES / CONTROL_FILES / UNDO_TABLESPACE
  • 兼容性:COMPATIBLE (升級後不可降級)

操作鐵律: 修改動態參數用 ALTER SYSTEM SET ... SCOPE=BOTH;靜態參數改 PFILE 再啟動。

4. listener.ora —— 監聽器靜態配置

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = db-server)(PORT = 1521))
  )

# 靜態註冊 (Data Guard 待機庫、外部過程必需)
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = orcl)
    )
  )

# 進階:多監聽器、SSL、端口轉發
LISTENER_SSL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCPS)(HOST = db-server)(PORT = 2484))
  )

5. sqlnet.ora —— 解析與安全策略中樞

# 解析順序
NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)

# 認證
SQLNET.AUTHENTICATION_SERVICES = (NTS)  # Windows OS 認證
# SQLNET.AUTHENTICATION_SERVICES = (NONE)  # 僅密碼

# 安全加固
SQLNET.ENCRYPTION_SERVER = REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER = (AES256)
SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA512)

# 死連接檢測 (防火牆斷開空閒連接)
SQLNET.EXPIRE_TIME = 10  # 分鐘

# 追蹤診斷
TRACE_LEVEL_SERVER = OFF
TRACE_DIRECTORY_SERVER = $ORACLE_HOME/network/trace

6. tnsnames.ora —— 客戶端連接電話簿

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = db-server)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = db-standby)(PORT = 1521))  # 故障轉移
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.example.com)
      (FAILOVER_MODE = (TYPE = SELECT)(METHOD = BASIC)(RETRIES = 3)(DELAY = 5))
    )
  )

# 易連接 (無需 tnsnames.ora)
# sqlplus user/pwd@db-server:1521/orcl.example.com

配置管理最佳實踐

  1. 版本控制:將 $ORACLE_HOME/network/admin 納入 Git/SVN,標註環境 (DEV/UAT/PROD)。
  2. 模板化:使用變量模板生成環境差異配置,避免手工改錯。
  3. 權限最小化:chmod 640、chown oracle:oinstall,敏感參數 (加密錢包路徑) 限制讀取。
  4. 變更流程:任何修改必須經過 lsnrctl reload / ALTER SYSTEM REGISTER / 重啟驗證,並記錄變更單。

總結: 這六大文件構成了 Oracle 運行時的「基因密碼」。從 OS 環境 (profile) 到實例參數 (spfile),再到網絡解析鏈路 (sqlnet.ora → tnsnames.ora → listener.ora),每一層都有明確的職責邊界。建立「配置即代碼」的管理體系,是穩定運行的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved