oracle 单张表恢复问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 单张表恢复问题相关的知识,希望对你有一定的参考价值。

Oracle10g的数据库,不小心删除了一张表,之前有dmp备份。1、不能用闪回、回滚等Oracle自带的回复,因为系统正在使用,还有别的重要数据。2、dmp很大【14G】不方便转移到其他服务器。而且导入导出很费时想知道有没有办法,直接从dmp里把这张表弄出来?

假如你的数据库没有关闭回收站。那么可以根据10g的新特性进行单表闪回恢复。下面例子如下SQL> create table test as select * from tab;表已创建。SQL> drop table test;表已删除。SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST BIN$K2gvVzqfRfi+epAhf22V3Q==$0 TABLE 2009-07-16:15:55:53
SQL> flashback table "BIN$K2gvVzqfRfi+epAhf22V3Q==$0" to before drop;闪回完成。SQL> select * from tab where tname=\'TEST\';TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TEST TABLE 如果要是想把闪回的表定义到一个新的表名,可以如下操作 SQL> select * from tab where tname=\'TEST\';TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TEST TABLESQL> drop table test;表已删除。SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST BIN$v4b9XUSfTYadA1Xssas6rA==$0 TABLE 2009-07-16:15:57:08
SQL> flashback table "BIN$v4b9XUSfTYadA1Xssas6rA==$0" to before drop
2 rename to test_old;闪回完成。SQL> select * from tab where tname like \'%TEST%\';TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
TEST_OLD TABLE 我想这个应该可以最快的速度帮你处理你当前的难题。以上内容都是我一步一步操作的结果,完全可行而且不应该会有任何风险。希望对你有所帮主
参考技术A 是不是可以用Imp命令导入这张表。

Linux命令:MySQL系列之十三--MySQL备份与还原(针对单张表SELECT备份)


对于只备份单张表的备份与还原,通过SELECT命令,可以更快速的达到备份和恢复的目的;

以及通过此方法把一个数据库中表的数据,导入至另一数据库的表中去。


  备份格式:SELECT * INTO OUTFILE ‘/PATH/TO/somefile.txt‘

FROM table_name [WHERE CLAUSE];

 #备份table_name表中的[或者备份满足WHERE语句的数据]数据至服务器上保存。

  注释:table_name:需要备份的表  WHERE:满足的条件,可选项。

      /PATH/TO:服务器上的路径目录,且此目录必须是执行SELECT语句的用户有写的权限,

            否则无法备份。

  还原格式:LOAD DATA INFILE ‘/PATH/TO/somefile.txt‘ INTO TABLE table_name; 

  注释:table_name:需要还原的表的名称,此表必须先在数据库中存在。

      /PATH/TO:备份所存放的路径


  mysql> CREATE TABLES tutor LIKE tutors; #仿照tutors表的框架创建一个空表tutor 


实例:备份一个数据库表的数据,导入至另一个数据库表的数据;

 mysql> USE jiaowu;

 Database changed

 mysql> SELECT * FROM tutors; #查询表tutors的信息

+-----+------------------+--------+-----+

| TID | Tname        | Gender | Age |

+-----+------------------+--------+-----+

| 1  | HongQigong     |  M   | 93 |

| 2  | HuangYaoshi    |  M   | 63 |

| 3  | HuangRong    |  F   | 46 |

| 4  | HuYidao       |  M   | 65 |

| 5  | XiaoLongnv    |  F   | 28 |

| 6  | HuFei        |  M   | 45 |

| 7  | GuoXiang      |  F   | 32 |

+-----+------------------+--------+-----+

 7 rows in set (0.00 sec)

 mysql> SELECT * INTO OUTFILE ‘/tmp/tutor.txt‘ FROM tutors;

 Query OK, 7 rows affected (0.01 sec)

 mysql> CREATE TABLE tutor LIKE tutors;

 Query OK, 0 rows affected (0.03 sec)

 mysql> DESC tutor;

+---------+---------------------------+------+-----+---------+------------------+

| Field  | Type               | Null | Key | Default | Extra        |

+---------+---------------------------+------+-----+---------+------------------+

| TID   | smallint(5) unsigned    | NO  | PRI | NULL   | auto_increment  |

| Tname  | varchar(50)          | NO  |   | NULL   |            |

| Gender | enum(‘F‘,‘M‘)         | YES |   | M     |          |

| Age   | tinyint(3) unsigned     | YES |   | NULL  |         | 

+---------+---------------------------+------+-----+---------+------------------+ 

4 rows in set (0.01 sec)   

 mysql> DESC tutors ;  

+---------+---------------------------+------+-----+---------+------------------+

| Field  | Type               | Null | Key | Default | Extra        |

+---------+---------------------------+------+-----+---------+------------------+

| TID   | smallint(5) unsigned    | NO  | PRI | NULL   | auto_increment  |

| Tname  | varchar(50)          | NO  |   | NULL   |            |

| Gender | enum(‘F‘,‘M‘)         | YES |   | M     |          |

| Age   | tinyint(3) unsigned     | YES |   | NULL  |         | 

+---------+---------------------------+------+-----+---------+------------------+ 

4 rows in set (0.01 sec)   

mysql> DROP TABLE tuors;

Query OK, 0 rows affected (0.03 sec)

mysql> SELECT * FROM tutor; #查询表tutor的信息

Empty set (0.04 sec) (暂时无数据)

mysql> LOAD DATA INFILE ‘/tmp/tutor.txt‘ INTO TABLE tutor;

Query OK, 7 rows affected (0.04 sec)

Records: 7 Deleted: 0 Skipped: 0 Warnings: 0

mysql> SELECT * FROM tutor; #查询表tutor的信息

+-----+------------------+--------+-----+

| TID | Tname        | Gender | Age |

+-----+------------------+--------+-----+

| 1  | HongQigong     |  M   | 93 |

| 2  | HuangYaoshi    |  M   | 63 |

| 3  | HuangRong    |  F   | 46 |

| 4  | HuYidao       |  M   | 65 |

| 5  | XiaoLongnv    |  F   | 28 |

| 6  | HuFei        |  M   | 45 |

| 7  | GuoXiang      |  F   | 32 |

+-----+------------------+--------+-----+

至此通过SELECT备份还原操作完成。







本文出自 “学linux历程” 博客,请务必保留此出处http://woyaoxuelinux.blog.51cto.com/5663865/1932270

以上是关于oracle 单张表恢复问题的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 备份恢复与编码问题

Linux命令:MySQL系列之十二--MySQL备份与还原(针对单张表SELECT备份)

Linux命令:MySQL系列之十三--MySQL备份与还原(针对单张表SELECT备份)

oracle 如何恢复误删的表记录数据

oracle怎样恢复删除的数据文件

另存为excel宏单张表