這么查詢無(wú)意義啊。首先When 1=1 肯定為True,等同于select * from user_tables order by 666666666666666666666666 ,結(jié)果自然排序。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、密山網(wǎng)站維護(hù)、網(wǎng)站推廣。
如果你想以表中某列排序的話,when 條件不能為1=1 然后then 中加入列,這樣條件才有意義。
希望能幫到你。
1、查看系統(tǒng)計(jì)劃請(qǐng)求,系統(tǒng)管理員/Concurrent/請(qǐng)求 ; 2、設(shè)定計(jì)劃請(qǐng)求 , 請(qǐng)求職責(zé)/查看/請(qǐng)求/ 點(diǎn)擊下圖中“計(jì)劃”即可設(shè)定計(jì)劃時(shí)間 ;
希望能夠?qū)δ兴鶐椭?Oracle服務(wù)器進(jìn)程在完成用戶進(jìn)程的請(qǐng)求過(guò)程中,主要完成如下7個(gè)任務(wù):0.sql語(yǔ)句的解析;1.數(shù)據(jù)塊的讀入db buffer(寫入數(shù)據(jù)緩存);2.記日志;3.為事務(wù)建立回滾段;4.本事務(wù)修改數(shù)據(jù)塊;5.放入dirty list;6.用戶commit或rollback。接下來(lái)我們就分別來(lái)介紹一下這7個(gè)任務(wù)的相關(guān)知識(shí),希望能夠?qū)δ兴鶐椭?0.sql語(yǔ)句的解析 下面要講oracle服務(wù)器進(jìn)程如可處理用戶進(jìn)程的請(qǐng)求,當(dāng)一用戶進(jìn)程提交一個(gè)sql時(shí):update temp set a=a*2;首先oracle服務(wù)器進(jìn)程從用戶進(jìn)程把信息接收到后,在PGA中就要此進(jìn)程分配所需內(nèi)存,存儲(chǔ)相關(guān)的信息,如在會(huì)話內(nèi)存存儲(chǔ)相關(guān)的登錄信息等; 服務(wù)器進(jìn)程把這個(gè)sql語(yǔ)句的字符轉(zhuǎn)化為ASCII等效數(shù)字碼,接著這個(gè)ASCII碼被傳遞給一個(gè)HASH函數(shù),并返回一個(gè)hash值,然后服務(wù)器進(jìn)程將到shared pool中的library cache中去查找是否存在相同的hash值,如果存在,服務(wù)器進(jìn)程將使用這條語(yǔ)句已高速緩存在SHARED POOL的library cache中的已分析過(guò)的版本來(lái)執(zhí)行,如果不存在,服務(wù)器進(jìn)程將在CGA中,配合UGA內(nèi)容對(duì)sql,進(jìn)行語(yǔ)法分析,首先檢查語(yǔ)法的正確性,接著對(duì)語(yǔ)句中涉及的表,索引,視圖等對(duì)象進(jìn)行解析,并對(duì)照數(shù)據(jù)字典檢查這些對(duì)象的名稱以及相關(guān)結(jié)構(gòu),并根據(jù)ORACLE選用的優(yōu)化模式以及數(shù)據(jù)字典中是否存在相應(yīng)對(duì)象的統(tǒng)計(jì)數(shù)據(jù)和是否使用了存儲(chǔ)大綱來(lái)生成一個(gè)執(zhí)行計(jì)劃或從存儲(chǔ)大綱中選用一個(gè)執(zhí)行計(jì)劃,然后再用數(shù)據(jù)字典核對(duì)此用戶對(duì)相應(yīng)對(duì)象的執(zhí)行權(quán)限,最后生成一個(gè)編譯代碼。 ORACLE將這條sql語(yǔ)句的本身實(shí)際文本、HASH值、編譯代碼、與此語(yǔ)名相關(guān)聯(lián)的任何統(tǒng)計(jì)數(shù)據(jù)和該語(yǔ)句的執(zhí)行計(jì)劃緩存在SHARED POOL的library cache中。服務(wù)器進(jìn)程通過(guò)SHARED POOL 鎖存器(shared pool latch)來(lái)申請(qǐng)可以向哪些共享PL/SQL區(qū)中緩存這此內(nèi)容,也就是說(shuō)被SHARED POOL鎖存器鎖定的PL/SQL區(qū)中的塊不可被覆蓋,因?yàn)檫@些塊可能被其它進(jìn)程所使用。在SQL分析階段將用到LIBRARY CACHE,從數(shù)據(jù)字典中核對(duì)表、視圖等結(jié)構(gòu)的時(shí)候,需要將數(shù)據(jù)字典從磁盤讀入LIBRARY CACHE,因此,在讀入之前也要使用LIBRARY CACHE鎖存器(library cache pin,library cache lock)來(lái)申請(qǐng)用于緩存數(shù)據(jù)字典。 到現(xiàn)在為止,這個(gè)sql語(yǔ)句已經(jīng)被編譯成可執(zhí)行的代碼了,但還不知道要操作哪些數(shù)據(jù),所以服務(wù)器進(jìn)程還要為這個(gè)sql準(zhǔn)備預(yù)處理數(shù)據(jù)。 1.數(shù)據(jù)塊的讀入db buffer Oracle處理數(shù)據(jù),都需要把數(shù)據(jù)讀取到內(nèi)存中(即db buffer中),首先服務(wù)器進(jìn)程要判斷所需數(shù)據(jù)是否在db buffer存在,如果存在且可用,則直接獲取該數(shù)據(jù),同時(shí)根據(jù)LRU算法增加其訪問(wèn)計(jì)數(shù);如果buffer不存在所需數(shù)據(jù),則要從數(shù)據(jù)文件上讀取。首先服務(wù)器進(jìn)程將在表頭部請(qǐng)求TM鎖(保證此事務(wù)執(zhí)行過(guò)程其他用戶不能修改表的結(jié)構(gòu)),如果成功加TM鎖,再請(qǐng)求一些行級(jí)鎖(TX鎖),如果TM、TX鎖都成功加鎖,那么才開(kāi)始從數(shù)據(jù)文件讀數(shù)據(jù),在讀數(shù)據(jù)之前,要先為讀取的文件準(zhǔn)備好buffer空間。服務(wù)器進(jìn)程需要掃面LRU list尋找free db buffer,掃描的過(guò)程中,服務(wù)器進(jìn)程會(huì)把發(fā)現(xiàn)的所有已經(jīng)被修改過(guò)的db buffer注冊(cè)到dirty list中, 這些dirty buffer會(huì)通過(guò)dbwr的觸發(fā)條件,隨后會(huì)被寫出到數(shù)據(jù)文件,找到了足夠的空閑buffer,就可以把請(qǐng)求的數(shù)據(jù)行所在的數(shù)據(jù)塊放入到db buffer的空閑區(qū)域或者覆蓋已經(jīng)被擠出LRU list的非臟數(shù)據(jù)塊緩沖區(qū),并排列在LRU list的頭部,也就是在數(shù)據(jù)塊放入DB BUFFER之前也是要先申請(qǐng)db buffer中的鎖存器,成功加鎖后,才能讀數(shù)據(jù)到db buffer。 2.記日志 現(xiàn)在數(shù)據(jù)已經(jīng)被讀入到db buffer了,現(xiàn)在服務(wù)器進(jìn)程將該語(yǔ)句所影響的并被讀入db buffer中的這些行數(shù)據(jù)的rowid及要更新的原值和新值及scn等信息從PGA逐條的寫入redo log buffer中。在寫入redo log buffer之前也要事先請(qǐng)求redo log buffer的鎖存器,成功加鎖后才開(kāi)始寫入,當(dāng)寫入達(dá)到redo log buffer大小的三分之一或?qū)懭肓窟_(dá)到1M或超過(guò)三秒后或發(fā)生檢查點(diǎn)時(shí)或者dbwr之前發(fā)生,都會(huì)觸發(fā)lgwr進(jìn)程把redo log buffer的數(shù)據(jù)寫入磁盤上的redo file文件中(這個(gè)時(shí)候會(huì)產(chǎn)生log file sync等待事件),已經(jīng)被寫入redo file的redo log buffer所持有的鎖存器會(huì)被釋放,并可被后來(lái)的寫入信息覆蓋,redo log buffer是循環(huán)使用的。Redo file也是循環(huán)使用的,當(dāng)一個(gè)redo file 寫滿后,lgwr進(jìn)程會(huì)自動(dòng)切換到下一redo file(這個(gè)時(shí)候可能出現(xiàn)log file switch(checkpoint complete)等待事件)。如果是歸檔模式,歸檔進(jìn)程還要將前一個(gè)寫滿的redo file文件的內(nèi)容寫到歸檔日志文件中(這個(gè)時(shí)候可能出現(xiàn)log file switch(archiving needed))。 3.為事務(wù)建立回滾段 在完成本事務(wù)所有相關(guān)的redo log buffer之后,服務(wù)器進(jìn)程開(kāi)始改寫這個(gè)db buffer的塊頭部事務(wù)列表并寫入scn,然后copy包含這個(gè)塊的頭部事務(wù)列表及scn信息的數(shù)據(jù)副本放入回滾段中,將這時(shí)回滾段中的信息稱為數(shù)據(jù)塊的“前映像“,這個(gè)”前映像“用于以后的回滾、恢復(fù)和一致性讀。(回滾段可以存儲(chǔ)在專門的回滾表空間中,這個(gè)表空間由一個(gè)或多個(gè)物理文件組成,并專用于回滾表空間,回滾段也可在其它表空間中的數(shù)據(jù)文件中開(kāi)辟。) 4.本事務(wù)修改數(shù)據(jù)塊 準(zhǔn)備工作都已經(jīng)做好了,現(xiàn)在可以改寫db buffer塊的數(shù)據(jù)內(nèi)容了,并在塊的頭部寫入回滾段的地址。 5. 放入dirty list 如果一個(gè)行數(shù)據(jù)多次update而未commit,則在回滾段中將會(huì)有多個(gè)“前映像“,除了第一個(gè)”前映像“含有scn信息外,其他每個(gè)“前映像“的頭部都有scn信息和“前前映像”回滾段地址。一個(gè)update只對(duì)應(yīng)一個(gè)scn,然后服務(wù)器進(jìn)程將在dirty list中建立一條指向此db buffer塊的指針(方便dbwr進(jìn)程可以找到dirty list的db buffer數(shù)據(jù)塊并寫入數(shù)據(jù)文件中)。 接著服務(wù)器進(jìn)程會(huì)從數(shù)據(jù)文件中繼續(xù)讀入第二個(gè)數(shù)據(jù)塊,重復(fù)前一數(shù)據(jù)塊的動(dòng)作,數(shù)據(jù)塊的讀入、記日志、建立回滾段、修改數(shù)據(jù)塊、放入dirty list。當(dāng)dirty queue的長(zhǎng)度達(dá)到閥值(一般是25%),服務(wù)器進(jìn)程將通知dbwr把臟數(shù)據(jù)寫出,就是釋放db buffer上的鎖存器,騰出更多的free db buffer。前面一直都是在說(shuō)明oracle一次讀一個(gè)數(shù)據(jù)塊,其實(shí)oracle可以一次讀入多個(gè)數(shù)據(jù)塊(db_file_multiblock_read_count來(lái)設(shè)置一次讀入塊的個(gè)數(shù)) 說(shuō)明: 在預(yù)處理的數(shù)據(jù)已經(jīng)緩存在db buffer或剛剛被從數(shù)據(jù)文件讀入到db buffer中,就要根據(jù)sql語(yǔ)句的類型來(lái)決定接下來(lái)如何操作。 1如果是select語(yǔ)句,則要查看db buffer塊的頭部是否有事務(wù),如果有事務(wù),則從回滾段中讀取數(shù)據(jù);如果沒(méi)有事務(wù),則比較select的scn和db buffer塊頭部的scn,如果前者小于后者,仍然要從回滾段中讀取數(shù)據(jù);如果前者大于后者,說(shuō)明這是一非臟緩存,可以直接讀取這個(gè)db buffer塊的中內(nèi)容。 2如果是DML操作,則即使在db buffer中找到一個(gè)沒(méi)有事務(wù),而且SCN比自己小的非臟緩存數(shù)據(jù)塊,服務(wù)器進(jìn)程仍然要到表的頭部對(duì)這條記錄申請(qǐng)加鎖,加鎖成功才能進(jìn)行后續(xù)動(dòng)作,如果不成功,則要等待前面的進(jìn)程解鎖后才能進(jìn)行動(dòng)作(這個(gè)時(shí)候阻塞是tx鎖阻塞)。 6.用戶commit或rollback 到現(xiàn)在為止,數(shù)據(jù)已經(jīng)在db buffer或數(shù)據(jù)文件中修改完成,但是否要永久寫到數(shù)文件中,要由用戶來(lái)決定commit(保存更改到數(shù)據(jù)文件)和rollback(撤銷數(shù)據(jù)的更改),下面來(lái)看看在commit和rollback時(shí),oracle都在做什么。 用戶執(zhí)行commit命令 只有當(dāng)sql語(yǔ)句所影響的所有行所在的最后一個(gè)塊被讀入db buffer并且重做信息被寫入redo log buffer(僅指日志緩沖區(qū),而不包括日志文件)之后,用戶才可以發(fā)去commit命令,commit觸發(fā)lgwr進(jìn)程,但不強(qiáng)制立即dbwr來(lái)釋放所有相應(yīng)db buffer塊的鎖(也就是no-force-at-commit,即提交不強(qiáng)制寫),也就是說(shuō)有可能雖然已經(jīng)commit了,但在隨后的一段時(shí)間內(nèi)dbwr還在寫這條sql語(yǔ)句所涉及的數(shù)據(jù)塊。表頭部的行鎖并不在commit之后立即釋放,而是要等dbwr進(jìn)程完成之后才釋放,這就可能會(huì)出現(xiàn)一個(gè)用戶請(qǐng)求另一用戶已經(jīng)commit的資源不成功的現(xiàn)象。 A .從Commit和dbwr進(jìn)程結(jié)束之間的時(shí)間很短,如果恰巧在commit之后,dbwr未結(jié)束之前斷電,因?yàn)閏ommit之后的數(shù)據(jù)已經(jīng)屬于數(shù)據(jù)文件的內(nèi)容,但這部分文件沒(méi)有完全寫入到數(shù)據(jù)文件中。所以需要前滾。由于commit已經(jīng)觸發(fā)lgwr,這些所有未來(lái)得及寫入數(shù)據(jù)文件的更改會(huì)在實(shí)例重啟后,由smon進(jìn)程根據(jù)重做日志文件來(lái)前滾,完成之前commit未完成的工作(即把更改寫入數(shù)據(jù)文件)。 B.如果未commit就斷電了,因?yàn)閿?shù)據(jù)已經(jīng)在db buffer更改了,沒(méi)有commit,說(shuō)明這部分?jǐn)?shù)據(jù)不屬于數(shù)據(jù)文件,由于dbwr之前觸發(fā)lgwr(也就是只要數(shù)據(jù)更改,肯定要先有l(wèi)og),所有DBWR在數(shù)據(jù)文件上的修改都會(huì)被先一步記入重做日志文件,實(shí)例重啟后,SMON進(jìn)程再根據(jù)重做日志文件來(lái)回滾。其實(shí)smon的前滾回滾是根據(jù)檢查點(diǎn)來(lái)完成的,當(dāng)一個(gè)全部檢查點(diǎn)發(fā)生的時(shí)候,首先讓LGWR進(jìn)程將redo log buffer中的所有緩沖(包含未提交的重做信息)寫入重做日志文件,然后讓dbwr進(jìn)程將db buffer已提交的緩沖寫入數(shù)據(jù)文件(不強(qiáng)制寫未提交的)。然后更新控制文件和數(shù)據(jù)文件頭部的SCN,表明當(dāng)前數(shù)據(jù)庫(kù)是一致的,在相鄰的兩個(gè)檢查點(diǎn)之間有很多事務(wù),有提交和未提交的。像前面的前滾回滾比較完整的說(shuō)法是如下的說(shuō)明: A.發(fā)生檢查點(diǎn)之前斷電,并且當(dāng)時(shí)有一個(gè)未提交的改變正在進(jìn)行,實(shí)例重啟之后,SMON進(jìn)程將從上一個(gè)檢查點(diǎn)開(kāi)始核對(duì)這個(gè)檢查點(diǎn)之后記錄在重做日志文件中已提交的和未提交改變,因?yàn)閐bwr之前會(huì)觸發(fā)lgwr,所以dbwr對(duì)數(shù)據(jù)文件的修改一定會(huì)被先記錄在重做日志文件中。因此,斷電前被DBWN寫進(jìn)數(shù)據(jù)文件的改變將通過(guò)重做日志文件中的記錄進(jìn)行還原,叫做回滾, B. 如果斷電時(shí)有一個(gè)已提交,但dbwr動(dòng)作還沒(méi)有完全完成的改變存在,因?yàn)橐呀?jīng)提交,提交會(huì)觸發(fā)lgwr進(jìn)程,所以不管dbwr動(dòng)作是否已完成,該語(yǔ)句將要影響的行及其產(chǎn)生的結(jié)果一定已經(jīng)記錄在重做日志文件中了,則實(shí)例重啟后,SMON進(jìn)程根據(jù)重做日志文件進(jìn)行前滾。 實(shí)例失敗后用于恢復(fù)的時(shí)間由兩個(gè)檢查點(diǎn)之間的間隔大小來(lái)決定,可以通個(gè)四個(gè)參數(shù)設(shè)置檢查點(diǎn)執(zhí)行的頻率: Log_checkpoint_interval:決定兩個(gè)檢查點(diǎn)之間寫入重做日志文件的系統(tǒng)物理塊(redo blocks)的大小,默認(rèn)值是0,無(wú)限制。 log_checkpoint_timeout: 決定了兩個(gè)檢查點(diǎn)之間的時(shí)間長(zhǎng)度(秒),默認(rèn)值是1800s。 fast_start_io_target:決定了用于恢復(fù)時(shí)需要處理的塊的多少,默認(rèn)值是0,無(wú)限制。 fast_start_mttr_target:直接決定了用于恢復(fù)的時(shí)間的長(zhǎng)短,默認(rèn)值是0,無(wú)限制(SMON進(jìn)程執(zhí)行的前滾和回滾與用戶的回滾是不同的,SMON是根據(jù)重做日志文件進(jìn)行前滾或回滾,而用戶的回滾一定是根據(jù)回滾段的內(nèi)容進(jìn)行回滾的。在這里要說(shuō)一下回滾段存儲(chǔ)的數(shù)據(jù),假如是delete操作,則回滾段將會(huì)記錄整個(gè)行的數(shù)據(jù),假如是update,則回滾段只記錄被修改了的字段的變化前的數(shù)據(jù)(前映像),也就是沒(méi)有被修改的字段是不會(huì)被記錄的,假如是insert,則回滾段只記錄插入記錄的rowid。 這樣假如事務(wù)提交,那回滾段中簡(jiǎn)單標(biāo)記該事務(wù)已經(jīng)提交;假如是回退,則如果操作是delete,回退的時(shí)候把回滾段中數(shù)據(jù)重新寫回?cái)?shù)據(jù)塊,操作如果是update,則把變化前數(shù)據(jù)修改回去,操作如果是insert,則根據(jù)記錄的rowid 把該記錄刪除。) 用戶執(zhí)行rollback 如果用戶rollback,則服務(wù)器進(jìn)程會(huì)根據(jù)數(shù)據(jù)文件塊和DB BUFFER中塊的頭部的事務(wù)列表和SCN以及回滾段地址找到回滾段中相應(yīng)的修改前的副本,并且用這些原值來(lái)還原當(dāng)前數(shù)據(jù)文件中已修改但未提交的改變。如果有多個(gè)“前映像”,服務(wù)器進(jìn)程會(huì)在一個(gè)“前映像”的頭部找到“前前映像”的回滾段地址,一直找到同一事務(wù)下的最早的一個(gè)“前映像”為止。一旦發(fā)出了COMMIT,用戶就不能rollback,這使得COMMIT后DBWR進(jìn)程還沒(méi)有全部完成的后續(xù)動(dòng)作得到了保障。到現(xiàn)在為例一個(gè)事務(wù)已經(jīng)結(jié)束了。 說(shuō)明: TM鎖:符合lock機(jī)制的,用于保護(hù)對(duì)象的定義不被修改。 TX鎖:這個(gè)鎖代表一個(gè)事務(wù),是行級(jí)鎖,用數(shù)據(jù)塊頭、數(shù)據(jù)記錄頭的一些字段表示,也是符合lock機(jī)制,有resource structure、lock structure、enqueue算法?!矩?zé)編:cc】
如果是通過(guò)編程來(lái)實(shí)現(xiàn)的話,就比較簡(jiǎn)單了,oracle中有一個(gè)api是專門用來(lái)檢查指定的request是否執(zhí)行完畢,狀態(tài)是什么,通過(guò)它你可以判斷第一個(gè)request的狀況,從而決定第二個(gè)request什么時(shí)候提交。
oracle 數(shù)據(jù)庫(kù)支持https請(qǐng)求嗎
- 1、http post請(qǐng)求,在發(fā)送的時(shí)候,跟數(shù)據(jù)庫(kù)的字符集有關(guān),在處理不當(dāng)?shù)臅r(shí)候,會(huì)出現(xiàn)亂碼問(wèn)題。 2、oracle訪問(wèn)網(wǎng)絡(luò)服務(wù)的時(shí)候,需要配置acl權(quán)限。
當(dāng)前標(biāo)題:oracle怎么提請(qǐng)求,oracle申請(qǐng)
新聞來(lái)源:http://jinyejixie.com/article4/hojgoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、品牌網(wǎng)站制作、網(wǎng)站制作、、動(dòng)態(tài)網(wǎng)站、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
營(yíng)銷型網(wǎng)站建設(shè)知識(shí)