亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

?? ??? ??
oracle知識(shí) ORACLE的數(shù)據(jù)類型 Oracle技術(shù)網(wǎng)—DBMS_Job包的用法 Oracle技術(shù)網(wǎng)—Oracle for NT系統(tǒng)實(shí)用工具介紹 Oracle技術(shù)網(wǎng)—Oracle常見錯(cuò)誤代碼 Oracle技術(shù)網(wǎng)—Oracle常用Script Oracle技術(shù)網(wǎng)—Oracle常用數(shù)據(jù)字典 Oracle技術(shù)網(wǎng)—ORACLE數(shù)據(jù)庫簡(jiǎn)介 Oracle技術(shù)網(wǎng)—Oracle特殊包 Oracle技術(shù)網(wǎng)—Oracle相關(guān)站點(diǎn) Oracle技術(shù)網(wǎng)—哪些初始化參數(shù)最影響Oracle系統(tǒng)性能 PL/SQL DBA Oracle7 7.3.2.2 Oracle技術(shù)網(wǎng)—listener.log的內(nèi)容增長(zhǎng)很快,是否可以刪除重建 Oracle技術(shù)網(wǎng)—ORACLE表空間恢復(fù)方案 Oracle技術(shù)網(wǎng)—Oracle常用系統(tǒng)文件有哪些 Oracle技術(shù)網(wǎng)—ORACLE回滾段管理(上) Oracle技術(shù)網(wǎng)—ORACLE回滾段管理(下) Oracle技術(shù)網(wǎng)—Oracle如何決定使用哪個(gè)回退段 Oracle技術(shù)網(wǎng)—Oracle數(shù)據(jù)庫的空間管理技巧 Oracle技術(shù)網(wǎng)—Oracle數(shù)據(jù)庫碎片整理 Oracle技術(shù)網(wǎng)—Oracle數(shù)據(jù)庫有哪幾種關(guān)閉方式 Oracle技術(shù)網(wǎng)—Oracle數(shù)據(jù)庫有哪幾種啟動(dòng)方式 Oracle技術(shù)網(wǎng)—Oracle預(yù)定義角色有哪些 Oracle技術(shù)網(wǎng)—ROLLBACK不能回滾的命令 Oracle技術(shù)網(wǎng)—查看哪些session正在使用哪些回滾段 Oracle技術(shù)網(wǎng)—存儲(chǔ)參數(shù)(storage子句)含義及設(shè)置技巧 Oracle技術(shù)網(wǎng)—和權(quán)限有關(guān)的表有哪些 Oracle技術(shù)網(wǎng)—漫談數(shù)據(jù)庫的啟動(dòng)和關(guān)閉 Oracle技術(shù)網(wǎng)—哪些初始化參數(shù)最影響Oracle系統(tǒng)性能 Oracle技術(shù)網(wǎng)—如何備份控制文件 Oracle技術(shù)網(wǎng)—如何查出前臺(tái)正在發(fā)出的sql語句 Oracle技術(shù)網(wǎng)—如何查看Oracle版本及安裝了哪些選項(xiàng) Oracle技術(shù)網(wǎng)—如何查看Oracle數(shù)據(jù)表的建表語句 Oracle技術(shù)網(wǎng)—如何查看SGA區(qū)剩余可用內(nèi)存 Oracle技術(shù)網(wǎng)—如何查看各個(gè)表空間占用磁盤情況 Oracle技術(shù)網(wǎng)—如何查看后臺(tái)進(jìn)程 Oracle技術(shù)網(wǎng)—如何查看什么時(shí)間有哪些數(shù)據(jù)庫對(duì)象結(jié)構(gòu)被修改過 Oracle技術(shù)網(wǎng)—如何查看數(shù)據(jù)庫的各種數(shù)據(jù)文件 Oracle技術(shù)網(wǎng)—如何查看數(shù)據(jù)庫的字符集 Oracle技術(shù)網(wǎng)—如何查看數(shù)據(jù)文件是否自動(dòng)擴(kuò)展 Oracle技術(shù)網(wǎng)—如何查看數(shù)據(jù)文件所在的路徑 Oracle技術(shù)網(wǎng)—如何查看用戶表上的約束內(nèi)容 Oracle技術(shù)網(wǎng)—如何查看用戶表所占空間的大小 Oracle技術(shù)網(wǎng)—如何查詢出primary key和forgen key的關(guān)系表 Oracle技術(shù)網(wǎng)—如何改變當(dāng)前聯(lián)機(jī)日志文件的大小 Oracle技術(shù)網(wǎng)—如何利用DBMS_SQL包和游標(biāo)計(jì)算當(dāng)前用戶下所有表的行數(shù) Oracle技術(shù)網(wǎng)—如何啟動(dòng)ARCHIVELOG模式 Oracle技術(shù)網(wǎng)—如何取出某一用戶的密碼,再原封不動(dòng)的改回去 Oracle技術(shù)網(wǎng)—如何設(shè)置BLOCK_SIZE大于2K,如:4K、16K Oracle技術(shù)網(wǎng)—如何手工指定使用哪個(gè)回退段 Oracle技術(shù)網(wǎng)—如何修改internal的口令 Oracle技術(shù)網(wǎng)—如何移動(dòng)控制文件到新的目錄中 Oracle技術(shù)網(wǎng)—如何移數(shù)據(jù)庫文件 Oracle技術(shù)網(wǎng)—如何增加表空間的大小 Oracle技術(shù)網(wǎng)—怎樣查看init.ora文件 Oracle技術(shù)網(wǎng)—怎樣查看SGA值 Oracle技術(shù)網(wǎng)—怎樣查看哪些用戶擁有SYSDBA、SYSOPER權(quán)限? Oracle技術(shù)網(wǎng)—怎樣快速查出Oracle 數(shù)據(jù)庫中的鎖等待 Oracle技術(shù)網(wǎng)—怎樣識(shí)別IO競(jìng)爭(zhēng)和負(fù)載平衡 Exp vs Imp Oracle技術(shù)網(wǎng)—EXP、IMP 命令詳解 Oracle技術(shù)網(wǎng)—Exp/Imp大量數(shù)據(jù) Oracle技術(shù)網(wǎng)—Export/Import 使用技巧與常見錯(cuò)誤 Oracle技術(shù)網(wǎng)—Oracle數(shù)據(jù)庫的備份與恢復(fù) Oracle技術(shù)網(wǎng)—如何把數(shù)據(jù)exp到Sql loader里 Oracle技術(shù)網(wǎng)—如何單獨(dú)備份一個(gè)或多個(gè)表 Oracle技術(shù)網(wǎng)—如何單獨(dú)備份一個(gè)或多個(gè)用戶 Oracle技術(shù)網(wǎng)—如何導(dǎo)入指定表 Oracle技術(shù)網(wǎng)—如何建立一個(gè)與現(xiàn)存數(shù)據(jù)庫相同,但不包含數(shù)據(jù)的空庫 Oracle技術(shù)網(wǎng)—如何在oracle7和oracle8之間exp/imp數(shù)據(jù) Oracle技術(shù)網(wǎng)—提高ORACLE數(shù)據(jù)庫系統(tǒng)import性能 Oracle技術(shù)網(wǎng)—為何我的導(dǎo)出文件只有500K Oracle技術(shù)網(wǎng)—自動(dòng)備份Oracle數(shù)據(jù)庫 Oracle技術(shù)網(wǎng)—作Export或Import時(shí),如何記錄LOG信息? SQL技巧 Oracle技術(shù)網(wǎng)—LONG數(shù)據(jù)類型使用上的一些說明 Oracle技術(shù)網(wǎng)—Oracle8 PL/SQL編程風(fēng)格與系統(tǒng)性能的提高 Oracle技術(shù)網(wǎng)—Oracle8中用戶名、表名、列名、索引名...可以用中文命名嗎 Oracle技術(shù)網(wǎng)—Oracle中如何實(shí)現(xiàn)某一字段自動(dòng)增加1 Oracle技術(shù)網(wǎng)—SQL(Structured Query Language)語句分哪幾類 Oracle技術(shù)網(wǎng)—SQL*PLUS常用命令列表 Oracle技術(shù)網(wǎng)—SQL*Plus系統(tǒng)環(huán)境變量有哪些?如何修改? Oracle技術(shù)網(wǎng)—SQL*Plus中緩沖區(qū)命令列表 Oracle技術(shù)網(wǎng)—SQL*Plus中能運(yùn)行哪幾種命令 Oracle技術(shù)網(wǎng)—SQLPlus中的復(fù)制和粘貼技巧 Oracle技術(shù)網(wǎng)—查看本用戶下的各種對(duì)象的SQL腳本 Oracle技術(shù)網(wǎng)—查找a表中有,而在b表中沒有的記錄 Oracle技術(shù)網(wǎng)—利用PL/SQL打印ASCII表 Oracle技術(shù)網(wǎng)—如何查找、刪除表中重復(fù)的記錄 Oracle技術(shù)網(wǎng)—如何對(duì)CLOB行字段執(zhí)行全文檢索 Oracle技術(shù)網(wǎng)—如何對(duì)CLOB字段進(jìn)行全文檢索? Oracle技術(shù)網(wǎng)—如何改變表中列的名字 Oracle技術(shù)網(wǎng)—如何改變一個(gè)字段初始定義的Check范圍 Oracle技術(shù)網(wǎng)—如何給表、列加注釋 Oracle技術(shù)網(wǎng)—如何將 primary key 建在其它的表空間上 Oracle技術(shù)網(wǎng)—如何刪除表中的列 Oracle技術(shù)網(wǎng)—如何使‘CREATE TABLE AS SELECT’能支持ORDER BY ? Oracle技術(shù)網(wǎng)—如何通過 SQL*PLUS 將符號(hào) & 、'號(hào)(單引號(hào)) 插入Oracle數(shù)據(jù)庫的表中 Oracle技術(shù)網(wǎng)—如何用SQL生成SQL批處理文件 Oracle技術(shù)網(wǎng)—如何在PL_SQL中讀寫文件 Oracle技術(shù)網(wǎng)—如何自動(dòng)生成一個(gè)含有20000101至20500101共50年日期的表 Oracle技術(shù)網(wǎng)—如何自動(dòng)生成一個(gè)含有2000年01月至2050年01月共50年月份的表 Oracle技術(shù)網(wǎng)—?jiǎng)h除a表中和b表相同的數(shù)據(jù) Oracle技術(shù)網(wǎng)—在Oracle快速進(jìn)行數(shù)據(jù)行存在性檢查 Oracle技術(shù)網(wǎng)—怎樣查看表的結(jié)構(gòu) Oracle技術(shù)網(wǎng)—怎樣改變SQL*Plus啟動(dòng)時(shí)默認(rèn)路徑 Oracle技術(shù)網(wǎng)—怎樣計(jì)算表中的記錄數(shù) Oracle技術(shù)網(wǎng)—怎樣在SQL*Plus中使用 '&' 來實(shí)現(xiàn)自定義參數(shù)變量? Oracle技術(shù)網(wǎng)—怎樣在查詢記錄時(shí)給記錄加鎖 Oracle錯(cuò)誤 Oracle7 7.3.2.2 Oracle技術(shù)網(wǎng)—Oracle 816中如何啟動(dòng)Enterprise Manager Oracle技術(shù)網(wǎng)—Oracle Enterprise Manager(OEM)工具中如何以SYSOPER、SYSDBA方式登錄 Oracle技術(shù)網(wǎng)—ORACLE數(shù)據(jù)庫應(yīng)用開發(fā)常見問題及排除 Oracle技術(shù)網(wǎng)—監(jiān)聽器錯(cuò)誤 Oracle技術(shù)網(wǎng)—聯(lián)機(jī)熱備份失敗后,如何打開數(shù)據(jù)庫 Oracle技術(shù)網(wǎng)—沒有備份、只有歸檔日志,如何恢復(fù)數(shù)據(jù)文件 Oracle技術(shù)網(wǎng)—某個(gè)數(shù)據(jù)文件損壞,如何打開數(shù)據(jù)庫 Oracle技術(shù)網(wǎng)—如何使用歸檔日志進(jìn)行完全恢復(fù) Oracle技術(shù)網(wǎng)—如何正確建立TYPE、partition(分區(qū)) Oracle技術(shù)網(wǎng)—一個(gè)控制文件被損壞,如何啟動(dòng) Oracle技術(shù)網(wǎng)—在SQL*Plus中insert進(jìn)的都是中文的,為什么一存入服務(wù)器后,再select出的就是???了 Oracle技術(shù)網(wǎng)—重裝Oracle服務(wù)器后,以前的數(shù)據(jù)可以恢復(fù)嗎 Oracle初學(xué)者入門 Oracle技術(shù)網(wǎng)—Oracle 8.1.6 for Win2000 系統(tǒng)文件解釋 Oracle技術(shù)網(wǎng)—Oracle 基本知識(shí) Oracle技術(shù)網(wǎng)—Oracle8 數(shù)據(jù)類型 Oracle技術(shù)網(wǎng)—what is sql? Oracle技術(shù)網(wǎng)—安裝、配置后,SQL*Plus操作初步 Oracle技術(shù)網(wǎng)—安裝Oracle后,經(jīng)常使用的修改表空間的SQL代碼 Oracle安裝、刪除 Oracle技術(shù)網(wǎng)—Oradim工具的用法 Oracle技術(shù)網(wǎng)—WINDOWS NT上,如何刪除ORACLE SERVICE Oracle技術(shù)網(wǎng)—如何連接兩臺(tái)Oracle服務(wù)器 Oracle技術(shù)網(wǎng)—如何在Windows 2000下將Oracle完全卸載 Oracle技術(shù)網(wǎng)—如何在WINDOWS NT上刪除所有的Oracle安裝? Oracle技術(shù)網(wǎng)—手工安裝數(shù)據(jù)庫時(shí)需要安裝那些系統(tǒng)包 Oracle技術(shù)網(wǎng)—手工創(chuàng)建數(shù)據(jù)庫的全部腳本及說明 Oracle安全性問題 Oracle技術(shù)網(wǎng)—Linux ORACLE 8.1.5漏洞 Oracle技術(shù)網(wǎng)—Oracle 8.1.6的oidldapd中的漏洞 Oracle技術(shù)網(wǎng)—Oracle8的不安全因素及幾點(diǎn)說明 Oracle技術(shù)網(wǎng)—Oracle數(shù)據(jù)庫的安全策略 Oracle技術(shù)網(wǎng)—Oracle數(shù)據(jù)庫密碼文件的使用和維護(hù) Oracle技術(shù)網(wǎng)—提高Oracle數(shù)據(jù)庫應(yīng)用系統(tǒng)安全的舉例與分析 數(shù)據(jù)庫安全性策略 Oracle系統(tǒng)設(shè)置、優(yōu)化、連接 《Oracle8 優(yōu)化技術(shù)》摘錄 (第一章 安裝) 《Oracle8 優(yōu)化技術(shù)》摘錄 (第二章 內(nèi)存/CPU) 《Oracle8 優(yōu)化技術(shù)》摘錄 (第三章 輸入/輸出) Oracle技術(shù)網(wǎng)—ASP 中通過OLEDB訪問 Oracle 的代碼 Oracle技術(shù)網(wǎng)—Delphi5 企業(yè)版使用BDE訪問 Oracle方法 Oracle技術(shù)網(wǎng)—oracle database access object Oracle技術(shù)網(wǎng)—Oracle基于Client/Server的性能調(diào)整 Oracle技術(shù)網(wǎng)—PB7 連接 Oracle 的配置方法 Oracle技術(shù)網(wǎng)—PB內(nèi)置Oracle數(shù)據(jù)庫接口的使用方法 Oracle技術(shù)網(wǎng)—PHP+Oracle(OCI) 初步 Oracle技術(shù)網(wǎng)—PHP4連接Oracle 8i的方法(轉(zhuǎn)譯) Oracle技術(shù)網(wǎng)—多個(gè)數(shù)據(jù)庫時(shí),如何設(shè)置默認(rèn)數(shù)據(jù)庫 Oracle技術(shù)網(wǎng)—如何備份Oracle設(shè)置 Oracle技術(shù)網(wǎng)—如何讓你的SQL運(yùn)行得更快 Oracle技術(shù)網(wǎng)—如何修改 SQL*Plus 的啟動(dòng)參數(shù) Oracle技術(shù)網(wǎng)—如何在Windosws 2000中安裝JSP并訪問Oracle Oracle技術(shù)網(wǎng)—如何在Windosws 2000中安裝perl并訪問Oracle Oracle技術(shù)網(wǎng)—如何在Windosws 2000中安裝PHP4并訪問Oracle Oracle技術(shù)網(wǎng)—如何在Windosws NT中使用批處理命令自動(dòng)啟動(dòng)或關(guān)閉Oracle Services Oracle技術(shù)網(wǎng)—如何在客戶端省略輸入數(shù)據(jù)庫串,而只輸入用戶名、密碼即可 Oracle技術(shù)網(wǎng)—使用Database Configuration Assistant安裝第二個(gè)數(shù)據(jù)庫 Oracle技術(shù)網(wǎng)—修改Oracle7數(shù)據(jù)庫maxdatafiles參數(shù)的方法 索引、序列、快照、數(shù)據(jù)庫鏈路、觸發(fā)器 Oracle技術(shù)網(wǎng)—觸發(fā)器的幾種應(yīng)用 Oracle技術(shù)網(wǎng)—建立觸發(fā)器時(shí)最容易忽略的兩個(gè)地方 Oracle技術(shù)網(wǎng)—快照和觸發(fā)子結(jié)合使用的例子 Oracle技術(shù)網(wǎng)—能否通過視圖更新表中的數(shù)據(jù) Oracle技術(shù)網(wǎng)—如何創(chuàng)建一個(gè)簡(jiǎn)單的JAVA存儲(chǔ)過程? Oracle技術(shù)網(wǎng)—如何創(chuàng)建隱藏IP地址的最后一項(xiàng)的函數(shù)? Oracle技術(shù)網(wǎng)—如何加密Oracle中的存儲(chǔ)過程 Oracle技術(shù)網(wǎng)—為什么有時(shí)ORACLE數(shù)據(jù)庫不用索引來查找數(shù)據(jù) Oracle技術(shù)網(wǎng)—我的數(shù)據(jù)庫鏈路為什么不工作 Oracle技術(shù)網(wǎng)—一個(gè)建立快照的簡(jiǎn)單例子 Oracle技術(shù)網(wǎng)—怎樣創(chuàng)建一個(gè)簡(jiǎn)單的自定義過程并引用 Oracle技術(shù)網(wǎng)—怎樣手工刷新快照 oracle與其他數(shù)據(jù)庫的比較 MySQL 測(cè)試 Oracle技術(shù)網(wǎng)—Oracle 和 mysql 的一些簡(jiǎn)單命令對(duì)比參照 Oracle技術(shù)網(wǎng)—Oracle8i和Microsoft SQL Server7.0比較 Oracle技術(shù)網(wǎng)—比較SQL Server與Oracle、DB2 Oracle技術(shù)網(wǎng)—各種數(shù)據(jù)類型的比較 Oracle技術(shù)網(wǎng)—戲說SQL—幾種SQL 服務(wù)器的比較 關(guān)鍵任務(wù)      在Internet上運(yùn)作公司是一項(xiàng)艱苦的任務(wù) 其它知識(shí) OEM常見問題及其解決辦法 Oracle 8 資料庫函式庫 Oracle 資料庫函式庫 Oracle技術(shù)網(wǎng)—Decode()函數(shù)使用技巧(NT+IIS+ASP+ORACLE) Oracle技術(shù)網(wǎng)—Dual偽列 Oracle技術(shù)網(wǎng)—NULL 使用詳解 Oracle技術(shù)網(wǎng)—OLAP及其多維數(shù)據(jù)分析 Oracle技術(shù)網(wǎng)—Oracle for NT系統(tǒng)實(shí)用工具介紹 Oracle技術(shù)網(wǎng)—ORACLE 用戶的規(guī)范化管理 Oracle技術(shù)網(wǎng)—user、uid偽列 Oracle技術(shù)網(wǎng)—大型數(shù)據(jù)庫設(shè)計(jì)原則 Oracle技術(shù)網(wǎng)—留言簿(帶Oracle數(shù)據(jù)庫分頁的顯示功能) Oracle技術(shù)網(wǎng)—漫談oracle中的空值 Oracle技術(shù)網(wǎng)—如何正確利用Rownum來限制查詢所返回的行數(shù) Oracle技術(shù)網(wǎng)—什么是ROWID,為什么需要它 Oracle技術(shù)網(wǎng)—數(shù)據(jù)庫技術(shù)考試大綱(中級(jí)) Oracle技術(shù)網(wǎng)—數(shù)據(jù)庫行業(yè)的現(xiàn)狀和展望 Oracle技術(shù)網(wǎng)—在客戶端處理Oracle的數(shù)據(jù)行加鎖問題 如何對(duì)CLOB行字段執(zhí)行全文檢索 Developer 2000 Oracle技術(shù)網(wǎng)—Developer/2000中各鍵盤觸發(fā)子所對(duì)應(yīng)的“按鍵” Oracle技術(shù)網(wǎng)—FORM調(diào)用REPORT時(shí),如何去掉report server Oracle技術(shù)網(wǎng)—FORM中,Exception(例外)都有哪些,如何書寫 Oracle技術(shù)網(wǎng)—FORM中,F(xiàn)ORM中,如何引入圖像 Oracle技術(shù)網(wǎng)—FORM中,WINDOW標(biāo)題的設(shè)置 Oracle技術(shù)網(wǎng)—FORM中,常用快捷鍵有哪些 Oracle技術(shù)網(wǎng)—FORM中,觸發(fā)子exit_form的兩種功能是什么 Oracle技術(shù)網(wǎng)—FORM中,當(dāng)光標(biāo)走到塊的最后一項(xiàng)時(shí),如何讓按“enter回車”鍵時(shí),光標(biāo)自動(dòng)走到下一條記錄的第一項(xiàng)? Oracle技術(shù)網(wǎng)—FORM中,當(dāng)用鼠標(biāo)點(diǎn)擊標(biāo)簽畫布的某一“標(biāo)簽頁”時(shí),如何判斷點(diǎn)擊的是哪一頁 Oracle技術(shù)網(wǎng)—FORM中,如何屏蔽默認(rèn)的功能鍵 Oracle技術(shù)網(wǎng)—FORM中,如何實(shí)現(xiàn)屏幕同步刷新? Oracle技術(shù)網(wǎng)—FORM中,如何使用警告 Oracle技術(shù)網(wǎng)—FORM中,如何通過 ODBC 訪問 Acress 數(shù)據(jù)? Oracle技術(shù)網(wǎng)—FORM中 Oracle技術(shù)網(wǎng)—FORM中,設(shè)置應(yīng)用特性(光標(biāo)類型) Oracle技術(shù)網(wǎng)—FORM中,怎樣創(chuàng)建動(dòng)態(tài)下拉列表List Oracle技術(shù)網(wǎng)—FORM中如何存取聲音 Oracle技術(shù)網(wǎng)—FORM中如何存取圖象?如何把圖象從一個(gè)表中導(dǎo)到另一個(gè)表中? Oracle技術(shù)網(wǎng)—MIS中的圖像應(yīng)用技術(shù) Oracle技術(shù)網(wǎng)—MIS中的圖像應(yīng)用技術(shù) Oracle技術(shù)網(wǎng)—從FORM中調(diào)用REPORT時(shí),如何使打印結(jié)果直接輸出到打印機(jī)上 Oracle技術(shù)網(wǎng)—如何從FORM中調(diào)用REPORT程序 Oracle技術(shù)網(wǎng)—如何改變FORM(FMX模塊)運(yùn)行時(shí)的title? Oracle技術(shù)網(wǎng)—如何在FORM運(yùn)行中,使定制菜單中的“窗口(W)”菜單項(xiàng)不顯示 Oracle技術(shù)網(wǎng)—如何在啟動(dòng)FORM程序時(shí)直接登錄到Oracle數(shù)據(jù)庫上? Oracle技術(shù)網(wǎng)—運(yùn)行FORM時(shí),如何使按鈕變灰(即無效) Oracle技術(shù)網(wǎng)—運(yùn)行FORM時(shí),如何使窗口(runtime窗口、畫布窗口)自動(dòng)變成最大化、最小化? Oracle技術(shù)網(wǎng)—在Developer/2000中如何讀寫文本型操作系統(tǒng)文件 Oracle技術(shù)網(wǎng)—在Oracle中實(shí)現(xiàn)報(bào)表的定長(zhǎng)輸出 linux vs Unix How To Install Oracle 8.0.5 onto RedHat Linux 6 HOWTO: OAS for Linux on FreeBSD HOWTO: Oracle for Linux on FreeBSD Oracle 7.3.4 Enterprise Edition for SCO UNIX 安裝步驟 Oracle技術(shù)網(wǎng)—Oracle .com 套件在TurboLinux上的安裝 Oracle技術(shù)網(wǎng)—ORACLE 7.3 Enterprise在SCO OPEN SERVER 5.02 及 5.04 的安裝過程 Oracle技術(shù)網(wǎng)—ORACLE 7.3.4.2 for SCO Unix 安裝說明 Oracle技術(shù)網(wǎng)—Oracle 8 for solaris 2.6 安裝步驟 Oracle技術(shù)網(wǎng)—Oracle 8(8.0.5)標(biāo)準(zhǔn)版安裝指南 Oracle技術(shù)網(wǎng)—Oracle 8i(8.1.5)企業(yè)版安裝指南 Oracle技術(shù)網(wǎng)—ORACLE FOR SUN SOLARIS 安裝手冊(cè) Oracle技術(shù)網(wǎng)—ORACLE FOR SUN SOLARIS 維護(hù)手冊(cè) Oracle技術(shù)網(wǎng)—ORACLE V.7.3.4.3 FOR AIX 安裝說明 Oracle技術(shù)網(wǎng)—ORACLE8I FOR SUN SOLARIS2.7 安裝說明 Oracle技術(shù)網(wǎng)—RedHat 6.1 Step-by-step Install notes for Oracle 8i Oracle技術(shù)網(wǎng)—RedHat Linux 6.0 上 Oracle 8(8.0.5)標(biāo)準(zhǔn)版 安裝實(shí)例 Oracle技術(shù)網(wǎng)—RedHat Linux 6.0 上 Oracle 8i R2 (8.1.6) 企業(yè)版安裝實(shí)例 Oracle技術(shù)網(wǎng)—如何集成Linux/Apache/PHP4/FastCGI/Oracle/MySQL環(huán)境 Oracle技術(shù)網(wǎng)—如何在你的Linux機(jī)器上安裝運(yùn)行Oracle Oracle技術(shù)網(wǎng)—為L(zhǎng)inux配備Oracle 8 Oracle技術(shù)網(wǎng)—在RedHat 6.0上安裝Oracle 8i(全攻略)
??

在客戶端處理Oracle的數(shù)據(jù)行加鎖問題

摘自:不詳

摘要:

本文簡(jiǎn)單闡述了一般數(shù)據(jù)庫鎖,以O(shè)RACLE為例的加鎖問題,提出了解決ORACLE的數(shù)據(jù)行加鎖及并發(fā)性處理的一般辦法.并給出了用PB編程兩種實(shí)現(xiàn)方法.

關(guān)鍵詞:

ORACLE,加鎖,解鎖,行鎖, PowerBuilder

數(shù)據(jù)的完整性和并發(fā)性:

在網(wǎng)絡(luò)數(shù)據(jù)庫處理數(shù)據(jù)中,需要保證數(shù)據(jù)的完整性、多事務(wù)的并發(fā)性和數(shù)據(jù)的一致性。數(shù)據(jù)庫系統(tǒng)必須最大限度的保證數(shù)據(jù)內(nèi)容的有效性和合理性,使得數(shù)據(jù)合法與合理,即保證數(shù)據(jù)的完整性。而網(wǎng)絡(luò)(多用戶)數(shù)據(jù)庫應(yīng)用系統(tǒng)中,通常都會(huì)遇到多個(gè)事務(wù)同時(shí)請(qǐng)求修改同一數(shù)據(jù)。數(shù)據(jù)庫的并發(fā)性處理保證數(shù)據(jù)庫系統(tǒng)據(jù)能夠合理有效地處理多個(gè)事務(wù)請(qǐng)求,在數(shù)據(jù)庫管理系統(tǒng)協(xié)調(diào)下,宏觀表現(xiàn)為并行處理,微觀為逐個(gè)串行處理,保證數(shù)據(jù)的一致性,從而避免數(shù)據(jù)處理中的 數(shù)據(jù)發(fā)生。在數(shù)據(jù)庫系統(tǒng)本身對(duì)數(shù)據(jù)的并發(fā)性和一致性有基本控制能力下,以O(shè)racle為例的關(guān)系數(shù)據(jù)庫系統(tǒng)已經(jīng)能保證數(shù)據(jù)的并發(fā)性能,而數(shù)據(jù)庫的應(yīng)用設(shè)計(jì)則需要以考慮數(shù)據(jù)在并發(fā)過程中的一致性為重點(diǎn)。一個(gè)簡(jiǎn)單的例子:甲乙同時(shí)從數(shù)據(jù)庫中讀出了一條相同的數(shù)據(jù)記錄。甲把數(shù)據(jù)作了修改,并且作了事務(wù)提交。(而乙此時(shí)并不知道數(shù)據(jù)已經(jīng)被修改了。)稱乙已經(jīng)讀出的數(shù)據(jù)為臟數(shù)據(jù),破壞了數(shù)據(jù)的一致性 , 為了保證數(shù)據(jù)的一致性,此時(shí)有必要對(duì)數(shù)據(jù)進(jìn)行加鎖。再例如:一銀行帳戶有¥6000, 此時(shí)甲要從中提出¥5000,而乙也同時(shí)要從中提出¥5000,雙方在不加鎖查詢時(shí),雙方均認(rèn)為可以提款,事實(shí)上肯定有一方的提交會(huì)失敗。原因是在最終事務(wù)提交時(shí),要對(duì)數(shù)據(jù)作了加鎖查詢效驗(yàn)處理。 

A0事務(wù)

 

B0事務(wù)

加 鎖

 

加 鎖

 

 

 

 

解 鎖

解 鎖

A1事務(wù)

 

B1事務(wù)

并發(fā)性和一致性 

  1. 數(shù)據(jù)庫中的數(shù)據(jù)鎖
  2. 為了防止多個(gè)用戶事務(wù)交替操作數(shù)據(jù)庫對(duì)象,破壞性數(shù)據(jù)庫完整性,同時(shí)又要保證數(shù)據(jù)的并發(fā)性和一致性,數(shù)據(jù)庫管理系統(tǒng)一般提供了各種類型的封鎖機(jī)制,可以自動(dòng)為一個(gè)事務(wù)封鎖資源,而在事務(wù)不需要時(shí)自動(dòng)釋放。以使另一個(gè)需要獨(dú)占該資源的事務(wù)能夠繼續(xù)進(jìn)程,而不會(huì)造成事務(wù)死鎖。數(shù)據(jù)庫對(duì)象的封鎖完全能夠由數(shù)據(jù)庫系統(tǒng)自動(dòng)完成,ORACLE (一般情況數(shù)據(jù)庫)對(duì)加鎖有以下特征:A 多種封鎖模式.例如:系統(tǒng)表的轉(zhuǎn)有鎖,共享鎖。B 完備的自動(dòng)加/解鎖功能和釋放機(jī)制。C 用低級(jí)別的封鎖換取高級(jí)別的并發(fā)處理。D能夠在客戶端/服務(wù)器模式下自動(dòng)封鎖過程。Oracle 的主要封鎖類型有:

    A 數(shù)據(jù)鎖,用于封鎖表或表中的指定行.屬于數(shù)據(jù)操縱鎖,

    B 字典鎖,用于保護(hù)數(shù)據(jù)庫對(duì)象(表,索引)的創(chuàng)建維護(hù).屬于數(shù)據(jù)定義鎖

    C 內(nèi)部鎖。用于保護(hù)數(shù)據(jù)庫的內(nèi)部結(jié)構(gòu).

    正常情況下,為完成數(shù)據(jù)操縱,一般需要兩種級(jí)別的封鎖方式,封鎖整表或行封。通常只在熱備份數(shù)據(jù),時(shí)候,需要對(duì)整表進(jìn)行鎖定. 而應(yīng)用程序的事務(wù)處理通常是數(shù)據(jù)行的數(shù)據(jù)操縱語句:

    INSERT,

    UPDATE,

    DELETE,

    SELECT (FOR UPDATE)

    以上操作在執(zhí)行過程中,數(shù)據(jù)庫都會(huì)對(duì)相應(yīng)的行做數(shù)據(jù)行封鎖.

    一般情況下,只要行封事務(wù)不放棄封鎖, 此行就不可能被其他任何用戶的事務(wù)修改(部分語句,如SELECT仍然允許不加鎖地讀出)。只有當(dāng)數(shù)據(jù)庫重新啟動(dòng),數(shù)據(jù)表空間離線/在線處理,當(dāng)事務(wù)正常提交、回滾時(shí),行封事務(wù)才能被自動(dòng)解除封鎖. (通常 ROLLBACK ,COMMIT 可以自動(dòng)解除行封鎖。)在表上的數(shù)據(jù)鎖的高低級(jí)別為:

    表專有

    共享行專有

    共享

    行專有

    行共享

    Exclusive

    ShareRoweXclusive

    Share

    RoweXclusive

    RowShare

    EX

    SRX

    S

    RX

    RS

    簡(jiǎn)單的SELECT 語句無任何鎖,INSERT, UPDATE, DELETE為行專有(RX),允許在操作中多次修改這些行, 提交或回滾后自動(dòng)解除封鎖,

    SELECT (FOR UPDATE )為專有行的數(shù)據(jù)鎖.在應(yīng)用程序中使用最多.也是通常對(duì)數(shù)據(jù)行進(jìn)行控制的簡(jiǎn)單有效的方法。例如:在Windows95下,同時(shí)分別用兩個(gè)以上SQL*PLUS,以相同的用戶聯(lián)接Oracle Server相同的實(shí)例,在其中一個(gè)窗口下做Update/Delete中任意操作,只要沒有提交,均不影響其它窗口的不加鎖查詢,但是不可以再其它窗口下對(duì)同一條記錄作Update/Delete 操作,Insert沒有提交以前,其它操作均無效。只有當(dāng)一方事務(wù)完成(提交/回滾)以后立即釋放相應(yīng)資源,另一方申請(qǐng)的事務(wù)才能成功響應(yīng)。

  3. 行鎖在應(yīng)用程序的注意事項(xiàng)
  4. 在實(shí)際應(yīng)用中,可能由于一次事務(wù)提交的數(shù)據(jù)太多,造成數(shù)據(jù)加鎖時(shí)間太長(zhǎng),破壞了數(shù)據(jù)的并發(fā)共享特性。如果事務(wù)獨(dú)占了相應(yīng)的資源,沒有得到釋放,而另一個(gè)事務(wù)占有該事務(wù)的下一個(gè)資源,就有可能造成數(shù)據(jù)庫應(yīng)用系統(tǒng)死鎖。另外,如果在加鎖過程中,出現(xiàn)網(wǎng)絡(luò)中斷,客戶端掉電等突發(fā)問題,被加鎖的資源無法解鎖,其它應(yīng)用程序?qū)o法繼續(xù)獲得已經(jīng)被加鎖的資源,也可以出現(xiàn)死鎖. 通常只有DBA才能取消事務(wù)或通過數(shù)據(jù)表空間的在線/離線操作解除加鎖事務(wù)(通常大型應(yīng)用系統(tǒng)這樣做有一定的風(fēng)險(xiǎn))。如果在程序應(yīng)用中經(jīng)常出現(xiàn)這樣的問題,則造成應(yīng)用數(shù)據(jù)庫應(yīng)用系統(tǒng)無法正常工作。雖然這樣的情況在C/S程序的開發(fā)/應(yīng)用中并不經(jīng)常出現(xiàn),但是在應(yīng)用程序設(shè)計(jì)中都是應(yīng)該嚴(yán)格考慮的。

  5. 常用的數(shù)據(jù)加鎖方法(以O(shè)RACLE 與PB連接為例)
  6. A 在客戶端編程方法:在客戶端的編程處理的方法最簡(jiǎn)單,調(diào)試也很直觀、方便。但是這種方法僅僅在中、小型網(wǎng)絡(luò)中可以使用。因?yàn)楫?dāng)網(wǎng)絡(luò)用戶數(shù)量增加,或應(yīng)用程序在客戶端應(yīng)用過程中意外中斷(死機(jī),退出),則可能造成數(shù)據(jù)行的死鎖。其他用戶無法正確獨(dú)占加鎖。但是實(shí)際應(yīng)用表明此種方法在網(wǎng)絡(luò)自身可靠性好、用戶數(shù)量不大時(shí)經(jīng)常被采納

    下面是用POWERBUILDER 與 ORACLE的數(shù)據(jù)聯(lián)結(jié)處理實(shí)例。

    STRING ls_goodscode

    INTEGER li_stroe_qty

    ls_goodscode = sle_goodscode.text

     

    SELECT QTY

    INTO li_store_qty

    FROM AMS.TAB_STORE_GOODSINFO

    WHERE GOODS_NO = SUBSTR(:ls_goodscode , 1, 13)

    AND SERIAL_NO = SUBSTR(:ls_goodscode , 14, 4)

    FOR UPDATE NOWAITE ; // 對(duì)數(shù)據(jù)加鎖,不等待。

     

    if SQLCA.SQLCODE = 0 then // if _01

    if li_store_qty >=2 then // if _02

    UPDATE AMS.TAB_STORE_GOODSINFO

    SET QTY = :li_store_qty - 2

    WHERE GOODS_NO = SUBSTR(:ls_goodscode , 1, 13)

    AND SERIAL_NO = SUBSTR(:ls_goodscode , 14, 4);

     

    if SQLCA.SQLCODE = 0 then

    COMMIT ; // 成功提交

    else

    ROLLBACK ;// 及時(shí)回滾解鎖

    messagebox("系統(tǒng)提示", "庫存數(shù)量已經(jīng)不足!");

    end if

    else

    ROLLBACK;

    messagebox("系統(tǒng)提示", "庫存數(shù)量已經(jīng)不足!");

    end if // end if 02

    else //其中 ORA-00054: resource busy and acquire with NOWAIT specified

    ROLLBACK ;// 及時(shí)回滾解鎖

    messagebox("系統(tǒng)提示", "數(shù)據(jù)讀入有誤,請(qǐng)稍候再試!",stopsign! ok!);

    end if // end if 01

    //同時(shí)在當(dāng)前的FROM WINDOW中的CLOSEQUERY中顯示寫明ROLLBACK ;

    設(shè)計(jì)說明:當(dāng)?shù)谝痪銼ELECT完成以后,如果數(shù)據(jù)加鎖正確,則可以繼續(xù)工作,但是此時(shí)可能數(shù)據(jù)被別的應(yīng)用程序控制,則返回Oracle的錯(cuò)誤代碼:

    ORA-00054說明共享沖突。此句可以用一個(gè)有限的循環(huán)控制,但是一定要防止數(shù)據(jù)死鎖。同時(shí)為了保證萬無一失,在當(dāng)前FORM的關(guān)閉事件中顯示寫明回滾(ROLLBACK)。

     

    B 在客戶端按傳輸(Transaction )方法處理:將要提交的所有SQL任務(wù)作為多個(gè)子串傳送到服務(wù)器端,用動(dòng)態(tài)SQL方法在客戶端一次傳輸完成后,在服務(wù)器端一次執(zhí)行完成,只有當(dāng)事務(wù)執(zhí)行正確,才能提交, 否則回滾。這樣在執(zhí)行多個(gè)表操作提交時(shí),數(shù)據(jù)執(zhí)行加鎖的時(shí)間影響將大大減小。這樣極大程度的緩解了多表共享數(shù)據(jù)的加鎖問題。好處是不需要服務(wù)器端的調(diào)試,但是,編程調(diào)試過程復(fù)雜。但是實(shí)際效果與第一種方法基本一致。

     

    C 存儲(chǔ)過程方法:這種方法是直接調(diào)用服務(wù)器的存儲(chǔ)過程,所有的對(duì)Client端程序代碼可以大大減少,數(shù)據(jù)一致性,并發(fā)性,安全性都能得到保證。客戶端的異常通常不會(huì)影起數(shù)據(jù)的死鎖。

    下面是用POWERBUILDER 與 ORACLE的數(shù)據(jù)聯(lián)結(jié)處理實(shí)例。

     

    STRING ls_goodscode

    INTEGER li_stroe_qty

     

    ls_goodscode = st.text

    if len(ls_goodscode) = 17 then

    DECLARE pstore_goods PROCEDURE FOR pd_store_goods(:ls_goodscode ) ;

    // 從庫存數(shù)中減去 2

    execute pstore_goods;

    if SQLCA.SLQCODE < 0 then

    ROLLBACK ;

    messagebox("系統(tǒng)提示", "數(shù)據(jù)操作有誤,請(qǐng)稍候再試!",stopsign! ok!);

    end if

    else

    messagebox("系統(tǒng)提示", "數(shù)據(jù)輸入有誤!",information!, ok!);

    end if

     

    //同時(shí)在當(dāng)前的FROM WINDOW中的CLOSEQUERY中顯示寫明ROLLBACK ;

     

    在服務(wù)器端

    -- procedure pd_store_goods

    create or replace procedure pd_store_goods ( ls_goodscode in varchar2 )

    IS

    ln_store_qty number(10) ;

    begin

    SELECT nvl(QTY, -1)

    INTO ln_store_qty

    FROM AMS.TAB_STORE_GOODS_INFO

    WHERE GOODS_NO = SUBSTR(ls_goodscode , 1, 13)

    AND SERIAL_NO = SUBSTR(ls_goodscode , 14, 4)

    FOR UPDATE NOWAIT;

    if ln_store_qty >= 2 then

    UPDATE AMS.TAB_STORE_GOODS_INFO

    SET QTY = ln_store_qty - 2

    WHERE GOODS_NO = SUBSTR(ls_goodscode , 1, 13)

    AND SERIAL_NO = SUBSTR(ls_goodscode , 14, 4);

    COMMIT ;

    else

    ROLLBACK ;

    RAISE_APPLICATION_ERROR(-200002, 'store not enougth!');

    end if;

    EXCEPTION

    WHEN OTHERS THEN

    RAISE_APPLICATION_ERROR(-200001, 'store not SCUESSCULL!');

    end ;

    設(shè)計(jì)說明

    :首先在SQL*PLUS中運(yùn)行存儲(chǔ)過程,在PB的程序端調(diào)用。只有當(dāng)SELECT語句正常加鎖后, UPDATE語句才可以正常執(zhí)行。在由此可見在客戶端不知道存儲(chǔ)過程運(yùn)行的內(nèi)容,調(diào)試/維護(hù)工作較麻煩。但是,因?yàn)樗械倪\(yùn)行都在服務(wù)器端,基本可以忽略除服務(wù)器端以外的所有問題,如網(wǎng)絡(luò)的通暢,客戶端異常等等。實(shí)際應(yīng)用中對(duì)大型繁重的數(shù)據(jù)處理大多采用這樣的方法。

     

  7. 注意與小結(jié):

在Oracle的連接中,需要解釋的是數(shù)據(jù)行加鎖在同一個(gè)事務(wù)中是不可見的,但是執(zhí)行權(quán)限級(jí)別順序?yàn)椋篋elete >Update >Insert >Select.

本文以O(shè)racle為例,說明在數(shù)據(jù)庫處理過程中,在數(shù)據(jù)庫設(shè)計(jì)上,要考慮數(shù)據(jù)的數(shù)據(jù)的完整性,在數(shù)據(jù)庫的應(yīng)用設(shè)計(jì)上必須著重事務(wù)的并發(fā)性和數(shù)據(jù)的一致性。對(duì)于數(shù)據(jù)行鎖要謹(jǐn)慎對(duì)待。

(以上程序在廣東大亞灣核電物資管理系統(tǒng)中運(yùn)行通過)

(全文完)

 

聯(lián)系地址: 610054 成都市 建設(shè)北路 電子科技大學(xué) 97S4 張衛(wèi)華

Email : hamlet@163.net

?? ??: ?? ??: