最近看到好多人說到tns或者數據庫不能登錄等問題
首先來說Oracle的網絡結構
三個配置文件
listener
重點:三個文件的作用和使用
#
sqlnet
例如我們客戶端輸入
sqlplus sys/oracle@orcl
假如我的sqlnet
SQLNET
NAMES
那麼
如果我是這個樣子
NAMES
那麼客戶端就只會從tnsnames
括號中還有其他選項
#
Tnsnames
NAMES
例子中有兩個
#你所要連接的時候輸入得TNSNAME
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
#下面是這個TNSNAME對應的主機
(ADDRESS = (PROTOCOL = TCP)(HOST =
)
(CONNECT_DATA =
#使用專用服務器模式去連接需要跟服務器的模式匹配
#自動調節
(SERVER = DEDICATED)
#對應service_name
#進行查看
(SERVICE_NAME = orcl)
)
)
#下面這個類似
SALES =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sales)
)
)
#
客戶端完了我們來看服務器端
listener
關於listener進程就不多說了
Listener
#listener
# Generated by Oracle configuration tools
#下面定義LISTENER進程為哪個實例提供服務
#這裡是ORCL
#其中GLOBAL_DBNAME不是必需的除非使用HOSTNAME做數據庫連接
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = boway)
(ORACLE_HOME = E:oracleproduct
(SID_NAME = ORCL)
)
)
#監聽器的名字
#再向下面是監聽器監聽的協議
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT =
)
上面的例子是一個最簡單的例子
監聽器的操作命令
$ORACLE_HOME/bin/lsnrctl start
上面說到的三個文件都可以通過圖形的配置工具來完成配置
$ORACLE_HOME/netca 向導形式的
$ORACLE_HOME/netmgr
本人比較習慣netmgr
profile 配置的是sqlnet
service name 配置的是tnsnames
listeners配置的是listener
具體的配置可以嘗試一下然後來看一下配置文件
這樣一來總體結構就有了
#
幾種連接用到的命令形式
以上連接方式使用sys用戶或者其他通過密碼文件驗證的用戶都不需要數據庫處於可用狀態
然後就是
#
平時排錯可能會用到的
LSNRCTL> help
The following operations are available
An asterisk (*) denotes a modifier or extended command:
start stop status
services version reload
save_config trace change_password
quit exit set*
show*
LSNRCTL> status
C:>tnsping orcl
TNS Ping Utility for
Copyright (c)
Used parameter files:
E:oracleproduct
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
(HOST =
NAME = orcl)))
OK (
SQL>show sga 查看instance是否已經啟動
SQL> select open_mode from v$database; 查看數據庫是打開還是mount狀態
OPEN_MODE
READ WRITE
#
使用hostname訪問數據庫而不是tnsname的例子
使用tnsname訪問數據庫是默認的方式
需要修改
服務器端listener
#監聽器的配置文件listener
#使用host naming則不再需要tnsname
# listener
# Generated by Oracle configuration tools
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
# (SID_NAME = PLSExtProc)
(SID_NAME = orcl)
(GLOBAL_DBNAME = boway)
(ORACLE_HOME = d:oracleproduct
# (PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT =
)
)
客戶端sqlnet
# sqlnet
# Generated by Oracle configuration tools
SQLNET
NAMES
Tnsnames
下面就是網絡和操作系統的配置問題了
可以通過下面的方式連接
sqlplus sys/oracle@boway
這樣的話
From:http://tw.wingwit.com/Article/program/Oracle/201311/16511.html