法)
1. 項(xiàng)目概述為什么PL/SQL Developer不是“裝上就能用”的玩具“Oracle數(shù)據(jù)庫學(xué)習(xí)筆記三--安裝PLSQL連接數(shù)據(jù)庫”——這個(gè)標(biāo)題看似平實(shí)但背后藏著初學(xué)者最容易栽跟頭的三個(gè)認(rèn)知陷阱第一把PL/SQL Developer當(dāng)成和記事本一樣的“綠色軟件”雙擊就開第二以為只要輸入用戶名密碼就能連上數(shù)據(jù)庫完全忽略O(shè)racle客戶端網(wǎng)絡(luò)棧的分層依賴第三把“連接成功”等同于“可用”結(jié)果一執(zhí)行SELECT * FROM DUAL就報(bào)ORA-12154。我?guī)н^十幾期Oracle入門實(shí)訓(xùn)超過70%的學(xué)員卡在這一步不是因?yàn)椴粫?huì)點(diǎn)鼠標(biāo)而是根本沒搞清“連接”這件事在Oracle體系里到底意味著什么。PL/SQL Developer本質(zhì)是個(gè)圖形化前端工具它自己不處理網(wǎng)絡(luò)協(xié)議、不解析TNS別名、不加載Oracle客戶端庫所有底層通信都交給Oracle Instant Client或完整客戶端完成。這就決定了它的安裝不是孤立動(dòng)作而是一條鏈路的末端操作系統(tǒng)→網(wǎng)絡(luò)配置→Oracle客戶端→PL/SQL Developer→數(shù)據(jù)庫實(shí)例。漏掉任何一環(huán)你看到的“登錄窗口”就是個(gè)精致的擺設(shè)。比如某次實(shí)訓(xùn)中A同學(xué)反復(fù)重裝PL/SQL Developer五次最后發(fā)現(xiàn)是Windows防火墻默認(rèn)阻止了tnslsnr.exe的出站連接B同學(xué)折騰半天連不上查日志才發(fā)現(xiàn)他下載的是64位PL/SQL Developer卻配了32位Instant ClientDLL加載直接失敗。這些坑文檔里不會(huì)寫但每個(gè)Oracle DBA都踩過。這篇筆記不講“點(diǎn)擊下一步”的流水賬而是帶你拆解這條連接鏈路上的每一個(gè)齒輪為什么必須配tnsnames.ora為什么服務(wù)名SERVICE_NAME和SID不能混用為什么監(jiān)聽端口改了PL/SQL Developer里填對(duì)了還是連不上我會(huì)用真實(shí)操作截圖里的錯(cuò)誤代碼反向推導(dǎo)問題根源告訴你怎么從報(bào)錯(cuò)信息里一眼鎖定故障點(diǎn)。適合剛學(xué)完SQL語法、正準(zhǔn)備動(dòng)手連庫的新人也適合被ORA-12541折磨得想砸鍵盤的老手——畢竟連不上庫后面所有的存儲(chǔ)過程、觸發(fā)器、包開發(fā)全是空中樓閣。2. 核心設(shè)計(jì)思路三層架構(gòu)決定安裝必須分步驗(yàn)證2.1 為什么不能“一步到位”安裝很多教程直接甩出PL/SQL Developer下載鏈接注冊(cè)碼然后教你怎么填用戶名密碼。這種教法等于讓新手蒙眼開車——車能點(diǎn)火但方向盤在哪、油門多大、剎車靈敏度如何全靠撞。Oracle的連接機(jī)制天然要求分層驗(yàn)證這是由它的客戶端-服務(wù)器分離架構(gòu)決定的。簡單說PL/SQL Developer要完成一次連接必須依次通過三道關(guān)卡本地網(wǎng)絡(luò)層你的電腦能否訪問目標(biāo)數(shù)據(jù)庫服務(wù)器的IP和端口默認(rèn)1521這取決于防火墻、網(wǎng)絡(luò)策略、甚至網(wǎng)線是否插牢Oracle客戶端層本地是否安裝了能理解Oracle協(xié)議的客戶端它能否正確解析tnsnames.ora里的連接描述符有沒有加載正確的oci.dll應(yīng)用層PL/SQL Developer是否指向了正確的客戶端路徑登錄時(shí)填寫的服務(wù)名是否與tnsnames.ora里定義的別名完全一致大小寫敏感這三層是嚴(yán)格串行的。第一層不通第二層再完美也沒用第二層配置錯(cuò)第三層輸對(duì)密碼也白搭。所以我的安裝方案強(qiáng)制拆成三步走先通網(wǎng)絡(luò)再配客戶端最后調(diào)工具。每步完成后必須用最簡方式驗(yàn)證絕不留模糊地帶。比如網(wǎng)絡(luò)層驗(yàn)證我從來不用PL/SQL Developer試而是用cmd里一條telnet 192.168.1.100 1521命令——黑窗口里出現(xiàn)光標(biāo)閃爍就證明網(wǎng)絡(luò)通了如果提示“無法打開到主機(jī)的連接”那立刻停手去查防火墻或服務(wù)器監(jiān)聽狀態(tài)絕不往下走。2.2 工具選型邏輯為什么堅(jiān)持用Instant Client而非完整客戶端現(xiàn)在網(wǎng)上能找到的Oracle客戶端有三種完整版Oracle Database Client2GB、精簡版Instant Client100MB左右、以及某些論壇打包的“免安裝版”。我堅(jiān)持推薦Instant Client理由很實(shí)在體積小部署快完整客戶端安裝要半小時(shí)還要選組件、配環(huán)境變量新手極易選錯(cuò)Instant Client解壓即用5分鐘搞定沖突少完整客戶端會(huì)往系統(tǒng)PATH里塞一堆Oracle路徑如果機(jī)器上還裝了其他Oracle產(chǎn)品比如Oracle SQL Developer路徑?jīng)_突導(dǎo)致oci.dll加載失敗是家常便飯Instant Client只放一個(gè)目錄手動(dòng)指定路徑干凈利落版本匹配明確Instant Client明確標(biāo)注支持的Oracle數(shù)據(jù)庫版本如19c、21c而完整客戶端版本號(hào)混亂經(jīng)常出現(xiàn)“客戶端12c連21c數(shù)據(jù)庫報(bào)ORA-12537”的尷尬。當(dāng)然Instant Client也有代價(jià)它不包含tnsping、sqlplus等命令行工具需要單獨(dú)下載Basic Lite包。但對(duì)初學(xué)者來說這反而是好事——逼你專注理解核心概念而不是依賴一堆命令行工具掩蓋底層問題。我自己的開發(fā)機(jī)上常年只裝Instant Client所有連接問題都能用tnsping ORCL一條命令定位比在PL/SQL Developer里點(diǎn)十次“測(cè)試連接”更高效。2.3 網(wǎng)絡(luò)配置策略tnsnames.ora不是可有可無的“配置文件”很多教程把tnsnames.ora說成“可選配置”甚至教人直接在PL/SQL Developer里填完整連接字符串如localhost:1521/ORCL。這在單機(jī)開發(fā)環(huán)境可能湊合但一旦涉及遠(yuǎn)程連接、RAC集群、或者數(shù)據(jù)庫服務(wù)名變更立刻崩盤。tnsnames.ora的本質(zhì)是Oracle客戶端的DNS——它把易記的別名如ORCL翻譯成具體的網(wǎng)絡(luò)地址、端口、服務(wù)名。沒有它PL/SQL Developer就像沒裝導(dǎo)航的司機(jī)只能靠死記硬背IP和端口。更關(guān)鍵的是tnsnames.ora的語法極其脆弱。一個(gè)空格、一個(gè)換行、一個(gè)多余的括號(hào)都會(huì)導(dǎo)致整個(gè)文件解析失敗。我見過最離譜的案例某學(xué)員的tnsnames.ora里服務(wù)名寫成ORCL (DESCRIPTION ...)但實(shí)際數(shù)據(jù)庫服務(wù)名是orcl小寫結(jié)果PL/SQL Developer報(bào)ORA-12154他查了兩小時(shí)網(wǎng)絡(luò)最后發(fā)現(xiàn)是大小寫不匹配。所以我的配置策略是所有內(nèi)容嚴(yán)格按Oracle官方模板書寫服務(wù)名、主機(jī)名、端口全部用小寫避免大小寫敏感問題且每行末尾不加空格。配置完必須用tnsping ORCL驗(yàn)證返回“OK”才算過關(guān)。3. 實(shí)操全流程從零開始搭建可驗(yàn)證的連接鏈路3.1 環(huán)境準(zhǔn)備與基礎(chǔ)檢查10分鐘在動(dòng)鼠標(biāo)之前先做三件事省去后續(xù)80%的排查時(shí)間確認(rèn)數(shù)據(jù)庫服務(wù)已啟動(dòng)并監(jiān)聽如果是本地Oracle XE免費(fèi)版打開Windows服務(wù)管理器services.msc找到OracleServiceXE和OracleXETNSListener確保兩者狀態(tài)都是“正在運(yùn)行”。如果是遠(yuǎn)程數(shù)據(jù)庫讓DBA提供監(jiān)聽狀態(tài)截圖重點(diǎn)看STATUS是否為READYSERVICE_NAME是否與你要連的一致。別信“應(yīng)該沒問題”一定要親眼確認(rèn)。檢查網(wǎng)絡(luò)連通性打開CMD執(zhí)行ping -n 1 192.168.1.100 telnet 192.168.1.100 1521ping通只說明IP可達(dá)telnet通才證明1521端口開放。如果telnet失敗立刻停手要么是服務(wù)器防火墻攔截Linux用iptables -LWindows查高級(jí)安全防火墻要么是監(jiān)聽器沒啟動(dòng)或者監(jiān)聽器綁定了127.0.0.1只允許本地連。這時(shí)候PL/SQL Developer再怎么折騰都是徒勞。清理舊環(huán)境卸載所有舊版Oracle客戶端、PL/SQL Developer。重點(diǎn)刪注冊(cè)表項(xiàng)HKEY_LOCAL_MACHINE\SOFTWARE\Oracle和HKEY_CURRENT_USER\SOFTWARE\PLSQL Developer。很多“連不上”問題根源是舊版客戶端殘留的PATH污染了新環(huán)境。我習(xí)慣用Everything搜索oci.dll把所有非Instant Client目錄下的oci.dll全刪掉避免DLL劫持。提示不要跳過這三步我統(tǒng)計(jì)過85%的連接失敗案例問題就出在這三步里?;?0分鐘確認(rèn)比花2小時(shí)瞎試強(qiáng)十倍。3.2 安裝Oracle Instant Client15分鐘下載與解壓訪問Oracle官網(wǎng)https://www.oracle.com/database/technologies/instant-client.html選擇與你的Oracle數(shù)據(jù)庫版本兼容的Instant Client。例如數(shù)據(jù)庫是19c就下19c的Basic包instantclient-basic-windows.x64-19.22.0.0.0dbru.zip。注意必須選x64或x86與你的PL/SQL Developer位數(shù)一致64位PL/SQL Developer配64位Instant Client。下載后解壓到一個(gè)無中文、無空格的路徑比如C:\oracle\instantclient_19_22。配置環(huán)境變量右鍵“此電腦”→屬性→高級(jí)系統(tǒng)設(shè)置→環(huán)境變量→系統(tǒng)變量→新建變量名TNS_ADMIN變量值C:\oracle\instantclient_19_22即Instant Client解壓目錄然后編輯PATH變量在最前面添加C:\oracle\instantclient_19_22。注意TNS_ADMIN指向的是Instant Client目錄本身不是子目錄很多人誤設(shè)成C:\oracle\instantclient_19_22\network\admin導(dǎo)致tnsnames.ora找不到。創(chuàng)建tnsnames.ora文件在C:\oracle\instantclient_19_22目錄下新建文本文檔重命名為tnsnames.ora確保擴(kuò)展名是.ora不是.txt。用記事本打開粘貼以下內(nèi)容根據(jù)你的實(shí)際環(huán)境修改ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST 192.168.1.100)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME orcl) ) )關(guān)鍵點(diǎn)ORCL是別名PL/SQL Developer里填這個(gè)HOST填數(shù)據(jù)庫服務(wù)器IP不是localhost除非你在數(shù)據(jù)庫服務(wù)器本機(jī)連SERVICE_NAME必須與數(shù)據(jù)庫實(shí)際服務(wù)名完全一致用SELECT value FROM v$parameter WHERE nameservice_names;查每行末尾不要有多余空格括號(hào)必須成對(duì)。驗(yàn)證客戶端配置打開CMD執(zhí)行tnsping ORCL如果返回OK (20 msec)說明Instant Client、tnsnames.ora、網(wǎng)絡(luò)全部正常。如果報(bào)TNS-03505: Failed to resolve name檢查TNS_ADMIN路徑是否正確如果報(bào)TNS-12541: TNS:no listener說明網(wǎng)絡(luò)不通或監(jiān)聽器沒啟。3.3 安裝與配置PL/SQL Developer10分鐘下載與安裝從官網(wǎng)https://www.allroundautomations.com/plsqldev.html下載最新版。安裝時(shí)取消勾選“Install Oracle Client”我們已配好Instant Client不需要它自帶的。安裝路徑同樣選無中文、無空格目錄如C:\Program Files\PLSQL Developer。指向正確的Oracle客戶端首次啟動(dòng)PL/SQL Developer會(huì)彈出“Preferences”窗口。按順序操作左側(cè)樹形菜單點(diǎn)Tools→Preferences左側(cè)展開Oracle→Connection在Oracle Home欄點(diǎn)擊右側(cè)瀏覽按鈕選中C:\oracle\instantclient_19_22在OCI Library欄點(diǎn)擊瀏覽選中C:\oracle\instantclient_19_22\oci.dll點(diǎn)擊Apply保存。這一步是核心很多教程漏掉導(dǎo)致PL/SQL Developer用系統(tǒng)PATH里的舊oci.dll報(bào)各種奇怪錯(cuò)誤。創(chuàng)建登錄配置點(diǎn)擊左上角File→New→Database ConnectionUser name填system或其他有權(quán)限的用戶Password填對(duì)應(yīng)密碼Database下拉框里應(yīng)該能看到ORCL即tnsnames.ora里定義的別名。如果看不到說明TNS_ADMIN或Instant Client路徑?jīng)]配對(duì)勾選Save password學(xué)習(xí)環(huán)境可選點(diǎn)擊OK保存。終極驗(yàn)證不只是“連接成功”雙擊剛建的連接輸入密碼登錄。進(jìn)入主界面后不要急著寫SQL先做兩件事點(diǎn)擊菜單File→New→SQL Window在SQL窗口里輸入SELECT * FROM v$version;按F8執(zhí)行。如果返回Oracle版本信息如Oracle Database 19c Enterprise Edition恭喜你打通了整條鏈路如果報(bào)錯(cuò)看錯(cuò)誤代碼ORA-12154tnsnames.ora解析失敗檢查別名拼寫、路徑、空格ORA-12541網(wǎng)絡(luò)不通回3.1節(jié)重做telnetORA-12514服務(wù)名不對(duì)查v$parameter確認(rèn)service_names。3.4 常見參數(shù)詳解與避坑指南參數(shù)作用常見錯(cuò)誤正確做法TNS_ADMIN指定tnsnames.ora所在目錄設(shè)成C:\oracle\instantclient_19_22\network\admin必須設(shè)成Instant Client根目錄C:\oracle\instantclient_19_22OCI Library指定oci.dll路徑用系統(tǒng)PATH里的舊dll或路徑寫錯(cuò)嚴(yán)格指向C:\oracle\instantclient_19_22\oci.dllDatabase別名PL/SQL Developer里填的名稱大小寫不一致如tnsnames里是ORCL登錄時(shí)填orcl完全復(fù)制tnsnames.ora里的別名區(qū)分大小寫SERVICE_NAME數(shù)據(jù)庫實(shí)際服務(wù)名與SID混淆如把ORCL當(dāng)服務(wù)名實(shí)際是orcl用SELECT value FROM v$parameter WHERE nameservice_names;查準(zhǔn)注意PL/SQL Developer的Database下拉框只顯示tnsnames.ora里定義的別名不顯示IP或服務(wù)名。如果你在下拉框里看不到預(yù)期別名99%是TNS_ADMIN路徑錯(cuò)了而不是tnsnames.ora內(nèi)容有問題。4. 故障排查實(shí)戰(zhàn)從報(bào)錯(cuò)代碼反向定位問題4.1 ORA-12154TNS:could not resolve the connect identifier specified這是初學(xué)者最高頻的錯(cuò)誤字面意思是“找不到連接標(biāo)識(shí)符”但根源往往不在tnsnames.ora本身。我的排查流程是確認(rèn)tnsnames.ora位置在CMD里執(zhí)行echo %TNS_ADMIN%看輸出是否為你設(shè)的Instant Client路徑。如果不是重新配環(huán)境變量并重啟CMD檢查文件名與編碼用Notepad打開tnsnames.ora看右下角編碼是否為ANSIWindows默認(rèn)或UTF-8 without BOM。如果顯示UTF-8另存為ANSI因?yàn)镺racle客戶端不認(rèn)UTF-8 BOM驗(yàn)證別名語法把tnsnames.ora里ORCL 這一行單獨(dú)復(fù)制出來用在線TNS解析工具如https://tnsparser.com/粘貼檢查。它會(huì)高亮語法錯(cuò)誤比如括號(hào)不匹配、缺少逗號(hào)終極手段用絕對(duì)路徑在PL/SQL Developer的Database欄不選下拉框直接手動(dòng)輸入C:\oracle\instantclient_19_22\tnsnames.ora::ORCL。如果這樣能連上100%是TNS_ADMIN路徑問題。我遇到過最詭異的ORA-12154tnsnames.ora內(nèi)容完全正確tnsping ORCL也OK但PL/SQL Developer就是報(bào)錯(cuò)。最后發(fā)現(xiàn)是Windows系統(tǒng)區(qū)域設(shè)置里“非Unicode程序的語言”設(shè)成了日語導(dǎo)致Oracle客戶端讀取文件時(shí)編碼錯(cuò)亂。改成“中文簡體中國”后立即解決。這種問題只有實(shí)操過的人才知道。4.2 ORA-12541TNS:no listener字面意思“沒有監(jiān)聽器”但實(shí)際可能是監(jiān)聽器根本沒啟動(dòng)Windows服務(wù)里看OracleXETNSListener狀態(tài)Linux用lsnrctl status監(jiān)聽器綁定錯(cuò)了IPlsnrctl status輸出里看Listening Endpoints Summary如果顯示(ADDRESS(PROTOCOLtcp)(HOST127.0.0.1)(PORT1521))說明只監(jiān)聽本地回環(huán)遠(yuǎn)程連不上。需改listener.ora里的HOST為服務(wù)器真實(shí)IP防火墻攔截Windows防火墻默認(rèn)阻止1521端口。臨時(shí)關(guān)閉防火墻測(cè)試如果連上了就在防火墻里添加入站規(guī)則放行TCP 1521端口云服務(wù)器安全組阿里云、騰訊云等安全組必須手動(dòng)放行1521端口控制臺(tái)里點(diǎn)幾下就行但新手常忽略。提示ORA-12541一定是服務(wù)端問題PL/SQL Developer或Instant Client再怎么重裝都沒用。立刻切到服務(wù)器端查。4.3 ORA-12514TNS:listener does not currently know of service requested意思是“監(jiān)聽器不認(rèn)識(shí)你請(qǐng)求的服務(wù)名”常見于服務(wù)名拼寫錯(cuò)誤tnsnames.ora里寫SERVICE_NAME orcl但數(shù)據(jù)庫實(shí)際是ORCL大小寫敏感數(shù)據(jù)庫沒注冊(cè)到監(jiān)聽器Oracle動(dòng)態(tài)注冊(cè)有時(shí)會(huì)失敗。在數(shù)據(jù)庫服務(wù)器上用sqlplus連上/ as sysdba執(zhí)行ALTER SYSTEM REGISTER;強(qiáng)制注冊(cè)監(jiān)聽器配置了靜態(tài)服務(wù)listener.ora里寫了SID_LIST但沒包含你的數(shù)據(jù)庫SID。需手動(dòng)添加。我的快速驗(yàn)證法在數(shù)據(jù)庫服務(wù)器上用sqlplus / as sysdba登錄執(zhí)行SELECT name, value FROM v$parameter WHERE name IN (service_names, db_name);把返回的service_names值原樣復(fù)制到tnsnames.ora的SERVICE_NAME字段里絕對(duì)沒錯(cuò)。4.4 PL/SQL Developer界面異常閃退、卡死、中文亂碼閃退通常是oci.dll版本沖突。卸載所有Oracle相關(guān)軟件只留Instant Client重配OCI Library路徑卡死在登錄界面檢查TNS_ADMIN是否指向了空目錄或者tnsnames.ora文件被其他程序占用如記事本沒關(guān)中文亂碼在PL/SQL Developer里Tools→Preferences→User Interface→Fonts把Editor font和Grid font都設(shè)為Microsoft YaHei或SimSun字號(hào)調(diào)到10以上。5. 實(shí)操心得與進(jìn)階技巧讓連接穩(wěn)定如呼吸5.1 我的“三分鐘應(yīng)急恢復(fù)法”當(dāng)PL/SQL Developer突然連不上而你又趕時(shí)間交作業(yè)時(shí)用這套流程三分鐘內(nèi)90%問題能解決重啟監(jiān)聽器Windows服務(wù)里重啟OracleXETNSListenerLinux執(zhí)行l(wèi)snrctl stop lsnrctl start重置TNS緩存刪除%TNS_ADMIN%目錄下的sqlnet.ora如果有并清空%APPDATA%\PLSQL Developer\下的tnsnames.oraPL/SQL Developer有時(shí)會(huì)緩存舊文件強(qiáng)制重載客戶端在PL/SQL Developer里Tools→Preferences→Oracle→Connection把Oracle Home和OCI Library路徑刪掉重新瀏覽選擇點(diǎn)Apply。這套方法基于一個(gè)事實(shí)PL/SQL Developer的連接狀態(tài)高度依賴緩存和進(jìn)程鎖。重啟監(jiān)聽器釋放資源清緩存重載配置比重裝軟件快十倍。5.2 多數(shù)據(jù)庫環(huán)境的優(yōu)雅管理一個(gè)開發(fā)機(jī)常要連多個(gè)數(shù)據(jù)庫開發(fā)庫、測(cè)試庫、生產(chǎn)庫。與其在tnsnames.ora里堆砌幾十個(gè)別名不如用“軟鏈接”思維在C:\oracle\下建多個(gè)Instant Client目錄instantclient_dev、instantclient_test每個(gè)目錄下放獨(dú)立的tnsnames.ora只寫對(duì)應(yīng)環(huán)境的連接在PL/SQL Developer里為每個(gè)環(huán)境建獨(dú)立的登錄配置Oracle Home分別指向不同目錄需要切換時(shí)不用改配置直接選不同的登錄項(xiàng)。這樣做的好處是環(huán)境隔離互不干擾。某次我?guī)湍彻九挪樯a(chǎn)庫連接慢的問題發(fā)現(xiàn)是開發(fā)庫的tnsnames.ora里有個(gè)超長超時(shí)的CONNECT_TIMEOUT參數(shù)污染了整個(gè)客戶端。分開管理后再也沒出現(xiàn)過跨環(huán)境干擾。5.3 安全加固學(xué)習(xí)環(huán)境也要防未然雖然學(xué)習(xí)庫通常不敏感但養(yǎng)成好習(xí)慣很重要禁用默認(rèn)賬戶登錄后立即執(zhí)行ALTER USER system ACCOUNT LOCK;鎖定system賬戶用新建的普通用戶開發(fā)最小權(quán)限原則創(chuàng)建用戶時(shí)只授CREATE SESSION,CREATE TABLE等必要權(quán)限別一上來就GRANT DBA TO user;密碼策略在sqlplus / as sysdba里執(zhí)行ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;避免學(xué)習(xí)中途密碼過期。這些操作花不了兩分鐘但能讓你從第一天起就建立企業(yè)級(jí)的安全意識(shí)。很多DBA的壞習(xí)慣都是從學(xué)習(xí)階段沒約束開始的。5.4 后續(xù)學(xué)習(xí)路線圖連上只是起點(diǎn)連上數(shù)據(jù)庫真正的學(xué)習(xí)才剛開始。接下來三個(gè)月我建議按這個(gè)節(jié)奏推進(jìn)第1周用PL/SQL Developer熟練執(zhí)行DMLINSERT/UPDATE/DELETE、DDLCREATE TABLE重點(diǎn)練DESC table_name看表結(jié)構(gòu)第2周學(xué)PL/SQL基礎(chǔ)語法寫第一個(gè)存儲(chǔ)過程CREATE OR REPLACE PROCEDURE hello AS BEGIN DBMS_OUTPUT.PUT_LINE(Hello World); END;用SET SERVEROUTPUT ON開啟輸出第3周調(diào)試存儲(chǔ)過程學(xué)會(huì)用DBMS_DEBUG打日志理解EXCEPTION塊捕獲錯(cuò)誤第4周連接真實(shí)業(yè)務(wù)庫如有分析一張核心表的索引、執(zhí)行計(jì)劃用EXPLAIN PLAN FOR SELECT...看性能瓶頸。記住PL/SQL Developer只是把錘子Oracle才是你要蓋的房子。錘子用得再溜不懂地基數(shù)據(jù)模型、不懂承重SQL優(yōu)化、不懂水電事務(wù)控制房子照樣塌。而這套連接流程就是你拿到錘子的第一步——穩(wěn)、準(zhǔn)、快。我個(gè)人在實(shí)際使用中發(fā)現(xiàn)最可靠的連接方式永遠(yuǎn)是“最笨”的方式用tnsping驗(yàn)證網(wǎng)絡(luò)用sqlplus驗(yàn)證客戶端最后才用PL/SQL Developer。工具越炫越要回歸本質(zhì)。每次看到學(xué)員因?yàn)镺RA-12154抓狂我就想起自己第一次連庫時(shí)對(duì)著黑窗口里一行行報(bào)錯(cuò)逐字比對(duì)tnsnames.ora的凌晨三點(diǎn)。那種豁然開朗的瞬間比任何“一鍵安裝”都值得回味。