tablespace backup模式一个没用的技术

简介:

最近在看oracle恢复和备份机制。对oracle的beginbackup和endbackup,感觉很新鲜。就做了一些小实验。结果,一头雾水。不知道为什么要有这个技术。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sys@CISCOSYS>  alter  tablespace users  begin  backup;
sys@CISCOSYS>  select  file#,status,change#  from  v$backup;
FILE# STATUS                CHANGE#
---------- ------------------ ----------
NOT  ACTIVE                  0
NOT  ACTIVE                  0
NOT  ACTIVE                  0
4 ACTIVE                5465260
5 ACTIVE                5465260
NOT  ACTIVE                  0
NOT  ACTIVE                  0
NOT  ACTIVE            5218407
NOT  ACTIVE                  0
10  NOT  ACTIVE                  0
10  rows  selected.
v$backup.change#:SCN号,却不是查询出来的SCN号?

查询出4,5,好数据文件。及找出表空间下的一个表,尝试进行操作。

结果发现可以操作。(在此,就不明白既然知道是backup模式,怎么还允许操作呢)

1
2
3
4
5
6
7
8
//查询某个表空间下的表
sys@CISCOSYS>  select  table_name ,TABLESPACE_NAME   from  dba_tables  where  TABLESPACE_NAME= 'USERS'  and  owner= 'SCOTT' ;
TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
DEPT                           USERS
EMP                            USERS
BONUS                          USERS
SALGRADE                       USERS
1
2
3
4
5
发现处于backup 状态的表空间,依然可以修改数据。
sys@CISCOSYS>  insert  into  scott.dept  values (50, 'IT' , 'BeiJing' );
1 row created.
sys@CISCOSYS>  commit ;
Commit  complete.

backup最大的作业就是锁定文件头。这有什么用呢。?疑问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
sys@CISCOSYS>  alter  system  checkpoint ;
System altered.
checkpoint  之后,未backup的数据文件,都刷新了,但backup的数据文件依然没有变化
sys@CISCOSYS>  select  name ,checkpoint_change#  from  v$datafile;
NAME                            CHECKPOINT_CHANGE#
------------------------------ ------------------
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\SYSTEM01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\UNDOTBS01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\SYSAUX01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465260
TA\ORCL\USERS01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465260
TA\ORCL\ST
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\ADMIN_TBS.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\TBS_STREAM01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\TBS.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\UNDO99.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\USERS02.DBF
10  rows  selected.

即使checkpoint文件头也不会变。

最后关闭backup模式,所有文件头一致了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
sys@CISCOSYS> alter tablespace USERS end backup;
Tablespace altered.
end bakcup 之后 所有数据文件的文件头一致了。
sys@CISCOSYS> select name,checkpoint_change# from v$datafile;
NAME                           CHECKPOINT_CHANGE#
------------------------------ ------------------
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\SYSTEM01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\UNDOTBS01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\SYSAUX01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\USERS01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\ST
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\ADMIN_TBS.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\TBS_STREAM01.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\TBS.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\UNDO99.DBF
D:\ORACLE\PRODUCT\10.2.0\ORADA            5465836
TA\ORCL\USERS02.DBF
10 rows selected.

期间,对数据文件进行了热备,恢复时,也没发现啥用。照样需要介质恢复datafile4,5才可以启动。

1
2
3
4
5
6
sys@CISCOSYS>  alter  database  open ;
alter  database  open
*
ERROR  at  line 1:
ORA-01113: file 5 needs media recovery
ORA-01110: data file 5:  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ST'


本文转自 randy_shandong 51CTO博客,原文链接:http://blog.51cto.com/dba10g/1301618,如需转载请自行联系原作者
相关文章
|
Kubernetes 容器
k8s 删除命令空间namespace卡住解决方法
k8s 删除命令空间namespace卡住解决方法
|
SQL 固态存储 关系型数据库
|
Oracle 关系型数据库
|
Oracle 关系型数据库 数据库
|
Oracle 关系型数据库