DBLOG
» WTF
Toggle navigation
DBLOG
主页
1、用户
2、各种方案
3、备份恢复
4、表空间相关
5、OGG
6、文件管理
7、常见故障分析
8、DG
9、集群相关
About Me
归档
标签
7、drop 后如何恢复
无
2025-08-29 00:07:53
2
0
0
admin
[TOC] ### 1. 查看回收站中的表 首先,查看有哪些表被删除并存放在回收站中: ```sql -- 查看当前用户的表及其是否被删除 SELECT table_name, dropped FROM user_tables; -- 查看回收站中的对象 SELECT object_name, original_name, type, droptime FROM user_recyclebin; ``` ### 2. 恢复删除的表 #### 方法1:使用原表名恢复 如果你知道原表的名称,并且表只被删除过一次,可以使用以下命令直接恢复: ```sql FLASHBACK TABLE 原表名 TO BEFORE DROP; ``` 例如,假设删除的表名为`employees`,可以执行: ```sql FLASHBACK TABLE employees TO BEFORE DROP; ``` #### 方法2:使用回收站中的表名恢复 如果你不知道原表的名称,或者该表曾经被多次删除,可以直接使用回收站中的表名来恢复,并可以选择重新命名表: ```sql FLASHBACK TABLE "回收站中的表名" TO BEFORE DROP RENAME TO 新表名; ``` 例如,假设回收站中的表名为`Bin$DSbdfd4rdfdfdfegdfsf==$0`,你希望将其恢复为`employees_backup`,可以执行: ```sql FLASHBACK TABLE "Bin$DSbdfd4rdfdfdfegdfsf==$0" TO BEFORE DROP RENAME TO employees_backup; ``` ### 3. 示例操作 假设你无意中删除了一个名为`departments`的表,现在你希望恢复它。以下是详细的操作步骤: #### 1. 查看回收站中的表 ```sql -- 查看当前用户的表及其是否被删除 SELECT table_name, dropped FROM user_tables; -- 查看回收站中的对象 SELECT object_name, original_name, type, droptime FROM user_recyclebin; ``` 假设查询结果中显示: ``` TABLE_NAME | DROPPED -------------|--------- EMPLOYEES | NO DEPARTMENTS | YES OBJECT_NAME | ORIGINAL_NAME | TYPE | DROPTIME -----------------------------------|---------------|-------|------------------- Bin$DSbdfd4rdfdfdfegdfsf==$0 | DEPARTMENTS | TABLE | 2023-10-01 12:00:00 ``` #### 2. 使用原表名恢复 如果你确定`departments`表只被删除过一次,可以执行: ```sql FLASHBACK TABLE departments TO BEFORE DROP; ``` #### 3. 使用回收站中的表名恢复 如果不确定原表名,或者该表被多次删除,可以执行: ```sql FLASHBACK TABLE "Bin$DSbdfd4rdfdfdfegdfsf==$0" TO BEFORE DROP RENAME TO departments_backup; ``` ### 注意事项 - **权限**:确保你有足够的权限来执行闪回操作。 - **表空间**:确保有足够的表空间来存放恢复的表。 - **闪回功能**:数据库必须启用闪回功能(如闪回数据归档)。
上一篇:
7、NetBackup (NBU) 恢复
下一篇:
7、回滚段相关的信息
0
赞
2 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网