찾다
데이터 베이스MySQL 튜토리얼闪回数据库实验总结

闪回数据库实验总结

Jun 07, 2016 pm 03:48 PM
실험요약데이터 베이스새로운개념

闪回数据库概念: 10G新增功能,在启用flashback database功能后,数据库会定期将发生变化的数据块的 前镜像写入闪回日志的日志文件中, 在进行数据库闪回时,这些数据块可以直接复制回来以满足数据库的恢复需要。 REDO LOG可以用来辅助数据恢复到更精确时间

闪回数据库概念:

10G新增功能,在启用flashback database功能后,数据库会定期将发生变化的数据块的 前镜像写入闪回日志的日志文件中,

在进行数据库闪回时,这些数据块可以直接复制回来以满足数据库的恢复需要。
REDO LOG可以用来辅助数据恢复到更精确时间点,可以缩短恢复时间。
闪回数据库的日志文件由recovery writer RVWR进程写入
闪回日志文件由RVWR进程在闪回恢复区中自动创建和维护。
闪回数据库特性默认是关闭,需要在MOUNT状态打开。
闪回时可将无关的表空间暂时OFFLINE以加快恢复速度,只将SYSTEM UNDO 及所要闪回的数据对应的表空间在线即可。

不能使用闪回数据库的场景:

数据文件物理损坏--只用进行物理恢复了
数据文件shrink
使用备份的控制文件--或者重建了控制文件,因为闪回日志信息记录在控制文件中
表空间删除--
想闪回到比闪回日志中最小SCN更早的时间点--

如删除用户,可以先闪回到删除前,READ ONLY模式打开,然后EXPDP导出被删除用户。
完全恢复数据库,READ WRITE打开,再将用户导入。

总结一下开启闪回数据库功能简要步骤:
1.重启数据库到MOUNT状态-startup mount;
2.打开归档模式-alter database archivelog; 非归档时执行打开闪回数据库将报错:ORA-38707: Media recovery is not enabled.
3.设置闪回区域--需要提前在OS中创建好目录并指定大小- 未指定或指定空间不足报:ORA-38709: Recovery Area is not enabled.ORA-38708: not enough space for first flashback database log file
alter system set db_recovery_file_dest_size=2g;
alter system set db_recovery_file_dest='/backup/flashback_area';
4.打开数据库,查询归档模式-archive log list; 并查询V$DATABASE.FLASHBACK_ON字段的状态,

下面实验打开闪回数据库功能,并实际进行一次闪回数据库操作来恢复数据。

1.查看数据库归档状态并打开闪回数据库功能

22:08:49 SQL> conn / as sysdba
Connected.
22:08:54 SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/app/oracle/archbys001/
Oldest online log sequence     46
Next log sequence to archive   48
Current log sequence           48

如未打开归档,则报以下错误:

SYS@ bys3>alter database noarchivelog;
Database altered.
SYS@ bys3>alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38707: Media recovery is not enabled.


查看闪回状态,默认是NO,没打开。
22:08:56 SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO
22:09:18 SQL> host
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G  9.2G  8.9G  51% /
/dev/sda1              99M   21M   74M  22% /boot
tmpfs                 3.0G  484M  2.6G  16% /dev/shm
/dev/sda5             4.6G  1.4G  3.1G  31% /backup
[oracle@oel-01 ~]$ cd /backup
[oracle@oel-01 backup]$mkdir flashback_area
[oracle@oel-01 backup]$ ls
flashback_area
full
lost+found
[oracle@oel-01 backup]$ exit
exit
手动指定一下闪回区的大小和目录所在,可以使用默认值。
22:10:53 SQL> alter system set db_recovery_file_dest_size=1g;
System altered.
22:11:47 SQL> alter system set db_recovery_file_dest='/backup/flashback_area';
System altered.

如未指定闪回区,报错如下:

SYS@ bys3>alter database archivelog;
Database altered.
SYS@ bys3>alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38709: Recovery Area is not enabled.

定义一个时间上限,设置数据库能够闪回的最大时间上限,单位分钟。2880是两天可以使用默认值。
22:11:58 SQL> alter system set db_flashback_retention_target=2880;
System altered.
22:14:12 SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
22:14:36 SQL> startup mount;
ORACLE instance started.
Total System Global Area  845348864 bytes
Fixed Size                  1339796 bytes
Variable Size             583011948 bytes
Database Buffers          255852544 bytes
Redo Buffers                5144576 bytes
Database mounted.
22:20:43 SQL> show parameter db_recovery
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /backup/flashback_area
db_recovery_file_dest_size           big integer 1G
打开闪回数据库特性
22:21:18 SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38708: not enough space for first flashback database log file

22:21:32 SQL> alter system set db_recovery_file_dest_size=2g;
System altered.
22:26:22 SQL> alter database flashback on;
Database altered.
22:26:27 SQL> alter database open;
Database altered.

22:26:57 SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES

2.在数据库中做DDL及DML操作,并删除所建表

22:27:35 SQL> conn bys/bys
Connected.
22:34:41 SQL> create table test7 as select * from test6;
Table created.
22:37:43 SQL> select * from test7;
ABC
---------
1
2
22:37:53 SQL> select current_scn from v$database;
CURRENT_SCN
-----------
    1373570
22:38:02 SQL> drop table test7;
Table dropped.
22:38:19 SQL> show recyclebin;
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST7            BIN$39Q/PNkxLungQFXeqUARIQ==$0 TABLE       2013-06-23:22:38:18
22:38:24 SQL> purge recyclebin;
Recyclebin purged.
22:39:52 SQL> show recyclebin;
22:39:54 SQL> select oldest_flashback_scn from v$flashback_database_log;
OLDEST_FLASHBACK_SCN
--------------------
             1373161
22:40:28 SQL> ALTER SESSION SET nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
Session altered.
查询最早的SCN对应的时间---我这里是上面打开闪回数据库特性的时间。
也可以从OLDEST_FLASHBACK_SCN列查最早SCN

22:40:35 SQL> SELECT oldest_flashback_time FROM v$flashback_database_log;
OLDEST_FLASHBACK_TIM
--------------------

23-JUN-2013 22:26:27


3.重启数据库到MOUNT状态进行闪回数据库操作

22:42:19 SQL> shutdown immediate;
ORA-01031: insufficient privileges
22:43:00 SQL> conn / as sysdba
Connected.
22:43:05 SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
22:43:16 SQL> startup mount;
ORACLE instance started.
Total System Global Area  845348864 bytes
Fixed Size                  1339796 bytes
Variable Size             583011948 bytes
Database Buffers          255852544 bytes
Redo Buffers                5144576 bytes
Database mounted.
22:49:14 SQL> ALTER SESSION SET nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
Session altered.
22:49:20 SQL> select sysdate from dual;
SYSDATE
--------------------
23-JUN-2013 22:49:25
22:49:25 SQL> SELECT oldest_flashback_time FROM v$flashback_database_log;
OLDEST_FLASHBACK_TIM
--------------------
23-JUN-2013 22:26:27
22:50:38 SQL> select oldest_flashback_scn from v$flashback_database_log;
OLDEST_FLASHBACK_SCN
--------------------
             1373161
22:50:48 SQL> flashback database to scn 1373570;
Flashback complete.

下面语句是测试过可用的使用时间戳闪回,我未使用。
SQL> flashback database to timestamp to_timestamp('2013-06-26 14:05:10','yyyy-MM-dd hh24:mi:ss');
resetlogs打开之后,不能再闪回到 resetlogs之前的时间点。
22:51:53 SQL> alter database open resetlogs;
Database altered.
22:53:18 SQL> show user
USER is "SYS"

4.使用BYS用户登陆验证第2步删除表操作之前的数据是否正常

22:54:12 SQL> conn bys/bys
Connected.
22:55:13 SQL> select * from test7;
ABC
---------
1
2

补充:不确定闪回的时间或SCN是否足够使数据恢复,可以以READ ONLY方式打开数据库
即flashback database to scn 1373570;或flashback database to timestamp to_timestamp('2013-06-26 14:05:10','yyyy-MM-dd hh24:mi:ss');

然后  alter database open read only;然后查询数据看是否需要的数据已经恢复。

如果未恢复,可以继续使用flashback database to SCN/TIMESTAMP这样语句来恢复,直到恢复出需要的数据。

确定恢复出全部需用的数据后,就可以使用alter database open resetlogs;语句打开数据库了。

resetlogs打开数据库后,就不能再使用flashback回到resetlogs之前的时间点了。


增加一个强制检查点的恢复实验--可用于打PSU时刷新数据字典时

SQL> startup mount;
ORACLE instance started.

Total System Global Area  536870912 bytes
Fixed Size                  1220432 bytes
Variable Size             125829296 bytes
Database Buffers          406847488 bytes
Redo Buffers                2973696 bytes
Database mounted.

SQL> create restore point p1 guarantee flashback database;
Restore point created.

SQL> alter database open;
Database altered.
SQL> create user bys identified by bys;
User created.

SQL> grant dba to bys;
Grant succeeded.

SQL> Flashback database to restore point p1;
Flashback database to restore point p1
*
ERROR at line 1:
ORA-38757: Database must be mounted and not open to FLASHBACK.


SQL> conn bys/bys
Connected.
SQL> conn / as sysdba
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;

ORACLE instance started.
Total System Global Area  536870912 bytes
Fixed Size                  1220432 bytes
Variable Size             125829296 bytes
Database Buffers          406847488 bytes
Redo Buffers                2973696 bytes
Database mounted.

SQL> Flashback database to restore point p1;
Flashback complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open



SQL> alter database open resetlogs;
Database altered.

SQL> select username from dba_users;
USERNAME
------------------------------
OLTP_USER
OE
HR
SST
SH
TSMSYS
DIP
DBSNMP
OUTLN
SYS
SYSTEM
11 rows selected.
SQL>

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
InnoDB 버퍼 풀과 성능의 중요성을 설명하십시오.InnoDB 버퍼 풀과 성능의 중요성을 설명하십시오.Apr 19, 2025 am 12:24 AM

innodbbufferpool은 데이터와 인덱싱 페이지를 캐싱하여 디스크 I/O를 줄여 데이터베이스 성능을 향상시킵니다. 작업 원칙에는 다음이 포함됩니다. 1. 데이터 읽기 : BufferPool의 데이터 읽기; 2. 데이터 작성 : 데이터 수정 후 BufferPool에 쓰고 정기적으로 디스크로 새로 고치십시오. 3. 캐시 관리 : LRU 알고리즘을 사용하여 캐시 페이지를 관리합니다. 4. 읽기 메커니즘 : 인접한 데이터 페이지를 미리로드합니다. Bufferpool을 크기를 조정하고 여러 인스턴스를 사용하여 데이터베이스 성능을 최적화 할 수 있습니다.

MySQL 대 기타 프로그래밍 언어 : 비교MySQL 대 기타 프로그래밍 언어 : 비교Apr 19, 2025 am 12:22 AM

다른 프로그래밍 언어와 비교할 때 MySQL은 주로 데이터를 저장하고 관리하는 데 사용되는 반면 Python, Java 및 C와 같은 다른 언어는 논리적 처리 및 응용 프로그램 개발에 사용됩니다. MySQL은 데이터 관리 요구에 적합한 고성능, 확장 성 및 크로스 플랫폼 지원으로 유명하며 다른 언어는 데이터 분석, 엔터프라이즈 애플리케이션 및 시스템 프로그래밍과 같은 해당 분야에서 이점이 있습니다.

MySQL 학습 : 새로운 사용자를위한 단계별 안내서MySQL 학습 : 새로운 사용자를위한 단계별 안내서Apr 19, 2025 am 12:19 AM

MySQL은 데이터 저장, 관리 및 분석에 적합한 강력한 오픈 소스 데이터베이스 관리 시스템이기 때문에 학습 할 가치가 있습니다. 1) MySQL은 SQL을 사용하여 데이터를 작동하고 구조화 된 데이터 관리에 적합한 관계형 데이터베이스입니다. 2) SQL 언어는 MySQL과 상호 작용하는 열쇠이며 CRUD 작업을 지원합니다. 3) MySQL의 작동 원리에는 클라이언트/서버 아키텍처, 스토리지 엔진 및 쿼리 최적화가 포함됩니다. 4) 기본 사용에는 데이터베이스 및 테이블 작성이 포함되며 고급 사용량은 Join을 사용하여 테이블을 결합하는 것과 관련이 있습니다. 5) 일반적인 오류에는 구문 오류 및 권한 문제가 포함되며 디버깅 기술에는 구문 확인 및 설명 명령 사용이 포함됩니다. 6) 성능 최적화에는 인덱스 사용, SQL 문의 최적화 및 데이터베이스의 정기 유지 보수가 포함됩니다.

MySQL : 초보자가 마스터하는 필수 기술MySQL : 초보자가 마스터하는 필수 기술Apr 18, 2025 am 12:24 AM

MySQL은 초보자가 데이터베이스 기술을 배우는 데 적합합니다. 1. MySQL 서버 및 클라이언트 도구를 설치하십시오. 2. SELECT와 같은 기본 SQL 쿼리를 이해하십시오. 3. 마스터 데이터 작업 : 데이터를 만들고, 삽입, 업데이트 및 삭제합니다. 4. 고급 기술 배우기 : 하위 쿼리 및 창 함수. 5. 디버깅 및 최적화 : 구문 확인, 인덱스 사용, 선택*을 피하고 제한을 사용하십시오.

MySQL : 구조화 된 데이터 및 관계형 데이터베이스MySQL : 구조화 된 데이터 및 관계형 데이터베이스Apr 18, 2025 am 12:22 AM

MySQL은 테이블 구조 및 SQL 쿼리를 통해 구조화 된 데이터를 효율적으로 관리하고 외래 키를 통해 테이블 ​​간 관계를 구현합니다. 1. 테이블을 만들 때 데이터 형식을 정의하고 입력하십시오. 2. 외래 키를 사용하여 테이블 간의 관계를 설정하십시오. 3. 인덱싱 및 쿼리 최적화를 통해 성능을 향상시킵니다. 4. 데이터 보안 및 성능 최적화를 보장하기 위해 데이터베이스를 정기적으로 백업 및 모니터링합니다.

MySQL : 주요 기능 및 기능이 설명되었습니다MySQL : 주요 기능 및 기능이 설명되었습니다Apr 18, 2025 am 12:17 AM

MySQL은 웹 개발에 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 주요 기능에는 다음이 포함됩니다. 1. 다른 시나리오에 적합한 InnoDB 및 MyISAM과 같은 여러 스토리지 엔진을 지원합니다. 2.로드 밸런싱 및 데이터 백업을 용이하게하기 위해 마스터 슬레이브 복제 기능을 제공합니다. 3. 쿼리 최적화 및 색인 사용을 통해 쿼리 효율성을 향상시킵니다.

SQL의 목적 : MySQL 데이터베이스와 상호 작용합니다SQL의 목적 : MySQL 데이터베이스와 상호 작용합니다Apr 18, 2025 am 12:12 AM

SQL은 MySQL 데이터베이스와 상호 작용하여 데이터 첨가, 삭제, 수정, 검사 및 데이터베이스 설계를 실현하는 데 사용됩니다. 1) SQL은 Select, Insert, Update, Delete 문을 통해 데이터 작업을 수행합니다. 2) 데이터베이스 설계 및 관리에 대한 생성, 변경, 삭제 문을 사용하십시오. 3) 복잡한 쿼리 및 데이터 분석은 SQL을 통해 구현되어 비즈니스 의사 결정 효율성을 향상시킵니다.

초보자를위한 MySQL : 데이터베이스 관리를 시작합니다초보자를위한 MySQL : 데이터베이스 관리를 시작합니다Apr 18, 2025 am 12:10 AM

MySQL의 기본 작업에는 데이터베이스, 테이블 작성 및 SQL을 사용하여 데이터에서 CRUD 작업을 수행하는 것이 포함됩니다. 1. 데이터베이스 생성 : createAbasemy_first_db; 2. 테이블 만들기 : CreateTableBooks (idintauto_incrementprimarykey, titlevarchar (100) notnull, authorvarchar (100) notnull, published_yearint); 3. 데이터 삽입 : InsertIntobooks (Title, Author, Published_year) VA

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구