在oracle9i中引入了flashback查询,flashbackquery实际上是利用UNDO信息来获得过去的数据。由于UNDO空间是循环使用的,事务的前映像不可能永久保存,因此..
在oracle 9i中引入了flashback查询,flashback query实际上是利用UNDO信息来获得过去的数据。由于UNDO空间是循环使用的,事务的前映像不可能永久保存,因此flashback query只能支持过去一段时间内的数据查询,这个时间与undo_retention相关,undo_retention默认设置900s
下面我们来看下flashback查询恢复数据的例子:
1、创建用户fly SQL> create user fly identified by fly; User created. SQL> grant dba,connect,resource to fly; Grant succeeded. 2、创建表和索引 SQL> conn fly/fly Connected. SQL> create table fly as select * from dba_objects; Table created. SQL> create index idx_fly on fly(object_id); Index created. SQL> select count(1) from fly; COUNT(1) ---------- 78193 3、更改会话时间显示格式 SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered. SQL> select sysdate from dual; SYSDATE ------------------- 2013-12-05 21:19:52 4、假设误删除删除数据并提交了,如下所示: SQL> delete from fly where rownum commit; Commit complete. 5、可考虑如下方法恢复数据,优先使用flashback 5.1 flashback 5.2 imp/impdp 5.3 rman 5.4 logminer 6、通过flashback技术来闪回查询表被删除前的时间点的数据,并保存为一张临时表 SQL> create table fly_tmp_1205 as select * from fly as of timestamp to_timestamp('2013-12-05 21:19:52','yyyy-mm-dd hh24:mi:ss'); Table created. SQL> select count(*) from fly_tmp_1205; COUNT(*) ---------- 78193 如果只是大概记得是几分钟前被delete的,假设当前时间数据被删除了11分钟左右的话: SQL> select count(1) from fly as of timestamp sysdate-11/1440; COUNT(1) ---------- 78193 在Oracle 10g中,增强了闪回查询功能,并且提供了将整个数据库回退到过去某个时刻的能力,这个功能
是通过flashback log实现的。flashback log有点类似redo log,只不过redo log将数据库往前滚,flashback log
则将数据库往后滚。为了保存管理和备份恢复相关的文件,oracle10g提供了一个叫做闪回恢复,这个区域默认创建在ORACLE_BASE目录下。可以将所有恢复相关的文件,比如flashback log,archive log,
backup set等,放到这个区域集中管理。
到了Oracle 11g,闪回又出了一个新特性:Oracle Flashback Data Archive. FDA通过将变化数据存储到另外创建的闪回归档区(Flashback Archive)中,和undo区别开来,这样就可以为闪回归档区单独设置存储策略,也可以闪回到指定时间之前的旧数据而不影响undo策略,就是减少对undo的依赖性。 因为在一个很忙的系统,undo保
存的时间是很有限的。 但通过FDA,我们就要灵活很多了。
Flashback技术可以细分以下4种:
Flashback Database,需要开启闪回功能,默认不开启闪回功能,生产库一般不开启闪回功能
Flashback Drop,需要开启回收站,默认开启
Flashback Query(分Flashback Query, Flashback Version Query, Flashback Transaction Query 三种), 基于undo信息
Flashback Table。 用的不多,其原理也是基于undo信息,一般恢复数据使用flashback query来代替flashback table
从Oracle 10g开始,在一些动态性能视图里面,如 V$CONTROLFILE, V$LOGFILE, V$ARCHIVED_LOG, V$DATAFILE_COPY 等都新增加了一列:IS_RECOVERY_DEST_FILE ,指明相关的文件是否在恢复区内。
SQL> select recid,is_recovery_dest_file from v$archived_log where recid 1、设置flashback recovery area参数闪回恢复区主要通过3个初始化参数来设置和管理:
db_recovery_file_dest:指定闪回恢复区的位置
db_recovery_file_dest_size:指定闪回恢复区的可用空间大小
db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,默认1440分钟,也就是一天。
当然,实际上可回退的时间还决定于闪回恢复区的大小,因为里面保存了回退所需要的flash log。所以这个
参数要和db_recovery_file_dest_size配合修改。SQL> show parameter db_recovery NAME TYPE VALUE ----------------------------------------------------------------------------- db_recovery_file_dest string /home/oracle/flash_recovery_area db_recovery_file_dest_size big integer 2G SQL> alter system set db_recovery_file_dest_size=8G scope=both; System altered. SQL> alter system set db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'; System altered. SQL> show parameter db_recovery NAME TYPE VALUE ----------------------------------------------------------------------------- db_recovery_file_dest string /u01/app/oracle/flash_recovery _area db_recovery_file_dest_size big integer 8G
说明:
设置闪回恢复区后,如果没有设置过log_archive_dest_n参数,则归档日志默认是保存到该区域的。我们需要
注意闪回恢复区空间的使用率,如果闪回恢复区满了,就没地方放归档了,数据库会hang住,实际上,oracle是通
过隐式的设置log_archive_dest_10='location=USE_DB_RECOVERY_FILE_DEST'来实现的。多个数据库的闪回恢
复区可以指定到同一个位置,但是db_name不能一样,或者db_unique_name不一样。RAC的闪回恢复区必须位于
共享磁盘上,能被所有实例访问。
2、Flashback Database
2.1、如何启用和禁用Flashback Database
数据库的Flashback Database功能缺省是关闭的,要想启用这个功能,就需要做如下配置。

方法:1、利用“select*from user_indexes where table_name=表名”语句查询表中索引;2、利用“select*from all_indexes where table_name=表名”语句查询所有索引。

oracle asm指的是“自动存储管理”,是一种卷管理器,可自动管理磁盘组并提供有效的数据冗余功能;它是做为单独的Oracle实例实施和部署。asm的优势:1、配置简单、可最大化推动数据库合并的存储资源利用;2、支持BIGFILE文件等。

在oracle中,可以利用“TO_SINGLE_BYTE(String)”将全角转换为半角;“TO_SINGLE_BYTE”函数可以将参数中所有多字节字符都替换为等价的单字节字符,只有当数据库字符集同时包含多字节和单字节字符的时候有效。

在Oracle中,可利用lsnrctl命令查询端口号,该命令是Oracle的监听命令;在启动、关闭或重启oracle监听器之前可使用该命令检查oracle监听器的状态,语法为“lsnrctl status”,结果PORT后的内容就是端口号。

在oracle中,可以利用“drop sequence sequence名”来删除sequence;sequence是自动增加数字序列的意思,也就是序列号,序列号自动增加不能重置,因此需要利用drop sequence语句来删除序列。

在oracle中,可以利用“select ... From all_tab_columns where table_name=upper('表名') AND owner=upper('数据库登录用户名');”语句查询数据库表的数据类型。

方法:1、利用“LOWER(字段值)”将字段转为小写,或者利用“UPPER(字段值)”将字段转为大写;2、利用“REGEXP_LIKE(字符串,正则表达式,'i')”,当参数设置为“i”时,说明进行匹配不区分大小写。

方法:1、利用“alter system set sessions=修改后的数值 scope=spfile”语句修改session参数;2、修改参数之后利用“shutdown immediate – startup”语句重启服务器即可生效。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Atom editor mac version download
The most popular open source editor

Dreamweaver Mac version
Visual web development tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 English version
Recommended: Win version, supports code prompts!
