oracle 闪回表定义,ORACLE闪回表数据

ORACLE数据闪回操作

-------原表数据--------------------

select

*from ORD_ITEMS;

----------删除数据-----------------------------

delete

ORD_ITEMS;

1、利用SCN进行恢复数据

-----------查看当前SCN--------------------------

select

dbms_flashback.get_system_change_number from dual;

select count(1) from

ord_items as of scn 9388400;----逐一排查删除时的SCN

insert into ord_items select

*from ord_items as of scn 9388400;---数据插入

2、通过时间戳timestamp进行闪回数据

-------------查找删除表时的时间-----------------------------------------

select

r.FIRST_LOAD_TIME,r.* from v$sqlarea r where r.SQL_TEXT like 'delete%'order by

r.FIRST_LOAD_TIME desc ;

create table t_table_recove --新表

as

select *

from ord_items--你操作的那张表

as of timestamp to_timestamp('2017-01-04

11:24:18','yyyy-mm-dd hh24:mi:ss'); /*建立新表查看被删除数据是否准确,确认无误后,插入操作表中

3、Undo_Retentiond参数的应用

SQL> show parameter undo_

NAME

TYPE        VALUE

------------------------------------ -----------

------------------------------

undo_management

string      AUTO

undo_retention                       integer

900

undo_tablespace                      string      UNDOTBS1

注意:undo_retention 就是设置Oracle

Undo过期数据的保存期限,单位是秒。如果参数设置为900秒,那么Undo段数据在非Active状态之后,会保留900秒;Undo_retention是一个“目标期望值”。用户设置出这个值之后,Oracle内部会尽量保证将Undo数据保留超过undo_retention设置的时间。在这个过程中,Oracle会涉及到比如尝试拓展Undo表空间数据文件、Undo

Segment管理等内容。但是,如果“现实比较残酷”,比如说Undo使用紧张、没有额外的方法,那么这个时间段也是不能保证的。

4、模拟UNDO表空间空间较小时且在Undo_Retentiond时间范围内(900S),出现的实验结果:

--------------------------查看ORD_items表的大小-----------------------------------------

SELECT

segment_name AS TABLENAME,BYTES/1024/1024 MB  FROM user_segments WHERE

segment_name='ORD_ITEMS';

cd1d3bca7633d06b10975d332b8d6ffd.png

-------------创建表空间undotbs02(5M)----------------------------

create

undo tablespace undotbs02 datafile 'D:\app\hanzhen\oradata\hz\undotbs02.dbf'size

5m autoextend off;

select file_name, AUTOEXTENSIBLE, BYTES/1024/1024 MB from

dba_data_files where tablespace_name='UNDOTBS02';

d5da3ec0a9e6c9fd507769f245680194.png

-----------------------更改系统默认表空间----------------------------------------

alter

system set undo_tablespace=undotbs02

----------删除数据-----------------------------

delete

ORD_ITEMS;

当删除数据时,报错

cf885947c1c670c66c4f5c8eaa1a3af8.png

当闪回数据,UNDO表空间较小时,会提示如下:

cfe02edd0f19d6ff14420cf85a872b08.png

删除动作中,很多时候都是禁止的。因为Undo空间过小,不能容纳需要保存的前镜像数据;虽然设置了undo_retention的参数,但是如果系统undo表空间容量不够大,而且undo生成总量很大的时候,系统还是会将undo进行覆盖。

当undo表空间满足要求,且闪回时间超过Undo_Retentiond设置时,仍然是可以做闪回数据操作的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮您解答关于Oracle数据设计及数据导入的问题。 首先,让我们来看一下如何设计Oracle数据。 1. 定义结构: 在Oracle数据库中,使用CREATE TABLE语句来创建。在创建时,需要定义的列名、数据类型、长度、约束等信息。例如: ``` CREATE TABLE employee ( id NUMBER(10), name VARCHAR2(50), age NUMBER(3), salary NUMBER(10,2), hire_date DATE, CONSTRAINT pk_employee PRIMARY KEY (id)); ``` 2. 添加约束: 除了定义列的数据类型和长度之外,还可以添加约束来保证数据的完整性和一致性。常见的约束包括主键约束、唯一约束、检查约束和外键约束等。例如: ``` CREATE TABLE department ( id NUMBER(10), name VARCHAR2(50), CONSTRAINT pk_department PRIMARY KEY (id)); CREATE TABLE employee ( id NUMBER(10), name VARCHAR2(50), age NUMBER(3), salary NUMBER(10,2), hire_date DATE, dept_id NUMBER(10), CONSTRAINT pk_employee PRIMARY KEY (id), CONSTRAINT fk_employee_dept FOREIGN KEY (dept_id) REFERENCES department(id)); ``` 3. 创建索引: 如果经常需要查询某个列的值,可以创建索引来提高查询效率。例如: ``` CREATE INDEX idx_employee_name ON employee(name); ``` 接下来是数据导入的部分,Oracle数据库提供了多种方法来导入数据,包括SQL*Loader、外部、INSERT语句等。这里我们以SQL*Loader为例进行说明。 SQL*Loader是Oracle提供的一个数据导入工具,可以将数据从文件中导入到数据库中。使用SQL*Loader需要以下步骤: 1. 创建控制文件: 控制文件是SQL*Loader的配置文件,用于指定数据文件的格式、目标名、列名和数据类型等信息。例如: ``` LOAD DATA INFILE 'employee.csv' INTO TABLE employee FIELDS TERMINATED BY ',' (id, name, age, salary, hire_date, dept_id) ``` 2. 准备数据文件: 数据文件是需要导入的数据文件,可以是文本文件或者二进制文件。例如: ``` 1,张三,25,5000.00,2019-01-01,1 2,李四,30,8000.00,2018-12-01,2 3,王五,35,10000.00,2017-01-01,3 ``` 3. 运行SQL*Loader: 使用SQL*Loader将数据文件导入到数据库中。例如: ``` sqlldr userid=user/pass control=employee.ctl log=employee.log ``` 以上就是关于Oracle数据设计及数据导入的简要介绍,希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值