閿佹槸鏁版嵁搴撲腑鐨勪竴涓潪甯擱噸瑕佺殑姒傚康錛屽畠涓昏鐢ㄤ簬澶氱敤鎴風幆澧冧笅淇濊瘉鏁版嵁搴撳畬鏁存у拰涓鑷存с?鎴戜滑鐭ラ亾錛屽涓敤鎴瘋兘澶熷悓鏃舵搷綰靛悓涓涓暟鎹簱涓殑鏁版嵁錛屼細鍙戠敓鏁版嵁涓嶄竴鑷寸幇璞°傚嵆濡傛灉娌℃湁閿佸畾涓斿涓敤鎴峰悓鏃惰闂竴涓暟鎹簱錛屽垯褰撲粬浠殑浜嬪姟鍚屾椂浣跨敤鐩稿悓鐨勬暟鎹椂鍙兘浼氬彂鐢熼棶棰樸傝繖浜涢棶棰樺寘鎷細涓㈠け鏇存柊銆佽剰璇匯佷笉鍙噸澶嶈鍜屽夠瑙夎錛?br>1錛庡綋涓や釜鎴栧涓簨鍔¢夋嫨鍚屼竴琛岋紝鐒跺悗鍩轟簬鏈鍒濋夊畾鐨勫兼洿鏂拌琛屾椂錛屼細鍙戠敓涓㈠け鏇存柊闂銆傛瘡涓簨鍔¢兘涓嶇煡閬撳叾瀹冧簨鍔$殑瀛樺湪銆傛渶鍚庣殑鏇存柊灝嗛噸鍐欑敱鍏跺畠浜嬪姟鎵鍋氱殑鏇存柊錛岃繖灝嗗鑷存暟鎹涪澶便備緥濡傦紝涓や釜緙栬緫浜哄憳鍒朵綔浜嗗悓涓鏂囨。鐨勭數瀛愬鏈傛瘡涓紪杈戜漢鍛樼嫭绔嬪湴鏇存敼鍏跺鏈紝鐒跺悗淇濆瓨鏇存敼鍚庣殑澶嶆湰錛岃繖鏍峰氨瑕嗙洊浜嗗師濮嬫枃妗c傛渶鍚庝繚瀛樺叾鏇存敼澶嶆湰鐨勭紪杈戜漢鍛樿鐩栦簡絎竴涓紪杈戜漢鍛樻墍鍋氱殑鏇存敼銆傚鏋滃湪絎竴涓紪杈戜漢鍛樺畬鎴愪箣鍚庣浜屼釜緙栬緫浜哄憳鎵嶈兘榪涜鏇存敼錛屽垯鍙互閬垮厤璇ラ棶棰樸?br>2. 鑴忚灝辨槸鎸囧綋涓涓簨鍔℃鍦ㄨ闂暟鎹紝騫朵笖瀵規暟鎹繘琛屼簡淇敼錛岃岃繖縐嶄慨鏀硅繕娌℃湁鎻愪氦鍒版暟鎹簱涓紝榪欐椂錛屽彟澶栦竴涓簨鍔′篃璁塊棶榪欎釜鏁版嵁錛岀劧鍚庝嬌鐢ㄤ簡榪欎釜鏁版嵁銆傚洜涓鴻繖涓暟鎹槸榪樻病鏈夋彁浜ょ殑鏁版嵁錛岄偅涔堝彟澶栦竴涓簨鍔¤鍒扮殑榪欎釜鏁版嵁鏄剰鏁版嵁錛屼緷鎹剰鏁版嵁鎵鍋氱殑鎿嶄綔鍙兘鏄笉姝g‘鐨勩備緥濡傦紝涓涓紪杈戜漢鍛樻鍦ㄦ洿鏀圭數瀛愭枃妗c傚湪鏇存敼榪囩▼涓紝鍙︿竴涓紪杈戜漢鍛樺鍒朵簡璇ユ枃妗o紙璇ュ鏈寘鍚埌鐩墠涓烘鎵鍋氱殑鍏ㄩ儴鏇存敼錛夊茍灝嗗叾鍒嗗彂緇欓鏈熺殑鐢ㄦ埛銆傛鍚庯紝絎竴涓紪杈戜漢鍛樿涓虹洰鍓嶆墍鍋氱殑鏇存敼鏄敊璇殑錛屼簬鏄垹闄や簡鎵鍋氱殑緙栬緫騫朵繚瀛樹簡鏂囨。銆傚垎鍙戠粰鐢ㄦ埛鐨勬枃妗e寘鍚笉鍐嶅瓨鍦ㄧ殑緙栬緫鍐呭錛屽茍涓旇繖浜涚紪杈戝唴瀹瑰簲璁や負浠庢湭瀛樺湪榪囥傚鏋滃湪絎竴涓紪杈戜漢鍛樼‘瀹氭渶緇堟洿鏀瑰墠浠諱綍浜洪兘涓嶈兘璇誨彇鏇存敼鐨勬枃妗o紝鍒欏彲浠ラ伩鍏嶈闂銆?br>3錛庝笉鍙噸澶嶈鏄寚鍦ㄤ竴涓簨鍔″唴錛屽嬈¤鍚屼竴鏁版嵁銆傚湪榪欎釜浜嬪姟榪樻病鏈夌粨鏉熸椂錛屽彟澶栦竴涓簨鍔′篃璁塊棶璇ュ悓涓鏁版嵁銆傞偅涔堬紝鍦ㄧ涓涓簨鍔′腑鐨勪袱嬈¤鏁版嵁涔嬮棿錛岀敱浜庣浜屼釜浜嬪姟鐨勪慨鏀癸紝閭d箞絎竴涓簨鍔′袱嬈¤鍒扮殑鐨勬暟鎹彲鑳芥槸涓嶄竴鏍風殑銆傝繖鏍峰氨鍙戠敓浜嗗湪涓涓簨鍔″唴涓ゆ璇誨埌鐨勬暟鎹槸涓嶄竴鏍風殑錛屽洜姝ょО涓烘槸涓嶅彲閲嶅璇匯備緥濡傦紝涓涓紪杈戜漢鍛樹袱嬈¤鍙栧悓涓鏂囨。錛屼絾鍦ㄤ袱嬈¤鍙栦箣闂達紝浣滆呴噸鍐欎簡璇ユ枃妗c傚綋緙栬緫浜哄憳絎簩嬈¤鍙栨枃妗f椂錛屾枃妗e凡鏇存敼銆傚師濮嬭鍙栦笉鍙噸澶嶃傚鏋滃彧鏈夊湪浣滆呭叏閮ㄥ畬鎴愮紪鍐欏悗緙栬緫浜哄憳鎵嶅彲浠ヨ鍙栨枃妗o紝鍒欏彲浠ラ伩鍏嶈闂銆?br>4錛庡夠瑙夎鏄寚褰撲簨鍔′笉鏄嫭绔嬫墽琛屾椂鍙戠敓鐨勪竴縐嶇幇璞★紝渚嬪絎竴涓簨鍔″涓涓〃涓殑鏁版嵁榪涜浜嗕慨鏀癸紝榪欑淇敼娑夊強鍒拌〃涓殑鍏ㄩ儴鏁版嵁琛屻傚悓鏃訛紝絎簩涓簨鍔′篃淇敼榪欎釜琛ㄤ腑鐨勬暟鎹紝榪欑淇敼鏄悜琛ㄤ腑鎻掑叆涓琛屾柊鏁版嵁銆傞偅涔堬紝浠ュ悗灝變細鍙戠敓鎿嶄綔絎竴涓簨鍔$殑鐢ㄦ埛鍙戠幇琛ㄤ腑榪樻湁娌℃湁淇敼鐨勬暟鎹錛屽氨濂借薄鍙戠敓浜嗗夠瑙変竴鏍楓備緥濡傦紝涓涓紪杈戜漢鍛樻洿鏀逛綔鑰呮彁浜ょ殑鏂囨。錛屼絾褰撶敓浜ч儴闂ㄥ皢鍏舵洿鏀瑰唴瀹瑰悎騫跺埌璇ユ枃妗g殑涓誨鏈椂錛屽彂鐜頒綔鑰呭凡灝嗘湭緙栬緫鐨勬柊鏉愭枡娣誨姞鍒拌鏂囨。涓傚鏋滃湪緙栬緫浜哄憳鍜岀敓浜ч儴闂ㄥ畬鎴愬鍘熷鏂囨。鐨勫鐞嗕箣鍓嶏紝浠諱綍浜洪兘涓嶈兘灝嗘柊鏉愭枡娣誨姞鍒版枃妗d腑錛屽垯鍙互閬垮厤璇ラ棶棰樸?br>鎵浠ワ紝澶勭悊澶氱敤鎴峰茍鍙戣闂殑鏂規硶鏄姞閿併傞攣鏄槻姝㈠叾浠栦簨鍔¤闂寚瀹氱殑璧勬簮鎺у埗銆佸疄鐜板茍鍙戞帶鍒剁殑涓縐嶄富瑕佹墜孌點傚綋涓涓敤鎴烽攣浣忔暟鎹簱涓殑鏌愪釜瀵硅薄鏃訛紝鍏朵粬鐢ㄦ埛灝變笉鑳藉啀璁塊棶璇ュ璞°傚姞閿佸騫跺彂璁塊棶鐨勫獎鍝嶄綋鐜板湪閿佺殑綺掑害涓娿備負浜嗘帶鍒墮攣瀹氱殑璧勬簮錛屽簲璇ラ鍏堜簡瑙g郴緇熺殑絀洪棿綆$悊銆傚湪SQL Server 2000緋葷粺涓紝鏈灝忕殑絀洪棿綆$悊鍗曚綅鏄〉錛屼竴涓〉鏈?K銆傛墍鏈夌殑鏁版嵁銆佹棩蹇椼佺儲寮曢兘瀛樻斁鍦ㄩ〉涓娿傚彟澶栵紝浣跨敤欏墊湁涓涓檺鍒訛紝榪欏氨鏄〃涓殑涓琛屾暟鎹繀欏誨湪鍚屼竴涓〉涓婏紝涓嶈兘璺ㄩ〉銆傞〉涓婇潰鐨勭┖闂寸鐞嗗崟浣嶆槸鐩樺尯錛屼竴涓洏鍖烘槸8涓繛緇殑欏點傝〃鍜岀儲寮曠殑鏈灝忓崰鐢ㄥ崟浣嶆槸鐩樺尯銆傛暟鎹簱鏄敱涓涓垨鑰呭涓〃鎴栬呯儲寮曠粍鎴愶紝鍗蟲槸鐢卞涓洏鍖虹粍鎴愩傛斁鍦ㄤ竴涓〃涓婄殑閿侀檺鍒跺鏁翠釜琛ㄧ殑騫跺彂璁塊棶錛涙斁鍦ㄧ洏鍖轟笂鐨勯攣闄愬埗浜嗗鏁翠釜鐩樺尯鐨勮闂紱鏀懼湪鏁版嵁欏典笂鐨勯攣闄愬埗浜嗗鏁翠釜鏁版嵁欏電殑璁塊棶錛涙斁鍦ㄨ涓婄殑閿佸彧闄愬埗瀵硅琛岀殑騫跺彂璁塊棶銆?/font>
SQL Server 2000 鍏鋒湁澶氱矑搴﹂攣瀹氾紝鍏佽涓涓簨鍔¢攣瀹氫笉鍚岀被鍨嬬殑鐨勮祫婧愩備負浜嗕嬌閿佸畾鐨勬垚鏈噺鑷蟲渶灝戯紝SQL Server 鑷姩灝嗚祫婧愰攣瀹氬湪閫傚悎浠誨姟鐨勭駭鍒傞攣瀹氬湪杈冨皬鐨勭矑搴︼紙渚嬪琛岋級鍙互澧炲姞騫跺彂浣嗛渶瑕佽緝澶х殑寮閿錛屽洜涓哄鏋滈攣瀹氫簡璁稿琛岋紝鍒欓渶瑕佹帶鍒舵洿澶氱殑閿併傞攣瀹氬湪杈冨ぇ鐨勭矑搴︼紙渚嬪琛級灝卞茍鍙戣岃█鏄浉褰撴槀璐電殑錛屽洜涓洪攣瀹氭暣涓〃闄愬埗浜嗗叾瀹冧簨鍔″琛ㄤ腑浠繪剰閮ㄥ垎榪涜璁塊棶錛屼絾瑕佹眰鐨勫紑閿杈冧綆錛屽洜涓洪渶瑕佺淮鎶ょ殑閿佽緝灝戙係QL Server 鍙互閿佸畾琛屻侀〉銆佹墿灞曠洏鍖恒佽〃銆佸簱絳夎祫婧愩?br>琛屾槸鍙互閿佸畾鐨勬渶灝忕┖闂? 琛岀駭閿佸崰鐢ㄧ殑鏁版嵁璧勬簮鏈灝戯紝鎵浠ュ湪浜嬪姟鐨勫鐞嗚繃紼嬩腑錛屽厑璁稿叾浠栦簨鍔$戶緇搷綰靛悓涓涓〃鎴栬呭悓涓涓〉鐨勫叾浠栨暟鎹紝澶уぇ闄嶄綆浜嗗叾浠栦簨鍔$瓑寰呭鐞嗙殑鏃墮棿錛屾彁楂樹簡緋葷粺鐨勫茍鍙戞с?br>欏電駭閿佹槸鎸囧湪浜嬪姟鐨勬搷綰佃繃紼嬩腑錛屾棤璁轟簨鍔″鐞嗘暟鎹殑澶氬皯錛屾瘡涓嬈¢兘閿佸畾涓欏碉紝鍦ㄨ繖涓〉涓婄殑鏁版嵁涓嶈兘琚叾浠栦簨鍔℃搷綰點傚湪SQL Server 7.0浠ュ墠錛屼嬌鐢ㄧ殑鏄〉綰ч攣銆傞〉綰ч攣閿佸畾鐨勮祫婧愭瘮琛岀駭閿侀攣瀹氱殑鏁版嵁璧勬簮澶氥傚湪欏電駭閿佷腑錛屽嵆浣挎槸涓涓簨鍔″彧鎿嶇旱欏典笂鐨勪竴琛屾暟鎹紝閭d箞璇ラ〉涓婄殑鍏朵粬鏁版嵁琛屼篃涓嶈兘琚叾浠栦簨鍔′嬌鐢ㄣ傚洜姝わ紝褰撲嬌鐢ㄩ〉綰ч攣鏃訛紝浼氬嚭鐜版暟鎹殑嫻垂鐜拌薄錛屼篃灝辨槸璇達紝鍦ㄥ悓涓涓〉涓婁細鍑虹幇鏁版嵁琚崰鐢ㄥ嵈娌℃湁浣跨敤鐨勭幇璞°傚湪榪欑鐜拌薄涓紝鏁版嵁鐨勬氮璐規渶澶氫笉瓚呰繃涓涓〉涓婄殑鏁版嵁琛屻?br>琛ㄧ駭閿佷篃鏄竴涓潪甯擱噸瑕佺殑閿併傝〃綰ч攣鏄寚浜嬪姟鍦ㄦ搷綰墊煇涓涓〃鐨勬暟鎹椂錛岄攣瀹氫簡榪欎釜鏁版嵁鎵鍦ㄧ殑鏁翠釜琛紝鍏朵粬浜嬪姟涓嶈兘璁塊棶璇ヨ〃涓殑鍏朵粬鏁版嵁銆傚綋浜嬪姟澶勭悊鐨勬暟鎹噺姣旇緝澶ф椂錛屼竴鑸嬌鐢ㄨ〃綰ч攣銆傝〃綰ч攣鐨勭壒鐐規槸浣跨敤姣旇緝灝戠殑緋葷粺璧勬簮錛屼絾鏄嵈鍗犵敤姣旇緝澶氱殑鏁版嵁璧勬簮銆備笌琛岀駭閿佸拰欏電駭閿佺浉姣旓紝琛ㄧ駭閿佸崰鐢ㄧ殑緋葷粺璧勬簮渚嬪鍐呭瓨姣旇緝灝戯紝浣嗘槸鍗犵敤鐨勬暟鎹祫婧愬嵈鏄渶澶с傚湪琛ㄧ駭閿佹椂錛屾湁鍙兘鍑虹幇鏁版嵁鐨勫ぇ閲忔氮璐圭幇璞★紝鍥犱負琛ㄧ駭閿侀攣瀹氭暣涓〃錛岄偅涔堝叾浠栫殑浜嬪姟閮戒笉鑳芥搷綰佃〃涓殑鍏朵粬鏁版嵁銆?br>鐩樺尯閿佹槸涓縐嶇壒孌婄被鍨嬬殑閿侊紝鍙兘鐢ㄥ湪涓浜涚壒孌婄殑鎯呭喌涓嬨傜皣綰ч攣灝辨槸鎸囦簨鍔″崰鐢ㄤ竴涓洏鍖猴紝榪欎釜鐩樺尯涓嶈兘鍚屾椂琚叾浠栦簨鍔″崰鐢ㄣ備緥濡傚湪鍒涘緩鏁版嵁搴撳拰鍒涘緩琛ㄦ椂錛岀郴緇熷垎閰嶇墿鐞嗙┖闂存椂浣跨敤榪欑綾誨瀷鐨勯攣銆傜郴緇熸槸鎸夌収鐩樺尯鍒嗛厤絀洪棿鐨勩傚綋緋葷粺鍒嗛厤絀洪棿鏃訛紝浣跨敤鐩樺尯閿侊紝闃叉鍏朵粬浜嬪姟鍚屾椂浣跨敤鍚屼竴涓洏鍖恒傚綋緋葷粺瀹屾垚鍒嗛厤絀洪棿涔嬪悗錛屽氨涓嶅啀浣跨敤榪欑綾誨瀷鐨勭洏鍖洪攣銆傜壒鍒槸錛屽綋娑夊強鍒板鏁版嵁鎿嶄綔鐨勪簨鍔℃椂錛屼笉浣跨敤鐩樺尯閿併?br>鏁版嵁搴撶駭閿佹槸鎸囬攣瀹氭暣涓暟鎹簱錛岄槻姝換浣曠敤鎴鋒垨鑰呬簨鍔″閿佸畾鐨勬暟鎹簱榪涜璁塊棶銆傛暟鎹簱綰ч攣鏄竴縐嶉潪甯哥壒孌婄殑閿侊紝瀹冨彧鏄敤浜庢暟鎹簱鐨勬仮澶嶆搷浣滆繃紼嬩腑銆傝繖縐嶇瓑綰х殑閿佹槸涓縐嶆渶楂樼瓑綰х殑閿侊紝鍥犱負瀹冩帶鍒舵暣涓暟鎹簱鐨勬搷浣溿傚彧瑕佸鏁版嵁搴撹繘琛屾仮澶嶆搷浣滐紝閭d箞灝遍渶瑕佽緗暟鎹簱涓哄崟鐢ㄦ埛妯″紡錛岃繖鏍風郴緇熷氨鑳介槻姝㈠叾浠栫敤鎴峰璇ユ暟鎹簱榪涜鍚勭鎿嶄綔銆?br>琛岀駭閿佹槸涓縐嶆渶浼橀攣錛屽洜涓鴻綰ч攣涓嶅彲鑳藉嚭鐜版暟鎹棦琚崰鐢ㄥ張娌℃湁浣跨敤鐨勬氮璐圭幇璞°備絾鏄紝濡傛灉鐢ㄦ埛浜嬪姟涓綣佸鏌愪釜琛ㄤ腑鐨勫鏉¤褰曟搷浣滐紝灝嗗鑷村璇ヨ〃鐨勮澶氳褰曡閮藉姞涓婁簡琛岀駭閿侊紝鏁版嵁搴撶郴緇熶腑閿佺殑鏁扮洰浼氭ュ墽澧炲姞錛岃繖鏍峰氨鍔犻噸浜嗙郴緇熻礋鑽鳳紝褰卞搷緋葷粺鎬ц兘銆傚洜姝わ紝鍦⊿QL Server涓紝榪樻敮鎸侀攣鍗囩駭(lock escalation)銆傛墍璋撻攣鍗囩駭鏄寚璋冩暣閿佺殑綺掑害錛屽皢澶氫釜浣庣矑搴︾殑閿佹浛鎹㈡垚灝戞暟鐨勬洿楂樼矑搴︾殑閿侊紝浠ユ鏉ラ檷浣庣郴緇熻礋鑽楓傚湪SQL Server涓綋涓涓簨鍔′腑鐨勯攣杈冨錛岃揪鍒伴攣鍗囩駭闂ㄩ檺鏃訛紝緋葷粺鑷姩灝嗚綰ч攣鍜岄〉闈㈤攣鍗囩駭涓鴻〃綰ч攣銆傜壒鍒煎緱娉ㄦ剰鐨勬槸錛屽湪SQL Server涓紝閿佺殑鍗囩駭闂ㄩ檺浠ュ強閿佸崌綰ф槸鐢辯郴緇熻嚜鍔ㄦ潵紜畾鐨勶紝涓嶉渶瑕佺敤鎴瘋緗?br> 鍦⊿QL Server鏁版嵁搴撲腑鍔犻攣鏃訛紝闄や簡鍙互瀵逛笉鍚岀殑璧勬簮鍔犻攣錛岃繕鍙互浣跨敤涓嶅悓紼嬪害鐨勫姞閿佹柟寮忥紝鍗抽攣鏈夊縐嶆ā寮忥紝SQL Server涓攣妯″紡鍖呮嫭錛?nbsp; 1錛庡叡浜攣 SQL Server涓紝鍏變韓閿佺敤浜庢墍鏈夌殑鍙鏁版嵁鎿嶄綔銆傚叡浜攣鏄潪鐙崰鐨勶紝鍏佽澶氫釜騫跺彂浜嬪姟璇誨彇鍏墮攣瀹氱殑璧勬簮銆傞粯璁ゆ儏鍐典笅錛屾暟鎹璇誨彇鍚庯紝SQL Server绔嬪嵆閲婃斁鍏變韓閿併備緥濡傦紝鎵ц鏌ヨ“SELECT * FROM AUTHORS”鏃訛紝棣栧厛閿佸畾絎竴欏碉紝璇誨彇涔嬪悗錛岄噴鏀懼絎竴欏電殑閿佸畾錛岀劧鍚庨攣瀹氱浜岄〉銆傝繖鏍鳳紝灝卞厑璁稿湪璇繪搷浣滆繃紼嬩腑錛屼慨鏀規湭琚攣瀹氱殑絎竴欏點備絾鏄紝浜嬪姟闅旂綰у埆榪炴帴閫夐」璁劇疆鍜孲ELECT璇彞涓殑閿佸畾璁劇疆閮藉彲浠ユ敼鍙楽QL Server鐨勮繖縐嶉粯璁よ緗備緥濡傦紝“ SELECT * FROM AUTHORS HOLDLOCK”灝辮姹傚湪鏁翠釜鏌ヨ榪囩▼涓紝淇濇寔瀵硅〃鐨勯攣瀹氾紝鐩村埌鏌ヨ瀹屾垚鎵嶉噴鏀鵑攣瀹氥?nbsp; 2錛庢洿鏂伴攣 鏇存柊閿佸湪淇敼鎿嶄綔鐨勫垵濮嬪寲闃舵鐢ㄦ潵閿佸畾鍙兘瑕佽淇敼鐨勮祫婧愶紝榪欐牱鍙互閬垮厤浣跨敤鍏變韓閿侀犳垚鐨勬閿佺幇璞°傚洜涓轟嬌鐢ㄥ叡浜攣鏃訛紝淇敼鏁版嵁鐨勬搷浣滃垎涓轟袱姝ワ紝棣栧厛鑾峰緱涓涓叡浜攣錛岃鍙栨暟鎹紝鐒跺悗灝嗗叡浜攣鍗囩駭涓烘帓瀹冮攣錛岀劧鍚庡啀鎵ц淇敼鎿嶄綔銆傝繖鏍峰鏋滃悓鏃舵湁涓や釜鎴栧涓簨鍔″悓鏃跺涓涓簨鍔$敵璇蜂簡鍏變韓閿侊紝鍦ㄤ慨鏀規暟鎹殑鏃跺欙紝榪欎簺浜嬪姟閮借灝嗗叡浜攣鍗囩駭涓烘帓瀹冮攣銆傝繖鏃訛紝榪欎簺浜嬪姟閮戒笉浼氶噴鏀懼叡浜攣鑰屾槸涓鐩寸瓑寰呭鏂歸噴鏀撅紝榪欐牱灝遍犳垚浜嗘閿併傚鏋滀竴涓暟鎹湪淇敼鍓嶇洿鎺ョ敵璇鋒洿鏂伴攣錛屽湪鏁版嵁淇敼鐨勬椂鍊欏啀鍗囩駭涓烘帓瀹冮攣錛屽氨鍙互閬垮厤姝婚攣銆?br>3錛庢帓瀹冮攣 鎺掑畠閿佹槸涓轟慨鏀規暟鎹屼繚鐣欑殑銆傚畠鎵閿佸畾鐨勮祫婧愶紝鍏朵粬浜嬪姟涓嶈兘璇誨彇涔熶笉鑳戒慨鏀廣?nbsp; 4錛庣粨鏋勯攣 鎵ц琛ㄧ殑鏁版嵁瀹氫箟璇█ (DDL) 鎿嶄綔錛堜緥濡傛坊鍔犲垪鎴栭櫎鍘昏〃錛夋椂浣跨敤鏋舵瀯淇敼 (Sch-M) 閿併傚綋緙栬瘧鏌ヨ鏃訛紝浣跨敤鏋舵瀯紼沖畾鎬?(Sch-S) 閿併傛灦鏋勭ǔ瀹氭?(Sch-S) 閿佷笉闃誨浠諱綍浜嬪姟閿侊紝鍖呮嫭鎺掑畠閿併傚洜姝ゅ湪緙栬瘧鏌ヨ鏃訛紝鍏跺畠浜嬪姟錛堝寘鎷湪琛ㄤ笂鏈夋帓瀹冮攣鐨勪簨鍔★級閮借兘緇х畫榪愯銆備絾涓嶈兘鍦ㄨ〃涓婃墽琛?DDL 鎿嶄綔銆?br>5錛庢剰鍚戦攣 鎰忓悜閿佽鏄嶴QL Server鏈夊湪璧勬簮鐨勪綆灞傝幏寰楀叡浜攣鎴栨帓瀹冮攣鐨勬剰鍚戙備緥濡傦紝琛ㄧ駭鐨勫叡浜剰鍚戦攣璇存槑浜嬪姟鎰忓浘灝嗘帓瀹冮攣閲婃斁鍒拌〃涓殑欏墊垨鑰呰銆傛剰鍚戦攣鍙堝彲浠ュ垎涓哄叡浜剰鍚戦攣銆佺嫭鍗犳剰鍚戦攣鍜屽叡浜紡鐙崰鎰忓悜閿併傚叡浜剰鍚戦攣璇存槑浜嬪姟鎰忓浘鍦ㄥ叡浜剰鍚戦攣鎵閿佸畾鐨勪綆灞傝祫婧愪笂鏀劇疆鍏變韓閿佹潵璇誨彇鏁版嵁銆傜嫭鍗犳剰鍚戦攣璇存槑浜嬪姟鎰忓浘鍦ㄥ叡浜剰鍚戦攣鎵閿佸畾鐨勪綆灞傝祫婧愪笂鏀劇疆鎺掑畠閿佹潵淇敼鏁版嵁銆傚叡浜紡鎺掑畠閿佽鏄庝簨鍔″厑璁稿叾浠栦簨鍔′嬌鐢ㄥ叡浜攣鏉ヨ鍙栭《灞傝祫婧愶紝騫舵剰鍥懼湪璇ヨ祫婧愪綆灞備笂鏀劇疆鎺掑畠閿併?nbsp; 6錛庡ぇ瀹歸噺鏇存柊閿?nbsp; 褰撳皢鏁版嵁澶у閲忓鍒跺埌琛紝涓旀寚瀹氫簡 TABLOCK 鎻愮ず鎴栬呬嬌鐢?sp_tableoption 璁劇疆浜?table lock on bulk 琛ㄩ夐」鏃訛紝灝嗕嬌鐢ㄥぇ瀹歸噺鏇存柊 閿併傚ぇ瀹歸噺鏇存柊閿佸厑璁歌繘紼嬪皢鏁版嵁騫跺彂鍦板ぇ瀹歸噺澶嶅埗鍒板悓涓琛紝鍚屾椂闃叉鍏跺畠涓嶈繘琛屽ぇ瀹歸噺澶嶅埗鏁版嵁鐨勮繘紼嬭闂琛ㄣ?br> SQL Server緋葷粺涓緩璁緋葷粺鑷姩綆$悊閿侊紝璇ョ郴緇熶細鍒嗘瀽鐢ㄦ埛鐨凷QL璇彞瑕佹眰錛岃嚜鍔ㄤ負璇ヨ姹傚姞涓婂悎閫傜殑閿侊紝鑰屼笖鍦ㄩ攣鐨勬暟鐩お澶氭椂錛岀郴緇熶細鑷姩榪涜閿佸崌綰с傚鍓嶆墍榪幫紝鍗囩駭鐨勯棬闄愮敱緋葷粺鑷姩閰嶇疆錛屽茍涓嶉渶瑕佺敤鎴烽厤緗?鍦ㄥ疄闄呭簲鐢ㄤ腑錛屾湁鏃朵負浜嗗簲鐢ㄧ▼搴忔紜繍琛屽拰淇濇寔鏁版嵁鐨勪竴鑷存э紝蹇呴』浜轟負鍦扮粰鏁版嵁搴撶殑鏌愪釜琛ㄥ姞閿併傛瘮濡傦紝鍦ㄦ煇搴旂敤紼嬪簭鐨勪竴涓簨鍔℃搷浣滀腑錛岄渶瑕佹牴鎹竴緙栧彿瀵瑰嚑涓暟鎹〃鍋氱粺璁℃搷浣滐紝涓轟繚璇佺粺璁℃暟鎹椂闂寸殑涓鑷存у拰姝g‘鎬э紝浠庣粺璁$涓涓〃寮濮嬪埌鍏ㄩ儴琛ㄧ粨鏉燂紝鍏朵粬搴旂敤紼嬪簭鎴栦簨鍔′笉鑳藉啀瀵硅繖鍑犱釜琛ㄥ啓鍏ユ暟鎹紝榪欎釜鏃跺欙紝璇ュ簲鐢ㄧ▼搴忓笇鏈涘湪浠庣粺璁$涓涓暟鎹〃寮濮嬫垨鍦ㄦ暣涓簨鍔″紑濮嬫椂鑳藉鐢辯▼搴忎漢涓哄湴錛堟樉寮忓湴錛夐攣瀹氳繖鍑犱釜琛紝榪欏氨闇瑕佺敤鍒版墜宸ュ姞閿侊紙涔熺О鏄懼紡鍔犻攣錛夋妧鏈?br>鍙互浣跨敤 SELECT銆両NSERT銆乁PDATE 鍜?DELETE 璇彞鎸囧畾琛ㄧ駭閿佸畾鎻愮ず鐨勮寖鍥達紝浠ュ紩瀵?Microsoft SQL Server 2000 浣跨敤鎵闇鐨勯攣綾誨瀷銆傚綋闇瑕佸瀵硅薄鎵鑾峰緱閿佺被鍨嬭繘琛屾洿綺劇粏鎺у埗鏃訛紝浣跨敤琛ㄧ駭閿佸畾鎻愮ず鏇存敼榛樿鐨勯攣瀹氳涓恒?br>鎵鎸囧畾鐨勮〃綰ч攣瀹氭彁紺烘湁濡備笅鍑犵錛?nbsp; 1錛?HOLDLOCK: 鍦ㄨ琛ㄤ笂淇濇寔鍏變韓閿侊紝鐩村埌鏁翠釜浜嬪姟緇撴潫錛岃屼笉鏄湪璇彞鎵ц瀹岀珛鍗抽噴鏀炬墍娣誨姞鐨勯攣銆?nbsp; 2錛?NOLOCK錛氫笉娣誨姞鍏變韓閿佸拰鎺掑畠閿侊紝褰撹繖涓夐」鐢熸晥鍚庯紝鍙兘璇誨埌鏈彁浜よ鐨勬暟鎹垨“鑴忔暟鎹?#8221;錛岃繖涓夐」浠呬粎搴旂敤浜嶴ELECT璇彞銆?nbsp; 3錛?PAGLOCK錛氭寚瀹氭坊鍔犻〉閿侊紙鍚﹀垯閫氬父鍙兘娣誨姞琛ㄩ攣錛夈?nbsp; 4錛?READCOMMITTED鐢ㄤ笌榪愯鍦ㄦ彁浜よ闅旂綰у埆鐨勪簨鍔$浉鍚岀殑閿佽涔夋墽琛屾壂鎻忋傞粯璁ゆ儏鍐典笅錛孲QL Server 2000 鍦ㄦ闅旂綰у埆涓婃搷浣溿傘?nbsp; 5錛?READPAST: 璺寵繃宸茬粡鍔犻攣鐨勬暟鎹錛岃繖涓夐」灝嗕嬌浜嬪姟璇誨彇鏁版嵁鏃惰煩榪囬偅浜涘凡緇忚鍏朵粬浜嬪姟閿佸畾鐨勬暟鎹錛岃屼笉鏄樆濉炵洿鍒板叾浠栦簨鍔¢噴鏀鵑攣錛孯EADPAST浠呬粎搴旂敤浜嶳EAD COMMITTED闅旂鎬х駭鍒笅浜嬪姟鎿嶄綔涓殑SELECT璇彞鎿嶄綔銆?nbsp; 6錛?READUNCOMMITTED錛氱瓑鍚屼簬NOLOCK銆?nbsp; 7錛?REPEATABLEREAD錛氳緗簨鍔′負鍙噸澶嶈闅旂鎬х駭鍒?nbsp; 8錛?ROWLOCK錛氫嬌鐢ㄨ綰ч攣錛岃屼笉浣跨敤綺掑害鏇寸矖鐨勯〉綰ч攣鍜岃〃綰ч攣銆?nbsp; 9錛?SERIALIZABLE錛氱敤涓庤繍琛屽湪鍙覆琛岃闅旂綰у埆鐨勪簨鍔$浉鍚岀殑閿佽涔夋墽琛屾壂鎻忋傜瓑鍚屼簬 HOLDLOCK銆?nbsp; 10錛?TABLOCK錛氭寚瀹氫嬌鐢ㄨ〃綰ч攣錛岃屼笉鏄嬌鐢ㄨ綰ф垨欏甸潰綰х殑閿侊紝SQL Server鍦ㄨ璇彞鎵ц瀹屽悗閲婃斁榪欎釜閿侊紝鑰屽鏋滃悓鏃舵寚瀹氫簡HOLDLOCK錛岃閿佷竴鐩翠繚鎸佸埌榪欎釜浜嬪姟緇撴潫銆?nbsp; 11錛?TABLOCKX錛氭寚瀹氬湪琛ㄤ笂浣跨敤鎺掑畠閿侊紝榪欎釜閿佸彲浠ラ樆姝㈠叾浠栦簨鍔¤鎴栨洿鏂拌繖涓〃鐨勬暟鎹紝鐩村埌榪欎釜璇彞鎴栨暣涓簨鍔$粨鏉熴?nbsp; 12錛?UPDLOCK 錛氭寚瀹氬湪璇昏〃涓暟鎹椂璁劇疆鏇存柊 閿侊紙update lock錛夎屼笉鏄緗叡浜攣錛岃閿佷竴鐩翠繚鎸佸埌榪欎釜璇彞鎴栨暣涓簨鍔$粨鏉燂紝浣跨敤UPDLOCK鐨勪綔鐢ㄦ槸鍏佽鐢ㄦ埛鍏堣鍙栨暟鎹紙鑰屼笖涓嶉樆濉炲叾浠栫敤鎴瘋鏁版嵁錛夛紝騫朵笖淇濊瘉鍦ㄥ悗鏉ュ啀鏇存柊鏁版嵁鏃訛紝榪欎竴孌墊椂闂村唴榪欎簺鏁版嵁娌℃湁琚叾浠栫敤鎴蜂慨鏀廣?nbsp; 姝婚攣闂 鍦ㄦ暟鎹簱緋葷粺涓紝姝婚攣鏄寚澶氫釜鐢ㄦ埛錛堣繘紼嬶級鍒嗗埆閿佸畾浜嗕竴涓祫婧愶紝騫跺張璇曞浘璇鋒眰閿佸畾瀵規柟宸茬粡閿佸畾鐨勮祫婧愶紝榪欏氨浜х敓浜嗕竴涓攣瀹氳姹傜幆錛屽鑷村涓敤鎴鳳紙榪涚▼錛夐兘澶勪簬絳夊緟瀵規柟閲婃斁鎵閿佸畾璧勬簮鐨勭姸鎬併傝繖縐嶆閿佹槸鏈鍏稿瀷鐨勬閿佸艦寮? 渚嬪鍦ㄥ悓涓鏃墮棿鍐呮湁涓や釜浜嬪姟A鍜孊錛屼簨鍔鏈変袱涓搷浣滐細閿佸畾琛╬art鍜岃姹傝闂〃supplier錛涗簨鍔涔熸湁涓や釜鎿嶄綔錛氶攣瀹氳〃supplier鍜岃姹傝闂〃part銆傜粨鏋滐紝浜嬪姟A鍜屼簨鍔涔嬮棿鍙戠敓浜嗘閿併?br> 姝婚攣鐨勭浜岀鎯呭喌鏄紝褰撳湪涓涓暟鎹簱涓椂錛屾湁鑻ュ共涓暱鏃墮棿榪愯鐨勪簨鍔℃墽琛屽茍琛岀殑鎿嶄綔錛屽綋鏌ヨ鍒嗘瀽鍣ㄥ鐞嗕竴縐嶉潪甯稿鏉傜殑鏌ヨ渚嬪榪炴帴鏌ヨ鏃訛紝閭d箞鐢變簬涓嶈兘鎺у埗澶勭悊鐨勯『搴忥紝鏈夊彲鑳藉彂鐢熸閿佺幇璞°?br> 鍦⊿QL Server涓紝緋葷粺鑳藉鑷姩瀹氭湡鎼滅儲鍜屽鐞嗘閿侀棶棰樸傜郴緇熷湪姣忔鎼滅儲涓爣璇嗘墍鏈夌瓑寰呴攣瀹氳姹傜殑榪涚▼浼氳瘽錛屽鏋滃湪涓嬩竴嬈℃悳绱腑璇ヨ鏍囪瘑鐨勮繘紼嬩粛澶勪簬絳夊緟鐘舵侊紝SQL Server灝卞紑濮嬮掑綊姝婚攣鎼滅儲銆傚綋鎼滅儲媯嫻嬪埌閿佸畾璇鋒眰鐜椂錛孲QL Server 閫氳繃鑷姩閫夋嫨鍙互鎵撶牬姝婚攣鐨勭嚎紼嬶紙姝婚攣鐗虹壊鍝侊級鏉ョ粨鏉熸閿併係QL Server 鍥炴粴浣滀負姝婚攣鐗虹壊鍝佺殑浜嬪姟錛岄氱煡綰跨▼鐨勫簲鐢ㄧ▼搴忥紙閫氳繃榪斿洖 1205 鍙烽敊璇俊鎭級錛屽彇娑堢嚎紼嬬殑褰撳墠璇鋒眰錛岀劧鍚庡厑璁鎬笉闂存柇綰跨▼鐨勪簨鍔$戶緇繘琛屻係QL Server 閫氬父閫夋嫨榪愯鎾ゆ秷鏃惰姳璐規渶灝戠殑浜嬪姟鐨勭嚎紼嬩綔涓烘閿佺壓鐗插搧銆傚彟澶栵紝鐢ㄦ埛鍙互浣跨敤 SET 璇彞灝嗕細璇濈殑 DEADLOCK_PRIORITY 璁劇疆涓?LOW銆侱EADLOCK_PRIORITY 閫夐」鎺у埗鍦ㄦ閿佹儏鍐典笅濡備綍琛¢噺浼氳瘽鐨勯噸瑕佹с傚鏋滀細璇濈殑璁劇疆涓?LOW 錛屽垯褰撲細璇濋櫡鍏ユ閿佹儏鍐墊椂灝嗘垚涓洪閫夌壓鐗插搧銆?br> 鐞嗚В浜嗘閿佺殑姒傚康錛屽湪搴旂敤紼嬪簭涓氨鍙互閲囩敤涓嬮潰鐨勪竴浜涙柟娉曟潵灝介噺閬垮厤姝婚攣浜嗭細 錛?錛夊悎鐞嗗畨鎺掕〃璁塊棶欏哄簭銆?錛?錛夊湪浜嬪姟涓敖閲忛伩鍏嶇敤鎴峰共棰勶紝灝介噺浣夸竴涓簨鍔″鐞嗙殑浠誨姟灝戜簺, 淇濇寔浜嬪姟綆鐭茍鍦ㄤ竴涓壒澶勭悊涓?錛?錛夋暟鎹闂椂鍩熺鏁f硶, 鏁版嵁璁塊棶鏃跺煙紱繪暎娉曟槸鎸囧湪瀹㈡埛鏈?鏈嶅姟鍣ㄧ粨鏋勪腑錛岄噰鍙栧悇縐嶆帶鍒舵墜孌墊帶鍒跺鏁版嵁搴撴垨鏁版嵁搴撲腑鐨勫璞¤闂椂闂存銆備富瑕侀氳繃浠ヤ笅鏂瑰紡瀹炵幇: 鍚堢悊瀹夋帓鍚庡彴浜嬪姟鐨勬墽琛屾椂闂達紝閲囩敤宸ヤ綔嫻佸鍚庡彴浜嬪姟榪涜緇熶竴綆$悊銆傚伐浣滄祦鍦ㄧ鐞嗕換鍔℃椂錛屼竴鏂歸潰闄愬埗鍚屼竴綾諱換鍔$殑綰跨▼鏁幫紙寰寰闄愬埗涓?涓級錛岄槻姝㈣祫婧愯繃澶氬崰鐢? 鍙︿竴鏂歸潰鍚堢悊瀹夋帓涓嶅悓浠誨姟鎵ц鏃跺簭銆佹椂闂達紝灝介噺閬垮厤澶氫釜鍚庡彴浠誨姟鍚屾椂鎵ц錛屽彟澶栵紝 閬垮厤鍦ㄥ墠鍙頒氦鏄撻珮宄版椂闂磋繍琛屽悗鍙頒換鍔°?錛?錛夋暟鎹瓨鍌ㄧ┖闂寸鏁f硶銆傛暟鎹瓨鍌ㄧ┖闂寸鏁f硶鏄寚閲囧彇鍚勭鎵嬫錛屽皢閫昏緫涓婂湪涓涓〃涓殑鏁版嵁鍒嗘暎鍒拌嫢騫茬鏁g殑絀洪棿涓婂幓錛屼互渚挎敼鍠勫琛ㄧ殑璁塊棶鎬ц兘銆備富瑕侀氳繃浠ヤ笅鏂規硶瀹炵幇: 絎竴錛屽皢澶ц〃鎸夎鎴栧垪鍒嗚В涓鴻嫢騫插皬琛? 絎簩錛屾寜涓嶅悓鐨勭敤鎴風兢鍒嗚В銆?錛?錛変嬌鐢ㄥ敖鍙兘浣庣殑闅旂鎬х駭鍒傞殧紱繪х駭鍒槸鎸囦負淇濊瘉鏁版嵁搴撴暟鎹殑瀹屾暣鎬у拰涓鑷存ц屼嬌澶氱敤鎴蜂簨鍔¢殧紱葷殑紼嬪害錛孲QL92瀹氫箟浜?縐嶉殧紱繪х駭鍒細鏈彁浜よ銆佹彁浜よ銆佸彲閲嶅璇誨拰鍙覆琛屻傚鏋滈夋嫨榪囬珮鐨勯殧紱繪х駭鍒紝濡傚彲涓茶錛岃櫧鐒剁郴緇熷彲浠ュ洜瀹炵幇鏇村ソ闅旂鎬ц屾洿澶х▼搴︿笂淇濊瘉鏁版嵁鐨勫畬鏁存у拰涓鑷存э紝浣嗗悇浜嬪姟闂村啿紿佽屾閿佺殑鏈轟細澶уぇ澧炲姞錛屽ぇ澶у獎鍝嶄簡緋葷粺鎬ц兘銆?錛?錛変嬌鐢ㄧ粦瀹氳繛鎺? 緇戝畾榪炴帴鍏佽涓や釜鎴栧涓簨鍔¤繛鎺ュ叡浜簨鍔″拰閿侊紝鑰屼笖浠諱綍涓涓簨鍔¤繛鎺ヨ鐢寵閿佸鍚屽彟澶栦竴涓簨鍔¤鐢寵閿佷竴鏍鳳紝鍥犳鍙互鍏佽榪欎簺浜嬪姟鍏變韓鏁版嵁鑰屼笉浼氭湁鍔犻攣鐨勫啿紿併?nbsp;
鍙嬌鐢?/span> DECLARE GLOBAL TEMPORARY TABLE 璇彞鏉ュ畾涔変復鏃惰〃銆?/span>DB2鐨勪復鏃惰〃鏄熀浜庝細璇濈殑錛屼笖鍦ㄤ細璇濅箣闂存槸闅旂鐨勩傚綋浼氳瘽緇撴潫鏃訛紝涓存椂琛ㄧ殑鏁版嵁琚垹闄わ紝涓存椂琛ㄨ闅愬紡鍗鎬笅銆傚涓存椂琛ㄧ殑瀹氫箟涓嶄細鍦?/span>SYSCAT.TABLES涓嚭鐜?/span>
涓嬮潰鏄畾涔変復鏃惰〃鐨勪竴涓ず渚嬶細
DECLARE GLOBAL TEMPORARY TABLE gbl_temp
LIKE empltabl
ON COMMIT DELETE ROWS
NOT LOGGED
IN usr_tbsp
姝よ鍙ュ垱寤轟竴涓悕涓?/span> gbl_temp鐨勭敤鎴蜂復鏃惰〃銆傚畾涔夋鐢ㄦ埛涓存椂琛?/span> 鎵浣跨敤鐨勫垪鐨勫悕縐板拰璇存槑涓?/span> empltabl鐨勫垪鐨勫悕縐板拰璇存槑瀹屽叏鐩稿悓銆傞殣寮忓畾涔?/span> 鍙寘鎷垪鍚嶃佹暟鎹被鍨嬨佸彲涓虹┖鐗規у拰鍒楃己鐪佸煎睘鎬с傛湭瀹氫箟鎵鏈夊叾浠栧垪灞炴э紝鍖呮嫭鍞竴綰︽潫銆佸閮ㄥ叧閿瓧綰︽潫銆佽Е鍙戝櫒鍜岀儲寮曘傛墽琛?/span> COMMIT 鎿嶄綔鏃訛紝鑻ユ湭瀵硅琛ㄦ墦寮 WITH HOLD 娓告爣錛屽垯璇ヨ〃涓殑鎵鏈夋暟鎹兘琚垹闄ゃ備笉璁板綍瀵圭敤鎴蜂復鏃惰〃鎵浣滅殑鏇存敼銆傜敤鎴蜂復鏃惰〃琚斁鍦ㄦ寚瀹氱殑鐢ㄦ埛涓存椂琛ㄧ┖闂翠腑銆傛琛ㄧ┖闂村繀欏誨瓨鍦紝鍚﹀垯姝よ〃鐨勫0鏄庡皢澶辮觸銆?/span>
]]>ORACLE涔嬪父鐢‵AQ V1.0 (4) 絎洓閮ㄥ垎銆佹ц兘璋冩暣http://www.shnenglu.com/ivenher/articles/13153.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Fri, 29 Sep 2006 09:26:00 GMThttp://www.shnenglu.com/ivenher/articles/13153.htmlhttp://www.shnenglu.com/ivenher/comments/13153.htmlhttp://www.shnenglu.com/ivenher/articles/13153.html#Feedback0http://www.shnenglu.com/ivenher/comments/commentRss/13153.htmlhttp://www.shnenglu.com/ivenher/services/trackbacks/13153.html絎洓閮ㄥ垎銆佹ц兘璋冩暣
[Q]濡傛灉璁劇疆鑷姩璺熻釜
[A]鐢╯ystem鐧誨綍 鎵ц$ORACLE_HOME/rdbms/admin/utlxplan.sql鍒涘緩璁″垝琛?br />鎵ц$ORACLE_HOME/sqlplus/admin/plustrce.sql鍒涘緩plustrace瑙掕壊 濡傛灉鎯寵鍒掕〃璁╂瘡涓敤鎴烽兘鑳戒嬌鐢紝鍒?br />SQL>create public synonym plan_table for plan_table; SQL> grant all on plan_table to public; 濡傛灉鎯寵鑷姩璺熻釜鐨勮鑹茶姣忎釜鐢ㄦ埛閮借兘浣跨敤錛屽垯 SQL> grant plustrace to public; 閫氳繃濡備笅璇彞寮鍚?鍋滄璺熻釜 SET AUTOTRACE ON |OFF | ON EXPLAIN | ON STATISTICS | TRACEONLY | TRACEONLY EXPLAIN [Q]濡傛灉璺熻釜鑷繁鐨勪細璇濇垨鑰呮槸鍒漢鐨勪細璇?/font> [A]璺熻釜鑷繁鐨勪細璇濆緢綆鍗?br />Alter session set sql_trace true|false Or Exec dbms_session.set_sql_trace(TRUE); 濡傛灉璺熻釜鍒漢鐨勪細璇濓紝闇瑕佽皟鐢ㄤ竴涓寘 exec dbms_system.set_sql_trace_in_session(sid,serial#,true|false) 璺熻釜鐨勪俊鎭湪user_dump_dest 鐩綍涓嬪彲浠ユ壘鍒版垨閫氳繃濡備笅鑴氭湰鑾峰緱鏂囦歡鍚嶇О錛堥傜敤浜嶹in鐜錛屽鏋滄槸unix闇瑕佸仛涓瀹氫慨鏀癸級 SELECT p1.value||'\'||p2.value||'_ora_'||p.spid||'.ora' filename FROM v$process p, v$session s, v$parameter p1, v$parameter p2 WHERE p1.name = 'user_dump_dest' AND p2.name = 'db_name' AND p.addr = s.paddr AND s.audsid = USERENV ('SESSIONID') 鏈鍚庯紝鍙互閫氳繃Tkprof鏉ヨВ鏋愯窡韙枃浠訛紝濡?br />Tkprof 鍘熸枃浠?鐩爣鏂囦歡 sys=n [Q]鎬庝箞璁劇疆鏁翠釜鏁版嵁搴撶郴緇熻窡韙?/font> [A]鍏跺疄鏂囨。涓婄殑alter system set sql_trace=true鏄笉鎴愬姛鐨?br />浣嗘槸鍙互閫氳繃璁劇疆浜嬩歡鏉ュ畬鎴愯繖涓伐浣滐紝浣滅敤鐩哥瓑 alter system set events '10046 trace name context forever,level 1'; 濡傛灉鍏抽棴璺熻釜錛屽彲浠ョ敤濡備笅璇彞 alter system set events '10046 trace name context off'; 鍏朵腑鐨刲evel 1涓庝笂闈㈢殑8閮芥槸璺熻釜綰у埆 level 1錛氳窡韙猄QL璇彞錛岀瓑浜巗ql_trace=true level 4錛氬寘鎷彉閲忕殑璇︾粏淇℃伅 level 8錛氬寘鎷瓑寰呬簨浠?br />level 12錛氬寘鎷粦瀹氬彉閲忎笌絳夊緟浜嬩歡 [Q]鎬庝箞鏍鋒牴鎹甇S榪涚▼蹇熻幏寰桪B榪涚▼淇℃伅涓庢鍦ㄦ墽琛岀殑璇彞 [A]鏈変簺鏃跺欙紝鎴戜滑鍦∣S涓婃搷浣滐紝璞OP涔嬪悗鎴戜滑寰楀埌鐨凮S榪涚▼錛屾庝箞蹇熸牴鎹甇S淇℃伅鑾峰緱DB淇℃伅鍛紵 鎴戜滑鍙互緙栧啓濡備笅鑴氭湰錛?br />$more whoit.sh #!/bin/sh sqlplus /nolog 100,cascade=> TRUE); dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true); 榪欐槸瀵瑰懡浠や笌宸ュ叿鍖呯殑涓浜涙葷粨 1銆佸浜庡垎鍖鴻〃錛屽緩璁嬌鐢―BMS_STATS錛岃屼笉鏄嬌鐢ˋnalyze璇彞銆? a) 鍙互騫惰榪涜錛屽澶氫釜鐢ㄦ埛錛屽涓猅able b) 鍙互寰楀埌鏁翠釜鍒嗗尯琛ㄧ殑鏁版嵁鍜屽崟涓垎鍖虹殑鏁版嵁銆? c) 鍙互鍦ㄤ笉鍚岀駭鍒笂Compute Statistics錛氬崟涓垎鍖猴紝瀛愬垎鍖猴紝鍏ㄨ〃錛屾墍鏈夊垎鍖? d) 鍙互鍊掑嚭緇熻淇℃伅 e) 鍙互鐢ㄦ埛鑷姩鏀墮泦緇熻淇℃伅 2銆丏BMS_STATS鐨勭己鐐? a) 涓嶈兘Validate Structure b) 涓嶈兘鏀墮泦CHAINED ROWS, 涓嶈兘鏀墮泦CLUSTER TABLE鐨勪俊鎭紝榪欎袱涓粛鏃ч渶瑕佷嬌鐢ˋnalyze璇彞銆? c) DBMS_STATS 榛樿涓嶅绱㈠紩榪涜Analyze錛屽洜涓洪粯璁ascade鏄疐alse錛岄渶瑕佹墜宸ユ寚瀹氫負True 3銆佸浜巓racle 9閲岄潰鐨凟xternal Table錛孉nalyze涓嶈兘浣跨敤錛屽彧鑳戒嬌鐢―BMS_STATS鏉ユ敹闆嗕俊鎭?br />[Q]鎬庝箞鏍峰揩閫熼噸鏁寸儲寮?/font> [A]閫氳繃rebuild璇彞錛屽彲浠ュ揩閫熼噸鏁存垨縐誨姩绱㈠紩鍒板埆鐨勮〃絀洪棿 rebuild鏈夐噸寤烘暣涓儲寮曟暟鐨勫姛鑳斤紝鍙互鍦ㄤ笉鍒犻櫎鍘熷绱㈠紩鐨勬儏鍐典笅鏀瑰彉绱㈠紩鐨勫瓨鍌ㄥ弬鏁?br />璇硶涓?br />alter index index_name rebuild tablespace ts_name storage(鈥︹?; 濡傛灉瑕佸揩閫熼噸寤烘暣涓敤鎴蜂笅鐨勭儲寮曪紝鍙互鐢ㄥ涓嬭剼鏈紝褰撶劧錛岄渶瑕佹牴鎹綘鑷繁鐨勬儏鍐靛仛鐩稿簲淇敼 SQL> set heading off SQL> set feedback off SQL> spool d:\index.sql SQL> SELECT 'alter index ' || index_name || ' rebuild ' ||'tablespace INDEXES storage(initial 256K next 256K pctincrease 0);' FROM all_indexes WHERE ( tablespace_name != 'INDEXES' OR next_extent != ( 256 * 1024 ) ) AND owner = USER SQL>spool off 鍙﹀涓涓悎騫剁儲寮曠殑璇彞鏄?br />alter index index_name coalesce錛岃繖涓鍙ヤ粎浠呮槸鍚堝茍绱㈠紩涓悓涓綰х殑leaf block 娑堣椾笉澶э紝瀵逛簬鏈変簺绱㈠紩涓瓨鍦ㄥぇ閲忕┖闂存氮璐圭殑鎯呭喌涓嬶紝鏈変竴浜涗綔鐢ㄣ?br />[Q]濡備綍浣跨敤Hint鎻愮ず [A] 鍦╯elect/delete/update鍚庡啓/*+ hint */ 濡?select /*+ index(TABLE_NAME INDEX_NAME) */ col1... 娉ㄦ剰/*鍜?涔嬮棿涓嶈兘鏈夌┖鏍?br />濡傜敤hint鎸囧畾浣跨敤鏌愪釜绱㈠紩 select /*+ index(cbotab) */ col1 from cbotab; select /*+ index(cbotab cbotab1) */ col1 from cbotab; select /*+ index(a cbotab1) */ col1 from cbotab a; 鍏朵腑 TABLE_NAME鏄繀欏昏鍐欑殑錛屼笖濡傛灉鍦ㄦ煡璇腑浣跨敤浜嗚〃鐨勫埆鍚嶏紝鍦╤int涔熻鐢ㄨ〃鐨勫埆鍚嶆潵浠f浛琛ㄥ悕; INDEX_NAME鍙互涓嶅繀鍐欙紝Oracle浼氭牴鎹粺璁″奸変竴涓儲寮? 濡傛灉绱㈠紩鍚嶆垨琛ㄥ悕鍐欓敊浜嗭紝閭h繖涓猦int灝變細琚拷鐣? [Q]鎬庝箞鏍峰揩閫熷鍒惰〃鎴栬呮槸鎻掑叆鏁版嵁 [A]蹇熷鍒惰〃鍙互鎸囧畾Nologging閫夐」 濡傦細Create table t1 nologging as select * from t2; 蹇熸彃鍏ユ暟鎹彲浠ユ寚瀹歛ppend鎻愮ず錛屼絾鏄渶瑕佹敞鎰?br />noarchivelog妯″紡涓嬶紝榛樿鐢ㄤ簡append灝辨槸nologging妯″紡鐨勩? 鍦╝rchivelog涓嬶紝闇瑕佹妸琛ㄨ緗▼Nologging妯″紡銆?br />濡俰nsert /*+ append */ into t1 select * from t2 娉ㄦ剰錛氬鏋滃湪9i鐜涓茍璁劇疆浜咶ORCE LOGGING錛屽垯浠ヤ笂鎿嶄綔鏄棤鏁堢殑錛屽茍涓嶄細鍔犲揩錛屽綋鐒訛紝鍙互閫氳繃濡備笅璇彞璁劇疆涓篘O FORCE LOGGING銆?br />Alter database no force logging; 鏄惁寮鍚簡FORCE LOGGING錛屽彲浠ョ敤濡備笅璇彞鏌ョ湅 SQL> select force_logging from v$database; [Q]鎬庝箞閬垮厤浣跨敤鐗瑰畾绱㈠紩 [A]鍦ㄥ緢澶氭椂鍊欙紝Oracle浼氶敊璇殑浣跨敤绱㈠紩鑰屽鑷存晥鐜囩殑鏄庢樉涓嬮檷錛屾垜浠彲浠ヤ嬌鐢ㄤ竴鐐圭偣鎶宸ц岄伩鍏嶄嬌鐢ㄤ笉璇ヤ嬌鐢ㄧ殑绱㈠紩錛屽錛?br />琛╰est,鏈夊瓧孌礱,b,c,d錛屽湪a,b,c涓婂緩绔嬭仈鍚堢儲寮昳nx_a(a,b,c)錛屽湪b涓婂崟鐙緩绔嬩簡涓涓儲寮旾nx_b(b)銆?br />鍦ㄦ甯告儏鍐典笅錛寃here a=? and b=? and c=?浼氱敤鍒扮儲寮昳nx_a錛?br />where b=?浼氱敤鍒扮儲寮昳nx_b 浣嗘槸錛寃here a=? and b=? and c=? group by b浼氱敤鍒板摢涓儲寮曞憿錛熷湪鍒嗘瀽鏁版嵁涓嶆紜紙寰堥暱鏃墮棿娌℃湁鍒嗘瀽錛夋垨鏍規湰娌℃湁鍒嗘瀽鏁版嵁鐨勬儏鍐典笅錛宱racle寰寰浼氫嬌鐢ㄧ儲寮昳nx_b銆傞氳繃鎵ц璁″垝鐨勫垎鏋愶紝榪欎釜绱㈠紩鐨勪嬌鐢紝灝嗗ぇ澶ц楄垂鏌ヨ鏃墮棿銆?br />褰撶劧錛屾垜浠彲浠ラ氳繃濡備笅鐨勬妧宸ч伩鍏嶄嬌鐢╥nx_b錛岃屼嬌鐢╥nx_a銆?br />where a=? and b=? and c=? group by b||'' --濡傛灉b鏄瓧絎?br />where a=? and b=? and c=? group by b+0 --濡傛灉b鏄暟瀛?br />閫氳繃榪欐牱綆鍗曠殑鏀瑰彉錛屽線寰鍙互鏄煡璇㈡椂闂存彁浜ゅ緢澶氬?br />褰撶劧錛屾垜浠篃鍙互浣跨敤no_index鎻愮ず錛岀浉淇″緢澶氫漢娌℃湁鐢ㄨ繃錛屼篃鏄竴涓笉閿欑殑鏂規硶錛?br />select /*+ no_index(t,inx_b) */ * from test t where a=? and b=? and c=? group by b [Q]Oracle浠涔堟椂鍊欎細浣跨敤璺寵穬寮忕儲寮曟壂鎻?/font> [A]榪欐槸9i鐨勪竴涓柊鐗規ц煩璺冨紡绱㈠紩鎵弿(Index Skip Scan). 渚嬪琛ㄦ湁绱㈠紩index(a,b,c)錛屽綋鏌ヨ鏉′歡涓?br />where b=?鐨勬椂鍊欙紝鍙兘浼氫嬌鐢ㄥ埌绱㈠紩index(a,b,c) 濡傦紝鎵ц璁″垝涓嚭鐜板涓嬭鍒掞細 INDEX (SKIP SCAN) OF 'TEST_IDX' (NON-UNIQUE) Oracle鐨勪紭鍖栧櫒(榪欓噷鎸囩殑鏄疌BO)鑳藉鏌ヨ搴旂敤Index Skip Scans鑷沖皯瑕佹湁鍑犱釜鏉′歡: 1 浼樺寲鍣ㄨ涓烘槸鍚堥傜殑銆?br />2 绱㈠紩涓殑鍓嶅鍒楃殑鍞竴鍊肩殑鏁伴噺鑳芥弧瓚充竴瀹氱殑鏉′歡錛堝閲嶅鍊煎緢澶氾級銆?br />3 浼樺寲鍣ㄨ鐭ラ亾鍓嶅鍒楃殑鍊煎垎甯?閫氳繃鍒嗘瀽/緇熻琛ㄥ緱鍒?銆?br />4 鍚堥傜殑SQL璇彞 絳夈?br />[Q]鎬庝箞鏍峰垱寤轟嬌鐢ㄨ櫄鎷熺儲寮?/font> [A]鍙互浣跨敤nosegment閫夐」錛屽 create index virtual_index_name on table_name(col_name) nosegment; 濡傛灉鍦ㄥ摢涓猻ession闇瑕佹祴璇曡櫄鎷熺儲寮曪紝鍙互鍒╃敤闅愬惈鍙傛暟鏉ュ鐞?br />alter session set "_use_nosegment_indexes" = true; 灝卞彲浠ュ埄鐢╡xplain plan for select 鈥︹︽潵鐪嬭櫄鎷熺儲寮曠殑鏁堟灉 鍒╃敤@$ORACLE_HOME/rdbms/admin/utlxpls鏌ョ湅鎵ц璁″垝 鏈鍚庯紝鏍規嵁闇瑕侊紝鎴戜滑鍙互鍒犻櫎铏氭嫙绱㈠紩錛屽鏅氱儲寮曚竴鏍?br />drop index virtual_index_name; 娉ㄦ剰錛氳櫄鎷熺儲寮曞茍涓嶆槸鐗╃悊瀛樺湪鐨勶紝鎵浠ヨ櫄鎷熺儲寮曞茍涓嶇瓑鍚屼簬鐗╃悊绱㈠紩錛屼笉瑕佺敤鑷姩璺熻釜鍘繪祴璇曡櫄鎷熺儲寮曪紝鍥犱負閭f槸瀹為檯鎵ц鐨勬晥鏋滐紝鏄敤涓嶅埌铏氭嫙绱㈠紩鐨勩?br />[Q]鎬庢牱鐩戞帶鏃犵敤鐨勭儲寮?/font> [A]Oracle 9i浠ヤ笂錛屽彲浠ョ洃鎺х儲寮曠殑浣跨敤鎯呭喌錛屽鏋滀竴孌墊椂闂村唴娌℃湁浣跨敤鐨勭儲寮曪紝涓鑸氨鏄棤鐢ㄧ殑绱㈠紩 璇硶涓猴細 寮濮嬬洃鎺э細alter index index_name monitoring usage; 媯鏌ヤ嬌鐢ㄧ姸鎬侊細select * from v$object_usage; 鍋滄鐩戞帶錛歛lter index index_name nomonitoring usage; 褰撶劧錛屽鏋滄兂鐩戞帶鏁翠釜鐢ㄦ埛涓嬬殑绱㈠紩錛屽彲浠ラ噰鐢ㄥ涓嬬殑鑴氭湰錛?br />set heading off set echo off set feedback off set pages 10000 spool start_index_monitor.sql SELECT 'alter index '||owner||'.'||index_name||' monitoring usage;' FROM dba_indexes WHERE owner = USER; spool off set heading on set echo on set feedback on ------------------------------------------------ set heading off set echo off set feedback off set pages 10000 spool stop_index_monitor.sql SELECT 'alter index '||owner||'.'||index_name||' nomonitoring usage;' FROM dba_indexes WHERE owner = USER; spool off set heading on set echo on set feedback on [Q]鎬庝箞鏍瘋兘鍥哄畾鎴戠殑鎵ц璁″垝 [A]鍙互浣跨敤OUTLINE鏉ュ浐瀹歋QL璇彞鐨勬墽琛岃鍒?br />鐢ㄥ涓嬭鍙ュ彲浠ュ垱寤轟竴涓狾UTLINE Create oe replace outline OutLn_Name on Select Col1,Col2 from Table where 鈥︹?br />濡傛灉瑕佸垹闄utline錛屽彲浠ラ噰鐢?br />Drop Outline OutLn_Name; 瀵逛簬宸茬粡鍒涘緩浜嗙殑OutLine錛屽瓨鏀懼湪OUTLN鐢ㄦ埛鐨凮L$HINTS琛ㄤ笅闈?br />瀵逛簬鏈変簺璇彞錛屼綘鍙互浣跨敤update outln.ol$hints鏉ユ洿鏂皁utline 濡倁pdate outln.ol$hints(ol_name,'TEST1','TEST2','TEST2','TEST1) where ol_name in ('TEST1','TEST2'); 榪欐牱錛屼綘灝辨妸Test1 OUTLINE涓嶵est2 OUTLINE浜掓崲浜?br />濡傛灉鎯沖埄鐢ㄥ凡緇忓瓨鍦ㄧ殑OUTLINE錛岄渶瑕佽緗互涓嬪弬鏁?br />Alter system/session set Query_rewrite_enabled = true Alter system/session set use_stored_outlines = true [Q]v$sysstat涓殑class鍒嗗埆浠h〃浠涔?/font> [A]緇熻綾誨埆 1 浠h〃浜嬩緥媧誨姩 2 浠h〃Redo buffer媧誨姩 4 浠h〃閿?br />8 浠h〃鏁版嵁緙撳啿媧誨姩 16 浠h〃OS媧誨姩 32 浠h〃騫惰媧誨姩 64 浠h〃琛ㄨ闂?br />128 浠h〃璋冭瘯淇℃伅 [Q]鎬庝箞鏉鎺夌壒瀹氱殑鏁版嵁搴撲細璇?/font> [A] Alter system kill session 'sid,serial#'; 鎴栬?br />alter system disconnect session 'sid,serial#' immediate; 鍦╳in涓婏紝榪樺彲浠ラ噰鐢╫racle鎻愪緵鐨刼rakill鏉鎺変竴涓嚎紼嬶紙鍏跺疄灝辨槸涓涓狾racle榪涚▼錛?br />鍦↙inux/Unix涓婏紝鍙互鐩存帴鍒╃敤kill鏉鎺夋暟鎹簱榪涚▼瀵瑰簲鐨凮S榪涚▼ [Q]鎬庝箞蹇熸煡鎵鵑攣涓庨攣絳夊緟 [A]鏁版嵁搴撶殑閿佹槸姣旇緝鑰楄垂璧勬簮鐨勶紝鐗瑰埆鏄彂鐢熼攣絳夊緟鐨勬椂鍊欙紝鎴戜滑蹇呴』鎵懼埌鍙戠敓絳夊緟鐨勯攣錛屾湁鍙兘鐨勮瘽錛屾潃鎺夎榪涚▼銆?br />榪欎釜璇彞灝嗘煡鎵懼埌鏁版嵁搴撲腑鎵鏈夌殑DML璇彞浜х敓鐨勯攣錛岃繕鍙互鍙戠幇錛屼換浣旸ML璇彞鍏跺疄浜х敓浜嗕袱涓攣錛屼竴涓槸琛ㄩ攣錛屼竴涓槸琛岄攣銆?br />鍙互閫氳繃alter system kill session 鈥榮id,serial#鈥欐潵鏉鎺変細璇?br />SELECT /*+ rule */ s.username, decode(l.type,'TM','TABLE LOCK', 'TX','ROW LOCK', NULL) LOCK_LEVEL, o.owner,o.object_name,o.object_type, s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser FROM v$session s,v$lock l,dba_objects o WHERE l.sid = s.sid AND l.id1 = o.object_id(+) AND s.username is NOT NULL 濡傛灉鍙戠敓浜嗛攣絳夊緟錛屾垜浠彲鑳芥洿鎯崇煡閬撴槸璋侀攣浜嗚〃鑰屽紩璧瘋皝鐨勭瓑寰?br />浠ヤ笅鐨勮鍙ュ彲浠ユ煡璇㈠埌璋侀攣浜嗚〃錛岃岃皝鍦ㄧ瓑寰呫?br />SELECT /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username User_name, o.owner,o.object_name,o.object_type,s.sid,s.serial# FROM v$locked_object l,dba_objects o,v$session s WHERE l.object_id=o.object_id AND l.session_id=s.sid ORDER BY o.object_id,xidusn DESC 浠ヤ笂鏌ヨ緇撴灉鏄竴涓爲鐘剁粨鏋勶紝濡傛灉鏈夊瓙鑺傜偣錛屽垯琛ㄧず鏈夌瓑寰呭彂鐢熴傚鏋滄兂鐭ラ亾閿佺敤浜嗗摢涓洖婊氭錛岃繕鍙互鍏寵仈鍒癡$rollname錛屽叾涓瓁idusn灝辨槸鍥炴粴孌電殑USN [Q] 濡備綍鏈夋晥鐨勫垹闄や竴涓ぇ琛?extent鏁板緢澶氱殑琛? [A] 涓涓湁寰堝(100k)extent鐨勮〃錛屽鏋滃彧鏄畝鍗曞湴鐢╠rop table鐨勮瘽錛屼細寰堝ぇ閲忔秷鑰桟PU錛圤racle瑕佸fet$銆乽et$鏁版嵁瀛楀吀榪涜鎿嶄綔錛夛紝鍙兘浼氱敤涓婂嚑澶╃殑鏃墮棿錛岃緝濂界殑鏂規硶鏄垎澶氭鍒犻櫎extent錛屼互鍑忚交榪欑娑堣楋細 1. truncate table big-table reuse storage; 2. alter table big-table deallocate unused keep 2000m ( 鍘熸潵澶у皬鐨刵-1/n); 3. alter table big-table deallocate unused keep 1500m ; .... 4. drop table big-table; [Q]濡備綍鏀剁緝涓存椂鏁版嵁鏂囦歡鐨勫ぇ灝?/font> [A]9i浠ヤ笅鐗堟湰閲囩敤 ALTER DATABASE DATAFILE 'file name' RESIZE 100M綾諱技鐨勮鍙?br />9i浠ヤ笂鐗堟湰閲囩敤 ALTER DATABASE TEMPFILE 'file name' RESIZE 100M 娉ㄦ剰錛屼復鏃舵暟鎹枃浠跺湪浣跨敤鏃訛紝涓鑸笉鑳芥敹緙╋紝闄ら潪鍏抽棴鏁版嵁搴撴垨鏂紑鎵鏈変細璇濓紝鍋滄瀵逛復鏃舵暟鎹枃浠剁殑浣跨敤銆?br />[Q]鎬庝箞娓呯悊涓存椂孌?/font> [A]鍙互浣跨敤濡備笅鍔炴硶 1銆?浣跨敤濡備笅璇彞鏌ョ湅涓涓嬭璋佸湪鐢ㄤ復鏃舵 SELECT username,sid,serial#,sql_address,machine,program, tablespace,segtype, contents FROM v$session se,v$sort_usage su WHERE se.saddr=su.session_addr 2銆?閭d簺姝e湪浣跨敤涓存椂孌電殑榪涚▼ SQL>Alter system kill session 'sid,serial#'; 3銆佹妸TEMP琛ㄧ┖闂村洖緙╀竴涓?br />SQL>Alter tablespace TEMP coalesce; 榪樺彲浠ヤ嬌鐢ㄨ瘖鏂簨浠?br />1銆?紜畾TEMP琛ㄧ┖闂寸殑ts# SQL> select ts#, name FROM v$tablespace; TS# NAME ----------------------- 0 SYSYEM 1 RBS 2 USERS 3* TEMP 鈥︹?br />2銆?鎵ц娓呯悊鎿嶄綔 alter session set events 'immediate trace name DROP_SEGMENTS level TS#+1' 璇存槑錛? temp琛ㄧ┖闂寸殑TS# 涓?3*, So TS#+ 1= 4 濡傛灉鎯蟲竻闄ゆ墍鏈夎〃絀洪棿鐨勪復鏃舵錛屽垯 TS# = 2147483647 [Q]鎬庝箞鏍穌ump鏁版嵁搴撳唴閮ㄧ粨鏋勶紝濡備笂闈㈡樉紺虹殑鎺у埗鏂囦歡鐨勭粨鏋?/font> [A]甯歌鐨勬湁 1銆佸垎鏋愭暟鎹枃浠跺潡錛岃漿鍌ㄦ暟鎹枃浠秐鐨勫潡m alter system dump datafile n block m 2銆佸垎鏋愭棩蹇楁枃浠?br />alter system dump logfile logfilename; 3銆佸垎鏋愭帶鍒舵枃浠剁殑鍐呭 alter session set events 'immediate trace name CONTROLF level 10' 4銆佸垎鏋愭墍鏈夋暟鎹枃浠跺ご alter session set events 'immediate trace name FILE_HDRS level 10' 5銆佸垎鏋愭棩蹇楁枃浠跺ご alter session set events 'immediate trace name REDOHDR level 10' 6銆佸垎鏋愮郴緇熺姸鎬侊紝鏈濂芥瘡10鍒嗛挓涓嬈★紝鍋氫笁嬈″姣?br />alter session set events 'immediate trace name SYSTEMSTATE level 10' 7銆佸垎鏋愯繘紼嬬姸鎬?br />alter session set events 'immediate trace name PROCESSSTATE level 10' 8銆佸垎鏋怢ibrary Cache鐨勮緇嗘儏鍐?br />alter session set events 'immediate trace name library_cache level 10' [Q]濡備綍鑾峰緱鎵鏈夌殑浜嬩歡浠g爜 [A] 浜嬩歡浠g爜鑼冨洿涓鑸粠10000 to 10999錛屼互涓嬪垪鍑轟簡榪欎釜鑼冨洿鐨勪簨浠朵唬鐮佷笌淇℃伅 SET SERVEROUTPUT ON DECLARE err_msg VARCHAR2(120); BEGIN dbms_output.enable (1000000); FOR err_num IN 10000..10999 LOOP err_msg := SQLERRM (-err_num); IF err_msg NOT LIKE '%Message '||err_num||' not found%' THEN dbms_output.put_line (err_msg); END IF; END LOOP; END; / 鍦║nix緋葷粺涓婏紝浜嬩歡淇℃伅鏀懼湪涓涓枃鏈枃浠墮噷 $ORACLE_HOME/rdbms/mesg/oraus.msg 鍙互鐢ㄥ涓嬭剼鏈煡鐪嬩簨浠朵俊鎭? event=10000 while [ $event -ne 10999 ] do event=`expr $event + 1` oerr ora $event done 瀵逛簬宸茬粡紜繚鐨?姝e湪璺熻釜鐨勪簨浠訛紝鍙互鐢ㄥ涓嬭剼鏈幏寰?br />SET SERVEROUTPUT ON DECLARE l_level NUMBER; BEGIN FOR l_event IN 10000..10999 LOOP dbms_system.read_ev (l_event,l_level); IF l_level > 0 THEN dbms_output.put_line ('Event '||TO_CHAR (l_event)|| ' is set at level '||TO_CHAR (l_level)); END IF; END LOOP; END; / [Q]浠涔堟槸STATSPACK錛屾垜鎬庝箞浣跨敤瀹冿紵 [A]Statspack鏄疧racle 8i浠ヤ笂鎻愪緵鐨勪竴涓潪甯稿ソ鐨勬ц兘鐩戞帶涓庤瘖鏂伐鍏鳳紝鍩烘湰涓婂叏閮ㄥ寘鍚簡BSTAT/ESTAT鐨勫姛鑳斤紝鏇村鐨勪俊鎭?br />鍙互鍙傝冮檮甯︽枃妗?ORACLE_HOME/rdbms/admin/spdoc.txt銆? 瀹夎Statspack: cd $ORACLE_HOME/rdbms/admin sqlplus "/ as sysdba" @spdrop.sql -- 鍗歌澆錛岀涓嬈″彲浠ヤ笉闇瑕?br />sqlplus "/ as sysdba" @spcreate.sql -- 闇瑕佹牴鎹彁紺鴻緭鍏ヨ〃絀洪棿鍚?br />浣跨敤Statspack: sqlplus perfstat/perfstat exec statspack.snap; -- 榪涜淇℃伅鏀墮泦緇熻錛屾瘡嬈¤繍琛岄兘灝嗕駭鐢熶竴涓揩鐓у彿 -- 鑾峰緱蹇収鍙鳳紝蹇呴』瑕佹湁涓や釜浠ヤ笂鐨勫揩鐓э紝鎵嶈兘鐢熸垚鎶ヨ〃 select SNAP_ID, SNAP_TIME from STATS$SNAPSHOT; @spreport.sql -- 杈撳叆闇瑕佹煡鐪嬬殑寮濮嬪揩鐓у彿涓庣粨鏉熷揩鐓у彿 鍏朵粬鐩稿叧鑴氭湰s: spauto.sql - 鍒╃敤dbms_job鎻愪氦涓涓綔涓氾紝鑷姩鐨勮繘琛孲TATPACK鐨勪俊鎭敹闆嗙粺璁? sppurge.sql - 娓呴櫎涓孌佃寖鍥村唴鐨勭粺璁′俊鎭紝闇瑕佹彁渚涘紑濮嬪揩鐓т笌緇撴潫蹇収鍙?br />sptrunc.sql - 娓呴櫎(truncate)鎵鏈夌粺璁′俊鎭?/span>
]]>ORACLE涔嬪父鐢‵AQ V1.0 (2) 絎簩閮ㄥ垎銆丱RACLE鏋勬灦浣撶郴http://www.shnenglu.com/ivenher/articles/13151.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Fri, 29 Sep 2006 09:24:00 GMThttp://www.shnenglu.com/ivenher/articles/13151.htmlhttp://www.shnenglu.com/ivenher/comments/13151.htmlhttp://www.shnenglu.com/ivenher/articles/13151.html#Feedback0http://www.shnenglu.com/ivenher/comments/commentRss/13151.htmlhttp://www.shnenglu.com/ivenher/services/trackbacks/13151.html絎簩閮ㄥ垎銆丱RACLE鏋勬灦浣撶郴
[Q]ORACLE鐨勬湁閭d簺鏁版嵁綾誨瀷
[A]甯歌鐨勬暟鎹被鍨嬫湁 CHAR鍥哄畾闀垮害瀛楃鍩燂紝鏈澶ч暱搴﹀彲杈?000涓瓧鑺? NCHAR澶氬瓧鑺傚瓧絎﹂泦鐨勫浐瀹氶暱搴﹀瓧絎﹀煙錛岄暱搴﹂殢瀛楃闆嗚屽畾錛屾渶澶氫負2000涓瓧絎︽垨2000涓瓧鑺? VARCHAR2鍙彉闀垮害瀛楃鍩燂紝鏈澶ч暱搴﹀彲杈?000涓瓧絎? NVARCHAR2澶氬瓧鑺傚瓧絎﹂泦鐨勫彲鍙橀暱搴﹀瓧絎﹀煙錛岄暱搴﹂殢瀛楃闆嗚屽畾錛屾渶澶氫負4000涓瓧絎︽垨4000涓瓧鑺? DATE鐢ㄤ簬瀛樺偍鍏ㄩ儴鏃ユ湡鐨勫浐瀹氶暱搴?7涓瓧鑺?瀛楃鍩燂紝鏃墮棿浣滀負鏃ユ湡鐨勪竴閮ㄥ垎瀛樺偍鍏朵腑銆傞櫎闈? 閫氳繃璁劇疆init.ora鏂囦歡鐨凬LS_DATE_FORMAT鍙傛暟鏉ュ彇浠f棩鏈熸牸寮忥紝鍚﹀垯鏌ヨ鏃訛紝鏃ユ湡浠? DD-MON-YY鏍煎紡琛ㄧず錛屽13-APR-99琛ㄧず1999.4.13 NUMBER鍙彉闀垮害鏁板煎垪錛屽厑璁稿間負0銆佹鏁板拰璐熸暟銆侼UMBER鍊奸氬父浠?涓瓧鑺傛垨鏇村皯鐨勫瓧鑺傚瓨鍌紝鏈澶?1瀛楄妭 LONG鍙彉闀垮害瀛楃鍩燂紝鏈澶ч暱搴﹀彲鍒?GB RAW琛ㄧず浜岃繘鍒舵暟鎹殑鍙彉闀垮害瀛楃鍩燂紝鏈闀夸負2000涓瓧鑺? LONGRAW琛ㄧず浜岃繘鍒舵暟鎹殑鍙彉闀垮害瀛楃鍩燂紝鏈闀夸負2GB MLSLABEL鍙敤浜嶵rustedOracle錛岃繖涓暟鎹被鍨嬫瘡琛屼嬌鐢?鑷?涓瓧鑺? BLOB浜岃繘鍒跺ぇ瀵硅薄錛屾渶澶ч暱搴︿負4GB CLOB瀛楃澶у璞★紝鏈澶ч暱搴︿負4GB NCLOB澶氬瓧鑺傚瓧絎﹂泦鐨凜LOB鏁版嵁綾誨瀷錛屾渶澶ч暱搴︿負4GB BFILE澶栭儴浜岃繘鍒舵枃浠訛紝澶у皬鐢辨搷浣滅郴緇熷喅瀹? ROWID琛ㄧずRowID鐨勪簩榪涘埗鏁版嵁錛孫racle8RowID鐨勬暟鍊間負10涓瓧鑺傦紝鍦∣racle7涓嬌鐢ㄧ殑闄愬畾 RowID鏍煎紡涓?涓瓧鑺? UROWID鐢ㄤ簬鏁版嵁瀵誨潃鐨勪簩榪涘埗鏁版嵁錛屾渶澶ч暱搴︿負4000涓瓧鑺? [Q]Oracle鏈夊摢浜涘父瑙佸叧閿瓧錛屼笉鑳借鐢ㄤ簬瀵硅薄鍚?/font> [A]浠?i鐗堟湰涓轟緥錛屼竴鑸繚鐣欏叧閿瓧涓嶈兘鐢ㄥ仛瀵硅薄鍚?br />ACCESS ADD ALL ALTER AND ANY AS ASC AUDIT BETWEEN BY CHAR CHECK CLUSTER COLUMN COMMENT COMPRESS CONNECT CREATE CURRENT DATE DECIMAL DEFAULT DELETE DESC DISTINCT DROP ELSE EXCLUSIVE EXISTS FILE FLOAT FOR FROM GRANT GROUP HAVING IDENTIFIED IMMEDIATE IN INCREMENT INDEX INITIAL INSERT INTEGER INTERSECT INTO IS LEVEL LIKE LOCK LONG MAXEXTENTS MINUS MLSLABEL MODE MODIFY NOAUDIT NOCOMPRESS NOT NOWAIT NULL NUMBER OF OFFLINE ON ONLINE OPTION OR ORDER PCTFREE PRIOR PRIVILEGES PUBLIC RAW RENAME RESOURCE REVOKE ROW ROWID ROWNUM ROWS SELECT SESSION SET SHARE SIZE SMALLINT START SUCCESSFUL SYNONYM SYSDATE TABLE THEN TO TRIGGER UID UNION UNIQUE UPDATE USER VALIDATE VALUES VARCHAR VARCHAR2 VIEW WHENEVER WHERE WITH 璇︾粏淇℃伅鍙互鏌ョ湅v$reserved_words瑙嗗浘 [Q]鎬庝箞鏌ョ湅鏁版嵁搴撶増鏈?/font> [A]select * from v$version 鍖呭惈鐗堟湰淇℃伅錛屾牳蹇冪増鏈俊鎭紝浣嶆暟淇℃伅(32浣嶆垨64浣?絳?br />鑷充簬浣嶆暟淇℃伅錛屽湪linux/unix騫沖彴涓婏紝鍙互閫氳繃file鏌ョ湅錛屽 file $ORACLE_HOME/bin/oracle [Q]鎬庝箞鏌ョ湅鏁版嵁搴撳弬鏁?/font> [A]show parameter 鍙傛暟鍚?br />濡傞氳繃show parameter spfile鍙互鏌ョ湅9i鏄惁浣跨敤spfile鏂囦歡 鎴栬卻elect * from v$parameter 闄や簡榪欓儴鍒嗗弬鏁幫紝Oracle榪樻湁澶ч噺闅愬惈鍙傛暟錛屽彲浠ラ氳繃濡備笅璇彞鏌ョ湅: SELECT NAME ,VALUE ,decode(isdefault, 'TRUE','Y','N') as "Default" ,decode(ISEM,'TRUE','Y','N') as SesMod ,decode(ISYM,'IMMEDIATE', 'I', 'DEFERRED', 'D', 'FALSE', 'N') as SysMod ,decode(IMOD,'MODIFIED','U', 'SYS_MODIFIED','S','N') as Modified ,decode(IADJ,'TRUE','Y','N') as Adjusted ,description FROM ( --GV$SYSTEM_PARAMETER SELECT x.inst_id as instance ,x.indx+1 ,ksppinm as NAME ,ksppity ,ksppstvl as VALUE ,ksppstdf as isdefault ,decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE') as ISEM ,decode(bitand(ksppiflg/65536,3), 1,'IMMEDIATE',2,'DEFERRED','FALSE') as ISYM ,decode(bitand(ksppstvf,7),1,'MODIFIED','FALSE') as IMOD ,decode(bitand(ksppstvf,2),2,'TRUE','FALSE') as IADJ ,ksppdesc as DESCRIPTION FROM x$ksppi x ,x$ksppsv y WHERE x.indx = y.indx AND substr(ksppinm,1,1) = '_' AND x.inst_id = USERENV('Instance') ) ORDER BY NAME [Q]鎬庝箞鏍鋒煡鐪嬫暟鎹簱瀛楃闆?/font> [A]鏁版嵁搴撴湇鍔″櫒瀛楃闆唖elect * from nls_database_parameters錛屽叾鏉ユ簮浜巔rops$錛屾槸琛ㄧず鏁版嵁搴撶殑瀛楃闆嗐?br />瀹㈡埛绔瓧絎﹂泦鐜select * from nls_instance_parameters,鍏舵潵婧愪簬v$parameter錛?br />琛ㄧず瀹㈡埛绔殑瀛楃闆嗙殑璁劇疆錛屽彲鑳芥槸鍙傛暟鏂囦歡錛岀幆澧冨彉閲忔垨鑰呮槸娉ㄥ唽琛?br />浼氳瘽瀛楃闆嗙幆澧?select * from nls_session_parameters錛屽叾鏉ユ簮浜巚$nls_parameters錛岃〃紺轟細璇濊嚜宸辯殑璁劇疆錛屽彲鑳芥槸浼氳瘽鐨勭幆澧冨彉閲忔垨鑰呮槸alter session瀹屾垚錛屽鏋滀細璇濇病鏈夌壒孌婄殑璁劇疆錛屽皢涓巒ls_instance_parameters涓鑷淬?br />瀹㈡埛绔殑瀛楃闆嗚姹備笌鏈嶅姟鍣ㄤ竴鑷達紝鎵嶈兘姝g‘鏄劇ず鏁版嵁搴撶殑闈濧scii瀛楃銆傚鏋滃涓緗瓨鍦ㄧ殑鏃跺欙紝alter session>鐜鍙橀噺>娉ㄥ唽琛?gt;鍙傛暟鏂囦歡 瀛楃闆嗚姹備竴鑷達紝浣嗘槸璇█璁劇疆鍗村彲浠ヤ笉鍚岋紝璇█璁劇疆寤鴻鐢ㄨ嫳鏂囥傚瀛楃闆嗘槸zhs16gbk錛屽垯nls_lang鍙互鏄疉merican_America.zhs16gbk銆?br />[Q]鎬庝箞鏍蜂慨鏀瑰瓧絎﹂泦 [A]8i浠ヤ笂鐗堟湰鍙互閫氳繃alter database鏉ヤ慨鏀瑰瓧絎﹂泦錛屼絾涔熷彧闄愪簬瀛愰泦鍒拌秴闆嗭紝涓嶅緩璁慨鏀筽rops$琛紝灝嗗彲鑳藉鑷翠弗閲嶉敊璇?br />Startup nomount; Alter database mount exclusive; Alter system enable restricted session; Alter system set job_queue_process=0; Alter database open; Alter database character set zhs16gbk; [Q]鎬庢牱寤虹珛鍩轟簬鍑芥暟绱㈠紩 [A]8i浠ヤ笂鐗堟湰錛岀‘淇?br />Query_rewrite_enabled=true Query_rewrite_integrity=trusted Compatible=8.1.0浠ヤ笂 Create index indexname on table (function(field)); [Q]鎬庝箞鏍風Щ鍔ㄨ〃鎴栬〃鍒嗗尯 [A]縐誨姩琛ㄧ殑璇硶 Alter table tablename move [Tablespace new_name Storage(initial 50M next 50M pctincrease 0 pctfree 10 pctused 50 initrans 2) nologging] 縐誨姩鍒嗗尯鐨勮娉?br />alter table tablename move (partition partname) [update global indexes] 涔嬪悗涔嬪悗蹇呴』閲嶅緩绱㈠紩 Alter index indexname rebuild 濡傛灉琛ㄦ湁Lob孌碉紝閭d箞姝e父鐨凙lter涓嶈兘縐誨姩Lob孌靛埌鍒殑琛ㄧ┖闂達紝鑰屼粎浠呮槸縐誨姩浜嗚〃孌碉紝鍙互閲囩敤濡備笅鐨勬柟娉曠Щ鍔↙ob孌?br />alter table tablename move lob(lobsegname) store as (tablespace newts); [Q]鎬庝箞鑾峰緱褰撳墠鐨凷CN [A]9i浠ヤ笅鐗堟湰 select max(ktuxescnw*power(2,32)+ktuxescnb) from x$ktuxe; 濡傛灉鏄?i浠ヤ笂鐗堟湰錛岃繕鍙互閫氳繃浠ヤ笅璇彞鑾峰彇 select dbms_flashback.get_system_change_number from dual; [Q]ROWID鐨勭粨鏋勪笌緇勬垚 [A]8浠ヤ笂鐗堟湰鐨凴OWID緇勬垚 OOOOOOFFFBBBBBBRRR 8浠ヤ笅ROWID緇勬垚錛堜篃鍙彈闄怰owid錛?br />BBBBBBBB.RRRR.FFFF 鍏朵腑錛孫鏄璞D錛孎鏄枃浠禝D錛孊鏄潡ID錛孯鏄ID 濡傛灉鎴戜滑鏌ヨ涓涓〃鐨凴OWID錛屾牴鎹叾涓潡鐨勪俊鎭紝鍙互鐭ラ亾璇ヨ〃紜垏鍗犵敤浜嗗灝戜釜鍧楋紝榪涜岀煡閬撳崰鐢ㄤ簡澶氬皯鏁版嵁絀洪棿錛堟鏁版嵁絀洪棿涓嶇瓑浜庤〃鐨勫垎閰嶇┖闂達級 [Q]鎬庝箞鏍瘋幏鍙栧璞$殑DDL璇彞 [A]絎笁鏂瑰伐鍏峰氨涓嶈浜嗕富瑕佽涓涓?i浠ヤ笂鐗堟湰鐨刣bms_metadata 1銆佽幏寰楀崟涓璞$殑DDL璇彞 set heading off set echo off set feedback off set pages off set long 90000 select dbms_metadata.get_ddl('TABLE','TABLENAME','SCAME') from dual; 濡傛灉鑾峰彇鏁翠釜鐢ㄦ埛鐨勮剼鏈紝鍙互鐢ㄥ涓嬭鍙?br />select dbms_metadata.get_ddl('TABLE',u.table_name) from user_tables u; 褰撶劧錛屽鏋滄槸绱㈠紩錛屽垯闇瑕佷慨鏀圭浉鍏硉able鍒癷ndex [Q]濡備綍鍒涘緩綰︽潫鐨勭儲寮曞湪鍒殑琛ㄧ┖闂翠笂 [A]1銆佸厛鍒涘緩绱㈠紩錛屽啀鍒涘緩綰︽潫 2銆佸埄鐢ㄥ涓嬭鍙ュ垱寤?br />create table test (c1 number constraint pk_c1_id primary key using index tablespace useridex, c2 varchar2(10) ) tablespace userdate; [Q]鎬庝箞鐭ラ亾閭d簺琛ㄦ病鏈夊緩绔嬩富閿?/font> [A]涓鑸殑鎯呭喌涓嬶紝琛ㄧ殑涓婚敭鏄繀瑕佺殑錛屾病鏈変富閿殑琛ㄥ彲浠ヨ鏄笉絎﹀悎璁捐瑙勮寖鐨勩?br />SELECT table_name FROM User_tables t WHERE NOT EXISTS (SELECT table_name FROM User_constraints c WHERE constraint_type = 'P' AND t.table_name=c.table_name) 鍏跺畠鐩稿叧鏁版嵁瀛楀吀瑙i噴 user_tables 琛?br />user_tab_columns 琛ㄧ殑鍒?br />user_constraints 綰︽潫 user_cons_columns 綰︽潫涓庡垪鐨勫叧緋?br />user_indexes 绱㈠紩 user_ind_columns 绱㈠紩涓庡垪鐨勫叧緋?br />[Q]dbms_output鎻愮ず緙撳啿鍖轟笉澶燂紝鎬庝箞澧炲姞 [A]dbms_output.enable(20000); 鍙﹀錛屽鏋渄bms_output鐨勪俊鎭笉鑳芥樉紺猴紝 闇瑕佽緗?br />set serveroutput on [Q]鎬庝箞鏍蜂慨鏀硅〃鐨勫垪鍚?/font> [A]9i浠ヤ笂鐗堟湰鍙互閲囩敤rname鍛戒護 ALTER TABLE UserName.TabName RENAME COLUMN SourceColumn TO DestColumn 9i浠ヤ笅鐗堟湰鍙互閲囩敤create table 鈥︹?as select * from SourceTable鐨勬柟寮忋?br />鍙﹀錛?i浠ヤ笂鍙互鏀寔鍒犻櫎鍒椾簡 ALTER TABLE UserName.TabName SET UNUSED (ColumnName) CASCADE CONSTRAINTS ALTER TABLE UserName.TabName DROP (ColumnName) CASCADE CONSTRAINTS [Q]鎬庝箞鏍風粰sqlplus瀹夎甯姪 [A]SQLPLUS鐨勫府鍔╁繀欏繪墜宸ュ畨瑁咃紝shell鑴氭湰涓?ORACLE_HOME/bin/helpins 鍦ㄥ畨瑁呬箣鍓嶏紝蹇呴』鍏堣緗甋YSTEM_PASS鐜鍙橀噺錛屽錛?br />$ setenv SYSTEM_PASS SYSTEM/MANAGER $ helpins 濡傛灉涓嶈緗鐜鍙橀噺錛屽皢鍦ㄨ繍琛岃剼鏈殑鏃跺欐彁紺鴻緭鍏ョ幆澧冨彉閲?br />褰撶劧錛岄櫎浜唖hell鑴氭湰錛岃繕鍙互鍒╃敤sql鑴氭湰瀹夎錛岄偅灝變笉鐢ㄨ緗幆澧冨彉閲忎簡錛屼絾鏄紝鎴戜滑蹇呴』浠ystem鐧誨綍銆?br />$ sqlplus system/manager SQL> @?/sqlplus/admin/help/helpbld.sql helpus.sql 瀹夎涔嬪悗錛屼綘灝卞彲浠ヨ薄濡備笅鐨勬柟娉曚嬌鐢ㄥ府鍔╀簡 SQL> help index [Q]鎬庝箞鏍峰揩閫熶笅杞絆racle琛ヤ竵 [A]鎴戜滑鍏堣幏寰椾笅杞芥湇鍔″櫒鍦板潃錛屽湪http欏甸潰涓婃湁 ftp://updates.oracle.com 鐒跺悗鐢╢tp鐧誨綍錛岀敤鎴峰悕涓庡瘑鐮佹槸metalink鐨勭敤鎴峰悕涓庡瘑鐮?br />濡傛垜浠煡閬撲簡琛ヤ竵鍙?095277 (9204鐨勮ˉ涓侀泦)錛屽垯 ftp> cd 3095277 250 Changed directory OK. ftp> ls 200 PORT command OK. 150 Opening data connection for file listing. p3095277_9204_AIX64-5L.zip p3095277_9204_AIX64.zip 鈥︹?br />p3095277_9204_WINNT.zip 226 Listing complete. Data connection has been closed. ftp: 208 bytes received in 0.02Seconds 13.00Kbytes/sec. ftp> 鐭ラ亾浜嗚繖涓俊鎭紝鎴戜滑鐢ㄧ敤flashget錛岀綉緇滆殏铓佸氨鍙互涓嬭澆浜嗐? 娣誨姞濡備笅榪炴帴 ftp://updates.oracle.com/3095277/p3...04_AIX64-5L.zip 鎴栨浛鎹㈠悗闈㈢殑閮ㄥ垎涓烘墍闇瑕佺殑鍐呭 娉ㄦ剰錛屽鏋滄槸flashget錛岀綉緇滆殏铓佽杈撳叆璁よ瘉鐢ㄦ埛鍚嶅強瀵嗙爜錛屽氨鏄綘鐨刴etalink鐨勭敤鎴峰悕涓庡瘑鐮侊紒 [Q]濡備綍縐誨姩鏁版嵁鏂囦歡 [A]1銆佸叧闂暟鎹簱錛屽埄鐢╫s鎷瘋礉 a.shutdown immediate鍏抽棴鏁版嵁搴?br />b.鍦╫s涓嬫嫹璐濇暟鎹枃浠跺埌鏂扮殑鍦扮偣 c.Startup mount 鍚姩鍒癿ount涓?br />d.Alter database rename datafile '鑰佹枃浠? to '鏂版枃浠?; e.Alter database open; 鎵撳紑鏁版嵁搴?br />2銆佸埄鐢≧man鑱旀満鎿嶄綔 RMAN> sql "alter database datafile ''file name'' offline"; RMAN> run { 2> copy datafile 'old file location' 3> to 'new file location'; 4> switch datafile ' old file location' 5> to datafilecopy ' new file location'; 6> } RMAN> sql "alter database datafile ''file name'' online"; 璇存槑錛氬埄鐢∣S鎷瘋礉涔熷彲浠ヨ仈鏈烘搷浣滐紝涓嶅叧闂暟鎹簱錛屼笌rman鐨勬楠や竴鏍鳳紝鍒╃敤rman涓庡埄鐢╫s鎷瘋礉鐨勫師鐞嗕竴鏍鳳紝鍦╮man涓璫opy鏄嫹璐濇暟鎹枃浠訛紝鐩稿綋浜嶰S鐨刢p錛岃宻witch鍒欑浉褰撲簬alter database rename錛岀敤鏉ユ洿鏂版帶鍒舵枃浠躲?br />[Q]濡傛灉綆$悊鑱旀満鏃ュ織緇勪笌鎴愬憳 [A]浠ヤ笅鏄父瑙佹搷浣滐紝濡傛灉鍦∣PA/RAC涓嬫敞鎰忕嚎紼嬪彿 澧炲姞涓涓棩蹇楁枃浠剁粍 Alter database add logfile [group n] '鏂囦歡鍏ㄥ悕' size 10M; 鍦ㄨ繖涓粍涓婂鍔犱竴涓垚鍛?br />Alter database add logfile member '鏂囦歡鍏ㄥ悕' to group n; 鍦ㄨ繖涓粍涓婂垹闄や竴涓棩蹇楁垚鍛?br />Alter database drop logfile member '鏂囦歡鍏ㄥ悕'; 鍒犻櫎鏁翠釜鏃ュ織緇?br />Alter database drop logfile group n; [Q]鎬庝箞鏍瘋綆桼EDO BLOCK鐨勫ぇ灝?/font> [A]璁$畻鏂規硶涓?redo size + redo wastage) / redo blocks written + 16 鍏蜂綋瑙佸涓嬩緥瀛?br />SQL> select name ,value from v$sysstat where name like '%redo%'; NAME VALUE ---------------------------------------------------------------- ---------- redo synch writes 2 redo synch time 0 redo entries 76 redo size 19412 redo buffer allocation retries 0 redo wastage 5884 redo writer latching time 0 redo writes 22 redo blocks written 51 redo write time 0 redo log space requests 0 redo log space wait time 0 redo log switch interrupts 0 redo ordering marks 0 SQL> select (19412+5884)/51 + 16 '"Redo black(byte)" from dual; Redo black(byte) ------------------ 512 [Q]鎺у埗鏂囦歡鍖呭惈鍝簺鍩烘湰鍐呭 [A]鎺у埗鏂囦歡涓昏鍖呭惈濡備笅鏉$洰錛屽彲浠ラ氳繃dump鎺у埗鏂囦歡鍐呭鐪嬪埌 DATABASE ENTRY CHECKPOINT PROGRESS RECORDS REDO THREAD RECORDS LOG FILE RECORDS DATA FILE RECORDS TEMP FILE RECORDS TABLESPACE RECORDS LOG FILE HISTORY RECORDS OFFLINE RANGE RECORDS ARCHIVED LOG RECORDS BACKUP SET RECORDS BACKUP PIECE RECORDS BACKUP DATAFILE RECORDS BACKUP LOG RECORDS DATAFILE COPY RECORDS BACKUP DATAFILE CORRUPTION RECORDS DATAFILE COPY CORRUPTION RECORDS DELETION RECORDS PROXY COPY RECORDS INCARNATION RECORDS [Q]濡傛灉鍙戠幇琛ㄤ腑鏈夊潖鍧楋紝濡備綍媯绱㈠叾瀹冩湭鍧忕殑鏁版嵁 [A]棣栧厛闇瑕佹壘鍒板潖鍧楃殑ID錛堝彲浠ヨ繍琛宒bverify瀹炵幇錛夛紝鍋囪涓猴紝鍋囧畾鏂囦歡緙栫爜涓恒傝繍琛屼笅闈㈢殑鏌ヨ鏌ユ壘孌靛悕錛? SELECT segment_name,segment_type,extent_id,block_id, blocks from dba_extents t where file_id = AND between block_id and (block_id + blocks - 1) 涓鏃︽壘鍒板潖孌靛悕縐幫紝鑻ユ鏄竴涓〃錛屽垯鏈濂藉緩绔嬩竴涓復鏃惰〃錛屽瓨鏀懼ソ鐨勬暟鎹傝嫢孌墊槸绱㈠紩錛屽垯鍒犻櫎瀹冿紝鍐嶉噸寤恒?br />create table good_table as select from bad_table where rowid not in (select rowid from bad_table where substr(rowid,10,6) = ) 鍦ㄨ繖閲岃娉ㄦ剰8浠ュ墠鐨勫彈闄怰OWID涓庣幇鍦≧OWID鐨勫樊鍒?br />榪樺彲浠ヤ嬌鐢ㄨ瘖鏂簨浠?0231 SQL> ALTER SYSTEM SET EVENTS '10231 trace name context forever,level 10'; 鍒涘緩涓涓復鏃惰〃good_table鐨勮〃涓櫎鍧忓潡鐨勬暟鎹兘媯绱㈠嚭鏉?br />SQL>CREATE TABLE good_table as select * from bad_table; 鏈鍚庡叧闂瘖鏂簨浠?br />SQL> ALTER SYSTEM SET EVENTS '10231 trace name context off '; 鍏充簬ROWID鐨勭粨鏋勶紝榪樺彲浠ュ弬鑰僤bms_rowid.rowid_create鍑芥暟銆?br />[Q]鎴戝垱寤轟簡鏁版嵁搴撶殑鎵鏈夌敤鎴鳳紝鎴戝彲浠ュ垹闄よ繖浜涚敤鎴峰悧 [A]ORACLE鏁版嵁搴撳垱寤虹殑鏃跺欙紝鍒涘緩浜嗕竴緋誨垪榛樿鐨勭敤鎴峰拰琛ㄧ┖闂達紝浠ヤ笅鏄粬浠殑鍒楄〃 路SYS/CHANGE_ON_INSTALL or INTERNAL 緋葷粺鐢ㄦ埛錛屾暟鎹瓧鍏告墍鏈夎咃紝瓚呯駭鏉冮檺鎵鏈夎?SYSDBA) 鍒涘緩鑴氭湰錛?/rdbms/admin/sql.bsq and various cat*.sql 寤鴻鍒涘緩鍚庣珛鍗充慨鏀瑰瘑鐮?br />姝ょ敤鎴蜂笉鑳借鍒犻櫎 路SYSTEM/MANAGER 鏁版嵁搴撻粯璁ょ鐞嗙敤鎴鳳紝鎷ユ湁DBA瑙掕壊鏉冮檺 鍒涘緩鑴氭湰錛?/rdbms/admin/sql.bsq 寤鴻鍒涘緩鍚庣珛鍗充慨鏀瑰瘑鐮?br />姝ょ敤鎴蜂笉鑳借鍒犻櫎 路OUTLN/OUTLN 浼樺寲璁″垝鐨勫瓨鍌ㄥぇ綰茬敤鎴?br />鍒涘緩鑴氭湰錛?/rdbms/admin/sql.bsq 寤鴻鍒涘緩鍚庣珛鍗充慨鏀瑰瘑鐮?br />姝ょ敤鎴蜂笉鑳借鍒犻櫎 --------------------------------------------------- 路SCOTT/TIGER, ADAMS/WOOD, JONES/STEEL, CLARK/CLOTH and BLAKE/PAPER. 瀹為獙銆佹祴璇曠敤鎴鳳紝鍚湁渚嬭〃EMP涓嶥EPT 鍒涘緩鑴氭湰錛?/rdbms/admin/utlsampl.sql 鍙互淇敼瀵嗙爜 鐢ㄦ埛鍙互琚垹闄わ紝鍦ㄤ駭鍝佺幆澧冨緩璁垹闄ゆ垨閿佸畾 路HR/HR (Human Resources), OE/OE (Order Entry), SH/SH (Sales History). 瀹為獙銆佹祴璇曠敤鎴鳳紝鍚湁渚嬭〃EMPLOYEES涓嶥EPARTMENTS 鍒涘緩鑴氭湰錛?/demo/schema/mksample.sql 鍙互淇敼瀵嗙爜 鐢ㄦ埛鍙互琚垹闄わ紝鍦ㄤ駭鍝佺幆澧冨緩璁垹闄ゆ垨閿佸畾 路DBSNMP/DBSNMP Oracle Intelligent agent 鍒涘緩鑴氭湰錛?/rdbms/admin/catsnmp.sql, called from catalog.sql 鍙互鏀瑰彉瀵嗙爜--闇瑕佹斁緗柊瀵嗙爜鍒皊nmp_rw.ora鏂囦歡 濡傛灉涓嶉渶瑕両ntelligent Agents錛屽彲浠ュ垹闄?br />--------------------------------------------------- 浠ヤ笅鐢ㄦ埛閮芥槸鍙夊畨瑁呯敤鎴?濡傛灉涓嶉渶瑕侊紝灝變笉闇瑕佸畨瑁?br />路CTXSYS/CTXSYS Oracle interMedia (ConText Cartridge)綆$悊鐢ㄦ埛 鍒涘緩鑴氭湰錛?/ctx/admin/dr0csys.sql 路TRACESVR/TRACE Oracle Trace server 鍒涘緩鑴氭湰錛?/rdbms/admin/otrcsvr.sql 路ORDPLUGINS/ORDPLUGINS Object Relational Data (ORD) User used by Time Series, etc. 鍒涘緩鑴氭湰錛?/ord/admin/ordinst.sql 路ORDSYS/ORDSYS Object Relational Data (ORD) User used by Time Series, etc 鍒涘緩鑴氭湰錛?/ord/admin/ordinst.sql 路DSSYS/DSSYS Oracle Dynamic Services and Syndication Server 鍒涘緩鑴氭湰錛?/ds/sql/dssys_init.sql 路MDSYS/MDSYS Oracle Spatial administrator user 鍒涘緩鑴氭湰錛?/ord/admin/ordinst.sql 路AURORA$ORB$UNAUTHENTICATED/INVALID Used for users who do not authenticate in Aurora/ORB 鍒涘緩鑴氭湰錛?/javavm/install/init_orb.sql called from ?/javavm/install/initjvm.sql 路PERFSTAT/PERFSTAT Oracle Statistics Package (STATSPACK) that supersedes UTLBSTAT/UTLESTAT 鍒涘緩鑴氭湰錛?/rdbms/admin/statscre.sql
[Q]鎬庝箞鏍鋒煡璇㈢壒孌婂瓧絎︼紝濡傞氶厤絎?涓巁
[A]select * from table where name like 'A\_%' escape '\' [Q]濡備綍鎻掑叆鍗曞紩鍙峰埌鏁版嵁搴撹〃涓?/font> [A]鍙互鐢ˋSCII鐮佸鐞嗭紝鍏跺畠鐗規畩瀛楃濡?amp;涔熶竴鏍鳳紝濡? insert into t values('i'||chr(39)||'m'); -- chr(39)浠h〃瀛楃' 鎴栬呯敤涓や釜鍗曞紩鍙瘋〃紺轟竴涓?br />or insert into t values('I''m'); -- 涓や釜''鍙互琛ㄧず涓涓? [Q]鎬庢牱璁劇疆浜嬪姟涓鑷存?/font> [A]set transaction [isolation level] read committed; 榛樿璇彞綰т竴鑷存?br />set transaction [isolation level] serializable; read only; 浜嬪姟綰т竴鑷存?br />[Q]鎬庝箞鏍峰埄鐢ㄦ父鏍囨洿鏂版暟鎹?/font> [A]cursor c1 is select * from tablename where name is null for update [of column] 鈥︹?br />update tablename set column = 鈥︹?br />where current of c1; [Q]鎬庢牱鑷畾涔夊紓甯?/font> [A] pragma_exception_init(exception_name,error_number); 濡傛灉绔嬪嵆鎶涘嚭寮傚父 raise_application_error(error_number,error_msg,true|false); 鍏朵腑number浠?20000鍒?20999錛岄敊璇俊鎭渶澶?048B 寮傚父鍙橀噺 SQLCODE 閿欒浠g爜 SQLERRM 閿欒淇℃伅 [Q]鍗佽繘鍒朵笌鍗佸叚榪涘埗鐨勮漿鎹?/font> [A]8i浠ヤ笂鐗堟湰錛?br />to_char(100,'XX') to_number('4D','XX') 8i浠ヤ笅鐨勮繘鍒朵箣闂寸殑杞崲鍙傝冨涓嬭剼鏈?br />create or replace function to_base( p_dec in number, p_base in number ) return varchar2 is l_str varchar2(255) default NULL; l_num number default p_dec; l_hex varchar2(16) default '0123456789ABCDEF'; begin if ( p_dec is null or p_base is null ) then return null; end if; if ( trunc(p_dec) p_dec OR p_dec 20; [Q]鎬庝箞鏍鋒娊鍙栭噸澶嶈褰?/font> [A]select * from table t1 where where t1.rowed != (select max(rowed) from table t2 where t1.id=t2.id and t1.name=t2.name) 鎴栬?br />select count(*), t.col_a,t.col_b from table t group by col_a,col_b having count(*)>1 濡傛灉鎯沖垹闄ら噸澶嶈褰曪紝鍙互鎶婄涓涓鍙ョ殑select鏇挎崲涓篸elete [Q]鎬庝箞鏍瘋緗嚜娌諱簨鍔?/font> [A]8i浠ヤ笂鐗堟湰錛屼笉褰卞搷涓諱簨鍔?br />pragma autonomous_transaction; 鈥︹?br />commit|rollback; [Q]鎬庝箞鏍峰湪榪囩▼涓殏鍋滄寚瀹氭椂闂?/font> [A]DBMS_LOCK鍖呯殑sleep榪囩▼ 濡傦細dbms_lock.sleep(5);琛ㄧず鏆傚仠5縐掋?br />[Q]鎬庝箞鏍峰揩閫熻綆椾簨鍔$殑鏃墮棿涓庢棩蹇楅噺 [A]鍙互閲囩敤綾諱技濡備笅鐨勮剼鏈?br />DECLARE start_time NUMBER; end_time NUMBER; start_redo_size NUMBER; end_redo_size NUMBER; BEGIN start_time := dbms_utility.get_time; SELECT VALUE INTO start_redo_size FROM v$mystat m,v$statname s WHERE m.STATISTIC#=s.STATISTIC# AND s.NAME='redo size'; --transaction start INSERT INTO t1 SELECT * FROM All_Objects; --other dml statement COMMIT; end_time := dbms_utility.get_time; SELECT VALUE INTO end_redo_size FROM v$mystat m,v$statname s WHERE m.STATISTIC#=s.STATISTIC# AND s.NAME='redo size'; dbms_output.put_line('Escape Time:'||to_char(end_time-start_time)||' centiseconds'); dbms_output.put_line('Redo Size:'||to_char(end_redo_size-start_redo_size)||' bytes'); END; [Q]鎬庢牱鍒涘緩涓存椂琛?/font> [A]8i浠ヤ笂鐗堟湰 create global temporary tablename(column list) on commit preserve rows; --鎻愪氦淇濈暀鏁版嵁 浼氳瘽涓存椂琛?br />on commit delete rows; --鎻愪氦鍒犻櫎鏁版嵁 浜嬪姟涓存椂琛?br />涓存椂琛ㄦ槸鐩稿浜庝細璇濈殑錛屽埆鐨勪細璇濈湅涓嶅埌璇ヤ細璇濈殑鏁版嵁銆?br />[Q]鎬庝箞鏍峰湪PL/SQL涓墽琛孌DL璇彞 [A]1銆?i浠ヤ笅鐗堟湰dbms_sql鍖?br />2銆?i浠ヤ笂鐗堟湰榪樺彲浠ョ敤 execute immediate sql; dbms_utility.exec_ddl_statement('sql'); [Q]鎬庝箞鏍瘋幏鍙朓P鍦板潃 [A]鏈嶅姟鍣?817浠ヤ笂)錛歶tl_inaddr.get_host_address 瀹㈡埛绔細sys_context('userenv','ip_address') [Q]鎬庝箞鏍峰姞瀵嗗瓨鍌ㄨ繃紼?/font> [A]鐢╳rap鍛戒護錛屽錛堝亣瀹氫綘鐨勫瓨鍌ㄨ繃紼嬩繚瀛樹負a.sql錛?br />wrap iname=a.sql PL/SQL Wrapper: Release 8.1.7.0.0 - Production on Tue Nov 27 22:26:48 2001 Copyright (c) Oracle Corporation 1993, 2000. All Rights Reserved. Processing a.sql to a.plb 鎻愮ずa.sql杞崲涓篴.plb錛岃繖灝辨槸鍔犲瘑浜嗙殑鑴氭湰錛屾墽琛宎.plb鍗沖彲鐢熸垚鍔犲瘑浜嗙殑瀛樺偍榪囩▼ [Q]鎬庝箞鏍峰湪ORACLE涓畾鏃惰繍琛屽瓨鍌ㄨ繃紼?/font> [A]鍙互鍒╃敤dbms_job鍖呮潵瀹氭椂榪愯浣滀笟錛屽鎵ц瀛樺偍榪囩▼錛屼竴涓畝鍗曠殑渚嬪瓙錛屾彁浜や竴涓綔涓氾細 VARIABLE jobno number; BEGIN DBMS_JOB.SUBMIT(:jobno, 'ur_procedure;',SYSDATE,'SYSDATE + 1'); commit; END; 涔嬪悗錛屽氨鍙互鐢ㄤ互涓嬭鍙ユ煡璇㈠凡緇忔彁浜ょ殑浣滀笟 select * from user_jobs; [Q]鎬庝箞鏍蜂粠鏁版嵁搴撲腑鑾峰緱姣 [A]9i浠ヤ笂鐗堟湰錛屾湁涓涓猼imestamp綾誨瀷鑾峰緱姣錛屽 SQL>select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ssxff') time1, to_char(current_timestamp) time2 from dual; TIME1 TIME2 ----------------------------- ---------------------------------------------------------------- 2003-10-24 10:48:45.656000 24-OCT-03 10.48.45.656000 AM +08:00 鍙互鐪嬪埌錛屾縐掑湪to_char涓搴旂殑鏄疐F銆?br />8i浠ヤ笂鐗堟湰鍙互鍒涘緩涓涓涓嬬殑java鍑芥暟 SQL>create or replace and compile java source named "MyTimestamp" as import java.lang.String; import java.sql.Timestamp; public class MyTimestamp { public static String getTimestamp() { return(new Timestamp(System.currentTimeMillis())).toString(); } }; SQL>java created. 娉細娉ㄦ剰java鐨勮娉曪紝娉ㄦ剰澶у皬鍐?br />SQL>create or replace function my_timestamp return varchar2 as language java name 'MyTimestamp.getTimestamp() return java.lang.String'; / SQL>function created. SQL>select my_timestamp,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') ORACLE_TIME from dual; MY_TIMESTAMP ORACLE_TIME ------------------------ ------------------- 2003-03-17 19:15:59.688 2003-03-17 19:15:59 濡傛灉鍙兂鑾峰緱1/100縐?hsecs)錛岃繕鍙互鍒╃敤dbms_utility.get_time [Q]濡傛灉瀛樺湪灝辨洿鏂幫紝涓嶅瓨鍦ㄥ氨鎻掑叆鍙互鐢ㄤ竴涓鍙ュ疄鐜板悧 [A]9i宸茬粡鏀寔浜嗭紝鏄疢erge錛屼絾鏄彧鏀寔select瀛愭煡璇紝 濡傛灉鏄崟鏉℃暟鎹褰曪紝鍙互鍐欎綔select 鈥︹?from dual鐨勫瓙鏌ヨ銆?br />璇硶涓猴細 MERGE INTO table USING data_source ON (condition) WHEN MATCHED THEN update_clause WHEN NOT MATCHED THEN insert_clause; 濡?br />MERGE INTO course c USING (SELECT course_name, period, course_hours FROM course_updates) cu ON (c.course_name = cu.course_name AND c.period = cu.period) WHEN MATCHED THEN UPDATE SET c.course_hours = cu.course_hours WHEN NOT MATCHED THEN INSERT (c.course_name, c.period, c.course_hours) VALUES (cu.course_name, cu.period, cu.course_hours); [Q]鎬庝箞瀹炵幇宸﹁仈錛屽彸鑱斾笌澶栬仈 [A]鍦?i浠ュ墠鍙互榪欎箞鍐? 宸﹁仈錛?br />select a.id,a.name,b.address from a,b where a.id=b.id(+) 鍙寵仈: select a.id,a.name,b.address from a,b where a.id(+)=b.id 澶栬仈 SELECT a.id,a.name,b.address FROM a,b WHERE a.id = b.id(+) UNION SELECT b.id,'' name,b.address FROM b WHERE NOT EXISTS ( SELECT * FROM a WHERE a.id = b.id); 鍦?i浠ヤ笂錛屽凡緇忓紑濮嬫敮鎸丼QL99鏍囧噯錛屾墍浠ワ紝浠ヤ笂璇彞鍙互鍐欐垚錛?br />榛樿鍐呴儴鑱旂粨錛?br />select a.id,a.name,b.address,c.subject from (a inner join b on a.id=b.id) inner join c on b.name = c.name where other_clause 宸﹁仈 select a.id,a.name,b.address from a left outer join b on a.id=b.id where other_clause 鍙寵仈 select a.id,a.name,b.address from a right outer join b on a.id=b.id where other_clause 澶栬仈 select a.id,a.name,b.address from a full outer join b on a.id=b.id where other_clause or select a.id,a.name,b.address from a full outer join b using (id) where other_clause [Q]鎬庝箞瀹炵幇涓鏉¤褰曟牴鎹潯浠跺琛ㄦ彃鍏?/font> [A]9i浠ヤ笂鍙互閫氳繃Insert all璇彞瀹屾垚錛屼粎浠呮槸涓涓鍙ワ紝濡傦細 INSERT ALL WHEN (id=1) THEN INTO table_1 (id, name) values(id,name) WHEN (id=2) THEN INTO table_2 (id, name) values(id,name) ELSE INTO table_other (id, name) values(id, name) SELECT id,name FROM a; 濡傛灉娌℃湁鏉′歡鐨勮瘽錛屽垯瀹屾垚姣忎釜琛ㄧ殑鎻掑叆錛屽 INSERT ALL INTO table_1 (id, name) values(id,name) INTO table_2 (id, name) values(id,name) INTO table_other (id, name) values(id, name) SELECT id,name FROM a; [Q]濡備綍瀹炵幇琛屽垪杞崲 [A]1銆佸浐瀹氬垪鏁扮殑琛屽垪杞崲 濡?br />student subject grade --------------------------- student1 璇枃 80 student1 鏁板 70 student1 鑻辮 60 student2 璇枃 90 student2 鏁板 80 student2 鑻辮 100 鈥︹?br />杞崲涓? 璇枃 鏁板 鑻辮 student1 80 70 60 student2 90 80 100 鈥︹?br />璇彞濡備笅錛?br />select student,sum(decode(subject,'璇枃', grade,null)) "璇枃", sum(decode(subject,'鏁板', grade,null)) "鏁板", sum(decode(subject,'鑻辮', grade,null)) "鑻辮" from table group by student 2銆佷笉瀹氬垪琛屽垪杞崲 濡?br />c1 c2 -------------- 1 鎴?br />1 鏄?br />1 璋?br />2 鐭?br />2 閬?br />3 涓?br />鈥︹?br />杞崲涓?br />1 鎴戞槸璋?br />2 鐭ラ亾 3 涓?br />榪欎竴綾誨瀷鐨勮漿鎹㈠繀欏誨熷姪浜嶱L/SQL鏉ュ畬鎴愶紝榪欓噷緇欎竴涓緥瀛?br />CREATE OR REPLACE FUNCTION get_c2(tmp_c1 NUMBER) RETURN VARCHAR2 IS Col_c2 VARCHAR2(4000); BEGIN FOR cur IN (SELECT c2 FROM t WHERE c1=tmp_c1) LOOP Col_c2 := Col_c2||cur.c2; END LOOP; Col_c2 := rtrim(Col_c2,1); RETURN Col_c2; END; / SQL> select distinct c1 ,get_c2(c1) cc2 from table;鍗沖彲 [Q]鎬庝箞鏍峰疄鐜板垎緇勫彇鍓峃鏉¤褰?/font> [A]8i浠ヤ笂鐗堟湰錛屽埄鐢ㄥ垎鏋愬嚱鏁?br />濡傝幏鍙栨瘡涓儴闂ㄨ柂姘村墠涓夊悕鐨勫憳宸ユ垨姣忎釜鐝垚緇╁墠涓夊悕鐨勫鐢熴?br />Select * from (select depno,ename,sal,row_number() over (partition by depno order by sal desc) rn from emp) where rn host lsntctl start 鎴栬卽nix/linux騫沖彴涓?br />SQL>! windows騫沖彴涓?br />SQL>$ 鎬葷粨錛欻OST 鍙互鐩存帴鎵цOS鍛戒護銆? 澶囨敞錛歝d鍛戒護鏃犳硶姝g‘鎵ц銆?br />[Q]鎬庝箞璁劇疆瀛樺偍榪囩▼鐨勮皟鐢ㄨ呮潈闄?/font> [A]鏅氬瓨鍌ㄨ繃紼嬮兘鏄墍鏈夎呮潈闄愶紝濡傛灉鎯寵緗皟鐢ㄨ呮潈闄愶紝璇峰弬鑰冨涓嬭鍙?br />create or replace procedure 鈥︹?) AUTHID CURRENT_USER As begin 鈥︹?br />end; [Q]鎬庝箞蹇熻幏寰楃敤鎴蜂笅姣忎釜琛ㄦ垨琛ㄥ垎鍖虹殑璁板綍鏁?/font> [A]鍙互鍒嗘瀽璇ョ敤鎴鳳紝鐒跺悗鏌ヨuser_tables瀛楀吀錛屾垨鑰呴噰鐢ㄥ涓嬭剼鏈嵆鍙?br />SET SERVEROUTPUT ON SIZE 20000 DECLARE miCount INTEGER; BEGIN FOR c_tab IN (SELECT table_name FROM user_tables) LOOP EXECUTE IMMEDIATE 'select count(*) from "' || c_tab.table_name || '"' into miCount; dbms_output.put_line(rpad(c_tab.table_name,30,'.') || lpad(miCount,10,'.')); --if it is partition table SELECT COUNT(*) INTO miCount FROM User_Part_Tables WHERE table_name = c_tab.table_name; IF miCount >0 THEN FOR c_part IN (SELECT partition_name FROM user_tab_partitions WHERE table_name = c_tab.table_name) LOOP EXECUTE IMMEDIATE 'select count(*) from ' || c_tab.table_name || ' partition (' || c_part.partition_name || ')' INTO miCount; dbms_output.put_line(' '||rpad(c_part.partition_name,30,'.') || lpad(miCount, 10,'.')); END LOOP; END IF; END LOOP; END; [A]鎬庝箞鍦∣racle涓彂閭歡 [Q]鍙互鍒╃敤utl_smtp鍖呭彂閭歡錛屼互涓嬫槸涓涓彂閫佺畝鍗曢偖浠剁殑渚嬪瓙紼嬪簭 /**************************************************************************** parameter: Rcpter in varchar2 鎺ユ敹鑰呴偖綆?br />Mail_Content in Varchar2 閭歡鍐呭 desc: 路鍙戦侀偖浠跺埌鎸囧畾閭 路鍙兘鎸囧畾涓涓偖綆憋紝濡傛灉闇瑕佸彂閫佸埌澶氫釜閭錛岄渶瑕佸彟澶栫殑杈呭姪紼嬪簭 ****************************************************************************/ CREATE OR REPLACE PROCEDURE sp_send_mail( rcpter IN VARCHAR2, mail_content IN VARCHAR2) IS conn utl_smtp.connection; --write title PROCEDURE send_header(NAME IN VARCHAR2, HEADER IN VARCHAR2) AS BEGIN utl_smtp.write_data(conn, NAME||': '|| HEADER||utl_tcp.CRLF); END; BEGIN --opne connect conn := utl_smtp.open_connection('smtp.com'); utl_smtp.helo(conn, 'oracle'); utl_smtp.mail(conn, 'oracle info'); utl_smtp.rcpt(conn, Rcpter); utl_smtp.open_data(conn); --write title send_header('From', 'Oracle Database'); send_header('To', '"Recipient" '); send_header('Subject', 'DB Info'); --write mail content utl_smtp.write_data(conn, utl_tcp.crlf || mail_content); --close connect utl_smtp.close_data(conn); utl_smtp.quit(conn); EXCEPTION WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN BEGIN utl_smtp.quit(conn); EXCEPTION WHEN OTHERS THEN NULL; END; WHEN OTHERS THEN NULL; END sp_send_mail; [A]鎬庝箞鏍峰湪Oracle涓啓鎿嶄綔緋葷粺鏂囦歡錛屽鍐欐棩蹇?/font> [Q]鍙互鍒╃敤utl_file鍖咃紝浣嗘槸錛屽湪姝や箣鍓嶏紝瑕佹敞鎰忚緗ソUtl_file_dir鍒濆鍖栧弬鏁?br />/************************************************************************** parameter:textContext in varchar2 鏃ュ織鍐呭 desc: 路鍐欐棩蹇?鎶婂唴瀹硅鍒版湇鍔″櫒鎸囧畾鐩綍涓?br />路蹇呴』閰嶇疆Utl_file_dir鍒濆鍖栧弬鏁幫紝騫朵繚璇佹棩蹇楄礬寰勪笌Utl_file_dir璺緞涓鑷存垨鑰呮槸鍏朵腑涓涓?br />****************************************************************************/ CREATE OR REPLACE PROCEDURE sp_Write_log(text_context VARCHAR2) IS file_handle utl_file.file_type; Write_content VARCHAR2(1024); Write_file_name VARCHAR2(50); BEGIN --open file write_file_name := 'db_alert.log'; file_handle := utl_file.fopen('/u01/logs',write_file_name,'a'); write_content := to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss')||'||'||text_context; --write file IF utl_file.is_open(file_handle) THEN utl_file.put_line(file_handle,write_content); END IF; --close file utl_file.fclose(file_handle); EXCEPTION WHEN OTHERS THEN BEGIN IF utl_file.is_open(file_handle) THEN utl_file.fclose(file_handle); END IF; EXCEPTION WHEN OTHERS THEN NULL; END; END sp_Write_log;
create or replace procedure update_commission 銆(v_dept in number,v_pervent in number default 10) is begin 銆update emp 銆set comm=sal*v_percent 銆where deptno=v_dept; end
FUNCTION name [{parameter[,parameter,...])] RETURN datatypes IS [local declarations] BEGIN execute statements [EXCEPTION exception handlers] END [name]