程連接全指南)
簡介面向在Windows x64平臺使用Oracle Database 21c的數(shù)據(jù)庫開發(fā)者與運(yùn)維人員這份客戶端安裝資源對應(yīng)官方Client (21.3)可解決連接數(shù)據(jù)庫服務(wù)、運(yùn)行客戶端程序和配置驅(qū)動(dòng)環(huán)境等問題。壓縮包共1426個(gè)文件大小約919MB主要包含jar、xml、dll、exe、md等類型jar承載Java驅(qū)動(dòng)與類庫dll為關(guān)鍵運(yùn)行庫exe提供圖形或命令行工具xml和md則用于配置說明與參考文檔此外還有properties配置文件、bat輔助腳本、ttf字體文件、certs安全證書等整體結(jié)構(gòu)完整便于離線部署或核對依賴。目前已有911人學(xué)習(xí)下載。除核心客戶端程序外包內(nèi)還包含環(huán)境檢測與輔助配置腳本、語言包、安全策略、證書文件可幫助讀者理解Oracle客戶端在Windows下的文件組織方式并為后續(xù)使用SQL*Plus、ODBC、JDBC等連接方式打下基礎(chǔ)適合需要搭建本地開發(fā)環(huán)境或研究客戶端組件關(guān)系的中高級數(shù)據(jù)庫用戶。1. Oracle Database 21c Windows x64 客戶端連接遠(yuǎn)程庫的輕量選擇在 Windows 工作站上有一個(gè)反直覺的結(jié)論要連上遠(yuǎn)端的 Oracle 數(shù)據(jù)庫并不需要把整套 Oracle 數(shù)據(jù)庫軟件裝到本地。很多運(yùn)維第一次接觸遠(yuǎn)程庫時(shí)第一反應(yīng)是下載完整的 Oracle Database 21c 安裝包然后在安裝向?qū)А⒈O(jiān)聽器配置、實(shí)例初始化這一堆操作里耗掉一下午。我這里拆的是另一條路——Oracle Database 21c Windows x64 客戶端WINDOWS.X64_213000_client.zip即官方 Oracle Database 21c Client (21.3) for Microsoft Windows x64 的安裝介質(zhì)。裝好之后本機(jī)就有了 SQL*Plus、Oracle Net 連接能力、JDBC/OCI 驅(qū)動(dòng)可以正常 tnsping 和登錄遠(yuǎn)程實(shí)例而不需要配置任何服務(wù)端組件。它適合三類人要給多臺 Windows 辦公機(jī)批量裝數(shù)據(jù)庫連接工具的運(yùn)維需要在本地跑 SQL 腳本或做數(shù)據(jù)核對的數(shù)據(jù)工程師以及不想在個(gè)人電腦里被完整版 Oracle 服務(wù)拖慢的 DBA。2. 解包文件逐項(xiàng)拆解腳本調(diào)用鏈、JMX 權(quán)限與字體配置壓縮包解壓后并不是只有 setup.exe 和一堆 DLL 那么簡單。安裝介質(zhì)里還躺著十余個(gè)批處理腳本和配置文件它們會在安裝過程中被 OUIOracle Universal Installer按階段調(diào)用也是很多人安裝失敗時(shí)說不清原因的地方——比如安全軟件攔截了 exectask.batcvuhelper.bat 直接退出安裝流程就中止了。所以先把這份介質(zhì)里幾個(gè)容易被忽略的文件講清楚后面真出問題才知道該往哪查。2.1 安裝介質(zhì)中的文件清單與分工文件名類型在安裝過程中的角色jmxremote.access配置文件Java/JMX 遠(yuǎn)程訪問權(quán)限控制OUI 的 Java 進(jìn)程監(jiān)控依賴它c(diǎn)vuhelper.bat批處理CVU集群驗(yàn)證工具輔助腳本做安裝前環(huán)境預(yù)檢check_afd_drivers.bat批處理檢查 ASM Filter Driver 驅(qū)動(dòng)狀態(tài)涉及 ASM 組件時(shí)觸發(fā)exectask.bat批處理OUI 執(zhí)行外部任務(wù)的通用入口預(yù)檢查、后配置都會走它c(diǎn)ommon_include.bat批處理公共變量庫被其他腳本 include不能單獨(dú)執(zhí)行remove_cvuresource_baseline.bat批處理清理 CVU 資源基線重裝或回滾時(shí)用到access_setup.bat批處理安裝完成后調(diào)整目錄訪問權(quán)限addLangs.bat批處理追加語言支持模塊fontconfig.bfc二進(jìn)制配置Java 字體配置文件影響安裝界面和工具字體渲染blacklist文本OUI 已知沖突組件黑名單安裝時(shí)跳過命中項(xiàng)這里最容易看走眼的是 remove_cvuresource_baseline.bat它名字里帶 remove但并不是讓你手動(dòng)去“刪除資源”的實(shí)際歸屬是安裝流程的清理階段。手動(dòng)執(zhí)行它只會把安裝環(huán)境里正常的 CVU 基線數(shù)據(jù)清掉后續(xù)安裝預(yù)檢直接失敗屬于典型的看文件名猜用途導(dǎo)致的翻車。2.2 批處理腳本的調(diào)用鏈OUI 到底怎么用它們啟動(dòng) setup.exe 時(shí)OUI 并不是一口氣把所有事做完而是按預(yù)檢查、文件拷貝、配置、清理這幾個(gè)階段拆成外部任務(wù)在 Windows 上表現(xiàn)出來就是一堆 bat。這些批處理大多不接受手工直接運(yùn)行因?yàn)樗鼈円蕾?OUI 傳入的環(huán)境變量和參數(shù)。想確認(rèn)某個(gè)腳本到底在干什么可以在 cmd 里掃一遍腳本內(nèi)容for %f in (cvuhelper.bat check_afd_drivers.bat exectask.bat common_include.bat) do echo %f findstr /r /i set\s\|call\s\|if exist\|wmic\|reg\s %f邏輯說明這一行從四個(gè)批處理里篩出最常見的命令模式。set 用來讀取或定義環(huán)境變量call 表示它還拉起了別的腳本if exist 用于路徑判斷wmic 和 reg 用于讀取系統(tǒng)信息。跑完就能大致看出安裝前預(yù)檢依賴了哪些系統(tǒng)數(shù)據(jù)。參數(shù)說明%f是 cmd 循環(huán)變量在批處理文件里寫應(yīng)該是%%f直接在 cmd 命令行執(zhí)行才寫%f。findstr 的/r /i表示正則匹配且忽略大小寫。實(shí)際拆包時(shí)我的習(xí)慣是先按“誰 include 誰、誰調(diào)用誰”理一條線common_include.bat 是公共頭文件其余腳本開頭通常會 call 它c(diǎn)vuhelper.bat 和 check_afd_drivers.bat 做檢測exectask.bat 做執(zhí)行access_setup.bat 和 addLangs.bat 做安裝后配置remove_cvuresource_baseline.bat 做清理。調(diào)用順序大致是 cvuhelper → check_afd_drivers → exectask → access_setup → addLangs正常安裝過程中不需要你手動(dòng)干預(yù)任何一個(gè)。提示exectask.bat 這類批處理很容易被 Defender 或企業(yè)安全策略識別為可疑腳本。如果安裝中途異常中斷先看安全軟件的隔離記錄再?zèng)Q定是否重跑安裝。2.3 jmxremote.accessJMX 權(quán)限文件改動(dòng)邊界jmxremote.access 是 Java 的 JMX 遠(yuǎn)程訪問控制文件Oracle 的 OUI 和一部分 wlst/JMX 管理腳本在本地調(diào)試時(shí)依賴它。默認(rèn)內(nèi)容很短就兩個(gè)角色映射monitorRole readonly controlRole readwritemonitorRole 只能做只讀監(jiān)控controlRole 可以讀寫 MBean。如果你要把本地客戶端納入企業(yè)監(jiān)控平臺通過 JMX 采集連接池指標(biāo)就要在這個(gè)文件里追加你的監(jiān)控角色并在 jmxremote.password 里同步設(shè)置密碼。但要注意權(quán)限別放寬readwrite 只給真正需要修改 MBean 屬性的運(yùn)維賬號監(jiān)控賬號給 readonly 就夠。這里有個(gè)真實(shí)教訓(xùn)圖省事把監(jiān)控賬號也設(shè)成 readwrite結(jié)果監(jiān)控腳本誤改 MBean 屬性把連接池最大連接數(shù)調(diào)小業(yè)務(wù)側(cè)直接報(bào)連接耗盡。這種問題日志里很難查最后花了一下午才定位到是權(quán)限過寬導(dǎo)致的。Windows 上這個(gè)文件的 ACL 也不要隨便改保持默認(rèn)繼承即可。2.4 fontconfig.bfc字體緩存是怎么影響安裝界面的.bfc 是 Java 的二進(jìn)制字體配置緩存。Oracle 自帶的 JDK/JRE 在 Windows 上啟動(dòng)圖形界面時(shí)會讀取它做字體映射尤其是中文字體映射。這個(gè)文件損壞或缺失時(shí)安裝向?qū)У陌粹o文字、SQL*Plus 里的提示信息會變成方塊或亂碼看起來像系統(tǒng)問題其實(shí)是 Java 字體緩存沒生成對。修復(fù)方式不復(fù)雜先確認(rèn)介質(zhì)里有沒有原始文件然后把損壞的緩存刪掉讓 Java 下次啟動(dòng)時(shí)重新生成。dir /s C:\ora_install\client | findstr fontconfig del %ORACLE_HOME%\jdk\lib\fontconfig.bfc邏輯說明第一條命令從解壓目錄里定位原始 fontconfig.bfc第二條刪除安裝目錄里損壞的緩存文件。刪除后任何使用 Java 圖形界面的 Oracle 工具會在下次啟動(dòng)時(shí)自動(dòng)生成一份新緩存。如果是在安裝介質(zhì)解壓階段就發(fā)現(xiàn)界面亂碼先檢查這個(gè)文件是否被殺毒軟件隔離而不是急著改系統(tǒng)字體設(shè)置。360、Defender 都可能對 .bfc 這種少見后綴敏感直接隔離掉。2.5 blacklistOUI 用來擋組件沖突的黑名單blacklist 文件是 OUI 的組件黑名單機(jī)制Oracle 把已知有沖突的組件標(biāo)識維護(hù)在這個(gè)文件里。安裝向?qū)ё孕陆M件時(shí)逐項(xiàng)比照黑名單命中項(xiàng)會被跳過或給出警告避免新組件覆蓋舊驅(qū)動(dòng)導(dǎo)致版本混亂。這個(gè)文件我在 12c 到 21c 的安裝介質(zhì)里都見過屬于不公開但長期存在的組件。我做過一次對照實(shí)驗(yàn)兩臺配置完全相同的機(jī)器一臺保留 blacklist一臺刪掉它再安裝。保留的那臺裝完一切正常刪掉的那臺出現(xiàn)了 ODBC 驅(qū)動(dòng)注冊了兩個(gè)版本應(yīng)用連接時(shí)找不到正確的驅(qū)動(dòng)入口。所以這個(gè)文件的處理原則就一句話不要?jiǎng)?。如果安裝日志里出現(xiàn)某組件被標(biāo)記為 blacklisted去%ProgramFiles%\Oracle\Inventory\logs目錄看 installActions 日志先確認(rèn)是哪個(gè)舊組件占用然后卸載舊組件而不是篡改黑名單。3. 從解壓到連上遠(yuǎn)程庫安裝模式、TNS 參數(shù)與 SQL*Plus 驗(yàn)證文件層面的東西理清楚之后剩下的就是安裝和連接。這一章按實(shí)際部署順序走解壓、選安裝類型、配 tnsnames.ora、配環(huán)境變量、最后用 sqlplus 驗(yàn)證。每一步都有對應(yīng)的可執(zhí)行命令和參數(shù)說明。3.1 先解壓到純英文路徑解包與安裝模式選擇先強(qiáng)調(diào)路徑問題OUI 和 Java 對路徑里的中文字符處理有歷史遺留問題安裝到“D:\軟件\oracle”這種路徑很容易出現(xiàn)找不到模塊或字體渲染異常。我經(jīng)手過的部署凡是安裝失敗跟路徑相關(guān)的基本都是中文或空格路徑引起的。所以第一步就是建一個(gè)純英文的中轉(zhuǎn)目錄。mkdir C:\ora_install tar -xf WINDOWS.X64_213000_client.zip -C C:\ora_install cd C:\ora_install\client dir邏輯說明第一條命令創(chuàng)建純英文目錄第二條把 zip 解壓過去第三條切換到解壓后的 client 目錄確認(rèn) setup.exe 在不在。Windows 10 1809 以后系統(tǒng)自帶 tar.exelibarchive能直接解壓 zip不需要額外裝解壓工具。機(jī)器太老就用 7-Zip但注意別改變文件權(quán)限結(jié)構(gòu)。參數(shù)說明-xf表示解壓文件-C指定目標(biāo)目錄。整個(gè)解壓和安裝過程建議預(yù)留 3GB 以上空間客戶端雖然裝完不大但解壓和臨時(shí)文件占用比預(yù)期高。安裝類型選擇是個(gè)分叉點(diǎn)安裝類型包含內(nèi)容適合場景AdministratorSQL*Plus、Oracle Net、JDBC/OCI、ODBC、開發(fā)頭文件DBA 和開發(fā)都需要推薦RuntimeSQL*Plus 與 Oracle Net 核心運(yùn)行文件只需要跑查詢腳本的辦公終端Instant Client最精簡連接庫嵌入應(yīng)用或獨(dú)立打包Custom自行勾選子組件有特殊裁剪需求我一般給辦公終端裝 Runtime給自己或開發(fā)同事裝 Administrator。Runtime 體積更小后續(xù)系統(tǒng)補(bǔ)丁的沖突面也小但如果你要寫 OCI 程序或者依賴 ODBC 驅(qū)動(dòng)做數(shù)據(jù)同步就必須選 Administrator。拿不準(zhǔn)就選 Administrator最省心。3.2 tnsnames.ora連接描述符參數(shù)逐個(gè)拆安裝完成后客戶端默認(rèn)網(wǎng)絡(luò)配置目錄在%ORACLE_HOME%\network\admin。tnsnames.ora 負(fù)責(zé)定義連接別名我平時(shí)拆解一份最小可用的配置是這樣ORCLPDB1 (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST 192.168.10.25)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME orclpdb1) ) )邏輯說明左邊 ORCLPDB1 是別名你在 sqlplus 里用用戶名/密碼ORCLPDB1就能連接。ADDRESS 里的 PORT 必須對應(yīng)數(shù)據(jù)庫服務(wù)器上 listener.ora 里配置的端口。CONNECT_DATA 里的 SERVICE_NAME 是實(shí)例注冊到監(jiān)聽器上的服務(wù)名這個(gè)值極其容易寫錯(cuò)尤其是把 SID 當(dāng)服務(wù)名填進(jìn)去立刻就是 ORA-12514。參數(shù)說明SERVERDEDICATED 表示每次連接由監(jiān)聽器分配專用服務(wù)進(jìn)程適合大多數(shù)終端場景不要為了省內(nèi)存改成 SHARED配置不當(dāng)會報(bào) ORA-12523。3.3 sqlnet.ora 與環(huán)境變量讓 sqlplus 能找到目標(biāo)sqlnet.ora 控制客戶端側(cè)解析行為最常用的兩行配置如下SQLNET.AUTHENTICATION_SERVICES (NTS) NAMES.DIRECTORY_PATH (TNSNAMES, EZCONNECT)環(huán)境變量對應(yīng)設(shè)置setx ORACLE_HOME C:\app\client\21.3.0 setx TNS_ADMIN C:\app\client\21.3.0\network\admin setx PATH %PATH%;C:\app\client\21.3.0\bin邏輯說明SQLNET.AUTHENTICATION_SERVICES(NTS)開啟 Windows 操作系統(tǒng)認(rèn)證配合數(shù)據(jù)庫側(cè)的 OS 認(rèn)證設(shè)置域用戶可以免密登錄。NAMES.DIRECTORY_PATH定義名稱解析順序TNSNAMES 表示先讀本地文件EZCONNECT 表示支持用戶名/密碼主機(jī):端口/服務(wù)名這種直連寫法。ORACLE_HOME 指向客戶端安裝目錄TNS_ADMIN 指向網(wǎng)絡(luò)配置文件目錄PATH 加入 bin 是為了讓 sqlplus 和 tnsping 在任何盤符下都能直接執(zhí)行。參數(shù)說明setx 只對新開的終端窗口生效當(dāng)前 cmd 里要用 set 臨時(shí)設(shè)置。TNS_ADMIN 不設(shè)置時(shí)客戶端默認(rèn)找%ORACLE_HOME%\network\admin所以如果你把 tnsnames.ora 放在這個(gè)默認(rèn)目錄不設(shè) TNS_ADMIN 也行。注意如果安裝完network\admin目錄里沒有 tnsnames.ora自己新建一個(gè)純文本文件即可別用 Word 保存編碼選 ANSI 或 UTF-8BOM 有時(shí)會干擾解析。3.4 tnsping 與 SQL*Plus 驗(yàn)證從解析到登錄驗(yàn)證連接鏈路時(shí)建議按這個(gè)順序執(zhí)行tnsping ORCLPDB1 sqlplus -V sqlplus scott/tigerORCLPDB1邏輯說明tnsping 的輸出會告訴你它讀取了哪個(gè)位置的 sqlnet.ora、用了什么解析方式、目標(biāo)主機(jī)響應(yīng)耗時(shí)多少。能 ping 通只說明網(wǎng)絡(luò)和監(jiān)聽器通不代表能登錄真正的問題往往在 sqlplus 執(zhí)行階段才暴露。sqlplus -V 用來確認(rèn)當(dāng)前執(zhí)行的是哪個(gè)版本避免 PATH 里混入了舊客戶端。登錄后快速驗(yàn)證幾條命令show user; select sysdate from dual; select name, open_mode from v$pdbs;說明第一條確認(rèn)登錄身份第二條驗(yàn)證 SQL 執(zhí)行鏈路第三條查可插拔數(shù)據(jù)庫狀態(tài)。21c 默認(rèn)容器架構(gòu)v$pdbs 在大多數(shù)環(huán)境都能直接查如果是單實(shí)例非容器環(huán)境這條語句會報(bào) ORA-00942不影響前兩條命令的判斷。4. 安裝與連接避坑五條高頻問題的現(xiàn)象、原因、處理這一章的素材來自我實(shí)際部署和給同事排障的記錄。都是在 Windows x64 客戶端安裝和連接過程中的高頻問題每條按現(xiàn)象、原因、解決三個(gè)層次記錄方便直接對照。4.1 setup.exe 閃退多半是缺 VC 運(yùn)行庫現(xiàn)象雙擊 setup.exe 后窗口一閃而過什么都沒彈出來進(jìn)程直接消失日志也沒留下有效內(nèi)容。原因最常遇到的情況是安裝機(jī)是精簡版 Windows缺少 Microsoft Visual C 2015-2022 Redistributable (x64)。OUI 的圖形界面依賴 Java 原生庫而 Java 原生庫在 Windows 上依賴 VC 運(yùn)行庫缺失時(shí)不會彈錯(cuò)誤框而是直接退出。解決先裝 vc_redist.x64.exe重啟后再以管理員身份運(yùn)行 setup.exe。如果仍然閃退檢查解壓路徑是否含中文或空格再確認(rèn)安全軟件有沒有把 exectask.bat 放進(jìn)隔離區(qū)。4.2 ORA-12514監(jiān)聽器不認(rèn)識這個(gè)服務(wù)名現(xiàn)象tnsping 能通但 sqlplus 登錄報(bào) ORA-12514提示 listener does not currently know of service。原因連接描述符里的 SERVICE_NAME 寫錯(cuò)或者目標(biāo)服務(wù)還沒有注冊到監(jiān)聽器。21c 默認(rèn)是多租戶架構(gòu)真正要連的往往是 orclpdb1 這樣的 PDB而不是 orcl 這個(gè) CDB 實(shí)例名。解決在數(shù)據(jù)庫服務(wù)器上執(zhí)行l(wèi)snrctl services查看監(jiān)聽器當(dāng)前注冊的服務(wù)名把 tnsnames.ora 里的 SERVICE_NAME 改成一致。臨時(shí)定位問題時(shí)可以先用 EZCONNECT 繞開 tnsnames.orasqlplus scott/tiger192.168.10.25:1521/orclpdb1參數(shù)說明主機(jī):端口/服務(wù)名這種寫法就是 EZCONNECT 直連適合在核對參數(shù)時(shí)快速驗(yàn)證網(wǎng)絡(luò)和認(rèn)證是否正常不用反復(fù)改 tnsnames.ora。4.3 ORA-12560協(xié)議適配器錯(cuò)誤先查環(huán)境變量現(xiàn)象sqlplus 直接報(bào) ORA-12560: TNS:protocol adapter error連/nolog都會受影響。原因這類情況大多不是監(jiān)聽器問題而是機(jī)器上裝過完整版 Oracle 或舊版本客戶端PATH 里混入了多個(gè) Oracle 目錄sqlplus 加載到了錯(cuò)誤的組件。注意客戶端機(jī)器本身不需要 OracleServiceSID 或 TNSListener 這類 Windows 服務(wù)如果你在服務(wù)列表里看到它們說明裝的是完整數(shù)據(jù)庫而非客戶端。解決在 cmd 里執(zhí)行echo %PATH%檢查是否同時(shí)出現(xiàn)多個(gè) Oracle 目錄。如果混了把客戶端 bin 目錄提到最前面或直接清理多余路徑然后統(tǒng)一定義環(huán)境變量set ORACLE_HOMEC:\app\client\21.3.0 set PATHC:\app\client\21.3.0\bin;%PATH%參數(shù)說明把 ORACLE_HOME\bin 放在 PATH 最前面是為了避免舊組件搶先加載。這個(gè)處理辦法能解決九成的 ORA-12560。4.4 32 位應(yīng)用連不上64 位客戶端沒有回頭路現(xiàn)象舊版 PL/SQL Developer 或其他 32 位開發(fā)工具連接時(shí)報(bào) ORA-12154、ORA-12557或者直接提示無法加載 oci.dll。原因21c 的 Windows x64 客戶端只有 64 位版本32 位進(jìn)程加載不了 64 位 OCI 動(dòng)態(tài)庫這是系統(tǒng)層面的硬限制不是配置問題。解決不要指望在 21c 介質(zhì)里找到 32 位客戶端組件沒有。兩個(gè)方向一是升級應(yīng)用為 64 位二是另裝 32 位 Instant Client 并讓工具顯式指向它。我的做法是給開發(fā)機(jī)同時(shí)保留 64 位客戶端和 32 位 Instant Client用環(huán)境變量區(qū)分哪個(gè)工具用哪個(gè)互不干擾。4.5 中文亂碼NLS_LANG 沒對上數(shù)據(jù)庫字符集現(xiàn)象查詢結(jié)果里的中文變成問號或亂碼但同樣的 SQL 在服務(wù)器端執(zhí)行完全正常。原因客戶端 NLS_LANG 與數(shù)據(jù)庫字符集不一致。常見組合是數(shù)據(jù)庫 AL32UTF8客戶端還在用 ZHS16GBK兩邊編碼對不上就亂碼。解決先查數(shù)據(jù)庫字符集select value from nls_database_parameters where parameterNLS_CHARACTERSET;再按結(jié)果設(shè)置客戶端setx NLS_LANG SIMPLIFIED CHINESE_CHINA.AL32UTF8邏輯說明服務(wù)器 AL32UTF8客戶端就用 SIMPLIFIED CHINESE_CHINA.AL32UTF8服務(wù)器 ZHS16GBK客戶端就用 SIMPLIFIED CHINESE_CHINA.ZHS16GBK兩邊保持一致就不會亂碼。提示UTF8 客戶端連 GBK 庫最容易出亂碼反過來 GBK 客戶端連 UTF8 庫通常只是顯示異常但回寫數(shù)據(jù)時(shí)可能產(chǎn)生不可逆的編碼損壞NLS_LANG 匹配別偷懶。5. 進(jìn)階把客戶端做成批處理交付包少點(diǎn)手工操作5.1 靜默安裝 response 文件配置批量交付 20 臺辦公機(jī)時(shí)一臺臺點(diǎn)安裝向?qū)侍?。正確做法是準(zhǔn)備好 response 文件再寫一個(gè)批處理做靜默安裝。response 文件核心參數(shù)如下[ENGINE] # Response File Version 1.0 [GENERIC] ORACLE_HOMEC:\app\client\21.3.0 ORACLE_HOME_NAMEOraClient21Home1 TOP_LEVEL_COMPONENTOracle Client 21.3.0.0.0 INSTALL_TYPEAdministrator DECLINE_SECURITY_UPDATEStrue參數(shù)說明ORACLE_HOME 是安裝目標(biāo)目錄ORACLE_HOME_NAME 是 Inventory 里登記的組件名INSTALL_TYPE 決定 Administrator 還是 Runtime。DECLINE_SECURITY_UPDATES 必須為 true否則非訂閱用戶會在聯(lián)網(wǎng)檢查階段卡住。命令行執(zhí)行安裝setup.exe -silent -noconsole -responseFile C:\ora_install\client_install.rsp -ignoreSysPrereqs echo %errorlevel%邏輯說明-silent -noconsole阻止圖形界面-responseFile指向配置好的參數(shù)文件-ignoreSysPrereqs跳過系統(tǒng)預(yù)檢查。執(zhí)行完立刻看 errorlevel0 表示成功非 0 就去%TEMP%\OraInstall目錄翻安裝日志。5.2 交付前強(qiáng)制走的驗(yàn)證清單我的習(xí)慣是每臺機(jī)器交付前強(qiáng)制跑一遍這三條缺一不可sqlplus -V tnsping ORCLPDB1 sqlplus scott/tigerORCLPDB1 d:\check.sqlcheck.sql 里只有一行select banner from v$version where rownum1;邏輯說明第一條確認(rèn)客戶端版本正確第二條確認(rèn)網(wǎng)絡(luò)和解析路徑通第三條確認(rèn)實(shí)連和 SQL 執(zhí)行沒問題。check.sql 刻意只查一行版本信息是為了把變量降到最少任何連接層的問題都會直接暴露在返回結(jié)果里不會因?yàn)闃I(yè)務(wù) SQL 復(fù)雜而引入額外干擾。從那以后我每次批量交付客戶端都強(qiáng)制走一遍這個(gè)流程tnsping 通過只是起點(diǎn)能登錄、中文不亂碼才算真正交付完成。因?yàn)?tnsping 通和能登錄是兩個(gè)世界能登錄和中文不亂碼又是另一個(gè)世界。希望這篇筆記能幫到你。本文還有配套的精品資源點(diǎn)擊獲取