[20170520]利用undo表空间保护数据.txt

简介: [20170520]利用undo表空间保护数据.txt --//undo表空间是用来记录前映像信息,也用来保证查询时一致性的.上个星期去听一些课,提到不打开归档情况下一些维护技巧, --//就是建立多个redo日志文件,用来保存日志,至少维持3-4天甚至1个星期的日志,这样可以一定程度减少错误以及会查问题.

[20170520]利用undo表空间保护数据.txt

--//undo表空间是用来记录前映像信息,也用来保证查询时一致性的.上个星期去听一些课,提到不打开归档情况下一些维护技巧,
--//就是建立多个redo日志文件,用来保存日志,至少维持3-4天甚至1个星期的日志,这样可以一定程度减少错误以及会查问题.
--//另外提到一种利用undo表空间避免异常操作的恢复方法,就是再建立1个undo表空间,出现异常dml语句时切换使用新的undo表空间.
--//这样可以非常从容的恢复信息.当然最好不要再有dml操作这个表.通过例子说明:

1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE
  '/mnt/ramdisk/book/undotbs02.dbf' SIZE 100M AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
ONLINE
RETENTION NOGUARANTEE
BLOCKSIZE 8K
FLASHBACK ON;

SCOTT@book> show parameter undo
NAME             TYPE    VALUE
---------------- ------- ---------
undo_management  string  AUTO
undo_retention   integer 900
undo_tablespace  string  UNDOTBS1

SCOTT@book> create table tx as select * from dba_objects ;
Table created.

SCOTT@book> set numw 12
SCOTT@book> select sysdate , current_scn from v$database ;
SYSDATE              CURRENT_SCN
------------------- ------------
2017-05-19 18:00:23  13277861094

SCOTT@book> update tx set object_name=lower(object_name);
87006 rows updated.

SCOTT@book> commit ;
Commit complete.

SCOTT@book> alter system set undo_tablespace=UNDOTBS2;
System altered.

SCOTT@book> select * from tx as of scn 13277861094 where rownum=1;
OWNER  OBJECT_NAME          SUBOBJECT_    OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         CREATED             LAST_DDL_TIME       TIMESTAMP           STATUS  T G S    NAMESPACE EDITION_NAME
------ -------------------- ---------- ------------ -------------- ------------------- ------------------- ------------------- ------------------- ------- - - - ------------ ------------------------------
SYS    ICOL$                                     20              2 TABLE               2013-08-24 11:37:35 2013-08-24 11:47:37 2013-08-24:11:37:35 VALID   N N N            1


SCOTT@book> update deptx set dname=upper(dname) where rownum=1;
1 row updated.

SCOTT@book> @ &r/xid
XIDUSN_XIDSLOT_XIDSQN
------------------------------
20.2.4

C70                                                                        XIDUSN    XIDSLOT     XIDSQN     UBAFIL     UBABLK     UBASQN     UBAREC STATUS            USED_UBLK  USED_UREC XID              ADDR             START_DATE
---------------------------------------------------------------------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------- ---------- ---------------- ---------------- -------------------
ALTER SYSTEM DUMP UNDO BLOCK '_SYSSMU20_1294681377$' XID 20 2 4;               20          2          4          7        274          1          4 ACTIVE                    1          2 1400020004000000 00000000818ED500 2017-05-19 18:03:36
ALTER SYSTEM DUMP UNDO HEADER '_SYSSMU20_1294681377$';
ALTER SYSTEM DUMP DATAFILE 7 BLOCK 274;
--//现在新的事务使用新undo表空间.下个星期看看是否还能能查询.

SCOTT@book> set numw 12
SCOTT@book> select sysdate , current_scn from v$database ;
SYSDATE              CURRENT_SCN
------------------- ------------
2017-05-25 08:38:09  13278488313

SCOTT@book> select * from tx as of scn 13277861094 where rownum=1;
OWNER  OBJECT_NAME          SUBOBJECT_    OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE         CREATED             LAST_DDL_TIME       TIMESTAMP           STATUS  T G S    NAMESPACE EDITION_NAME
------ -------------------- ---------- ------------ -------------- ------------------- ------------------- ------------------- ------------------- ------- - - - ------------ ------------------------------
SYS    ICOL$                                     20              2 TABLE               2013-08-24 11:37:35 2013-08-24 11:47:37 2013-08-24:11:37:35 VALID   N N N            1

--//时间已经过去将近6天,依旧能查询到修改前星期,当然如果这个表有dml发生,也许就不行.不过这样确实提供一种思路.

目录
相关文章
|
关系型数据库 Oracle SQL
[20180419]关于闪回的一些问题.txt
[20180419]关于闪回的一些问题.txt --//别人问的问题,就是drop表,然后flashbask表,建立的触发器还在吗? --//我记忆里触发器应该还在,我个人喜欢通过例子验证自己的判断.
1060 0
|
关系型数据库 Oracle
|
Oracle 关系型数据库 数据库
|
SQL Oracle 关系型数据库
[20170627]使用TSPITR恢复表空间.txt
[20170627]使用TSPITR恢复表空间.txt --//RMAN提供了一种实现所谓TSPITR(Tablespace Point-In-Time Recovery)的技术,通过简单的一个语句,就可以在主库不停库(很吸引人) --//的情况下,利用备份集和连续的归档日志,实现表空间级别的定点恢复。
897 0
|
Oracle 关系型数据库 数据库
[20160721]rman与undo表空间备份.txt
[20160721]rman与undo表空间备份.txt --//UNDO表空间主要用于存储前镜像数据,这些数据在回滚以及恢复过程中可能被用到。 --//一般生产数据库的UNDO表空间可能会变得非常巨大,甚至包括多个数据文件,而备份完整的UNDO数据文件在恢复时一般可能用到的比 --//例很小。
852 0
|
SQL Oracle 关系型数据库
[20160406] 恢复until scn NNN.txt
[20160406] 恢复until scn NNN.txt --昨天别人问的问题,如果使用rman恢复,restore database until scn NNN;是恢复到NNN,还是NNN-1.
841 0
|
Oracle 关系型数据库 数据库管理
[20160329]表空间与数据文件.txt
[20160329]表空间与数据文件.txt --昨天跟别人聊天,提到招聘DBA,一些dba这些基本的概念不清楚. --表空间可以是一个逻辑的概念,包含多个数据文件.
772 0
|
SQL 数据库管理 关系型数据库
[20150913]文件检查点-表空间offline.txt
[20150913]文件检查点-表空间offline.txt --oracle从8i以后基本使用增量检查点取代原来的检查点模式,但是如果一个表空间处于热备份模式以及offline时,要将这些表空间包含 --的数据文件所涉及到的脏块写数据文件.
717 0
|
数据库
undo 表空间
问题描述: 第一:磁盘空间共有450g,数据表空间、索引所占空间为350g,临时表空间60g,undo自增长到35g,包括其他空间以及安装所用空间,磁盘空间还剩3g左右。
644 0
|
数据库管理
[20150414]只读表空间与没有提交事务.txt
[20150414]只读表空间与没有提交事务.txt --如果1个表空间在设置只读前,存在没有提交的事务,会出现什么情况呢?自己做1个测试: 1.建立测试环境: SCOTT@test> @ &r/ver1 PORT_STRING           ...
653 0