Oracle数据库联机备份作业作业文档
一 联机备份步骤 (1)使用数据字典dba_data_files找到需要备份的数据文件以及与之对应的表空间。可选步骤。 (2)使用数据字典v
b
a
c
k
u
p
确
认
数
据
文
件
的
备
份
状
态
。
可
选
步
骤
。
状
态
为
N
O
T
A
C
T
I
V
E
,
没
有
任
何
数
据
处
于
备
份
状
态
。
(
3
)
a
l
t
e
r
t
a
b
l
e
s
p
a
c
e
t
a
b
l
e
s
p
a
c
e
n
a
m
e
b
e
g
i
n
b
a
c
k
u
p
命
令
将
要
备
份
的
表
空
间
设
置
为
备
份
状
态
。
(
4
)
使
用
操
作
系
统
复
制
命
令
将
该
表
空
间
所
对
应
的
所
有
数
据
文
件
复
制
到
备
份
介
质
上
。
(
5
)
a
l
t
e
r
t
a
b
l
e
s
p
a
c
e
t
a
b
l
e
s
p
a
c
e
n
a
m
e
e
n
d
b
a
c
k
u
p
命
令
将
已
经
备
份
成
功
的
表
空
间
重
新
设
置
结
束
备
份
状
态
。
(
6
)
将
当
期
的
重
做
日
志
文
件
的
信
息
写
到
归
档
日
志
文
件
中
去
。
(
7
)
在
使
用
数
据
字
典
v
backup确认数据文件的备份状态。可选步骤。 状态为NOT ACTIVE ,没有任何数据处于备份状态。 (3)alter tablespace tablespacename begin backup命令将要备份的表空间设置为备份状态。 (4)使用操作系统复制命令将该表空间所对应的所有数据文件复制到备份介质上。 (5)alter tablespace tablespacename end backup命令将已经备份成功的表空间重新设置结束备份状态。 (6)将当期的重做日志文件的信息写到归档日志文件中去。 (7)在使用数据字典v
backup确认数据文件的备份状态。可选步骤。状态为NOTACTIVE,没有任何数据处于备份状态。(3)altertablespacetablespacenamebeginbackup命令将要备份的表空间设置为备份状态。(4)使用操作系统复制命令将该表空间所对应的所有数据文件复制到备份介质上。(5)altertablespacetablespacenameendbackup命令将已经备份成功的表空间重新设置结束备份状态。(6)将当期的重做日志文件的信息写到归档日志文件中去。(7)在使用数据字典vbackup确认数据文件的备份状态。可选步骤。 (8)使用操作系统命令或工具验证操作系统文件是否已经生成。可选步骤。
二 联机备份的应用实例 0 创建表空间 create tablespace test datafile ‘/u01/test.dbf’ size 1M; 1 alter tablespace tablespacename begin backup命令将要备份的表空间设置为备份状态。 alter tablespace test begin backup 2 使用操作系统复制命令将该表空间所对应的所有数据文件复制到备份介质上。 host mkdir /u01/hotbackup host cp /u01/test.dbf /u01/hotbackup/ test.dbf 3 alter tablespace tablespacename end backup命令将已经备份成功的表空间重新设置结束备份状态。 alter tablespace test end backup 4 将当期的重做日志文件的信息写到归档日志文件中去。 alter system archive log current; alter system archive log all;
三 完全恢复 0 在test表空间上创建test表,插入数据,删除test表空间对应的数据文件test.dbf使得需要进行恢复。 create table test (a int) tablespace test insert into test values(1) insert into test values(1) commit shutdown host rm /u01/test.dbf 1 打开数据库,出现故障。 startup 2 使用数据字典v$datafile确认要恢复的数据文件的文件名。 3 alter database datafile ‘数据文件名’ offline命令将出问题的数据文件设为脱机。 alter database datafile ‘/u01/test.dbf’ offline; 4 alter database open命令将数据库打开。因为出问题的数据文件已经脱机,所有其它数据文件都是同步的。步骤4可以放在步骤7之后。 alter database open 5使用操作系统复制命令将备份的数据文件复制到数据库中原来的位置。 host cp /u01/hotbackup/ test.dbf /u01/test.dbf 6 使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件。 alter database recover datafile '/u01/test.dbf ’ 7 恢复完成后使用alter database 联机数据文件 alter database datafile ‘/u01/test.dbf’ online; 8 验证恢复是否成功。恢复成功的标准是什么? select * from test 判断恢复是否成功以出现故障前数据库的状态为准。脱机恢复则是以备份时数据库的状态为准。
如果备份和恢复的过程是这样的:先在test表空间上创建test表,向test表输入数据后提交,然后备份。之后删除表数据,再模拟故障进行数据库完全恢复,恢复成功以后test表里面是否有数据行?
四 联机备份使用RMAN恢复数据文件 (1)启动RMAN [oracle@localhost ~]$ rman target / (2)将要恢复的数据文件脱机 RMAN>sql’alter datafile 6 offline’; (3)重建数据文件 RMAN>restore datafile 6 (4)恢复数据文件 RMAN>recover datafile 6 (5)将数据文件联机 RMAN>sql’alter datafile 6 online’;
一 数据库完全恢复方法 Oracle在分析了大量的数据库系统应用之后,总结出如下的4种数据库完全恢复方法。这4种完全恢复方法已经涵盖了绝大多数的数据库应用环境。它们是: (1)在数据库最初处于打开的状态下,进行开启数据库的恢复。 (2)在数据库最初处于关闭的状态下,进行开启数据库的恢复。 (3)恢复没有备份的数据文件。 (4)在关闭的状态下进行数据库的恢复。 在进行以上任何一种数据库恢复时都需要所需的归档日志文件必须存在于Oracle服务器可以访问的磁盘上,如果归档日志文件存在于磁带上必须将它们先复制到磁盘上,之后才能开始真正的数据库恢复工作。
二 recover命令及与恢复有关的数据字典 recover[automatic] database recover[automatic]tablespace “表空间号|表空间名” recover[automatic] datafile “数据文件号|数据文件名”
dba_data_files 获取数据库所有数据文件的文件号,文件名和对应的表空间名。 dba_tablespace获取数据库中所有表空间当前的状态 v
d
a
t
a
f
i
l
e
获
取
数
据
库
中
所
有
数
据
文
件
的
当
前
状
态
v
datafile获取数据库中所有数据文件的当前状态 v
datafile获取数据库中所有数据文件的当前状态vrecover_file获取数据库中需要恢复的文件,该视图信息来自控制文件,如控制文件来自备份或重建过则信息会不准。 v
r
e
c
o
v
e
r
y
l
o
g
查
询
所
有
需
要
用
于
恢
复
的
日
志
v
recovery_log查询所有需要用于恢复的日志 v
recoveryl?og查询所有需要用于恢复的日志varchived_log查询所有归档日志列表
三 最初处于打开的状态下进行开启数据库的恢复 1 适用场景 (1)所需恢复的数据文件不属于系统表空间或还原/回滚段表空间 (2)磁介质的损坏,数据文件的崩溃或数据文件的丢失并未造成数据库的关闭 (3)数据库24*7方式 2 方法步骤 (1)使用数据字典dba_data_files获取要恢复的数据文件与所对应的表空间及它们的相关信息。 (2)使用数据字典dba_tablespaces获取要恢复的表空间是处在脱机还是联机状态,也可以使用数据字典v
d
a
t
a
f
i
l
e
确
认
要
恢
复
的
数
据
文
件
是
处
在
脱
机
还
是
联
机
状
态
。
(
3
)
如
果
表
空
间
处
在
联
机
状
态
,
要
先
将
该
表
空
间
设
为
脱
机
状
态
。
也
可
以
将
数
据
文
件
设
为
脱
机
。
如
果
它
们
已
经
处
在
脱
机
状
态
,
这
一
步
就
不
用
。
(
4
)
操
作
系
统
命
令
将
备
份
的
数
据
文
件
复
制
回
数
据
库
中
原
来
的
位
置
。
(
非
原
来
位
置
如
何
做
?
)
(
5
)
使
用
r
e
c
o
v
e
r
命
令
将
所
有
提
交
的
数
据
从
归
档
日
志
文
件
和
重
做
日
志
文
件
重
新
写
入
已
经
修
复
的
数
据
文
件
。
r
e
c
o
v
e
r
t
a
b
l
e
s
p
a
c
e
表
空
间
名
r
e
c
o
v
e
r
d
a
t
a
f
i
l
e
数
据
文
件
名
(
6
)
a
l
t
e
r
t
a
b
l
e
s
p
a
c
e
a
l
t
e
r
d
a
t
a
b
a
s
e
联
机
表
空
间
或
数
据
文
件
(
7
)
如
果
恢
复
时
是
将
备
份
的
数
据
文
件
复
制
到
其
它
位
置
,
再
次
使
用
数
据
字
典
d
b
a
d
a
t
a
f
i
l
e
s
获
取
要
恢
复
的
数
据
文
件
与
所
对
应
的
表
空
间
,
确
认
数
据
文
件
已
经
复
制
到
正
确
的
位
置
。
(
8
)
再
次
使
用
数
据
字
典
d
b
a
t
a
b
l
e
s
p
a
c
e
s
获
取
要
恢
复
的
表
空
间
是
否
处
在
联
机
状
态
,
也
可
以
使
用
数
据
字
典
v
datafile确认要恢复的数据文件是处在脱机还是联机状态。 (3)如果表空间处在联机状态,要先将该表空间设为脱机状态。也可以将数据文件设为脱机。如果它们已经处在脱机状态,这一步就不用。 (4)操作系统命令将备份的数据文件复制回数据库中原来的位置。(非原来位置如何做?) (5)使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件。recover tablespace 表空间名 recover datafile 数据文件名 (6)alter tablespace alter database 联机表空间或数据文件 (7)如果恢复时是将备份的数据文件复制到其它位置,再次使用数据字典dba_data_files获取要恢复的数据文件与所对应的表空间,确认数据文件已经复制到正确的位置。 (8)再次使用数据字典dba_tablespaces获取要恢复的表空间是否处在联机状态,也可以使用数据字典v
datafile确认要恢复的数据文件是处在脱机还是联机状态。(3)如果表空间处在联机状态,要先将该表空间设为脱机状态。也可以将数据文件设为脱机。如果它们已经处在脱机状态,这一步就不用。(4)操作系统命令将备份的数据文件复制回数据库中原来的位置。(非原来位置如何做?)(5)使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件。recovertablespace表空间名recoverdatafile数据文件名(6)altertablespacealterdatabase联机表空间或数据文件(7)如果恢复时是将备份的数据文件复制到其它位置,再次使用数据字典dbad?ataf?iles获取要恢复的数据文件与所对应的表空间,确认数据文件已经复制到正确的位置。(8)再次使用数据字典dbat?ablespaces获取要恢复的表空间是否处在联机状态,也可以使用数据字典vdatafile确认要恢复的数据文件是否处在联机状态。 3 具体实例 实例:普通用户表空间数据文件丢失的恢复(users表空间数据文件丢失恢复) 联机备份及模拟故障过程 (1)对users表空间进行联机备份 host mkdir /u01/hotbackup alter tablespace users begin backup host cp /u01/app/oracle/oradata/orcl/users01.dbf /u01/hotbackup/users01.dbf alter tablespace users end backup (2)使用scott用户创建一张实验表test conn scott/tiger create table test as select * from emp; (3)删除users表空间数据文件 host rm /u01/app/oracle/oradata/orcl/users01.dbf (4)清除缓存 alter system flush buffer_cache; (5)scott用户查询test发现故障 conn / as sysdba conn scott/tiger select * from test select * from test * ERROR at line 1: ORA-01116: error in opening database file 4 ORA-01110: data file 4: ‘/u01/app/oracle/oradata/orcl/users01.dbf’ ORA-27041: unable to open file Linux Error: 2: No such file or directory Additional information: 3
恢复过程 (1)将users表空间数据文件users01.dbf脱机 alter database datafile 4 offline (2)将备份的文件restore到相应位置 host cp /u01/hotbackup/users01.dbf /u01/app/oracle/oradata/orcl/users01.dbf (3)尝试online,报错,需要恢复 alter database datafile 4 online (4)查询该文件在控制文件中及数据文件头中的检查点信息,发现不一致需要恢复 select file#,error,change# from vKaTeX parse error: Expected 'EOF', got '#' at position 38: …eckpoint_change#?,last_change# f…datafile where file#=4 select checkpoint_change# from vKaTeX parse error: Expected 'EOF', got '#' at position 27: …ader where file#?=4 (5)recover文件…recover_file select checkpoint_change#,last_change# from vKaTeX parse error: Expected 'EOF', got '#' at position 20: …file where file#?=4 select check…datafile_header where file#=4 (7)联机数据文件,验证恢复是否成功。 alter database datafile 4 online conn scott/tiger select * from test
四 最初处于关闭状态下进行的开启数据库恢复 1 适用场景 (1)所需恢复的数据文件不属于系统表空间或还原/回滚段表空间 (2)介质的损坏,硬件的损毁或数据文件的丢失已经造成数据库的关闭 (3)数据库24*7方式 2 方法步骤 (1)使用startup mount命令加载数据库。因为损坏的数据文件不能打开,所以数据库无法打开。 (2)使用数据字典v
d
a
t
a
f
i
l
e
确
认
要
恢
复
的
数
据
文
件
的
文
件
名
。
这
种
情
况
下
不
能
使
用
d
b
a
d
a
t
a
f
i
l
e
s
,
因
为
该
数
据
字
典
只
能
在
数
据
库
开
启
状
态
下
使
用
。
(
3
)
a
l
t
e
r
d
a
t
a
b
a
s
e
d
a
t
a
f
i
l
e
‘
数
据
文
件
名
’
o
f
f
l
i
n
e
命
令
将
出
问
题
的
数
据
文
件
设
为
脱
机
。
这
种
情
况
下
也
不
能
使
用
a
l
t
e
r
t
a
b
l
e
s
p
a
c
e
命
令
将
出
问
题
的
表
空
间
设
为
脱
机
,
因
为
该
命
令
只
能
在
数
据
库
开
启
状
态
下
使
用
。
(
4
)
a
l
t
e
r
d
a
t
a
b
a
s
e
o
p
e
n
命
令
将
数
据
库
打
开
。
因
为
出
问
题
的
数
据
文
件
已
经
脱
机
,
所
有
其
它
数
据
文
件
都
是
同
步
的
。
(
5
)
使
用
操
作
系
统
复
制
命
令
将
备
份
的
数
据
文
件
复
制
到
数
据
库
中
原
来
的
位
置
。
如
果
是
介
质
损
坏
,
就
要
将
备
份
的
数
据
文
件
复
制
到
其
它
的
介
质
上
,
之
后
使
用
a
l
t
e
r
d
a
t
a
b
a
s
e
r
e
n
a
m
e
f
i
l
e
命
令
修
改
数
据
文
件
名
。
(
6
)
使
用
r
e
c
o
v
e
r
命
令
将
所
有
提
交
的
数
据
从
归
档
日
志
文
件
和
重
做
日
志
文
件
重
新
写
入
已
经
修
复
的
数
据
文
件
。
可
以
使
用
r
e
c
o
v
e
r
t
a
b
l
e
s
p
a
c
e
表
空
间
名
也
可
以
使
用
r
e
c
o
v
e
r
d
a
t
a
f
i
l
e
数
据
文
件
名
。
(
7
)
恢
复
完
成
后
使
用
a
l
t
e
r
t
a
b
l
e
s
p
a
c
e
a
l
t
e
r
d
a
t
a
b
a
s
e
联
机
表
空
间
或
数
据
文
件
。
(
8
)
如
果
恢
复
时
是
将
备
份
的
数
据
文
件
复
制
到
其
它
位
置
,
再
次
使
用
数
据
字
典
d
b
a
d
a
t
a
f
i
l
e
s
获
取
要
恢
复
的
数
据
文
件
与
所
对
应
的
表
空
间
,
确
认
数
据
文
件
已
经
复
制
到
正
确
的
位
置
。
(
9
)
再
次
使
用
数
据
字
典
d
b
a
t
a
b
l
e
s
p
a
c
e
s
获
取
要
恢
复
的
表
空
间
是
否
处
在
联
机
状
态
,
也
可
以
使
用
数
据
字
典
v
datafile确认要恢复的数据文件的文件名。这种情况下不能使用dba_data_files,因为该数据字典只能在数据库开启状态下使用。 (3)alter database datafile ‘数据文件名’ offline命令将出问题的数据文件设为脱机。这种情况下也不能使用alter tablespace命令将出问题的表空间设为脱机,因为该命令只能在数据库开启状态下使用。 (4)alter database open命令将数据库打开。因为出问题的数据文件已经脱机,所有其它数据文件都是同步的。 (5)使用操作系统复制命令将备份的数据文件复制到数据库中原来的位置。如果是介质损坏,就要将备份的数据文件复制到其它的介质上,之后使用alter database rename file命令修改数据文件名。 (6)使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件。可以使用recover tablespace 表空间名也可以使用recover datafile 数据文件名。 (7)恢复完成后使用alter tablespace alter database 联机表空间或数据文件。 (8)如果恢复时是将备份的数据文件复制到其它位置,再次使用数据字典dba_data_files获取要恢复的数据文件与所对应的表空间,确认数据文件已经复制到正确的位置。 (9)再次使用数据字典dba_tablespaces获取要恢复的表空间是否处在联机状态,也可以使用数据字典v
datafile确认要恢复的数据文件的文件名。这种情况下不能使用dbad?ataf?iles,因为该数据字典只能在数据库开启状态下使用。(3)alterdatabasedatafile‘数据文件名’offline命令将出问题的数据文件设为脱机。这种情况下也不能使用altertablespace命令将出问题的表空间设为脱机,因为该命令只能在数据库开启状态下使用。(4)alterdatabaseopen命令将数据库打开。因为出问题的数据文件已经脱机,所有其它数据文件都是同步的。(5)使用操作系统复制命令将备份的数据文件复制到数据库中原来的位置。如果是介质损坏,就要将备份的数据文件复制到其它的介质上,之后使用alterdatabaserenamefile命令修改数据文件名。(6)使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件。可以使用recovertablespace表空间名也可以使用recoverdatafile数据文件名。(7)恢复完成后使用altertablespacealterdatabase联机表空间或数据文件。(8)如果恢复时是将备份的数据文件复制到其它位置,再次使用数据字典dbad?ataf?iles获取要恢复的数据文件与所对应的表空间,确认数据文件已经复制到正确的位置。(9)再次使用数据字典dbat?ablespaces获取要恢复的表空间是否处在联机状态,也可以使用数据字典vdatafile确认要恢复的数据文件是否处在联机状态。 3 具体实例 实例:普通用户表空间数据文件丢失的恢复(test表空间数据文件丢失恢复) 联机备份及模拟故障过程 (0)创建表空间 create tablespace test datafile ‘/u01/test.dbf’ size 1M; (1)alter tablespace tablespacename begin backup命令将要备份的表空间设置为备份状态。 alter tablespace test begin backup (2)使用操作系统复制命令将该表空间所对应的所有数据文件复制到备份介质上。 host mkdir /u01/hotbackup host cp /u01/test.dbf /u01/hotbackup/ test.dbf (3)alter tablespace tablespacename end backup命令将已经备份成功的表空间重新设置结束备份状态。 alter tablespace test end backup (4)将当期的重做日志文件的信息写到归档日志文件中去。 alter system archive log current; alter system archive log all; (5)在test表空间上创建test表,插入数据,删除test表空间对应的数据文件test.dbf使得需要进行恢复。 create table test (a int) tablespace test insert into test values(1) insert into test values(1) commit shutdown host rm /u01/test.dbf alter system flush buffer_cache;
恢复过程 (1)打开数据库,出现故障。 startup (2)使用数据字典v$datafile确认要恢复的数据文件的文件名。 (3)alter database datafile ‘数据文件名’ offline命令将出问题的数据文件设为脱机。 alter database datafile ‘/u01/test.dbf’ offline; (4)alter database open命令将数据库打开。因为出问题的数据文件已经脱机,所有其它数据文件都是同步的。步骤4可以放在步骤7之后。 alter database open (5)使用操作系统复制命令将备份的数据文件复制到数据库中原来的位置。 host cp /u01/hotbackup/ test.dbf /u01/test.dbf (6)使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件。 alter database recover datafile '/u01/test.dbf ’ (7)恢复完成后使用alter database 联机数据文件 alter database datafile ‘/u01/test.dbf’ online; (8)验证恢复是否成功。恢复成功的标准是什么? select * from test
一 恢复没有备份的数据文件 1 适用场景 (1)所需恢复的数据文件不属于系统表空间或还原/回滚段表空间。 (2)介质损坏或用户错误导致数据文件的丢失,但这个数据文件从来就没有备份过。 (3)从这个数据文件创建以来所有的归档日志文件都完好无损。
2 重建数据文件结构 alter database create datafile “原文件名”,该命令重建与原来数据文件同名的数据文件。 alter database create datafile “原文件名” as “新文件名”,该命令重建的数据文件名与原来的数据文件不同。
3 方法步骤 (1)如果数据库是打开状态,使用数据字典dba_data_files获取要恢复的数据文件与所对应的表空间及它们的相关信息。 (2)如果数据库是打开状态,使用数据字典dba_tablespaces获取要恢复的表空间是处在脱机还是联机状态,也可以使用数据字典v
d
a
t
a
f
i
l
e
确
认
要
恢
复
的
数
据
文
件
是
处
在
脱
机
还
是
联
机
状
态
。
(
3
)
如
果
表
空
间
处
在
联
机
状
态
,
要
先
将
该
表
空
间
设
为
脱
机
状
态
,
也
可
以
将
数
据
文
件
设
为
脱
机
。
如
果
它
们
已
经
处
在
脱
机
状
态
,
这
一
步
就
不
用
。
如
果
数
据
库
已
经
关
闭
,
使
用
s
t
a
r
t
u
p
m
o
u
n
t
命
令
加
载
数
据
库
。
随
后
,
使
用
a
l
t
e
r
d
a
t
a
b
a
s
e
d
a
t
a
f
i
l
e
“
数
据
文
件
名
”
o
f
f
l
i
n
e
;
命
令
将
出
问
题
的
数
据
文
件
设
为
脱
机
。
最
后
,
使
用
a
l
t
e
r
d
a
t
a
b
a
s
e
o
p
e
n
将
数
据
库
打
开
。
(
4
)
使
用
数
据
字
典
v
datafile确认要恢复的数据文件是处在脱机还是联机状态。 (3)如果表空间处在联机状态,要先将该表空间设为脱机状态,也可以将数据文件设为脱机。如果它们已经处在脱机状态,这一步就不用。如果数据库已经关闭,使用startup mount命令加载数据库。随后,使用alter database datafile “数据文件名” offline;命令将出问题的数据文件设为脱机。最后,使用alter database open将数据库打开。 (4)使用数据字典v
datafile确认要恢复的数据文件是处在脱机还是联机状态。(3)如果表空间处在联机状态,要先将该表空间设为脱机状态,也可以将数据文件设为脱机。如果它们已经处在脱机状态,这一步就不用。如果数据库已经关闭,使用startupmount命令加载数据库。随后,使用alterdatabasedatafile“数据文件名”offline;命令将出问题的数据文件设为脱机。最后,使用alterdatabaseopen将数据库打开。(4)使用数据字典vrecover_file查看数据文件的恢复状态,此时error列的显示应该为file not found,change#列的显示应该为0,而time列应该没有显示输出。 (5)使用alter database create datafile重建数据文件结构 (6)使用vKaTeX parse error: Expected 'EOF', got '#' at position 47: …列应该没有显示输出,chang#?列和time列的显示都有了新值…datafile确认要恢复的数据文件是处在脱机还是联机状态。
4 具体实例 实例:恢复没有备份的数据文件恢复(test表空间数据文件丢失且未备份恢复) 联机备份及模拟故障过程 (1)创建test表空间 create tablespace test datafile ‘/u01/test01.dbf’ size 5M (2)创建一张实验表test create table test(a number(2)) tablespace test; insert into test values(1); commit; (3)删除test表空间数据文件 host rf /u01/test01.dbf (4)清除缓存 alter system flush buffer_cache; (5)再次连接查询test发现故障 conn / as sysdba select * from test select * from test * ERROR at line 1: ORA-01116: error in opening database file 6 ORA-01110: data file 6: ‘/u01/test01.dbf’ ORA-27041: unable to open file Linux Error: 2: No such file or directory Additional information: 3
恢复过程 (1)将test表空间数据文件test01.dbf脱机 alter database datafile 6 offline (2)创建数据文件到相应位置 alter database create datafile ‘/u01/test01.dbf’; (3)recover文件 recover datafile 6 (4)联机数据文件,验证恢复是否成功。 alter database datafile 6 online select * from test
二 在关闭的状态下进行数据库的恢复 1适用场景 (1)所需恢复的数据文件属于系统表空间或还原/回滚段表空间。 (2)整个数据库或大多数数据文件都需要恢复。 (3)数据在工作期间可以关闭,不是247运营。 2 方法步骤 (1)如果数据库是打开状态,使用数据字典dba_data_files获取要恢复的数据文件与所对应的表空间及它们的相关信息。 (2)如果数据库是打开状态,使用shutdown命令关闭数据库,可能要使用abort选项。 (3)以加载方式启动数据库shutdown mount (4)使用操作系统复制命令将备份的数据文件复制回数据库中原来的位置。如果介质损坏了,就要将备份的数据文件复制到其它介质,之后使用alter命令修改数据文件名。 (5)使用recover命令将所有提交的数据从归档日志文件和重做日志文件重新写入已经修复的数据文件recover database。 (6)使用alter database open命令将数据库打开。 (7)如果恢复时是将备份的数据文件复制到其它介质,应该再次使用数据字典dba_data_files获取要恢复的数据文件与所对应的表空间,以确认数据文件已经复制到正确的位置。 3 具体实例 实例:系统表空间数据文件丢失的恢复(system表空间数据文件丢失恢复) 联机备份及模拟故障过程 (1)对system表空间进行联机备份 host mkdir /u01/hotbackup alter tablespace system begin backup host cp /u01/app/oracle/oradata/orcl/system01.dbf /u01/hotbackup/system01.dbf alter tablespace system end backup (2)使用sys用户创建一张实验表test create table test as select * from dba_objects select count() from test (3)删除system表空间数据文件 host rm /u01/app/oracle/oradata/orcl/system01.dbf (4)清除缓存 alter system flush buffer_cache; (5)sys用户连接数据库出现故障 conn / as sysdba ERROR: ORA-01075: you are currently logged on Warning: You are no longer connected to ORACLE.
恢复过程 (1)不能正常关闭数据库 shutdown immediate ORA-00604: error occurred at recursive SQL level 2 ORA-01116: error in opening database file 1 ORA-01110: data file 1: ‘/u01/app/oracle/oradata/orcl/system01.dbf’ ORA-27041: unable to open file Linux Error: 2: No such file or directory Additional information: 3
startup ORA-01081: cannot start already-running ORACLE - shut it down first (2)通过kill进程方式 host ps -ef | grep dbw oracle 2822 1 0 16:51 ? 00:00:00 ora_dbw0_orcl oracle 3481 2796 0 17:46 pts/1 00:00:00 /bin/bash -c ps -ef | grep dbw oracle 3483 3481 0 17:46 pts/1 00:00:00 grep dbw
host kill -9 2822 (3)启动数据库,还是出现故障 startup (4)将备份的文件restore到相应位置 host cp /u01/hotbackup/system01.dbf /u01/app/oracle/oradata/orcl/system01.dbf (5)recover文件 recover datafile 1 (6)再次查询该文件在控制文件中及数据文件头中的检查点信息,发现一致 select checkpoint_change#,last_change# from vKaTeX parse error: Expected 'EOF', got '#' at position 20: …file where file#?=1 select check…datafile_header where file#=1 (7)联机数据文件,验证恢复是否成功。 alter database open select * from test
-------------------------------分界线---------------------------------
答案如下:
免费下载: BZUniversity联机备份与数据库完全恢复.docx https://download.csdn.net/download/weixin_42692989/33855386
|