| 文件 | 層級 | 核心職責 | 典型路徑 |
|---|---|---|---|
| /etc/profile | OS 環境 | 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 | 實例參數 | 啟動參數 (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 |
# 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 載入。
# 格式: 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 交互式設置環境變量時查詢此文件關鍵參數分類:
MEMORY_TARGET / SGA_TARGET / PGA_AGGREGATE_TARGETPROCESSES / SESSIONS / JOBSNLS_LANGUAGE / NLS_TERRITORY / NLS_CHARACTERSET (創建後不可變)DB_FILES / CONTROL_FILES / UNDO_TABLESPACECOMPATIBLE (升級後不可降級)操作鐵律: 修改動態參數用 ALTER SYSTEM SET ... SCOPE=BOTH;靜態參數改 PFILE 再啟動。
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))
)
# 解析順序
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
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
$ORACLE_HOME/network/admin 納入 Git/SVN,標註環境 (DEV/UAT/PROD)。chmod 640、chown oracle:oinstall,敏感參數 (加密錢包路徑) 限制讀取。lsnrctl reload / ALTER SYSTEM REGISTER / 重啟驗證,並記錄變更單。總結: 這六大文件構成了 Oracle 運行時的「基因密碼」。從 OS 環境 (profile) 到實例參數 (spfile),再到網絡解析鏈路 (sqlnet.ora → tnsnames.ora → listener.ora),每一層都有明確的職責邊界。建立「配置即代碼」的管理體系,是穩定運行的基石。