ORACLE 10g 中恢复已删除的表_flashback
-- 笔记中部分内容
SQL> create table tt2 as select * from employee;
Table created.
SQL> drop table tt2;
Table dropped.
SQL> select * from tt2;
select * from tt2
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> flashback table tt2 to before drop;
Flashback complete.
SQL> select count(1) from tt2;
COUNT(1)
----------
32
如果在表删除后,又新建了这个表,恢复时可以重命名,如下:
SQL> drop table tt2;
Table dropped.
SQL> flashback table tt2 to before drop
2 rename to tt2_old;
Flashback complete.
SQL> select count(1) from tt2_old;
COUNT(1)
----------
32
如果这个表删除了不止一次,我想恢复某一次的删除,怎么办?
查询recyclebin视图,或者show recyclebin,然后带名字恢复.
SQL> drop table tt2_old;
Table dropped.
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TT2_OLD BIN$SOz1cXPCADLgQwoKCiEAMg==$0 TABLE 2008-03-21:13:51:49
SQL>
SQL> create table tt2_old as select * from job;
Table created.
SQL> drop table tt2_old;
Table dropped.
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TT2_OLD BIN$SOz1cXPDADLgQwoKCiEAMg==$0 TABLE 2008-03-21:13:52:40
TT2_OLD BIN$SOz1cXPCADLgQwoKCiEAMg==$0 TABLE 2008-03-21:13:51:49
SQL> flashback table "BIN$SOz1cXPCADLgQwoKCiEAMg==$0" to before drop;
Flashback complete.
SQL> desc tt2_old
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPLOYEE_ID NUMBER(4)
LAST_NAME VARCHAR2(15)
FIRST_NAME VARCHAR2(15)
MIDDLE_INITIAL VARCHAR2(1)
JOB_ID NUMBER(3)
MANAGER_ID NUMBER(4)
HIRE_DATE DATE
SALARY NUMBER(7,2)
COMMISSION NUMBER(7,2)
DEPARTMENT_ID NUMBER(2)
可以看到上述结果不是job表的结构,而是第一次时的结构
使用限制:
1 只有非系统表空间,而且是本地管理的表空间
2 表上相关对象被保留,除了以下内容:
bitmap
相关文档:
1.oracle字符集问题:
数据库字符集为ZHS16BGK,汉字在数据库存放的时候占用两个字节
数据库字符集为UTF8,汉字在数据库里存放的时候占用三个字节
由于字符集不同,导致现在数据库IMP的时候有些表的字段长度不够,出现ORA-12899: value too large for column的错误。
通过修改字符集可以解决这种问题。
2.utf-8和unico ......
--single line method
select ascii('A') Big_A from dual;
select chr(65) A, chr(122) z, chr(223) ch3 from dual;
select concat('sigo','way') from dual;
select initcap('sigoway') from dual;
select instr('ababab','a',-1,2), instr('ababab','a',1,3) from dual;
select instrb('ababab','a',1,3) from dua ......
Oracle 向一个表中插入数据的两种方式:
Conventional Insert Operations:传统插入会优先使用高水位之下,会保证数据应用完整性:高水位之下是指:删除之后的剩余空间,高水位之上是指:从来没有用过的处女块。
Direct-path Insert Operatio ......
left join 和 left outer join 的区别
通俗的讲:
A left join B 的连接的记录数与A表的记录数同
A right join B 的连接 ......
强制切换重做日志
ALTER SYSTEM SWITCH LOGFILE; 强制产生检查点
ALTER SYSTEM CHECKPOINT; 间接产生检查点(设定实例恢复时间不超过mm秒,亦即执行检查点之后运行超过这个时间就再次执行检查点)
ALTER SYSTEM SET FAST_START_MTTR_TARGET = 秒数; 获取重做日志文件信息
SELECT group#, ......