热备模式 recover datafile (database status open)
先创建一个表空间进行实验
SYS@ prod>create tablespace test01 datafile '/u01/oradata/prod/test01.dbf' size 10M ;
表空间已创建。
修改表空间为热备模式
SYS@ prod>alter tablespace test01 begin backup;
表空间已更改。
操作系统层面执行cp命令拷贝数据文件test01.dbf
我都备份在了统一路径下

SYS@ prod>
开启热备模式后检查SCN号 校验一致性
SYS@ prod>select file#,checkpoint_change#,name from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
NAME
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 1446473
/u01/oradata/prod/system01.dbf
2 1446473
/u01/oradata/prod/sysaux01.dbf
3 1446473
/u01/oradata/prod/undotbs01.dbf
4 1446473
/u01/oradata/prod/users01.dbf
5 1446473
/u01/oradata/prod/example01.dbf
6 1446473
/u01/oradata/prod/tbsttt.dbf
7 1451521
/u01/oradata/prod/test01.dbf
已选择7行。
注意看一下哈! SCN号不一致 原因是在开启热备后 SCN号将被冻结 我标了黄涩
备份完数据文件后就可以重新关闭热备模式了
此时备份完成,关闭热备模式
SYS@ prod>alter tablespace test01 end backup;
表空间已更改。
status状态是not ACTIVE 开启backup时状态是acitve
SYS@ prod>select * from v$backup;
FILE# STATUS CHANGE# TIME
---------- ------------------------------------------------------ ---------- -------------------
1 NOT ACTIVE 0
2 NOT ACTIVE 0
3 NOT ACTIVE 0
4 NOT ACTIVE 0
5 NOT ACTIVE 0
6 NOT ACTIVE 0
7 NOT ACTIVE 1451521 2021-03-16 13:36:07
已选择7行。
一系列操作,不做解释
SYS@ prod>alter user tony default tablespace test01;
用户已更改。
SYS@ prod>create table tony.emp01 as select * from scott.emp;
表已创建。
SYS@ prod>insert into tony.emp01(empno) values (7000);
已创建 1 行。
SYS@ prod>commit;
提交完成。
SYS@ prod>select * from tony.emp01;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ------------------------------ --------------------------- ---------- ------------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30
7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30
7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10
7788 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 20
7839 KING PRESIDENT 1981-11-17 00:00:00 5000 10
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30
7876 ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20
7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 30
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
7000
已选择15行。
SYS@ prod>insert into tony.emp01(empno) values (7001);
已创建 1 行。
**********************注意 注意我没有进行提交!!!!!!!!!!***************************
新开个session删除test01表空间
SYS@ prod>
SYS@ prod>select file#,checkpoint_change#,name from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
NAME
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 1446473
/u01/oradata/prod/system01.dbf
2 1446473
/u01/oradata/prod/sysaux01.dbf
3 1446473
/u01/oradata/prod/undotbs01.dbf
4 1446473
/u01/oradata/prod/users01.dbf
5 1446473
/u01/oradata/prod/example01.dbf
6 1446473
/u01/oradata/prod/tbsttt.dbf
7 1451521
/u01/oradata/prod/test01.dbf
已选择7行。
SYS@ prod>select file#,checkpoint_change#,name from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
NAME
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 1446473
/u01/oradata/prod/system01.dbf
2 1446473
/u01/oradata/prod/sysaux01.dbf
3 1446473
/u01/oradata/prod/undotbs01.dbf
4 1446473
/u01/oradata/prod/users01.dbf
5 1446473
/u01/oradata/prod/example01.dbf
6 1446473
/u01/oradata/prod/tbsttt.dbf
7 1451521
/u01/oradata/prod/test01.dbf
已选择7行。
offline数据文件
SYS@ prod>alter database datafile 7 offline;
数据库已更改。
离线之后拷贝文件回到/u01/oradata/prod/
SYS@ prod>select * from tony.emp01;
select * from tony.emp01
*
第 1 行出现错误:
ORA-00376: 此时无法读取文件 7
ORA-01110: 数据文件 7: '/u01/oradata/prod/test01.dbf'
SYS@ prod>alter database datafile 7 online;
alter database datafile 7 online
*
第 1 行出现错误:
ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件 ORA-01110:
数据文件 7: '/u01/oradata/prod/test01.dbf'
拷贝文件回到/u01/oradata/prod/
因为我将test01删除了 所以无法读取了,同时也不能online。
想要online必须要找回备份test01.dbf
操作系统层执行:
#cp /data/database/backup/test01.dbf ./
SYS@ prod>
SYS@ prod>alter database datafile 7 online;
alter database datafile 7 online
*
第 1 行出现错误:
ORA-01113: 文件 7 需要介质恢复
ORA-01110: 数据文件 7: '/u01/oradata/prod/test01.dbf'
需要介质恢复 所以recover
SYS@ prod>recover datafile 7;
完成介质恢复。
SYS@ prod>alter database datafile 7 online;
数据库已更改。
SYS@ prod>select * from tony.emp01;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ------------------------------ --------------------------- ---------- ------------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30
7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30
7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10
7788 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 20
7839 KING PRESIDENT 1981-11-17 00:00:00 5000 10
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30
7876 ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20
7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 30
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
7000
7001
已选择16行。
SYS@ prod>rollback;
回退已完成。
SYS@ prod>select * from tony.emp01;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ------------------------------ --------------------------- ---------- ------------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30
7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30
7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10
7788 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 20
7839 KING PRESIDENT 1981-11-17 00:00:00 5000 10
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30
7876 ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20
7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 30
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
7000
7001
已选择16行。
************到这里一定要注意 我之前的7001是未进行提交的,但是恢复后表里居然有此数据,说明!!!!!!!!!隐式提交?????******
我需要有人帮我解答一下这个问题,为此我重新做了一次实验如下,得到的结果一致!!!!!
欢迎各位大佬们给我留言评论 让我彻底清晰这个地方 不胜感激
SYS@ prod>
SYS@ prod>delete from tony.emp01 where empno=7000
2 ;
已删除 1 行。
SYS@ prod>commit;
提交完成。
SYS@ prod>insert into tony.emp01(empno) values (7002);
已创建 1 行。
SYS@ prod>alter database datafile 7 offline;
数据库已更改。
SYS@ prod>alter database datafile 7 online;
alter database datafile 7 online
*
第 1 行出现错误:
ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件 ORA-01110:
数据文件 7: '/u01/oradata/prod/test01.dbf'
SYS@ prod>
SYS@ prod>
SYS@ prod>
SYS@ prod>alter database datafile 7 online;
alter database datafile 7 online
*
第 1 行出现错误:
ORA-01113: 文件 7 需要介质恢复
ORA-01110: 数据文件 7: '/u01/oradata/prod/test01.dbf'
SYS@ prod>recover datafile 7;
完成介质恢复。
SYS@ prod>alter database datafile 7 online;
数据库已更改。
SYS@ prod>select * from tony.emp01;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ------------------------------ --------------------------- ---------- ------------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30
7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30
7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10
7788 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 20
7839 KING PRESIDENT 1981-11-17 00:00:00 5000 10
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30
7876 ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20
7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 30
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
7001
7002
已选择16行。
SYS@ prod>offline真的会伴随着隐式的提交?
SYS@ prod>rollback;
回退已完成。
SYS@ prod>select * from tony.emp01;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ------------------------------ --------------------------- ---------- ------------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30
7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30
7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10
7788 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 20
7839 KING PRESIDENT 1981-11-17 00:00:00 5000 10
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30
7876 ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20
7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 30
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
7001
7002
已选择16行。
Jrojyun
2021-03-15