最近在看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#
---------- ------------------ ----------
1
NOT
ACTIVE 0
2
NOT
ACTIVE 0
3
NOT
ACTIVE 0
4 ACTIVE 5465260
5 ACTIVE 5465260
6
NOT
ACTIVE 0
7
NOT
ACTIVE 0
8
NOT
ACTIVE 5218407
9
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,如需转载请自行联系原作者