Oracle备份和恢复
阅读原文时间:2023年07月11日阅读:2

--什么是脱机备份
脱机备份也叫冷备份,首先管理员使用 shutdown immediate 命令关闭数据库的服务。
之后复制需要的文件,包括数据文件和控制文件等相关内容复制到磁盘的其他位置。当
数据库出现问题时,就可以在将复制出来的文件在恢复到原来的位置。

数据文件和日志文件位置:..\app\Administrator\oradata
控制文件可以查看init.ora的配置信息:安装目录下admin\orcl\pfile
控制文件也可以查询表
select name as 控制文件位置,status as 控制文件状态 from v$controlfile;

--什么是联机备份
联机备份也叫热备份,是在数据库的归档模式下进行备份。

--查询数据库日志的命令,使用sql plus工具查看,
--而且还必须使用sys用户,其他用户没有权限。
connect sys/密码@orcl as sysdba;
archive log list;

--设置数据库日志模式为归档模式
alter system set log_archive_start=true scope=spfile;--设置系统日志方式为归档模式
shutdown immediate;--关闭数据库
startup mount;--启动mount实例,但不启动数据库。
alter database archivelog;--修改数据库为归档日志模式。

--把数据库设置成归档模式后,就可以进行数据库的备份与恢复操作了。
--备份表空间
1、打开数据库
alter database open;
2、开始备份表空间
alter tablespace space_name begin backup;
3、将数据库中安装目录下的oradata文件夹(数据库对象都放在这里),
把文件复制到其他地方。
4、结束表空间备份
alter tablespace space_name end backup;

--恢复表空间中的数据
1、对当前日志进行归档。
alter system archive log current;
2、切换日志文件,有几个日志文件,就执行几次
alter system switch logfile;--logfile是日志文件的位置。
3、关闭数据库服务
shutdown immediate;
4、删除数据库文件并重新启动数据库
select * from v$datafile;--查看数据库数据文件的位置
select * from v$recover_file;--确认缺少的数据文件
startup;
5、将数据文件设置成脱机状态并删除
alter database datafile 10 offline drop;
6、把数据库的状态设置成open
alter database open;
7、恢复数据文件
recover datafile 10;
注意:恢复数据时数据文件编号要一致。
8、设置数据文件为联机状态
alter database datafile 10 online;

注意:在恢复数据库中的文件时,把数据库文件设置成脱机状态后,就需要把之前
备份好的数据文件复制到原来的数据文件存放的位置,否则就会出现错误。
错误信息:ora-00283:恢复会话因错误而取消
ora-01110:数据文件10;
ora-01152:无法标识/锁定数据文件10 请参阅DBWR跟踪文件。

--逻辑备份和恢复数据库
exp工具可以到处表、空间、方案、数据库4个数据库对象。
1、导出表
打开Doc命令工具执行下面命令:
exp username/pwd@orcl
根据提示的选项选择要导出的对象。
2、导出表空间语法
exp username/password@orcl file='filename.dmp' tablespace='space_name';

--使用expdp导出数据
expdp是Oracle10g开始引用的数据泵技术,使用expdp时首先创建目录
对象,通过这个对象就可以找到要备份数据的数据库服务器,并且使用expdp
工具备份出来的数据必须存放在目录对象对应的操作系统的目录中。
1、创建目录对象
create directory directory_name as 'file_name';
directory_name:目录名称。
file_name:存放数据的文件夹名。

2、给使用目录的用户赋权限
grant read,write on directory directory_name to user_name;

3、导出表,使用do工具。
expdp username/password@orcl directory=directory_name
dumpfile=file_name tables=table_name;

directory_name:存放导出数据的目录名称。
file_name:导出数据存放文件名称。
table_name:准备导出的表名,多个表用逗号隔开。

--使用imp导入数据
imp username/password@orcl
根据提示的选项选择要导入的对象。

将文件中数据导入到表
imp username/password@orcl file=file.dmp tables=table_name;

--使用impdp导入数据
impdp username/password@orcl directory=directory_name
dumpfile=file.dmp tables=table_name;