oracle闪回版本和闪回事务查询详解
--- 说明闪回数据库 --- 使用闪回表将表内容还原到过去的特定时间点 --- 从删除表中进行恢复 --- 使用闪回查询查看截止到任一时间点的数据库内容 --- 使用闪回版本查询查看某一行在一段时间内的各个版本 --- 使用闪回事务查询查看事务处理历史记录或行 优点
--- 说明闪回数据库
--- 使用闪回表将表内容还原到过去的特定时间点
--- 从删除表中进行恢复
--- 使用闪回查询查看截止到任一时间点的数据库内容
--- 使用闪回版本查询查看某一行在一段时间内的各个版本
--- 使用闪回事务查询查看事务处理历史记录或行
优点:
闪回技术由于只能处理更改数据,所以从根本上改变了恢复技术。使用这个技术时,从错误中恢复花费的时间等于制造错误所花费的时间。当闪回技术使用时,它与介质恢复相比,在易用性、可用性和还原时间方面有明显的优势。
闪回数据库使用闪回日志执行闪回。闪回删除使用回收站。其他所有功能都使用还原数据。
闪回时间浏览
闪回技术提供的功能可用于查询方案对象的过去版本、查询历史记录数据以及执行更改分析。每个事务处理在逻辑上都会生成新版本数据库。使用闪回技术,可通过浏览这些版本来查找错误以及原因。
· 闪回查询:查询特定时间点的所有数据。
· 闪回版本查询:查看两个时间之间行的所有版本已经更改了行的事务处理。
· 闪回事务处理查询:查看事务处理做的所有更改。
使用闪回查询功能时,可以对自特定时间起的数据库执行查询。通过使用select语句的 as of 子句,可指定要查看其数据的时间戳。这有助于分析数据差异。
实验一:闪回查询
实验一:闪回查询:as of timestamp
SYS@ORCL>conn tyger/tyger
Connected.
TYGER@ORCL>create table fb_query as select * from scott.dept;
Table created.
TYGER@ORCL>select * from fb_query;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
TYGER@ORCL>set time on;
09:51:36 TYGER@ORCL>delete fb_query where deptno=10;
1 row deleted.
09:51:53 TYGER@ORCL>commit;
Commit complete.
09:51:57 TYGER@ORCL>select * from fb_query;
DEPTNO DNAME LOC
---------- -------------- -------------
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
09:52:06 TYGER@ORCL>select * from fb_query as of timestamp sysdate-1/1440;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
实验二:闪回查询应用
10:25:04 TYGER@ORCL>drop table fb_tyger purge;
Table dropped.
10:25:10 TYGER@ORCL>create table fb_tyger as select * from scott.dept;
Table created.
10:25:33 TYGER@ORCL>select * from fb_tyger;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
10:25:44 TYGER@ORCL>select sysdate from dual;
SYSDATE
---------
14-MAR-14
10:26:02 TYGER@ORCL>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
10:26:30 TYGER@ORCL>select sysdate from dual;
SYSDATE
-------------------
2014-03-14 10:26:38
10:26:38 TYGER@ORCL>update fb_tyger set dname='';
4 rows updated.
10:26:51 TYGER@ORCL>commit;
Commit complete.
10:26:54 TYGER@ORCL>select * from fb_tyger;
DEPTNO DNAME LOC
---------- -------------- -------------
10 NEW YORK
20 DALLAS
30 CHICAGO
40 BOSTON
10:27:12 TYGER@ORCL>select * from fb_tyger as of timestamp to_timestamp('2014-03-14 10:26:38','yyyy-mm-dd hh24:mi:ss');
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
此处遇到错误:
ERROR at line 1:
ORA-01466: unable to read data - table definition has changed
参考文档:
10:29:21 TYGER@ORCL>select * from fb_tyger as of timestamp sysdate-3/1440;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
10:29:35 TYGER@ORCL>select * from fb_tyger;
DEPTNO DNAME LOC
---------- -------------- -------------
10 NEW YORK
20 DALLAS
30 CHICAGO
40 BOSTON
10:46:22 TYGER@ORCL>set time off
TYGER@ORCL>update fb_tyger t
2 set dname =
3 (select dname from fb_tyger as of timestamp
4 to_timestamp('2014-03-14 10:26:38','yyyy-mm-dd hh24:mi:ss')
5 where t.deptno=fb_tyger.deptno);
4 rows updated.
TYGER@ORCL>commit;
Commit complete.
TYGER@ORCL>select * from fb_tyger;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
实验三:闪回查询 as of scn
TYGER@ORCL>conn / as sysdba
Connected.
SYS@ORCL>grant execute on dbms_flashback to tyger;
Grant succeeded.
TYGER@ORCL>select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
1107246
TYGER@ORCL>select * from fb_tyger;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
TYGER@ORCL>delete fb_tyger where deptno
3 rows deleted.
TYGER@ORCL>commit;
Commit complete.
TYGER@ORCL>select * from fb_tyger;
DEPTNO DNAME LOC
---------- -------------- -------------
40 OPERATIONS BOSTON
TYGER@ORCL>select * from fb_tyger as of scn 1107246;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
实验四:利用PL/SQL包dbms_flashback
语法:
· 会话启用闪回指定时间:
DBMS_FLASHBACK.ENABLE_AT_TIME(query_time IN TIMESTAMP);
· 会话启用闪回指定SCN:
DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(query_scn IN NUMBER);
· 关闭闪回:
DBMS_FLASHBACK.DISABLE;
TYGER@ORCL>conn / as sysdba
Connected.
SYS@ORCL>grant execute on dbms_flashback to tyger;
Grant succeeded.
SYS@ORCL>conn tyger/tyger
Connected.
TYGER@ORCL>
TYGER@ORCL>
TYGER@ORCL>
TYGER@ORCL>create table fb_query1 as select * from scott.dept;
Table created.
TYGER@ORCL>create table fb_query2 as select * from scott.dept;
Table created.
TYGER@ORCL>commit;
Commit complete.
TYGER@ORCL>select * from fb_query1;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
TYGER@ORCL>select * from fb_query2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
TYGER@ORCL>set time on;
11:03:38 TYGER@ORCL>update fb_query1 set loc='';
4 rows updated.
11:03:52 TYGER@ORCL>commit;
Commit complete.
11:03:54 TYGER@ORCL>update fb_query2 set dname='';
4 rows updated.
11:04:14 TYGER@ORCL>commit;
Commit complete.
11:04:15 TYGER@ORCL>
11:04:15 TYGER@ORCL>select * from fb_query1;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONS
11:04:23 TYGER@ORCL>select * from fb_query2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 NEW YORK
20 DALLAS
30 CHICAGO
40 BOSTON
// 闪回定位到5分钟前,此时若访问sysdate等时间函数,那么返回的是当前值而非5分钟之前。
11:04:30 TYGER@ORCL>exec dbms_flashback.enable_at_time(sysdate-5/1440);
PL/SQL procedure successfully completed.
11:05:09 TYGER@ORCL>select * from fb_query1;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
11:05:29 TYGER@ORCL>select * from fb_query2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
//处于闪回会话模式时,不允许执行DML 、 DDL 操作
11:05:45 TYGER@ORCL>update fb_query1 set dname='';
update fb_query1 set dname=''
*
ERROR at line 1:
ORA-08182: operation not supported while in Flashback mode
11:05:59 TYGER@ORCL>exec dbms_flashback.disable;
PL/SQL procedure successfully completed.
11:06:18 TYGER@ORCL>select * from fb_query1;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING
20 RESEARCH
30 SALES
40 OPERATIONS
11:06:30 TYGER@ORCL>select * from fb_query2;
DEPTNO DNAME LOC
---------- -------------- -------------
10 NEW YORK
20 DALLAS
30 CHICAGO
40 BOSTON
11:06:37 TYGER@ORCL>update fb_query1 set dname='' where deptno=10;
1 row updated.
11:07:10 TYGER@ORCL>select * from fb_query1;
DEPTNO DNAME LOC
---------- -------------- -------------
10
20 RESEARCH
30 SALES
40 OPERATIONS
// sys 用户不允许使用dbms_flashback 包
11:07:20 TYGER@ORCL>conn / as sysdba
Connected.
11:07:35 SYS@ORCL>set time off
SYS@ORCL>exec dbms_flashback.enable_at_time(sysdate-5/1440);
BEGIN dbms_flashback.enable_at_time(sysdate-5/1440); END;
*
ERROR at line 1:
ORA-08185: Flashback not supported for user SYS
ORA-06512: at "SYS.DBMS_FLASHBACK", line 3
ORA-06512: at line 1
实验二:闪回版本
---通过闪回版本可审计表行,检索影响行的事务处理的有关信息。然后可使用返回的事务处理标识符来执行事务处理挖掘(通过使用LogMiner)或执行闪回版本查询。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Oracle Environment 변수 구성 안내서 : Oracle_home 환경 변수를 생성하여 Oracle Home 디렉토리를 가리 킵니다. 경로 환경 변수에 Oracle Binary Directory를 추가하십시오. TNS_ADMIN 환경 변수를 설정하십시오 (파일의 TNS를 사용하여 이름이 지정된 경우). 환경 변수 설정을 확인하여 출력이 설정 변수를 표시하는지 확인하십시오.

Oracle은 여러 가지 중복 제거 쿼리 방법을 제공합니다. 별개의 키워드는 각 열에 고유 한 값을 반환합니다. 그룹 별 조항은 결과를 그룹화하고 각 그룹에 대해 비 반복 값을 반환합니다. 고유 한 키워드는 고유 한 행만 포함 된 인덱스를 만드는 데 사용되며 인덱스 쿼리는 자동으로 망상됩니다. row_number () 함수는 고유 한 숫자를 할당하고 1 행 만 포함하는 결과를 필터링합니다. 최소 () 또는 max () 함수는 숫자 열의 비 반복 값을 반환합니다. 교차 연산자는 두 결과 세트의 공통 값을 반환합니다 (중복 없음).

데이터 가져 오기 방법 : 1. SQLLOADER 유틸리티 사용 : 데이터 파일 준비, 제어 파일 작성 및 SQLLOADER 실행; 2. IMP/EXP 도구를 사용하십시오 : 데이터 내보내기, 데이터 가져 오기. 팁 : 1. 빅 데이터 세트에 권장되는 SQL*로더; 2. 대상 테이블이 존재해야하고 열 정의가 일치해야합니다. 3. 가져 오기 후에는 데이터 무결성을 확인해야합니다.

데이터베이스 문자 세트를 확인하여 데이터와 일치하는지 확인하여 Oracle Garbled 문제를 해결할 수 있습니다. 클라이언트 문자 세트를 데이터베이스와 일치하도록 설정하십시오. 데이터베이스 문자 세트와 일치하도록 데이터 변환 또는 열 문자 세트를 수정하십시오. 유니 코드 문자 세트를 사용하고 멀티 바이트 문자 세트를 피하십시오. 데이터베이스 및 클라이언트의 언어 설정이 올바른지 확인하십시오.

저장된 절차는 데이터베이스에 저장 될 수 있으며 별도의 단위로 반복적으로 호출 될 수있는 SQL 문의 세트입니다. 매개 변수 (In, Out, Inout)를 수락하고 코드 재사용, 보안, 성능 및 모듈성의 장점을 제공 할 수 있습니다. 예 : 저장된 프로 시저를 작성하여 Calculate_sum 두 숫자의 합을 계산하고 Out 매개 변수에 저장하십시오.

Alter Table 문을 사용하십시오. 특정 구문은 다음과 같습니다. Alter Table_Name Add Column_name Data_Type [제한 조건 -Clause]. 여기서 : table_name은 테이블 이름, column_name은 필드 이름, data_type는 데이터 유형이며, 제한 조건은 선택적 제한 조건입니다. 예 : Alter Table 직원 이메일 추가 Varchar2 (100) 직원 테이블에 이메일 필드를 추가합니다.

Oracle 테이블 스페이스 크기를 쿼리하려면 다음 단계를 따르십시오. 쿼리를 실행하여 테이블 스페이스 이름을 결정하십시오. 쿼리를 실행하여 테이블 스페이스 크기를 쿼리하십시오. sum (bytes)을 total_size, sum (bytes_free)으로 sum (bytes_free), sum (bytes) - sum (bytes_free)으로 dba_data_fices where tablespace_.

기본 키는 테이블의 각 행을 고유하게 식별하는 특수 열 또는 열의 조합입니다. 테이블의 레코드가 고유하고 다음과 같이 작성할 수 있습니다. Alter Table 문을 사용하여 테이블 이름을 지정합니다. 기본 키어 키워드 다음 열 이름을 추가하여 기본 키로 지정하십시오. 주요 주요 제약 조건은 데이터 고유성을 보장하고, 쿼리 속도를 개선하며, 중복 레코드를 방지하며 테이블 조인을 단순화하는 데 도움이됩니다.
