oracleÖеÄsavepointsÊÇʲô
ʲôÊÇsavepoint?
Use the SAVEPOINT statement to identify a point in a transaction to which you can later roll back.
¸øÄã¸öÀý×Ó
SQL> create table test (id number(7));
±íÒÑ´´½¨¡£
SQL> insert into test values (3);
ÒÑ´´½¨ 1 ÐС£
SQL> savepoint a;
±£´æµãÒÑ´´½¨¡£
SQL> insert into test values (4);
ÒÑ´´½¨ 1 ÐС£
SQL> select * from test;
ID
----------
3
4
SQL> rollback to a;
»ØÍËÒÑÍê³É¡£
SQL> select * from test;
ID
----------
3
SQL> rollback;
»ØÍËÒÑÍê³É¡£
SQL> select * from test;
δѡ¶¨ÐÐ
ÊÂÎñÖеÄSavepoints
Äã¿ÉÒÔÔÚÊÂÎñÉÏÏÂÎÄÖÐÉùÃ÷³ÆÎªsavepointµÄÖмä±ê¼Ç¡£Savepoint½«Ò»¸ö³¤ÊÂÎñ·Ö¸ôΪ½ÏСµÄ²¿·Ö¡£
ʹÓÃsavepoint£¬Äã¿ÉÒÔÔÚ³¤ÊÂÎñÖÐÈκεãÈÎÒâ±ê¼ÇÄãµÄ²Ù×÷¡£È»ºóÄã¿ÉÒÔÑ¡Ôñ»Ø¹öÔÚÊÂÎñÖе±Ç°µã֮ǰ¡¢ÉùÃ÷µÄsavepointÖ®ºóÖ´ÐеIJÙ×÷¡£±ÈÈ磬Äã¿ÉÒÔÔÚÒ»³¤¶Î¸´ÔӵĸüÐÂÖÐʹÓÃsavepoint£¬Èç¹û·¸Á˸ö´í£¬Äã²»ÐèÒªÖØÐÂÌá½»ËùÓÐÓï¾ä¡£
SavepointsÔÚÓ¦ÓóÌÐòÖÐͬÑùÓÐÓá£Èç¹ûÒ»¸ö¹ý³Ì°üº¬¼¸¸öº¯Êý£¬ÄÇ¿ÉÒÔÔÚÿ¸öº¯Êýǰ´´½¨Ò»¸ösavepoint¡£Èç¹ûÒ»¸öº¯Êýʧ°Ü£¬·µ»ØÊý¾Ýµ½º¯Êý¿ªÊ¼Ç°µÄ״̬²¢ÔÚÐ޸IJÎÊý»òÖ´ÐÐÒ»¸ö»Ö¸´²Ù×÷ºóÖØÐÂÔËÐк¯Êý¾Í·Ç³£ÈÝÒס£
Ôڻعöµ½Ò»¸ösavepointºó£¬OracleÊÍ·ÅÓɱ»»Ø¹öµÄÓï¾ä³ÖÓеÄËø¡£ÆäËûµÈ´ý֮ǰ±»Ëø×ÊÔ´µÄÊÂÎñ¿ÉÒÔ½øÐÐÁË¡£ÆäËûÒª¸üÐÂ֮ǰ±»ËøÐеÄÊÂÎñÒ²¿ÉÒÔÖ´ÐС£
µ±Ò»¸öÊÂÎñ»Ø¹öµ½Ò»¸ösavepoint£¬·¢ÉúÏÂÁÐʼþ£º
1. Oracle½ö»Ø¹ösavepointÖ®ºóµÄÓï¾ä¡£
2. Oracle±£ÁôÕâÒ»savepoint£¬µ«ËùÓн¨Á¢Óڴ˺óµÄsavepoints¶ªÊ§¡£
3. OracleÊÍ·ÅÔÚ¸Ãsavepointºó»ñµÃµÄËùÓÐ±í¡¢ÐÐËø£¬µ«±£Áô֮ǰ»ñµÃµÄËùÓÐËø¡£
ÊÂÎñ±£³Ö»î¶¯²¢¿É¼ÌÐø¡£
ÎÞÂÛºÎʱһ¸ö»á»°ÔڵȴýÊÂÎñ£¬µ½savepointµÄ»Ø¹ö²»»áÊÍ·ÅÐÐËø¡£ÎªÁËÈ·±£ÊÂÎñÈç¹ûÎÞ·¨»ñµÃËøÒ²²»»áÐü¹Ò£¨hang£©£¬ÔÚÖ´ÐÐUPDATE»òDELETEǰʹÓÃFOR UPDATE ... NOWAIT¡££¨ÕâÀïÖ¸»Ø¹öµÄsavepoint֮ǰ»ñµÃµÄËø¡£¸Ãsavepointºó»ñµÃµÄÐÐËø»á±»ÊÍ·Å£¬Ö®ºóÖ´ÐеÄÓï¾äÒ²»á±»³¹µ×»Ø¹ö¡££©
Ïà¹ØÎĵµ£º
ÔÚOracle¹ØÓÚʱ¼äÊôÐԵĽ¨±í
Example:
create table courses(
cid varchar(20) not null primary key,
cname varchar(20) not null,
ctype integer,
ctime date DEFAULT SYSDATE,
cscore float not null
)
insert into courses values('ss01','java',0,TO_DATE('2009-8-28','yyyy-mm-dd'),94)
insert into course ......
½ñÌìÅöµ½Ò»¸öÎÊÌ⣬ͨ¹ýÒ»¸öSQLÓï¾ä²éѯʱ£¬³öÈçÏÂÎÊÌ⣺
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "WMSYS.WM_CONCAT_IMPL", line 30
ÎÊÌâ³öÏÖÔÚͨ¹ýWMSYS. ......
ÈçºÎÐÞ¸ÄOracleĬÈÏÓû§ÃÜÂëÓÐЧÆÚʱ¼ä
1¡¢²é¿´Óû§µÄproifleÊÇÄĸö£¬Ò»°ãÊÇdefault£º
sql>SELECT username,PROFILE from dba_users;
2¡¢²é¿´Ö¸¶¨¸ÅÒªÎļþ£¨Èçdefault£©µÄÃÜÂëÓÐЧÆÚÉèÖãº
sql> SELECT * from dba_profiles s WHERE
  ......
----±¾Óû§ËùÓµÓеÄϵͳȨÏÞ:
select * from user_sys_privs;
---±¾Óû§¶ÁÈ¡ÆäËûÓû§¶ÔÏóµÄȨÏÞ:
¡¡select * from user_tab_privs;
-----Ìí¼ÓȨÏÞ
GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE&nbs ......
¿ÉÇ¨ÒÆ±í¿Õ¼ätransport tablespace
¿ÉÇ¨ÒÆ±í¿Õ¼ä
ʹÓÿÉÇ¨ÒÆ±í¿Õ¼ä(Transportable Tablespaces)µÄÌØÐÔÔÚÊý¾Ý¿âÖ®¼äÒÆ¶¯´óÁ¿Êý¾Ý£¬ÐÔÄܱÈexport/importºÍunload/loadÒª¿ìºÜ¶à£¬ÒòΪËüÇ¨ÒÆ±í¿Õ¼äÖ»ÐèÒª¸´ÖÆÊý¾ÝÎļþºÍ²åÈë±í¿Õ¼äÔªÊý¾Ýµ½Ä¿±êÊý¾Ý¿âÖС£
Ç¨ÒÆ±í¿Õ¼ä¶ÔÒÔÏÂÓ¦ÓÃÌØ±ðÓÐÓãº
·Ö½×¶Î½«OLTPµÄÊý¾ÝÒÆÈëÊý¾Ý²Ö¿â
¸ ......