mysql 中的truncate 和delete 都能够清理表中数据,但是它们有什么区别呢
在一个事务中使用了truncate 会导致后续的sql 无法回滚。
truncate 会删除所有数据,并且不记录日志,不可以恢复数据,相当于保留了表结构,重新建立了一张同样的表。由于数据不可恢复,truncate 之前的 *** 作也不能回滚。
数据库:
清空表中某列中的数据何 *** 作方法:
1、如果说清空表数据可以选择delete或者truncate命令。
2、但是针对某列,只能update表名set列明=null。
3、或者altertable表名dropcolumn列名。
4、然后再altertable表名add列名类型,如果这个列没用的话可以不加回去。
你可以试试PRM for Oracle。 ParnassusData Recovery Manager(以下简称PRM)是企业级ORACLE数据灾难恢复软件,可直接从Oracle9i,10g,11g,12c的数据库数据文件(datafile)中抽取还原数据表上的数据,而不需要通过ORACLE数据库实例上执行SQL来拯救数据。ParnassusDataRecovery Manager是一款基于JAVA开发的绿色软件,无需安装,下载解压后便可直接使用。 恢复场景1 误Truncate表的常规恢复 D公司的业务维护人员由于误将产品数据库当做测试环境库导致错误地TRUNCATE了一张表上的所有数据,DBA尝试恢复但是发觉最近的备份不可用,导致无法从备份中恢复出该数据表上的记录。 此时DBA决定采用PRM来恢复已经被TRUNCATE掉的数据。 由于该环境中 所有数据库文件均是可用且健康的,用户仅需要 字典模式下加载SYSTEM表空间的数据文件以及被TRUNCATED表的数据文件即可,例如: create table ParnassusDatatorderdetail_his1 tablespace users as select from parnassusdatatorderdetail_his; SQL> desc ParnassusDataTORDERDETAIL_HIS Name Null Type ----------------------- -------- -------------- SEQ_ID NOT NULL NUMBER(10) SI_STATUS NUMBER(38) D_CREATEDATE CHAR(20) D_UPDATEDATE CHAR(20) B_ISDELETE CHAR(1) N_SHOPID NUMBER(10) N_ORDERID NUMBER(10) C_ORDERCODE CHAR(20) N_MEMBERID NUMBER(10) N_SKUID NUMBER(10) C_PROMOTION NVARCHAR2(5) N_AMOUNT NUMBER(7,2) N_UNITPRICE NUMBER(7,2) N_UNITSELLINGPRICE NUMBER(7,2) N_QTY NUMBER(7,2) N_QTYFREE NUMBER(7,2) N_POINTSGET NUMBER(7,2) N_OPERATOR NUMBER(10) C_TIMESTAMP VARCHAR2(20) H_SEQID NUMBER(10) N_RETQTY NUMBER(7,2) N_QTYPOS NUMBER(7,2) select count() from ParnassusDataTORDERDETAIL_HIS; COUNT() ---------- 984359 select bytes/1024/1024 from dba_segments where segment_name='TORDERDETAIL_HIS' and owner='PARNASSUSDATA'; BYTES/1024/1024 --------------- 18971875 SQL> truncate table ParnassusDataTORDERDETAIL_HIS; Table truncated SQL> select count() from ParnassusDataTORDERDETAIL_HIS; COUNT() ---------- 0 启动PRM ,并选择 Tools => Recovery Wizard 点击Next 在此TRUNCATE场景中并未采用ASM存储,所以仅需要选择 《Dictionary Mode》字典模式即可:
oracle数据库恢复,主要包括(1)系统崩溃只剩下数据文件的情况下的恢复,甚至没有system表空间而只有数据表空间的情况下的恢复只要提供数据文件就可恢复(2)undosystem表空间损坏数据恢复(3)非归档或者归档模式下误delete数据的恢复、误删除表空间的恢复、droptruncate表的恢复(4)数据库中有大量CLOBBLOB对象数据恢复等情况以及各种ora-错误的修复(5)DMP文件损坏导致文件不能导入数据库的数据恢复(6)oracle数据库中数据文件出现坏块情况下的恢复(7)oracle数据库无数据文件但有日志的情况下的恢复(8)UNIX、WINDOWS下ORACLE数据文件被误删除情况下的数据库恢复(9)Oracle10G、Oracle11G的ASM损坏的数据库恢复(10)Oracle10G、Oracle11GBIFGILETABLESPACE大文件表空间损坏数据恢复(11)Oracle9i、Oracle10G、Oracle11G压缩表压缩表空间损坏数据恢复(12)Oracle10GOracle11GExpdp导出Impdp导入DMP文件错误数据恢复恢复成功率高达90%以上,在数据恢复领域处于国内领先的地位。具体案例见广州拓飞官方网站
以上就是关于mysql truncate 导致事务回滚失败全部的内容,包括:mysql truncate 导致事务回滚失败、mysql truncate 误删数据 怎么办、oracle数据库中截断的表要如何恢复求大神帮助等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)