前提是電腦必須安裝oracle客戶端。
成都創(chuàng)新互聯(lián)專注于三江侗網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供三江侗營銷型網(wǎng)站建設(shè),三江侗網(wǎng)站制作、三江侗網(wǎng)頁設(shè)計、三江侗網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造三江侗網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供三江侗網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
配置方法:
1、找到oracle的安裝目錄。如:C:\oracle\product\10.2.0\db_1\network\ADMIN
2、找到tnsnames.ora文件。
3、用文本方式打開,添加以下內(nèi)容:
本地實例名?=
(DESCRIPTION?=
(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?遠程數(shù)據(jù)庫IP地址)(PORT?=?遠程服務(wù)器端口號))
(CONNECT_DATA?=
(SERVER?=?DEDICATED)
(SERVICE_NAME?=?遠程數(shù)據(jù)庫服務(wù)名)
)
)
其中中文部分是需要修改的部分,除第一個“本地實例名”外,其他需要跟遠程數(shù)據(jù)庫管理員咨詢,本地實例名就是方便自己識別數(shù)據(jù)庫的一個名字,可以自定義。
4、然后打開pl/sql就能看到自己創(chuàng)建的鏈接,如圖:
原因:
1、EF 、EFCore 中默認存在鏈接池,每次數(shù)據(jù)庫操作完成之后,會將連接丟到連接池。連接的釋放過程單獨管控(這里不做詳細解釋);
2、當(dāng)Oracle數(shù)據(jù)庫中設(shè)置有連接(會話)有效期時,到期后,Oracle服務(wù)端會中斷連接,并將會話標識為:SNIPED狀態(tài);
注:查詢數(shù)據(jù)中已超時,未釋放的會話:select * from v$session where status = 'SNIPED';
3、當(dāng)Oracle數(shù)據(jù)庫中連接超時后,EF連接池中的連接依然存在,若再次進行數(shù)據(jù)庫操作,則會提示 idle 超時異常;
解決方案:
方案1:調(diào)整數(shù)據(jù)庫設(shè)置,將數(shù)據(jù)庫中的“IDLE_TIME”設(shè)置未“UNLIMITED”,具體方式請自行百度;
可通過以下語句查看當(dāng)前設(shè)置:
select username, b.* from dba_users a, dba_profiles b where a.profile = b.profile and username='IOT_SUB_ALL';
方案2:
在項目代碼數(shù)據(jù)庫連接字符串中添加:min pool size=0;設(shè)置,將EF連接池最小連接保持數(shù)設(shè)置為0(默認為1);
連接字符串樣式:
"User Id=用戶id;Password=密碼;Data Source=IP:端口/服務(wù)器名;min pool size=0;"
連接字符串參數(shù)詳細說明見:
方法1 :用sys等管理用戶以dba用戶登錄 執(zhí)行select count(1) from v$session;
方法2:在plsql中打開工具--會話 ,可以看到詳細的連接