Flashback ¼¼ÊõÊÇÒÔUndo segmentÖеÄÄÚÈÝΪ»ù´¡µÄ£¬ Òò´ËÊÜÏÞÓÚUNDO_RETENTON²ÎÊý¡£ÒªÊ¹ÓÃflashback µÄÌØÐÔ£¬±ØÐëÆôÓÃ×Ô¶¯³·Ïú¹ÜÀí±í¿Õ¼ä¡£
ÔÚOracle 10gÖУ¬ Flash back¼Ò×å·ÖΪÒÔϳÉÔ±£º Flashback Database£¬ Flashback Drop£¬Flashback Query(·ÖFlashback Query,Flashback Version Query£¬ Flashback Transaction Query ÈýÖÖ) ºÍFlashback Table¡£
Ò»£® Flashback Database
Flashback Database ¹¦Äܷdz£ÀàËÆÓëRMANµÄ²»ÍêÈ«»Ö¸´£¬ Ëü¿ÉÒÔ°ÑÕû¸öÊý¾Ý¿â»ØÍ˵½¹ýÈ¥µÄij¸öʱµãµÄ״̬£¬ Õâ¸ö¹¦ÄÜÒÀÀµÓÚFlashback log ÈÕÖ¾¡£ ±ÈRMAN¸ü¿ìËٺ͸ßЧ¡£ Òò´ËFlashback Database ¿ÉÒÔ¿´×÷ÊDz»ÍêÈ«»Ö¸´µÄÌæ´ú¼¼Êõ¡£ µ«ËüÒ²ÓÐijЩÏÞÖÆ£º
1. Flashback Database ²»Äܽâ¾öMedia Failure£¬ ÕâÖÖ´íÎóRMAN»Ö¸´ÈÔÊÇΨһѡÔñ
2. Èç¹ûɾ³ýÁËÊý¾ÝÎļþ»òÕßÀûÓÃShrink¼¼ÊõËõСÊý¾ÝÎļþ´óС£¬Õâʱ²»ÄÜÓÃFlashback Database¼¼Êõ»ØÍ˵½¸Ä±ä֮ǰµÄ״̬£¬Õâʱ ......
/*** Ô¼Êø ***/
* Èç¹ûij¸öÔ¼ÊøÖ»×÷ÓÃÓÚµ¥¶ÀµÄ×ֶΣ¬¼´¿ÉÒÔÔÚ×ֶμ¶¶¨ÒåÔ¼Êø£¬Ò²¿ÉÒÔÔÚ±í¼¶¶¨ÒåÔ¼
Êø£¬µ«Èç¹ûij¸öÔ¼Êø×÷ÓÃÓÚ¶à¸ö×ֶΣ¬
±ØÐëÔÚ±í¼¶¶¨ÒåÔ¼Êø
* ÔÚ¶¨ÒåÔ¼ÊøÊ±¿ÉÒÔͨ¹ýCONSTRAINT¹Ø¼ü×ÖÎªÔ¼ÊøÃüÃû£¬Èç¹ûûÓÐÖ¸¶¨£¬ORACLE½«×Ô¶¯
ÎªÔ¼Êø½¨Á¢Ä¬ÈϵÄÃû³Æ
¶¨Òåprimary keyÔ¼Êø(µ¥¸ö×ֶΣ©
create table employees (empno number(5) primary key,...)
Ö¸¶¨Ô¼ÊøÃû
create table employees (empno number(5) constraint emp_pk primary key,...)
¶¨Òåprimary keyÔ¼Êø(¶à¸ö×Ö¶Î,ÔÚ±í¼¶¶¨ÒåÔ¼Êø£©
create table employees
(empno number(5),
deptno number(3) not null,
constraint emp_pk primary key(empno,deptno)
using index tablespace indx
storage (initial 64K
next 64K
)
)
ORACLE×Ô¶¯»áΪ¾ßÓÐPRIMARY KEYÔ¼ÊøµÄ×Ö¶Î(Ö÷Âë×Ö¶Î)½¨Á¢Ò»¸öΨһË÷ÒýºÍÒ»¸öNOT
NULLÔ¼Êø,¶¨ÒåPRIMARY KEYÔ¼ÊøÊ±¿ÉÒÔΪËüµÄË÷Òý
Ö¸¶¨´æ´¢Î»Öúʹ洢²ÎÊý
alter table employees add primary key (empno)
alter table employees add constraint emp_pk primary key (empno)
alter table employees add const ......
ÁÐÊÇOracleÊý
¾Ý¿âÖÐÒ»¸öÃüÃûµÄ˳Ðò±àºÅÉú³ÉÆ÷¡£Õâ¸ö±àºÅÉú³ÉÆ÷Äܹ»ÒÔ´®Ðз½Ê½Éú³ÉһϵÁеÄ˳ÐòÕûÊý¡£Õâ¸öÌØÐÔÔÚÊý¾Ý¿â¿ª·¢µÄ¹ý³ÌÖУ¬¾³£»áÓöµ½¡£Èç¹ûûÓÐÕâ¸ö¹¤¾ßµÄ
»°£¬ÄÇôֻÄܹ»ÔÚǰ̨ӦÓóÌÐò¿ØÖÆ¡£Õâ²»½ö»áÔö¼ÓÓ¦ÓÃϵͳµÄ¿ª·¢¹¤×÷Á¿£¬¶øÇÒ¶ÔÓÚ²¢·¢·ÃÎʵÄÇé¿öÄÑÒÔ¿ØÖÆ¡£Èç¶à¸öÓû§Í¬Ê±Ð½¨Ò»Õŵ¥¾Ýʱ£¬¾ÍºÜÄѱ£Ö¤µ¥¾Ý
±àºÅµÄΨһ¡£¹ÊOracle
Êý¾Ý¿âµÄ˳Ðò±àºÅÉú³ÉÆ÷ÊÇÊý¾Ý¿â¿ª·¢¹¤³ÌʦµÄ×ó°òÓÒ±Û£¬¾ßÓкܴóµÄʵÓüÛÖµ¡£¾ßÌåÀ´Ëµ£¬Ëû¿ÉÒÔ½â¾öÓû§µÄÈçϼ¸¸öÐèÇó¡£
¡¡¡¡ÐèÇóÒ»£ºÁ÷Ë®ºÅµÄÐèÇó¡£
¡¡¡¡ÔÚÐÅÏ¢»¯¹ÜÀíϵͳÖУ¬ºÜ¶àµØ·½ÐèÒªÓõ½Á÷Ë®ºÅ¡£ÈçÓÐЩÆóÒµÎïÁϱàÂëÊǰ´ÕÕÁ÷Ë®ºÅÀ´±àдµÄ¡£Ô²ÄÁϰ´Ç°ºó˳ÐòÓÃÁù¸öÊý×ÖÀ´±íʾ£¬Ã¿´Îн¨Ò»¸öºó¶¼
µÝÔö1¡£ÔÙÈçÒ»¸öÉ̳¡µÄǰ̨¶©µ¥¹ÜÀíϵͳ£¬Ã¿ÕŶ©µ¥µÄ±äÂëÔÔò¿ÉÄܾÍÊǰ´ÄêÔÂÈÕ+Á÷Ë®ºÅµÄ·½Ê½¹¹³É£¬Ã¿ÕÅÏúÊÛ¶©µ¥Ò»¸ö±àºÅ¡£µ±ÌìµÄÏúÊÛ¶©µ¥´Ó
“000001”¿ªÊ¼£¬Ò»ÕÅÏúÊÛ¶©µ¥Ò»¸ö±àºÅ£¬¶øÇÒ±àºÅ¶¼ÊÇÀÛ¼Ó1µÄ¡£¶øÇÒÉ̳¡¿ÉÄÜÓжà¸öÊÕ¿į̂£¬ËûÃÇ·Ö²¼ÔÚÉ̳¡µÄ²»Í¬Î»Öã¬ÉõÖÁ¿ÉÄÜÔÚ²»Í¬µÄÂ¥²ã¡£Òò´Ë
Èç¹ûûÓÐÒ»¸ö×Ô¶¯²úÉúÁ÷Ë®ºÅµÄ»úÖÆ£¬¾ÍÐèÒªÈ˹¤À´Íê³ÉÕâÏ×÷¡£ºÜÃ÷ÏÔÕâÏÔÈ»ÊDz»¿ÉÄܵġ£ËäȻҲ¿ÉÒÔͨ¹ýǰ̨ӦÓóÌÐòÀ ......
ÓÃOracleµÄtkprof·ÖÎöSQLÖ´ÐÐЧÂÊ
1¡¢´ò¿ª¸ú×Ù
SQL> alter session set sql_trace=true;
2¡¢Ö´ÐÐSQL
SQL> select count(*) from xxxx;
3¡¢¹Ø±Õ¸ú×Ù
SQL> alter session set sql_trace=false
4¡¢ÕÒµ½trcÎļþ
Ä¿±êÎļþĿ¼ÔÚ£º
SQL> select value from v$parameter where
name='user_dump_dest';
5¡¢±ä»»trcÎļþΪ¿É¶Á¸ñʽ
tkprof ora10g_ora_26292.trc tkprof0702 explain=username/password
sort=exeela
sortÓÐexeela£ºÖ´ÐÐʱ¼ä£»prsela£ºÓï·¨·ÖÎöʱ¼ä£»fchela£ºÌáȡʱ¼ä
......
ÓÃOracleµÄtkprof·ÖÎöSQLÖ´ÐÐЧÂÊ
1¡¢´ò¿ª¸ú×Ù
SQL> alter session set sql_trace=true;
2¡¢Ö´ÐÐSQL
SQL> select count(*) from xxxx;
3¡¢¹Ø±Õ¸ú×Ù
SQL> alter session set sql_trace=false
4¡¢ÕÒµ½trcÎļþ
Ä¿±êÎļþĿ¼ÔÚ£º
SQL> select value from v$parameter where
name='user_dump_dest';
5¡¢±ä»»trcÎļþΪ¿É¶Á¸ñʽ
tkprof ora10g_ora_26292.trc tkprof0702 explain=username/password
sort=exeela
sortÓÐexeela£ºÖ´ÐÐʱ¼ä£»prsela£ºÓï·¨·ÖÎöʱ¼ä£»fchela£ºÌáȡʱ¼ä
......
OracleϵÁУºRecordºÍPL/SQL±í
Ò»£¬Ê²Ã´ÊǼǼRecordºÍPL/SQL±í£¿
¼Ç¼Record£ºÓɵ¥ÐжàÁеıêÁ¿ÀàÐ͹¹³ÉµÄÁÙʱ¼Ç¼¶ÔÏóÀàÐÍ¡£ÀàËÆÓÚ¶àάÊý×é¡£
PL/SQL±í£ºÓɶàÐе¥ÁеÄË÷ÒýÁкͿÉÓÃÁй¹³ÉµÄÁÙʱË÷Òý±í¶ÔÏóÀàÐÍ¡£ÀàËÆÓÚһάÊý×éºÍ¼üÖµ¶Ô¡£
¶¼ÊÇÓû§×Ô¶¨ÒåÊý¾ÝÀàÐÍ¡£
¶þ£¬Record + PL/SQL±í ÓÃ;ÊÇʲô£¿
Record + PL/SQL±í¿ÉÒÔ½øÐÐÊý¾ÝµÄ¶àÐжàÁд洢¡£ÕâÑùÎÒÃǾͿÉʹÓÃRecord + PL/SQL±íÔÚÐèҪʱ·â×°Ò»¸öÁÙʱµÄ±í¶ÔÏ󣬽øÐд«µÝºÍ²Ù×÷¡£
ͨ¹ýRecord×Ô¶¨Òå±í½á¹¹£¬·â×°Ò»Ìõ¼Ç¼¡£PL/SQL±íÉùÃ÷ ¿ÉÓÃÁÐ ÀàÐÍ ÎªRecordÀàÐÍ£¨½«¿ÉÓÃÁÐÖ¸ÏòRecordÀàÐͱäÁ¿£©£¬Ã¿¸öË÷Òý¶ÔÓ¦Ò»¸öRecordÀàÐͱäÁ¿¡£
Èý£¬Ê¹ÓÃRecord + PL/SQL±í½øÐÐÊý¾ÝµÄ¶àÐжàÁд洢
¢ÙÉùÃ÷RecordÀàÐͺÍPL/SQL±í£¬
ÆäÖÐPL/SQL±íµÄË÷ÒýÁÐΪÖ÷¼üÔ¼ÊøºÍÎ¨Ò»Ô¼ÊøÁлò×ÔÔöInteger¡£¿ÉÓÃÁÐΪRecordÀàÐÍ»ò%RowTypeÀàÐÍ¡£
¢ÚÌî³äPL/SQL±í¿ÉÓÃÁУ¨RecordÀàÐÍ£©£ºÍ¨¹ýË÷ÒýÖ¸ÏòRecord£¬Ê¹ÓÃRecord·ÃÎʼǼ³ÉÔ±¡£
Óï·¨£º
PL/SQL±íÃû(Ë÷ÒýÁÐÖµ).¼Ç¼³ÉÔ± := ¼Ç¼³ÉÔ±ÀàÐÍÖµ£»
&nbs ......
OracleϵÁУºRecordºÍPL/SQL±í
Ò»£¬Ê²Ã´ÊǼǼRecordºÍPL/SQL±í£¿
¼Ç¼Record£ºÓɵ¥ÐжàÁеıêÁ¿ÀàÐ͹¹³ÉµÄÁÙʱ¼Ç¼¶ÔÏóÀàÐÍ¡£ÀàËÆÓÚ¶àάÊý×é¡£
PL/SQL±í£ºÓɶàÐе¥ÁеÄË÷ÒýÁкͿÉÓÃÁй¹³ÉµÄÁÙʱË÷Òý±í¶ÔÏóÀàÐÍ¡£ÀàËÆÓÚһάÊý×éºÍ¼üÖµ¶Ô¡£
¶¼ÊÇÓû§×Ô¶¨ÒåÊý¾ÝÀàÐÍ¡£
¶þ£¬Record + PL/SQL±í ÓÃ;ÊÇʲô£¿
Record + PL/SQL±í¿ÉÒÔ½øÐÐÊý¾ÝµÄ¶àÐжàÁд洢¡£ÕâÑùÎÒÃǾͿÉʹÓÃRecord + PL/SQL±íÔÚÐèҪʱ·â×°Ò»¸öÁÙʱµÄ±í¶ÔÏ󣬽øÐд«µÝºÍ²Ù×÷¡£
ͨ¹ýRecord×Ô¶¨Òå±í½á¹¹£¬·â×°Ò»Ìõ¼Ç¼¡£PL/SQL±íÉùÃ÷ ¿ÉÓÃÁÐ ÀàÐÍ ÎªRecordÀàÐÍ£¨½«¿ÉÓÃÁÐÖ¸ÏòRecordÀàÐͱäÁ¿£©£¬Ã¿¸öË÷Òý¶ÔÓ¦Ò»¸öRecordÀàÐͱäÁ¿¡£
Èý£¬Ê¹ÓÃRecord + PL/SQL±í½øÐÐÊý¾ÝµÄ¶àÐжàÁд洢
¢ÙÉùÃ÷RecordÀàÐͺÍPL/SQL±í£¬
ÆäÖÐPL/SQL±íµÄË÷ÒýÁÐΪÖ÷¼üÔ¼ÊøºÍÎ¨Ò»Ô¼ÊøÁлò×ÔÔöInteger¡£¿ÉÓÃÁÐΪRecordÀàÐÍ»ò%RowTypeÀàÐÍ¡£
¢ÚÌî³äPL/SQL±í¿ÉÓÃÁУ¨RecordÀàÐÍ£©£ºÍ¨¹ýË÷ÒýÖ¸ÏòRecord£¬Ê¹ÓÃRecord·ÃÎʼǼ³ÉÔ±¡£
Óï·¨£º
PL/SQL±íÃû(Ë÷ÒýÁÐÖµ).¼Ç¼³ÉÔ± := ¼Ç¼³ÉÔ±ÀàÐÍÖµ£»
&nbs ......
Oracle ϵÁУº PL/SQL±í
Ò»£¬Ê²Ã´ÊÇPL/SQL±í£¿
Ê×ÏÈPL/SQL±íºÍ¼Ç¼(Record)Ò»Ñù£¬¶¼ÊǸ´ºÏÊý¾ÝÀàÐÍ¡£¿ÉÒÔ¿´×öÊÇÒ»ÖÖÓû§×Ô¶¨ÒåÊý¾ÝÀàÐÍ¡£
PL/SQL±íÓɶàÁе¥ÐеıêÁ¿¹¹³ÉµÄÁÙʱË÷Òý±í¶ÔÏó¡£×é³ÉÀàËÆÓÚһάÊý×é¡£
Çø±ðºÍÁªÏµ¼Ç¼(Record)µÄµ¥ÐжàÁкÍÎïÀí´æ´¢Êý¾ÝµÄ±í¡£
Record + PL/SQL±í¿ÉÒÔ½øÐÐÊý¾ÝµÄ¶àÐжàÁд洢¡£
ÉúÃüÖÜÆÚÔÚ³ÌÐò¿éÄÚ¡£
¶þ£¬PL/SQL±íµÄ×é³É½á¹¹
PL/SQL±íÖ»ÓÐÁ½ÁÐ,ÆäÖеÚÒ»ÁÐΪË÷ÒýÁÐΪIntegerÀàÐÍË÷ÒýÁУ¬9iºó¿ÉÒÔÖ§³Ö×Ö·ûË÷Òý¡£µÚ¶þÁÐΪÓû§×Ô¶¨ÒåÁУ¬ÉùÃ÷Óû§¿ÉÓÃÁÐÀàÐÍ.
ͨ¹ýË÷ÒýÁÐÖеÄË÷ÒýÖµÀ´²Ù×÷PL/SQL±íÖжÔÓ¦µÄÓû§×Ô¶¨ÒåÁС£ÀàËÆÓÚ¼üÖµ¶Ô¡£
È·±£Ë÷ÒýÖµµÄΨһÐÔ¡£Èç¹ûË÷ÒýÖµÖØ¸´²»»á±¨´í£¬»á¸²¸ÇÇ°ÃæµÄÖµ¡£
Èý£¬ÈçºÎ´´½¨ºÍʹÓÃPL/SQL±í£¿
¢ÙÉùÃ÷PL/SQL±íÀàÐͶÔÏó
Óï·¨£º
TYPE PL/SQL±íÃû IS TABLE OF ¿ÉÓÃÁÐÀàÐÍ [NOT NULL]
INDEX BY BINARY_INTEGER;
¿ÉÓÃÁÐÀàÐÍ¿ÉÒÔΪOracleµÄÊý¾ÝÀàÀàÐÍÒÔ¼°Óû§×Ô¶¨ÒåÀàÐÍ;
ÊôÐÔ·½·¨:
count --·µ»Øpl/sql±íµÄ× ......
Oracle ϵÁУº PL/SQL±í
Ò»£¬Ê²Ã´ÊÇPL/SQL±í£¿
Ê×ÏÈPL/SQL±íºÍ¼Ç¼(Record)Ò»Ñù£¬¶¼ÊǸ´ºÏÊý¾ÝÀàÐÍ¡£¿ÉÒÔ¿´×öÊÇÒ»ÖÖÓû§×Ô¶¨ÒåÊý¾ÝÀàÐÍ¡£
PL/SQL±íÓɶàÁе¥ÐеıêÁ¿¹¹³ÉµÄÁÙʱË÷Òý±í¶ÔÏó¡£×é³ÉÀàËÆÓÚһάÊý×é¡£
Çø±ðºÍÁªÏµ¼Ç¼(Record)µÄµ¥ÐжàÁкÍÎïÀí´æ´¢Êý¾ÝµÄ±í¡£
Record + PL/SQL±í¿ÉÒÔ½øÐÐÊý¾ÝµÄ¶àÐжàÁд洢¡£
ÉúÃüÖÜÆÚÔÚ³ÌÐò¿éÄÚ¡£
¶þ£¬PL/SQL±íµÄ×é³É½á¹¹
PL/SQL±íÖ»ÓÐÁ½ÁÐ,ÆäÖеÚÒ»ÁÐΪË÷ÒýÁÐΪIntegerÀàÐÍË÷ÒýÁУ¬9iºó¿ÉÒÔÖ§³Ö×Ö·ûË÷Òý¡£µÚ¶þÁÐΪÓû§×Ô¶¨ÒåÁУ¬ÉùÃ÷Óû§¿ÉÓÃÁÐÀàÐÍ.
ͨ¹ýË÷ÒýÁÐÖеÄË÷ÒýÖµÀ´²Ù×÷PL/SQL±íÖжÔÓ¦µÄÓû§×Ô¶¨ÒåÁС£ÀàËÆÓÚ¼üÖµ¶Ô¡£
È·±£Ë÷ÒýÖµµÄΨһÐÔ¡£Èç¹ûË÷ÒýÖµÖØ¸´²»»á±¨´í£¬»á¸²¸ÇÇ°ÃæµÄÖµ¡£
Èý£¬ÈçºÎ´´½¨ºÍʹÓÃPL/SQL±í£¿
¢ÙÉùÃ÷PL/SQL±íÀàÐͶÔÏó
Óï·¨£º
TYPE PL/SQL±íÃû IS TABLE OF ¿ÉÓÃÁÐÀàÐÍ [NOT NULL]
INDEX BY BINARY_INTEGER;
¿ÉÓÃÁÐÀàÐÍ¿ÉÒÔΪOracleµÄÊý¾ÝÀàÀàÐÍÒÔ¼°Óû§×Ô¶¨ÒåÀàÐÍ;
ÊôÐÔ·½·¨:
count --·µ»Øpl/sql±íµÄ× ......