在oracle10G之后;oracle提供一种回收站的机制;即闪回技术。闪回技术通常用于快速简单恢复数据库中出现的认为误操作等逻辑错误。发展到11G之后;回收站更加完善;对在可闪回时间内;数据库级别的恢复。
 
      postgresql本身未支持闪回技术的;目前没有像oracle闪回技术的功能;目前postgresql实现这种功能原理是:在drop table时;创建一个名为Trash的schema, 然后将被删除的表移动到这个schema下面.     
 
安装操作
su - root
git clone https://github.com/petere/pgtrashcan
cd pgtrashcan/
export PATH=/opt/pgsql/bin:$PATH             --根据环境来设定
make
make install

修改postgresql.conf文件

shared_preload_libraries = 'pgtrashcan'

在重新启动postgresql数据库

 
1.  drop table操作验证

mydb=> drop table t;
DROP TABLE
mydb=> \dn
  List of schemas
  Name  |  Owner
--------+----------
 Trash  | lottu
 public | postgres
(2 rows)

mydb=> \dt+ "Trash".t;
                    List of relations
 Schema | Name | Type  | Owner |    Size    | Description
--------+------+-------+-------+------------+-------------
 Trash  | t    | table | lottu | 8192 bytes |
(1 row)

mydb=> select * from "Trash".t;
 generate_series
-----------------
               1
               2
               3
               4
               5
               6
               7
               8
               9
              10
(10 rows)
可以看到;表T在被drop掉;postgres会新建一个Trash的模式;把表T移到这里。 假如环境配有hot standby;备库也会跟主库保持一致。
这样可以保证数据在被drop掉;在Trash下面有个复制。可以保证数据及时回复。
 
2. 清理回收站
   我们知道一个方案下;不能存放两个名字相同的表名;在确定里面其中表不需要恢复情况下。可以进行清理。

mydb=> \dt "Trash".*;
       List of relations
 Schema | Name | Type  | Owner
--------+------+-------+-------
 Trash  | t    | table | lottu
 Trash  | t8   | table | lottu
 Trash  | test | table | lottu
(3 rows)

--清理一个表;
mydb=> drop table "Trash".t;
DROP TABLE
mydb=> \dt "Trash".*;
       List of relations
 Schema | Name | Type  | Owner
--------+------+-------+-------
 Trash  | t8   | table | lottu
 Trash  | test | table | lottu
(2 rows)

--若确定所有表不需要恢复
mydb=> drop schema "Trash" cascade;
NOTICE:  drop cascades to 2 other objects
DETAIL:  drop cascades to table "Trash".t8
drop cascades to table "Trash".test
DROP SCHEMA

postgresql如何实现回收站机制的更多相关文章

  1. ORACLE回收站机制介绍

    回收站概念 从ORACLE 10g开始,引入了一个叫回收站(Recycle Bin)的概念.它的全称叫Tablespace Recycle Bin.回收站实际是一个逻辑容器(逻辑区域),原理有点类似于 ...

  2. Centos实现回收站机制

    作为一个运维人员,在服务器上删除文件时为了方便经常会直接使用rm *.txt这类通配符,甚至为了省事加-rf参数,如果是确定的话还好,要是在删除的时候一个不留神,那事可就大了. 俗话说常在河边站哪有不 ...

  3. 数据库并发事务控制四:postgresql数据库的锁机制二:表锁 <转>

    在博文<数据库并发事务控制四:postgresql数据库的锁机制 > http://blog.csdn.net/beiigang/article/details/43302947 中后面提 ...

  4. 系统优化——建立linux回收站机制

    前言: linux系统下的rm是不可挽回的,命令设计本身没有问题,问题在于我们通常非常的自信,执行的时候喜欢rm -rf,这样的话就非常危险了,在执行的时候如果执行命令不对,甚至是执行的目录不对,那么 ...

  5. PostgreSQL 预写日志机制(WAL)

    关于持久性 持久性是指,事务提交后,对系统的影响必须是永久的,即使系统意外宕机,也必须确保事务提交时的修改已真正永久写入到永久存储中. 最简单的实现方法,当然是在事务提交后立即刷新事务修改后的数据到磁 ...

  6. postgresql的日志实现机制

    1.事务的概念   事务是从实际生活中引入数据库的一个概念,即事务内的操作,要么全做,要么全不做.就像银行转账一样,当从一个帐户转出一部分钱之后,就必须在另一个帐户中存入相同数目的钱,若是转出钱之后, ...

  7. 1.10HDFS 回收站机制

  8. [转载]再谈PostgreSQL的膨胀和vacuum机制及最佳实践

    本文转载自 www.postgres.cn 下的文章: 再谈PostgreSQL的膨胀和vacuum机制及最佳实践http://www.postgres.cn/news/viewone/1/390 还 ...

  9. Sharepoint 2013 回收站知识整理

    回收站机制可有利于防止内容的永久删除与误删除. 一.SharePoint 2013 回收站包括两种:第一回收站(End user Recycle Bin items)与 第二回收站(Deleted f ...

随机推荐

  1. Jquery,YUI这个著名js库名称作用的理解

    看廖雪峰大神的教程,其中讲到变量作用域问题.在命名空间中,写到:因为全局变量绑到了window上,不同的js文件访问相同全局变量或者定义了相同名字的顶层函数,都会造成命名冲突,并且很难被发现. 减少冲 ...

  2. org.apache.catalina.LifecycleException

    web.xml中<url-pattern>.do</url-pattern>改为<url-pattern>*.do</url-pattern> 1 严重 ...

  3. 一篇很全面的freemarker教程

    以下内容全部是网上收集: FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成:1,文本:直接输出的部分2,注释:<#-- ... --& ...

  4. Python数据类型(3)

    字符串(str):单引号''.双引号""嵌套使用,可以不使用转义字符:'abc"dd"ef'."acc'd'12",字符串不可以是多行的三单 ...

  5. DOM概述

    <!-- DOM:Document Object Model 文档对象模型 用来将标记型文档封装成对象,并将标记型文档中的所有内容(标签,文本,属性等)都封装成对象 封装成对象的目的是为了更为方 ...

  6. PHP数据运算优先级总结记忆

    运算符优先级

  7. Android MP3录音实现

    给APP做语音功能,必须考虑到IOS和Android平台的通用性.wav录音质量高,文件太大,AAC和AMR格式在IOS平台却不支持,所以采用libmp3lame把AudioRecord音频流直接转换 ...

  8. 纯CSS实现tooltip提示框,CSS箭头及形状之续篇--给整个tooltip提示框加个边框

    在前面一篇中我们介绍了纯CSS实现tooltip提示框,通俗的讲也就是CSS箭头及形状 不过注意一点是,他始终是一个元素,只是通过CSS实现的,今天我们要说的是给这个“tooltip提示框”整体加一个 ...

  9. [LeetCode]题解(python):125 Valid Palindrome

    题目来源 https://leetcode.com/problems/valid-palindrome/ Given a string, determine if it is a palindrome ...

  10. Consolidated Seed Table Upgrade Patch(Patch 17204589)

    $ adop phase=apply patches= hotpatch=yes abandon=no Enter the APPS password: Enter the SYSTEM passwo ...