首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TRUNCATE恢复-bbed

    根据之前对truncate原理的分析,truncate是不能通过闪回查询或者logminer的方式来恢复的,因为truncate操作不会对数据块进行任何操作。那么truncate应该如何恢复呢?...本文介绍两种不常见的方法,重点介绍第二种修复元数据方式: ODU(要求数据不被覆盖,如果数据被覆盖也可以最大程度的恢复数据) 通过修复元数据来实现恢复truncate(要求有truncate操作时的redo...02 修复元数据的方式 根据之前对truncate原理的分析,truncate的实质是在不修改数据块的情况下,通过修改segment header的data_object_id,hwm,extent map...无覆盖的TRUNCATE恢复 重要:假如确实失误truncate了表,需要马上停应用,最好将表空间设置为offline或者read only,避免数据被覆盖。...SYS@TEST(test):1>select count(*) from test.truncate_table; select count(*) from test.truncate_table

    1.3K50

    Truncate用法详解

    前言: 当我们想要清空某张表时,往往会使用truncate语句。大多时候我们只关心能否满足需求,而不去想这类语句的使用场景及注意事项。本篇文章主要介绍truncate语句的使用方法及注意事项。...1.truncate使用语法 truncate的作用是清空表或者说是截断表,只能作用于表。...truncate的语法很简单,后面直接跟表名即可,例如:truncate table tbl_name 或者 truncate tbl_name 。...3.truncate使用场景及注意事项 通过前面介绍,我们很容易得出truncate语句的使用场景,即该表数据完全不需要时可以用truncate。...truncate会清空所有数据且执行速度很快。 truncate不能对有外键约束引用的表使用。 执行truncate需要drop权限,不建议给账号drop权限。

    5.2K20

    变通执行truncate

    但是最近一个新的功能,需要对某张表,执行truncate操作。众所周知,truncate虽然是删除数据,但他是DDL,不是DML操作,因此开发人员的账号,肯定不能执行。...用user_a用户登录,执行truncate操作,提示错误如下, ? 按照truncate的定义,truncate只能删除用户属主的表,或者该用户拥有drop any table权限。...此时,只能曲线救国,首先在tbl_truncate属主用户下创建存储过程p_truncate,执行的操作,就是truncate table tbl_truncate,其次,将存储过程的执行权限,授予用户...user_b中,exec执行存储过程,即完成了truncate的操作, ? 如果要更纯粹些,屏蔽属主用户,可以创建同义词,即可直接执行存储过程,完成表的truncate操作, ?...但是这种存储过程的truncate,和实际程序中,使用truncate table,语法上,还是不同的,因此针对不同的场景,来选择合适方案,仅供参考。

    81120

    Truncate用法详解

    本篇文章主要介绍truncate语句的使用方法及注意事项。 1.truncate使用语法 truncate的作用是清空表或者说是截断表,只能作用于表。...truncate的语法很简单,后面直接跟表名即可,例如: truncate table tbl_name 或者 truncate tbl_name 。...2.truncate与drop,delete的对比 上面说过truncate与delete,drop很相似,其实这三者还是与很大的不同的,下面简单对比下三者的异同。...3.truncate使用场景及注意事项 通过前面介绍,我们很容易得出truncate语句的使用场景,即该表数据完全不需要时可以用truncate。...truncate会清空所有数据且执行速度很快。 truncate不能对有外键约束引用的表使用。 执行truncate需要drop权限,不建议给账号drop权限。

    1K10

    MySQL的TRUNCATE使用

    TRUNCATE [TABLE] tbl_name TRUNCATE TABLE用于完全清空一个表。从逻辑上说,该语句与用于删除所有行的DELETE语句等同,但是在有些情况下,两者在使用上有所不同。...对于InnoDB表,如果有需要引用表的外键限制,则TRUNCATE TABLE被映射到DELETE上;否则使用快速删减(取消和重新创建表)。...使用TRUNCATE TABLE重新设置AUTO_INCREMENT计数器,设置时不考虑是否有外键限制。...对于其它存储引擎,在MySQL 5.1中,TRUNCATE TABLE与DELETE FROM有以下几处不同: TRUNCATE不可以使用where删除特定的记录。...当被用于带分区的表时,TRUNCATE TABLE会保留分区;即,数据和索引文件被取消并重新创建,同时分区定义(.par)文件不受影响。

    1.4K80

    TRUNCATE TABLE恢复-脚本

    基于本周二发的文章《TRUNCATE恢复-bbed》(详戳),有些朋友或许对块结构和bbed不熟悉,且bbed的方法也较为复杂,那么大家也可以尝试使用本文的方法来修复。...结合truncate系列一的原理《TRUNCATE TABLE原理解析》(详戳),再加上truncate table还有一个特点,就是所释放的空间会变成free space,这就给没有备份的情况下恢复表数据提供了另外一种思路...使用dbms_rowid.rowid_create抽取该表空间匹配truncate前dataobj#的block里的数据。...抽取的范围也有两种思路: truncate bbed修复中介绍的redodump找出的extent map里的block(本文的PL/SQL不采用此方式)。...因为表可能会truncate过多次,原dataobj#不一定就等于obj#,所以需要通过redo来确认,如果最小补充日志没有打开,LogMiner可能会有遗漏。如果遗漏则使用redodump来寻找。

    80230

    truncate 引起 system lock 分析

    truncate引起system lock分析 truncate table通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放,不记录每行删除的日志。...truncate是把表中数据全部清空,需要有drop权限; truncate操作分为drop table 和create table操作; truncate不记录二进制日志且无法回滚; truncate...如果有外键,则不能执行; truncate结果正常显示0行受影响,表示无信息; truncate操作将自增值重置为起始值; truncate分区表,保留分区信息; 现象: 空间紧张,需要清除历史数据...,有一个大表可以全部清空,我们知道这种操作,truncate最为擅长。...总结: 5.5.23版本之前,采用truncate+drop方式 5.5.23版本之后,采用drop方式 8.0版本之后,采用truncate方式

    3.3K20

    如何在Linux中使用 Truncate 命令

    ---- 安装 通常操作系统会安装truncate ,该命令在coreutils安装包里面,如果没有安装可以使用下面命令安装: [root@localhost ~]# yum provides truncate...truncate常用选项 下面是truncate的常用选项: -c, --no-create --> 不创建任何文件 -o, --io-blocks --> 将大小视为存储块的数量,而不是字节 -r,...truncate过程基本上删除了文件的所有内容。它不会删除文件本身,但会将它作为零字节文件保留在磁盘上。例如,让我们使用truncate将/var/log/yum.log清除为0个字节。...使用truncate扩展文件大小 也可以将文件的大小从当前扩展到所需状态。...使用truncate减小文件大小 假设有一个500K的文件,并且希望将其缩小到250K。

    84400
    领券