É豸ÉÏ£¬ËÙ¶È»áºÜÂý¡£
4£®²»Äܰ´±í»ò°´Óû§»Ö¸´¡£
Èȱ¸µÄÓÅȱµã
1£®¿ÉÔÚ±í¿Õ¼ä»òÊý¾ÝÎļþ¼¶±¸·Ý£¬±¸·Ýʱ¼ä¶Ì¡£
2£®±¸·ÝʱÊý¾Ý¿âÈÔ¿ÉʹÓá£
3£®¿É´ïµ½Ãë¼¶»Ö¸´£¨»Ö¸´µ½Ä³Ò»Ê±¼äµãÉÏ£©¡£
4£®¿É¶Ô¼¸ºõËùÓÐÊý¾Ý¿âʵÌå×÷»Ö¸´¡£
5£®»Ö¸´ÊÇ¿ìËٵģ¬ÔÚ´ó¶àÊýÇé¿öÏÂÔÚÊý¾Ý¿âÈÔ¹¤×÷ʱ»Ö¸´¡£
Èȱ¸·ÝµÄ²»×ãÊÇ£º
1£®²»Äܳö´í£¬·ñÔòºó¹ûÑÏÖØ¡£
2£®ÈôÈȱ¸·Ý²»³É¹¦£¬ËùµÃ½á¹û²»¿ÉÓÃÓÚʱ¼äµãµÄ»Ö¸´¡£
3£®ÒòÄÑÓÚά»¤£¬ËùÒÔÒªÌØ±ð×ÐϸСÐÄ£¬²»ÔÊÐí¡°ÒÔʧ°Ü¶ø¸æÖÕ¡±¡£
15. ½âÊÍdata block , extent ºÍ segmentµÄÇø±ð£¿
data block Êý¾Ý¿é£¬ÊÇoracle×îСµÄÂß¼µ¥Î»£¬Í¨³£oracle´Ó´ÅÅ̶ÁдµÄ¾ÍÊÇ¿é
extent Çø£¬ÊÇÓÉÈô¸É¸öÏàÁÚµÄblock×é³É
segment¶Î£¬ÊÇÓÐÒ»×éÇø×é³É
tablespace±í¿Õ¼ä£¬Êý¾Ý¿âÖÐÊý¾ÝÂß¼´æ´¢µÄµØ·½£¬Ò»¸ötablespace¿ÉÒÔ°üº¬¶à¸öÊý¾ÝÎļþ
16. ±È½ÏtruncateºÍdeleteÃüÁî £¿
1. Truncate ºÍdelete¶¼¿ÉÒÔ½²Êý¾ÝʵÌåɾµô£¬truncate µÄ²Ù×÷²¢²»¼Ç¼µ½ rollbackÈÕÖ¾£¬ËùÒÔ²Ù×÷ËٶȽϿ죬µ«Í¬Ê±Õâ¸öÊý¾Ý²¿Äָܻ´
2. Delete²Ù×÷²¿ÌÚ³ö±í¿Õ¼äµÄ¿Õ¼ä
3. Truncate ²»ÄܶÔÊÓͼµÈ½øÐÐɾ³ý
4. TruncateÊÇÊý¾Ý¶¨ÒåÓïÑÔ£¨DDL£©£¬¶ødeleteÊÇÊý¾Ý²Ù×ÝÓïÑÔ(DML)
17. ½âÊÍʲôÊÇËÀËø£¬ÈçºÎ½â¾öOracleÖеÄËÀËø£¿
¼òÑÔÖ®¾ÍÊÇ´æÔÚ¼ÓÁËËø¶øÃ»ÓнâËø£¬¿ÉÄÜÊÇʹÓÃËøÃ»ÓÐÌá½»»òÕ߻عöÊÂÎñ£¬Èç¹ûÊÇ±í¼¶ËøÔò²»ÄܲÙ×÷±í£¬¿Í»§¶Ë´¦ÓÚµÈÔÚ״̬£¬Èç¹ûÊÇÐм¶ËøÔò²»ÄܲÙ×÷Ëø¶¨ÐÐ
½â¾ö°ì·¨£º
1. ²éÕÒ³ö±»ËøµÄ±í
select b.owner,b.object_name,a.session_id,a.locked_mode
from v$locked_object a,dba_objects b
where b.object_id = a.object_id;
select b.username,b.sid,b.serial#,logon_time
from v$locked_object a,v$session b
where a.session_id = b.sid order by b.logon_time;
2. ɱ½ø³ÌÖеĻỰ
alter system kill session ¡®sid,serial#¡¯;
18. ¼òÊöoracleÖÐ dml¡¢ddl¡¢dclµÄʹÓÃ
Dml Êý¾Ý²Ù×ÝÓïÑÔ£¬Èçselect¡¢update¡¢delete£¬insert
Ddl Êý¾Ý¶¨ÒåÓïÑÔ£¬Èçcreate table ¡¢drop table µÈµÈ
Dcl Êý¾Ý¿ØÖÆÓïÑÔ£¬ Èç commit¡¢ rollback¡¢grant¡¢ invokeµÈ
19. ˵˵oracleÖеľ³£Ê¹Óõ½µÃº¯Êý
Length ³¤¶È¡¢ lower Сд¡¢upper ´óд£¬ to_date ת»¯ÈÕÆÚ£¬ to_charת»¯×Ö·û
Ltrim È¥×ó±ß¿Õ¸ñ¡¢ rtrimÈ¥Óұ߿ոñ£¬substrÈ¡×Ö´®£¬add_monthÔö¼Ó»òÕß¼õµôÔ·ݡ¢to_numberת±äΪÊý×Ö
20. ÔõÑù´´½¨Ò»¸ö´æ´¢¹ý³Ì, ÓαêÔÚ´æ´¢¹ý³ÌÔõôʹÓÃ, ÓÐʲôºÃ´¦
¸½£º´æ´¢¹ý³ÌµÄÒ»°ã¸ñʽ£¬ÓαêʹÓòο¼ÎÊÌâ
1 .ʹÓÃÓαê¿ÉÒÔÖ´Ðжà¸ö²»Ïà¹ØµÄ²Ù×÷.Èç¹ûÏ£Íûµ±²úÉúÁ˽á¹û¼¯ºó,¶Ô½á¹û¼¯ÖеÄÊý¾Ý½øÐжàÖÖ²»Ïà¹ØµÄÊý¾Ý²Ù×÷
2. ʹÓÃÓαê¿ÉÒÔÌṩ½Å±¾µÄ¿É¶ÁÐÔ
3. ʹÓÃÓαê¿ÉÒÔ½¨Á¢ÃüÁî×Ö·û´®,ʹÓÃÓαê¿ÉÒÔ´«ËͱíÃû,»òÕ߰ѱäÁ¿´«Ë͵½²ÎÊýÖÐ,ÒԱ㽨Á¢¿ÉÒÔÖ´ÐеÄÃüÁî×Ö·û´®.
µ«ÊǸöÈËÈÏΪÓαê²Ù×÷ЧÂʲ»Ì«¸ß£¬²¢ÇÒʹÓÃÊ±ÒªÌØ±ðСÐÄ£¬Ê¹ÓÃÍêºóÒª¼°Ê±¹Ø±Õ
´æ´¢¹ý³ÌÓÅȱµã£º
Óŵ㣺
1. ´æ´¢¹ý³ÌÔöÇ¿ÁËSQLÓïÑԵŦÄܺÍÁé»îÐÔ¡£´æ´¢¹ý³Ì¿ÉÒÔÓÃÁ÷¿ØÖÆÓï¾ä±àд£¬ÓкÜÇ¿µÄÁé»îÐÔ£¬¿ÉÒÔÍê³É¸´ÔÓµÄÅжϺͽϸ´ÔÓµÄÔËËã¡£
2. ¿É±£Ö¤Êý¾ÝµÄ°²È«ÐÔºÍÍêÕûÐÔ¡£
3£® ͨ¹ý´æ´¢¹ý³Ì¿ÉÒÔʹûÓÐȨÏÞµÄÓû§ÔÚ¿ØÖÆÖ®Ï¼ä½ÓµØ´æÈ¡Êý¾Ý¿â£¬´Ó¶ø±£Ö¤Êý¾ÝµÄ°²È«¡£
ͨ¹ý´æ´¢¹ý³Ì¿ÉÒÔʹÏà¹ØµÄ¶¯×÷ÔÚÒ»Æð·¢Éú£¬´Ó¶ø¿ÉÒÔά»¤Êý¾Ý¿âµÄÍêÕûÐÔ¡£
3. ÔÙÔËÐд洢¹ý³Ìǰ£¬Êý¾Ý¿âÒÑ¶ÔÆä½øÐÐÁËÓï·¨ºÍ¾ä·¨·ÖÎö£¬²¢¸ø³öÁËÓÅ»¯Ö´Ðз½°¸¡£ÕâÖÖÒѾ±àÒëºÃµÄ¹ý³Ì¿É¼«´óµØ¸ÄÉÆSQLÓï¾äµÄÐÔÄÜ¡£ ÓÉÓÚÖ´ÐÐSQLÓï¾äµÄ´ó²¿·Ö¹¤×÷ÒѾÍê³É£¬ËùÒÔ´æ´¢¹ý³ÌÄÜÒÔ¼«¿ìµÄËÙ¶ÈÖ´ÐС£
4. ¿ÉÒÔ½µµÍÍøÂçµÄͨÐÅÁ¿, ²»ÐèҪͨ¹ýÍøÂçÀ´´«ËͺܶàsqlÓï¾äµ½Êý¾Ý¿â·þÎñÆ÷ÁË
5. ʹÌåÏÖÆóÒµ¹æÔòµÄÔËËã³ÌÐò·ÅÈëÊý¾Ý¿â·þÎñÆ÷ÖУ¬ÒԱ㼯ÖпØÖÆ
µ±ÆóÒµ¹æÔò·¢Éú±ä»¯Ê±ÔÚ·þÎñÆ÷ÖÐ¸Ä±ä´æ´¢¹ý³Ì¼´¿É£¬ÎÞÐëÐÞ¸ÄÈκÎÓ¦ÓóÌÐò¡£ÆóÒµ¹æÔòµÄÌØµãÊÇÒª¾³£±ä»¯£¬Èç¹û°ÑÌåÏÖÆóÒµ¹æÔòµÄÔËËã³ÌÐò·ÅÈëÓ¦ÓóÌÐòÖУ¬Ôòµ±ÆóÒµ¹æÔò·¢Éú±ä»¯Ê±£¬¾ÍÐèÒªÐÞ¸ÄÓ¦ÓóÌÐò¹¤×÷Á¿·Ç³£Ö®´ó£¨Ð޸ġ¢·¢ÐкͰ²×°Ó¦ÓóÌÐò£©¡£Èç¹û°ÑÌåÏÖÆóÒµ¹æÔòµÄ ÔËËã·ÅÈë´æ´¢¹ý³ÌÖУ¬Ôòµ±ÆóÒµ¹æÔò·¢Éú±ä»¯Ê±£¬Ö»ÒªÐ޸Ĵ洢¹ý³Ì¾Í¿ÉÒÔÁË£¬Ó¦ÓóÌÐòÎÞÐëÈκα仯¡£
ȱµã£º
1. ¿ÉÒÆÖ²ÐÔ²î
2. Õ¼Ó÷þÎñÆ÷¶Ë¶àµÄ×ÊÔ´£¬¶Ô·þÎñÆ÷Ôì³ÉºÜ´óµÄѹÁ¦
3. ¿É¶ÁÐԺͿÉά»¤ÐÔ²»ºÃ
Create [or replace] procedure ¹ý³ÌÃû×Ö£¨²ÎÊý ¡£©as
vs_ym_sn_end CHAR(6); ¨CͬÆÚÖÕÖ¹Ô·Ý
CURSOR cur_1 IS ¨C¶¨ÒåÓαê(¼òµ¥µÄ˵¾ÍÊÇÒ»¸ö¿ÉÒÔ±éÀúµÄ½á¹û¼¯)
SELECT area_code,CMCODE,SUM(rmb_amt)/10000 rmb_amt_sn,SUM(usd_amt)/10000 usd_amt_sn
FROM BGD_AREA_CM_M_BASE_T
WHERE ym >= vs_ym_sn_beg
AND ym <= vs_ym_sn_end
GROUP BY area_code,CMCODE;
BEGIN
¨CÓÃÊäÈë²ÎÊý¸ø±äÁ¿¸³³õÖµ£¬Óõ½ÁËOralceµÄSUBSTR TO_CHAR ADD_MONTHS TO_DATE µÈºÜ³£Óõĺ¯Êý¡£
vs_ym_beg := SUBSTR(is_ym,1,6);
vs_ym_end := SUBSTR(is_ym,7,6);
vs_ym_sn_beg := TO_CHAR(ADD_MONTHS(TO_DATE(vs_ym_beg,¡¯yyyymm¡¯), -12),¡¯yyyymm¡¯);
vs_ym_sn_end := TO_CHAR(ADD_MONTHS(TO_DATE(vs_ym_end,¡¯yyyymm¡¯), -12),¡¯yyyymm¡¯);
¨CÏÈɾ³ý±íÖÐÌØ¶¨Ìõ¼þµÄÊý¾Ý¡£
DELETE FROM xxxxxxxxxxx_T WHERE ym = is_ym;
¨CÈ»ºóÓÃÄÚÖõÄDBMS_OUTPUT¶ÔÏóµÄput_line·½·¨´òÓ¡³öÓ°ÏìµÄ¼Ç¼ÐÐÊý£¬ÆäÖÐÓõ½Ò»¸öϵͳ±äÁ¿SQL%rowcount
DBMS_OUTPUT.put_line(¡®delÉÏԼǼ=¡¯||SQL%rowcount||¡¯Ìõ¡¯);
INSERT INTO xxxxxxxxxxx_T(area_code,ym,CMCODE,rmb_amt,usd_amt)
SELECT area_code,is_ym,CMCODE,SUM(rmb_amt)/10000,SUM(usd_amt)/10000
FROM BGD_AREA_CM_M_BASE_T
WHERE ym >= vs_ym_beg
AND ym <= vs_ym_end
GROUP BY area_code,CMCODE;
DBMS_OUTPUT.put_line(¡®insµ±Ô¼Ç¼=¡¯||SQL%rowcount||¡¯Ìõ¡¯);
¨C±éÀúÓα괦Àíºó¸üе½±í¡£±éÀúÓαêÓм¸ÖÖ·½·¨£¬ÓÃforÓï¾äÊÇÆäÖбȽÏÖ±¹ÛµÄÒ»ÖÖ¡£
FOR rec IN cur_1 LOOP
UPDATE xxxxxxxxxxx_T
SET rmb_a