锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
]]>
]]>
鍦╬lsql developer 錛岄夋嫨procedure銆?test 銆媠tart debug
SQL> grant debug connect session to mw;
SQL> grant select on v_$session to mw;
鎺堟潈鎴愬姛銆?/p>
SQL> grant select on v_$sesstat to mw;
鎺堟潈鎴愬姛銆?/p>
SQL> grant select on v_$statname to mw;
鎺堟潈鎴愬姛銆?/p>
浠誨姟瀹屾垚銆?/p>
銆銆瀵逛簬琛ㄨ岃█(甯歌鎰忎箟涓婄殑鍫嗙粍緇囪〃)錛屼笂榪板垎鍖哄艦寮忛兘鍙互搴旂敤(鐢氳嚦鍙互瀵規(guī)煇涓垎鍖烘寚瀹歝ompress灞炴?錛屽彧涓嶈繃鍒嗗尯渚濊禆鍒椾笉鑳芥槸lob,long涔嬬被鏁版嵁綾誨瀷錛屾瘡涓〃鐨勫垎鍖烘垨瀛愬垎鍖烘暟鐨勬繪暟涓嶈兘瓚呰繃1023涓?/font>
銆銆瀵逛簬绱㈠紩緇勭粐琛紝鍙兘澶熸敮鎸佹櫘閫氬垎鍖烘柟寮忥紝涓嶆敮鎸佺粍鍚堝垎鍖猴紝甯歌琛ㄧ殑闄愬埗瀵逛簬绱㈠紩緇勭粐琛ㄥ悓鏍鋒湁鏁堬紝闄ゆ涔嬪鍛紝榪樻湁涓浜涘叾瀹炵殑闄愬埗錛屾瘮濡傝姹傜儲(chǔ)寮曠粍緇囪〃鐨勫垎鍖轟緷璧栧垪蹇呴』鏄富閿墠鍙互絳夈?/font>
銆銆娉細(xì)鏈瘒鎵鏈夌ず渚嬩粎閽堝甯歌琛紝鍗沖爢緇勭粐琛?
銆銆瀵逛簬绱㈠紩錛岄渶瑕佸尯鍒嗗垱寤虹殑鏄叏灞绱㈠紩錛屾垨鏈湴绱㈠紩錛?/font>
銆銆l 鍏ㄥ眬绱㈠紩(global index)錛氬嵆鍙互鍒嗗尯錛屼篃鍙互涓嶅垎鍖恒傚嵆鍙互寤簉ange鍒嗗尯錛屼篃鍙互寤篽ash鍒嗗尯錛屽嵆鍙緩浜庡垎鍖鴻〃錛屽張鍙垱寤轟簬闈炲垎鍖鴻〃涓婏紝灝辨槸璇達(dá)紝鍏ㄥ眬绱㈠紩鏄畬鍏ㄧ嫭绔嬬殑錛屽洜姝ゅ畠涔熼渶瑕佹垜浠洿澶氱殑緇存姢鎿嶄綔銆?/font>
銆銆l 鏈湴绱㈠紩(local index)錛氬叾鍒嗗尯褰㈠紡涓庤〃鐨勫垎鍖哄畬鍏ㄧ浉鍚岋紝渚濊禆鍒楃浉鍚岋紝瀛樺偍灞炴т篃鐩稿悓銆傚浜庢湰鍦扮儲(chǔ)寮曪紝鍏剁儲(chǔ)寮曞垎鍖虹殑緇存姢鑷姩榪涜錛屽氨鏄浣燼dd/drop/split/ truncate 琛ㄧ殑鍒嗗尯鏃訛紝鏈湴绱㈠紩浼?xì)鑷姩缁存姢鍏剁储寮曞垎鍖恒?/font>
銆銆 Oracle 寤鴻濡傛灉鍗曚釜琛ㄨ秴榪?G灝辨渶濂藉鍏惰繘琛屽垎鍖猴紝瀵逛簬澶ц〃鍒涘緩鍒嗗尯鐨勫ソ澶勬槸鏄捐屾槗瑙佺殑錛岃繖閲屼笉澶氳榪皐hy錛岃屽皢閲嶇偣鏀懼湪when浠ュ強(qiáng)how銆?/font>
銆銆WHEN
銆銆涓銆乄hen浣跨敤Range鍒嗗尯
銆銆Range鍒嗗尯鍛㈡槸搴旂敤鑼冨洿姣旇緝騫跨殑琛ㄥ垎鍖烘柟寮忥紝瀹冩槸浠ュ垪鐨勫肩殑鑼冨洿鏉ュ仛涓哄垎鍖虹殑鍒掑垎鏉′歡錛屽皢璁板綍瀛樻斁鍒板垪鍊兼墍鍦ㄧ殑range鍒嗗尯涓紝姣斿鎸夌収鏃墮棿鍒掑垎錛?008騫?瀛e害鐨勬暟鎹斁鍒癮鍒嗗尯錛?8騫?瀛e害鐨勬暟鎹斁鍒癰鍒嗗尯錛屽洜姝ゅ湪鍒涘緩鐨勬椂鍊欏憿錛岄渶瑕佷綘鎸囧畾鍩轟簬鐨勫垪錛屼互鍙?qiáng)鍒嗗尯鐨勮寖鍥村鹼紝濡傛灉鏌愪簺璁板綍鏆傛棤娉曢嫻嬭寖鍥達(dá)紝鍙互鍒涘緩maxvalue鍒嗗尯錛屾墍鏈変笉鍦ㄦ寚瀹氳寖鍥村唴鐨勮褰曢兘浼?xì)琚瓨鍌ㄥ埌maxvalue鎵鍦ㄥ垎鍖轟腑錛屽茍涓旀敮鎸佹寚瀹氬鍒楀仛涓轟緷璧栧垪錛屽悗闈㈠湪璁瞙ow鐨勬椂鍊欎細(xì)璇︾粏璋堝埌銆?/font>
銆銆浜屻乄hen浣跨敤Hash鍒嗗尯
銆銆閫氬父鍛紝瀵逛簬閭d簺鏃犳硶鏈夋晥鍒掑垎鑼冨洿鐨勮〃錛屽彲浠ヤ嬌鐢╤ash鍒嗗尯錛岃繖鏍峰浜庢彁楂樻ц兘榪樻槸浼?xì)鏈変竴瀹氱殑甯姪銆俬ash 鍒嗗尯浼?xì)灏嗚〃涓殑鏁版嵁邈^鍧囧垎閰嶅埌浣犳寚瀹氱殑鍑犱釜鍒嗗尯涓紝鍒楁墍鍦ㄥ垎鍖烘槸渚濇嵁鍒嗗尯鍒楃殑hash鍊艱嚜鍔ㄥ垎閰嶏紝鍥犳浣犲茍涓嶈兘鎺у埗涔熶笉鐭ラ亾鍝潯璁板綍浼?xì)琚攽謭板摢涓垎鍖轰腑锛宧ash鍒嗗尯涔熷彲浠ユ敮鎸佸涓緷璧栧垪銆?/font>
銆銆涓夈乄hen浣跨敤List鍒嗗尯
銆銆List鍒嗗尯涓巖ange鍒嗗尯鍜宧ash鍒嗗尯閮芥湁綾諱技涔嬪錛岃鍒嗗尯涓巖ange鍒嗗尯綾諱技鐨勬槸涔熼渶瑕佷綘鎸囧畾鍒楃殑鍊鹼紝浣嗚繖鍙堜笉鍚屼笌range鍒嗗尯鐨勮寖鍥村紡鍒楀?--鍏跺垎鍖哄煎繀欏繪槑紜寚瀹氾紝涔熶笉鍚屼笌hash鍒嗗尯---閫氳繃鏄庣‘鎸囧畾鍒嗗尯鍊鹼紝浣犺兘鎺у埗璁板綍瀛樺偍鍦ㄥ摢涓垎鍖恒傚畠鐨勫垎鍖哄垪鍙兘鏈変竴涓紝鑰屼笉鑳藉儚range鎴栬卙ash鍒嗗尯閭f牱鍚屾椂鎸囧畾澶氫釜鍒楀仛涓哄垎鍖轟緷璧栧垪錛屼笉榪囧憿錛屽畠鐨勫崟涓垎鍖哄搴斿煎彲浠ユ槸澶氫釜銆?/font>
銆銆浣犲湪鍒嗗尯鏃跺繀欏葷‘瀹氬垎鍖哄垪鍙兘瀛樺湪鐨勫鹼紝涓鏃︽彃鍏ョ殑鍒楀間笉鍦ㄥ垎鍖鴻寖鍥村唴錛屽垯鎻掑叆/鏇存柊灝變細(xì)澶辮觸錛屽洜姝ら氬父寤鴻浣跨敤list鍒嗗尯鏃訛紝瑕佸垱寤轟竴涓猟efault鍒嗗尯瀛樺偍閭d簺涓嶅湪鎸囧畾鑼冨洿鍐呯殑璁板綍錛岀被浼紃ange鍒嗗尯涓殑maxvalue鍒嗗尯銆?/font>
銆銆鍥涖乄hen浣跨敤緇勫悎鍒嗗尯
銆銆濡傛灉鏌愯〃鎸夌収鏌愬垪鍒嗗尯涔嬪悗錛屼粛鐒惰緝澶э紝鎴栬呮槸涓浜涘叾瀹冪殑闇姹傦紝榪樺彲浠ラ氳繃鍒嗗尯鍐呭啀寤哄瓙鍒嗗尯鐨勬柟寮忓皢鍒嗗尯鍐嶅垎鍖猴紝鍗崇粍鍚堝垎鍖虹殑鏂瑰紡銆?/font>
銆銆緇勫悎鍒嗗尯鍛㈠湪10g涓湁涓ょ錛歳ange-hash錛宺ange-list銆傛敞鎰忛『搴忓摕錛屾牴鍒嗗尯鍙兘鏄痳ange鍒嗗尯錛屽瓙鍒嗗尯鍙互鏄痟ash鍒嗗尯鎴杔ist鍒嗗尯銆?/font>
銆銆鎻愮ず錛?1g鍦ㄧ粍鍚堝垎鍖哄姛鑳借繖鍧楁湁鎵澧炲己錛屽張鎺ㄥ嚭浜?jiǎn)range-range,list-range,list-list,list-hash錛岃繖灝辯浉褰撲簬闄ash澶栦笁縐嶅垎鍖?聽
鍒涘緩range-hash緇勫悎鍒嗗尯
銆銆璇硶濡備笅錛氬浘
銆銆
銆銆闇瑕佹垜浠寚瀹氱殑鏈夛細(xì)
銆銆 column_list:鍒嗗尯渚濊禆鍒?鏀寔澶氫釜錛屼腑闂翠互閫楀彿鍒嗛殧);
銆銆 聽subpartition:瀛愬垎鍖烘柟寮忥紝鏈変袱澶勶細(xì)
銆銆 Subpartition_by_list:璇硶涓巐ist鍒嗗尯瀹屽叏鐩稿悓錛屽彧涓嶈繃鎶婂叧閿瓧partition鎹㈡垚subpartition
銆銆 聽Subpartition_by_hash:璇硶涓巋ash鍒嗗尯瀹屽叏鐩稿悓錛屽彧涓嶈繃鎶婂叧閿瓧partition鎹㈡垚subpartition
銆銆 聽partition:鍒嗗尯鍚嶇О;
銆銆 聽range_partition_values_clause:涓巖ange鍒嗗尯鑼冨洿鍊肩殑璇硶;
銆銆 tablespace_clause:鍒嗗尯鐨勫瓨鍌ㄥ睘鎬э紝渚嬪鎵鍦ㄨ〃絀洪棿絳夊睘鎬?鍙負(fù)絀?錛岄粯璁ょ戶鎵垮熀琛ㄦ墍鍦ㄨ〃絀洪棿鐨勫睘鎬с?/p>
銆銆緇勫悎鍒嗗尯鐩稿浜庢櫘閫氬垎鍖猴紝璇硶涓婄◢紼嶅鏉備簡(jiǎn)涓浜涳紝浣嗕篃姝e洜濡傛錛屽叾瀛愬垎鍖虹殑鍒涘緩鍙互闈炲父鐏墊椿錛屼笅闈㈠垎鍒婦鍑犱釜渚嬪瓙(娉細(xì)浠呯ず渚嬶紝騫墮潪絀蜂婦鎵鏈夊艦寮?
銆銆鈶犮涓烘墍鏈夊垎鍖哄悇鍒涘緩4涓猦ash瀛愬垎鍖?/strong>
銆銆 聽create聽table聽t_partition_rh聽(id聽number,name聽varchar2(50))
銆銆 partition聽by聽range(id)聽subpartition聽by聽hash(name)
銆銆 聽subpartitions聽4聽store聽in聽(tbspart01,聽tbspart02,聽tbspart03,tbspart04)(
銆銆 partition聽t_r_p1聽values聽less聽than聽(10)聽tablespace聽tbspart01,
銆銆 聽partition聽t_r_p2聽values聽less聽than聽(20)聽tablespace聽tbspart02,
銆銆 聽partition聽t_r_p3聽values聽less聽than聽(30)聽tablespace聽tbspart03,
銆銆 聽partition聽t_r_pd聽values聽less聽than聽(maxvalue)聽tablespace聽tbspart04);
銆銆琛ㄥ凡鍒涘緩銆?
--聽聽聽聽 RYID NAME XMONE聽 XMTWO聽 XMTHREE
---------- ---- ------ ------ -------
--聽聽聽聽聽聽聽聽 1 寮典笁 闋呯洰涓 闋呯洰浜?闋呯洰涓?
--聽聽聽聽聽聽聽聽 2 鏉庡洓 闋呯洰涓聽聽聽聽聽聽聽聽
SQL > create聽table聽test ( name聽varchar2 ( 4 ), text聽聽varchar2 ( 9 ));
SQL > create聽view聽test_view聽 as聽 select聽text聽from聽test聽where聽name = userenv ( 'client_info' );
SQL > insert聽into聽test聽values ( 'zxx' , 'boy' );
SQL > insert聽into聽test聽values ( 'taw' , 'gril' );
SQL > commit ;
SQL > exec聽dbms_application_info . set_client_info ( 'zxx' );
SQL > select聽 *聽 from聽test_view ;
TEXT
---------
boy
--
a
create or replace type emp_type
as object (
empno number(4),
ename varchar2(10)
);
/
create or replace type emp_type_table as table of emp_type;
/
create or replace function emp_of_dept(p_deptno in number)
return emp_type_table
pipelined as
l_emp_type emp_type;
begin
for l_myrow in (select empno, ename from emp
where deptno = p_deptno) loop
l_emp_type := emp_type(l_myrow.empno, l_myrow.ename);
pipe row (l_emp_type);
end loop;
return;
end emp_of_dept;
/
select * from table(emp_of_dept(10));
EMPNO ENAME
---------- ----------
7782 CLARK
7839 KING
7934 MILLER
select * from table(emp_of_dept(30));
EMPNO ENAME
---------- ----------
7499 ALLEN
7521 WARD
7654 MARTIN
7698 BLAKE
7844 TURNER
7900 JAMES
Tom - what do you think about this?聽
Followup:聽
I think it is alot more code then:
create or replace聽
procedure foo( p_deptno in number, p_result_set out sys_refcursor )
as
begin
open p_result_set for
select empno, ename from emp where deptno = p_deptno;
end;
and having the client (which is doing Oracle stuff anyway) issue聽
begin foo( :n, :m ); end;
It'll be less performant as well.聽
Neat "trick" but not best practice.聽
create or replace function f_test(p_num in number)
return sys_refcursor
is
Result sys_refcursor;
begin
open Result for
select * from t1 t where t1.c1=p_num;
return(Result);
exception
when others then
raise;
end;
select f_test(1) from dual;
--INDEX BY Pl/sql鏁扮粍002
SET SERVEROUTPUT ON
declare
聽聽聽聽聽聽 type T_customerTab is table of t_customer%rowtype index by binary_integer;
聽聽聽聽聽聽 t_customers T_customerTab;
begin
聽聽聽聽聽聽聽聽聽 select * into t_customers(1) from t_customer where rownum = 1;聽聽聽聽
聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line( 'customer_name: '||t_customers(1).customer_id || ' customer_name: '||t_customers(1).customer_name);
end;
--DBMS_UTILITY.format_call_stack
SET SERVEROUTPUT ON
DECLARE
聽聽聽聽聽聽 v_CallStack聽聽聽聽聽 VARCHAR2(2000);
BEGIN
聽聽聽聽聽聽 DBMS_OUTPUT.put_line('C BEGIN');
聽聽聽聽聽聽 v_CallStack := DBMS_UTILITY.format_call_stack;
聽聽聽聽聽聽 DBMS_OUTPUT.put_line(v_CallStack);
聽聽聽聽聽聽 DBMS_OUTPUT.put_line('C END');
END;
--緇撴灉
/*
C BEGIN
----- PL/SQL Call Stack -----
聽 object聽聽聽聽聽 line聽 object
聽 handle聽聽聽 number聽 name
135576A4聽聽聽聽聽聽聽聽 5聽 anonymous block
C END
*/
/**
聽聽 CREATE OR REPLACE PROCEDURE C AS
聽聽聽聽聽聽聽 v_CallStack聽聽聽聽聽 VARCHAR2(2000);
聽聽 BEGIN
聽聽聽聽聽聽聽 v_CallStack := DBMS_UTILITY.format_call_stack;
聽聽 END C;
聽聽
聽聽 CREATE OR REPLACE PROCEDURE B AS
聽聽 BEGIN
聽聽聽聽聽聽聽 C;
聽聽 END B;
聽聽
聽聽 CREATE OR REPLACE PROCEDURE A AS
聽聽 BEGIN
聽聽聽聽聽聽聽 B;
聽聽 END A;
聽
聽
--綾諱技緇撴灉
C BEGIN
----- PL/SQL Call Stack -----
聽 object聽聽聽聽聽 line聽 object
聽 handle聽聽聽 number聽 name
135576A4聽聽聽聽聽聽聽聽 4聽 PROCEDURE C
135576A4聽聽聽聽聽聽聽聽 5聽 PROCEDURE B
135576A4聽聽聽聽聽聽聽聽 5聽 PROCEDURE A
135576A4聽聽聽聽聽聽聽聽 5聽 anonymous block
C END
*/
--EXCEPTION 001
SET SERVEROUTPUT ON
DECLARE
聽聽聽聽聽聽 A exception;
聽聽聽聽聽聽 B exception;
BEGIN聽聽
聽聽聽聽 RAISE B;
聽聽聽聽聽聽 BEGIN
聽聽聽聽聽聽聽聽聽聽聽聽聽 RAISE A;
聽聽聽聽聽聽 EXCEPTION
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 WHEN A THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('IN EXCEPTION A!');
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 WHEN B THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('IN EXCEPTION B!');聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽 END;聽
EXCEPTION
聽聽聽聽聽聽聽聽 WHEN A THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OUT EXCEPTION A!');
聽聽聽聽聽聽聽聽 WHEN B THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OUT EXCEPTION B!');聽聽
聽聽聽聽聽聽聽聽 WHEN OTHERS THEN
聽聽聽聽聽聽聽聽 ROLLBACK;聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OTHERS EXCEPTION!');聽聽
END;
--緇撴灉
--OUT EXCEPTION B!
--EXCEPTION 002
SET SERVEROUTPUT ON
DECLARE
聽聽聽聽聽聽 A exception;
聽聽聽聽聽聽 B exception;
BEGIN聽聽
聽聽聽聽聽聽 BEGIN
聽聽聽聽聽聽聽聽聽聽聽聽聽 RAISE A;
聽聽聽聽聽聽 EXCEPTION
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 WHEN A THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('IN EXCEPTION A!');
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 WHEN B THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('IN EXCEPTION B!');聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽 END;
聽聽聽 RAISE B;
EXCEPTION
聽聽聽聽聽聽聽聽 WHEN A THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OUT EXCEPTION A!');
聽聽聽聽聽聽聽聽 WHEN B THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OUT EXCEPTION B!');
聽聽聽聽聽聽聽聽 WHEN OTHERS THEN
聽聽聽聽聽聽聽聽 ROLLBACK;聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OTHERS EXCEPTION!');聽聽聽聽聽
END;
--緇撴灉
--IN EXCEPTION A!
--OUT EXCEPTION B!
--EXCEPTION 003
SET SERVEROUTPUT ON
DECLARE
聽聽聽聽聽聽 A exception;
聽聽聽聽聽聽 B exception;
BEGIN聽聽
聽聽聽聽聽聽 BEGIN
聽聽聽聽聽聽聽聽聽聽聽聽聽 RAISE A;
聽聽聽聽聽聽 EXCEPTION
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 WHEN B THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('IN EXCEPTION B!');聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽 END;
聽聽聽 RAISE B;
EXCEPTION
聽聽聽聽聽聽聽聽 WHEN A THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OUT EXCEPTION A!');
聽聽聽聽聽聽聽聽 WHEN B THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OUT EXCEPTION B!');聽
聽聽聽聽聽聽聽聽 WHEN OTHERS THEN
聽聽聽聽聽聽聽聽 ROLLBACK;聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OTHERS EXCEPTION!');聽聽聽聽
END;
--緇撴灉
--OUT EXCEPTION A!
--EXCEPTION 004
SET SERVEROUTPUT ON
DECLARE
聽聽聽聽聽聽 A exception;
聽聽聽聽聽聽 B exception;
聽聽聽聽聽聽 C exception;
BEGIN聽
聽聽 RAISE C;
聽聽聽聽聽聽 BEGIN
聽聽聽聽聽聽聽聽聽聽聽聽聽 RAISE A;
聽聽聽聽聽聽 EXCEPTION
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 WHEN B THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('IN EXCEPTION B!');聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽 END;
聽聽聽 RAISE B;
EXCEPTION
聽聽聽聽聽聽聽聽 WHEN A THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OUT EXCEPTION A!');
聽聽聽聽聽聽聽聽 WHEN B THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OUT EXCEPTION B!');聽
聽聽聽聽聽聽聽聽 WHEN OTHERS THEN
聽聽聽聽聽聽聽聽 ROLLBACK;聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OTHERS EXCEPTION!');聽聽聽聽
END;
--緇撴灉
--OTHERS EXCEPTION!
--EXCEPTION 005
SET SERVEROUTPUT ON
DECLARE
聽聽聽聽聽聽 A exception;
聽聽聽聽聽聽 B exception;
聽聽聽聽聽聽 C exception;
BEGIN聽
聽聽聽聽聽聽 BEGIN
聽聽聽聽聽聽聽聽聽聽聽聽聽 RAISE A;
聽聽聽聽聽聽 EXCEPTION
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 WHEN A THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 RAISE C;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 WHEN B THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('IN EXCEPTION B!');聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽 END;
聽聽聽 RAISE B;
EXCEPTION
聽聽聽聽聽聽聽聽 WHEN A THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OUT EXCEPTION B!');
聽聽聽聽聽聽聽聽 WHEN B THEN
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OUT EXCEPTION B!');聽
聽聽聽聽聽聽聽聽 WHEN OTHERS THEN
聽聽聽聽聽聽聽聽 ROLLBACK;聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('OTHERS EXCEPTION!');聽聽聽聽
END;
--緇撴灉錛?br />--OTHERS EXCEPTION!
--娓告爣FOR寰幆
SET SERVEROUTPUT ON
DECLARE
聽聽聽聽聽聽 v_t_customer t_customer%ROWTYPE;
聽聽聽聽聽聽 v_customer_id t_customer.customer_id%TYPE;
聽聽聽聽聽聽 v_customer_name t_customer.customer_name%TYPE;
聽聽聽聽聽聽 CURSOR c_t_customer IS
聽聽聽聽聽聽聽 --select customer_id,customer_name from t_customer where rownum <= 10;
聽聽聽聽聽聽聽 select * from t_customer where rownum <= 10;
BEGIN
聽聽聽聽聽聽 FOR v_t_customer IN c_t_customer LOOP
聽聽聽聽聽聽聽聽 dbms_output.put_line('customer_id :'||v_t_customer.customer_id||' customer_name :'||v_t_customer.customer_name);
聽聽聽聽聽聽 END LOOP;
EXCEPTION
聽聽聽聽聽聽聽聽 WHEN OTHERS THEN
聽聽聽聽聽聽聽聽 ROLLBACK;聽
聽聽聽聽聽聽聽聽 DBMS_OUTPUT.put_line('exception');聽
END;
select a.*, level
from t_industry a
start with industry_id聽 = 'B03'
connect by prior industry_id = parent_id
--connect String
select Substr('bbbcbdb',1,2) ||replace(Substr('bbbcbdb',3,4),'b','a') ||Substr('bbbcbdb',7,1) from dual
聽select Replace(customer_name, '->','') as all_customer_name,rownum from (
聽select sys_connect_by_path(customer_name, '->') customer_name from (
聽 select a.customer_name, (level - 1) ll,level l
聽 from t_customer a
聽 start with customer_id = 'SH02110000893' connect by prior parent_cust_id=customer_id order by l desc
聽 )
聽 connect by prior ll= l order by level desc
聽 ) c where rownum <2聽
鏍規(guī)嵁瀛楄妭鐐規(guī)煡鍑哄叏鍚?br />with temp as(
select a.*, (level - 1) ll, level l
聽 from t_content_type a
聽start with a.type_id = '20000000138418'
connect by prior a.parent_type_id = a.type_id
聽order by l desc
)
select sys_connect_by_path(temp.type_name, '/') path
聽 from temp
聽start with temp.parent_type_id = '0'
connect by prior temp.type_id = temp.parent_type_id
錛屽惎鍔╫raclehome92TNSlistener鏈嶅姟銆?br />2.database instance娌℃湁璧瘋搗鏉ャ倃indows騫沖彴濡備笅鎿嶄綔錛氬紑濮?--紼嬪簭---綆$悊宸ュ叿---鏈嶅姟錛屾墦寮鏈嶅姟
闈㈡澘錛屽惎鍔╫racleserviceXXXX,XXXX灝辨槸浣犵殑database SID.
3.娉ㄥ唽琛ㄩ棶棰樸俽egedit錛岀劧鍚庤繘鍏KEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0灝嗚鐜鍙橀噺
ORACLE_SID璁劇疆涓篨XXX,XXXX灝辨槸浣犵殑database SID.鎴栬呭彸鍑犳垜鐨勭數(shù)鑴戯紝灞炴?-楂樼駭--鐜鍙橀噺---緋葷粺
鍙橀噺--鏂板緩錛屽彉閲忓悕=oracle_sid,鍙橀噺鍊?XXXX,XXXX灝辨槸浣犵殑database SID.鎴栬呰繘鍏qlplus鍓嶏紝鍦?/p>
command line涓嬭緭set oracle_sid=XXXX,XXXX灝辨槸浣犵殑database SID.
緇忚繃浠ヤ笂姝ラ錛屽氨鍙互瑙e喅闂
1銆丱RA錛?2541錛歍NS錛氭病鏈夌洃鍚櫒
銆銆鍘熷洜錛氭病鏈夊惎鍔ㄧ洃鍚櫒鎴栬呯洃鍚櫒鎹熷潖銆傚鏋滄槸鍓嶈咃紝浣跨敤鍛戒護(hù)net start
OracleOraHome81TNSListener錛堝悕瀛楀彲鑳芥湁鍑哄叆錛夊嵆鍙紱濡傛灉鏄悗鑰咃紝鍒欎嬌鐢ㄢ淣et8 Configuration
Assistant鈥濆伐鍏峰悜瀵間箣鈥滅洃鍚▼搴忛厤緗濆鍔犱竴涓洃鍚櫒鍗沖彲錛堝熀鏈笉鐢ㄥ啓浠諱綍淇℃伅錛屼竴璺疧K銆傚湪娣誨姞
涔嬪墠鍙兘闇瑕佹妸鎵鏈夌殑鐩戝惉鍣ㄥ厛鍒犻櫎錛侊級(jí)
2銆丱RA錛?2500錛歍NS錛氱洃鍚▼搴忔棤娉曞惎鍔ㄤ笓鐢ㄦ湇鍔″櫒榪涚▼鎴朞RA錛?2560錛歍NS錛氬崗璁傞厤鍣ㄩ敊璇?br />銆銆鍘熷洜錛歄RACLE鐨勬暟鎹簱鏈嶅姟娌℃湁鍚姩銆備嬌鐢ㄥ懡浠et start ORACLESERVICEORADB錛圤RADB涓烘暟鎹簱鍚?/p>
瀛楋級(jí)鍗沖彲銆傚鏋滀粛娌℃湁瑙e喅錛岃緇х畫鍚戜笅鐪嬨?/p>
3銆佸鏋滄暟鎹簱鏈嶅姟鍚姩澶辮觸錛屽垯寰堟湁鍙兘鏄叾娉ㄥ唽琛ㄩ」鍊兼崯鍧忥紝鏈濂界殑鍋氭硶鏄互涓嬩袱姝ワ細(xì)
銆銆1錛塐RADIM -DELETE -SID oradb 鍒犻櫎鏁版嵁搴撴湇鍔¢」
銆銆2錛塐RADIM -NEW -SID oradb 鏂板鏁版嵁搴撴湇鍔¢」
銆銆娉細(xì)榪欎釜榪囩▼涓鏋滃嚭閿欙紝灝遍噸鍚綆楁満錛?br />4銆丱RA錛?2154錛歍NS錛氳兘瑙f瀽鏈嶅姟鍚?br />銆銆鍘熷洜錛歄RACLE鐨勭綉緇滄湇鍔″悕娌℃湁姝g‘閰嶇疆銆傝浣跨敤鈥淣et8 Configuration Assistant鈥濆伐鍏峰悜瀵間箣
鈥滄湰鍦扮綉緇滄湇鍔″悕閰嶇疆鈥濋厤緗甌NS鍗沖彲銆傚鏋滀粛娌℃湁瑙e喅錛岃緇х畫鍚戜笅鐪嬨?br />5銆丱RA錛?034 錛歍NS錛歄RACLE涓嶅彲鐢?br />銆銆鍘熷洜錛歄RACLE鐨勬暟鎹簱鏈嶅姟姝g‘鍚姩錛屼絾鏄暟鎹簱娌℃湁鎵撳紑錛?br />銆銆浣跨敤鍛戒護(hù)錛?br />銆銆1錛塻vrmgrl聽 鍚姩鏈嶅姟綆$悊鍣?br />銆銆2錛塩onnect internal 浠nternal韜喚鐧婚檰
銆銆3錛塻tartup聽 鎵撳紑鏁版嵁搴?br />6銆丱RA錛?2560錛歍NS錛氬崗璁傞厤鍣ㄩ敊璇紙欏藉浐鎬х殑錛?br />銆銆鍘熷洜錛氭湭鐭ャ?br />銆銆瑙e喅錛氬繀鏉鎶錛嶏紞鎵撳紑鈥淲indows浠誨姟綆$悊鍣ㄢ濓紝鏉姝籓RACLE.exe鍙?qiáng)ORADIM.exe榪涚▼錛屼功鍐欒嚜宸辯殑
ora_startup.bat錛屾墽琛屼箣錛?br />PS錛?br />1銆佹垜鐨刼ra_startup.bat錛?br />net start OracleOraHome81TNSListener
net start ORACLESERVICEORADB
svrmgrl 涓鑸儏鍐典笅涓嶇敤錛屼笉榪囨湁鏃跺皯涓嶄簡(jiǎn)瀹冪殑錛屽叿浣撴楠よ絎?姝ャ?br />2銆佹垜鐨刼ra_shutdown.bat錛?br />net stop OracleOraHome81TNSListener
net stop ORACLESERVICEORADB
銆?br />銆銆ORACLE_HOME=/u01/app/oracle/product/8.1.6
銆銆export ORACLE_HOME/顎掑寘鎷琌racle杞歡鐨勭洰褰曨?
銆銆LD_LIBRARY_PATH=/u01/app/oracle/product/8.1.6/lib;
銆銆export LD_LIBRARY_PATH
銆銆ORACLE_BASE=/u01/app/oracle
銆銆export ORACLE_BASE/顎掑寘鎷琌racle杞歡鐨勭洰褰曞拰綆$悊杞歡鐨勭洰褰曨?
銆銆ORACLE_SID=ORCL
銆銆export ORACLE_SID/顎掔己鐪佹暟鎹簱鐨勬爣璇嗩?
銆銆ORACLE_TERM=vt100
銆銆 export ORACLE_TERM
銆銆ORA_NLS33=/u01/app/oracle/product/8.1.6/
銆銆ocommon/nls/admin/data
銆銆export ORA_NLS33 /顎掕璦鏀寔顎?
銆銆PATH=$PATH: /u01/app/oracle/product/8.1.6/bin
銆銆export PATH