备份恢复实例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
select instance_name,status from v$instance;
冷备份恢复
对数据库进行物理备份(冷备份),并恢复被用户误删除的数据。
(1)以管理员身份登录
connect / as sysdba;
(2)确定数据库各种物理文件
select name from v$controlfile
union all
select member from v$logfile
union all
select name from v$datafile
union all
select name from v$tempfile
(3)关闭数据库
shutdown immediate;
(4)将数据库中所有文件拷贝到d:\backup
复制所有文件进行保存
注意两个控制文件互为镜像文件都需要进行备份否则恢复时出现不一致的情况(上课恢复出现问题的主要原因就是仅恢复一个控制文件出现不一致情况)
(5)模拟误删除
操作系统下将数据库中users01.dbf删除
(6)以管理员身份登录,并启动数据库
Startup
(7)关闭数据库
(8)将d:\backup目录中的所有文件拷回数据库目录
(9)以管理员身份登录,并启动数据库
归档模式下数据库的完全恢复
数据库进行物理备份(热备份),并恢复被用户误删除的数据。
(1)以管理员身份登录数据库,并查看当前归档模式
conn / as sysdba;
archive log list;
(2)如果当前数据库运行在非归档模式下,首先关闭数据库,把数据库启动到mount状态,然后将数据库修改为归档模式,并打开数据库
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
3)备份users表空间
alter tablespace users begin backup;
4) 拷贝users表空间下的数据文件USERS01.DBF到d:\backup2。
5)结束users表空间的备份
alter tablespace users end backup;
6)归档当前重做日志文件
alter system switch logfile;
7)以SCOTT身份登录数据库,并创建student表(给出相应操作)
8) 切换到管理员账户,归档当前重做日志文件
alter system switch logfile;
9)关闭数据库(给出相应操作)
10)模拟误删除
操作系统中删除USERS01.DBF
11)以管理员身份登录,并启动数据库(给出错误信息)
12)关闭数据库
13)将d:\backup2目录中的文件拷回数据库目录
14)以管理员身份登录,并将数据库启动到mount状态
15)执行数据库恢复
Recover database;
16)将数据库打开
17)切换到SCOTT账户,查看student表是否恢复
归档模式下数据库的不完全恢复
对数据库进行物理备份,并执行基于时间的不完全恢复,以恢复被用户误删除的数据。
(1)以管理员身份登录数据库,并查看当前归档模式
(2)如果当前数据库运行在非归档模式下,首先关闭数据库,把数据库启动到mount状态,然后将数据库修改为归档模式,关闭数据库
步骤同上,省略
(3)备份数据库中的的所有数据文件,将其拷贝到d:\backup3。
(在进行数据库不完全恢复之前,首先确保对数据库进行了完全备份)
(4)启动数据库
(5)修改当前会话的时间格式
alter session set nls_date_format='yyyy-mm-dd hh24:mi;ss';
(6)查询当前时间
Select sysdate from dual;
(7)以SCOTT身份登录数据库,删除emp表(给出相应操作)
(8)切换到管理员账户,归档当前重做日志文件
alter system switch logfile;
(9)关闭数据库(给出相应操作)
(10) 将d:\backup3目录中的备份文件拷回数据库目录
(11)以管理员身份登录,并将数据库启动到mount状态(12)执行数据库恢复
Recover database until time ‘删除表之前的时间’;
(13)将数据库打开
Alter database open resetlogs;
(14)切换到SCOTT账户,查看emp表是否恢复
逻辑备份恢复
Expdp
Expdp help=y;
需要注意的是expdp工具只能将导出的转储文件存放在directory对象对应的os目录中,而不能直接指定转储文件所在的os路径。
因此在使用expdp工具前,必须首先建立directory 对象,并且为数据库用户授予使用directory对象的权限
create directory dump_dir as 'd:\dump';
grant read,write on directory dump_dir to scott;
导出表
expdp scott/oracle directory=dump_dir dumpfile=tab.dmp tables=emp,dept
要在d盘建立相应的文件夹
导出模式
导出模式时要求用户必须具有DBA或exp_full_database角色
expdp system/oracle directory = dump_dir dumpfile=schema.dmp schemas = scott
导出表空间
Select table_name from dba_data_files;
expdp system/oracle directory = dump_dir dumpfile = tablespace.dmp tablespaces = users
导出全数据库
expdp system/oracle directory=dump_dir dumpfile=fulldatabase.dmp full=y
时间很长要有心理准备
EXPDP命令参数—— CONTENT
该参数用于指定要导出的内容,默认值为ALL,语法如下:
Content={all | data_only | metadata_only}
all:将导出对象定义及其所有数据;
data_only:只导出对象数据;
metadata_only:只导出对象定义。
只导出scott模式下的对象数据
expdp scott/oracle directory=dump_dir dumpfile=content.dmp content=data_only EXPDP命令参数—— QUERY
该参数用于指定过滤导出数据的WHERE条件。
语法如下:
query=[schema.] [table_name:] query_clause
schema:用于指定模式名;
table_name:用于指定表名;
query_clause:用于指定条件限制子句。
需要注意,query参数不能与connect=metadata_only、extimate_only、transprot_tablespaces 等参数同时使用。
expdp scott/oracle directory=dump_dir dumpfile=query.dmp tables=dept query='where deptno=10'
EXPDP命令参数—— DIRECTORY
该参数指定转储文件和日志文件所在的目录。
语法如下:
directory=directory_object
其中,directory_object用于指定目录对象的名称。
需要注意,目录对象是使用create directory语句建立的对象,而不是普通的磁盘目录。
EXPDP命令参数—— DUMPFILE
该参数用于指定转储文件的名称,默认名称为expdat.dmp。
语法如下:
dumpfile=[directory_object:]file_name[,…]
director_object:用于指定目录对象名。
file_name:用于指定转储文件名。
EXPDP命令参数—— FULL
该参数用于指定数据库模式导出,默认为N。
语法如下:
full={y | n}
当设置该选项为y时,表示执行数据库导出。
EXPDP命令参数—— LOGFILE
该参数用于指定导出日志文件的名称,默认名称为export.log。
语法如下:
logfile=[directory_object:]file_name
EXPDP命令参数—— STA TUS
该参数用于指定显示导出作业进程的详细状态,默认值为0,语法如下:
status=integer
integer用于指定显示导出作业状态的时间间隔,单位为秒。
指定该参数后,每隔特定时间间隔会显示作业完成的百分比。
EXPDP命令参数—— TABLES
该参数用于指定表模式导出。
语法如下:
Tables=[schema_name.]table_name[:partition_name][,…]
schema_name:用于指定模式名,
table_name:用于指定要导出的表名,
partition_name:用于指定要导出的分区名。
EXPDP命令参数—— TABLESPACES
该参数用于指定要导出表空间列表。
Impdp
与EXPDP类似,调用IMPDP时只需要在命令提示符窗口中输入IMPDP命令即可。
同样,IMPDP也可以进行4种类型的导入操作:导入表、导入用户模式、导入表空间和导入全数据库。
导入表
普通用户只能将表导入到自己的模式,若以其他用户身份导入表,要求该用户具有imp_full_database角色和dba角色。
导入表时,既可以将表导入到源模式中,也可以将表导入到其他模式中。
impdp system/oracle directory=dump_dir dumpfile=tab.dmp tables=scott.dept,scott.emp remap_schema=scott:newuser
如果要将表导入到其他模式中,需要指定remap_schema参数
新建用户newuser
Connect,resource
Newuser用户登录
Select table_name from user_tables;
导入模式
导入模式需要使用schemas参数
impdp system/oracle directory=dump_dir dumpfile=schema.dmp schemas=scott remap_schema=scott:newuser;
导入表空间
将users表空间中所有对象导入到当前数据库中
impdp system/oracle directory=dump_dir dumpfile=tablespace.dmp tablespaces=users
导入全数据库
将存放在转储文件中的所有数据对象及相关数据装载到数据库中,导入数据库是使用full参数设置
impdp system/oracle directory=dump_dir dumpfile=fulldatabase.dmp full=y
IMPDP命令参数——REMAP_SCHEMA
该参数用于将源模式中的所有对象转载到目标模式中,如法如下:
remap_schema=source_schema:target_schema
source_schema:源模式。
target_schema:目标模式。
IMPDP命令参数——REMAP_TABLESPACE
该参数用于指定导入时更改表空间名称。
在10g版本出现以前,这一操作非常复杂。
首先,因为没有写操作权限,必须移除原始表空间的限额,然后再设置表空间。
在导入过程中,原始表空间中的对象可以存储在设置后的表空间中。
当任务完成后,必须进行将表空间恢复到原来的状态。
在10g中导入时,REMAP_TABLESPACE参数的设置大大简化了该操作,这样只需要对目标表空间进行限额,而不需要其它条件。
语法如下:
remap_tablespace=source_tablespace:target_tablespace
source_tablespace:源表空间。
target_tablespace:目标表空间。
IMPDP命令参数——SQLFILE
在IMPDP中使用该参数时,可以从DMP文件中提取对象的DDL语句,以便之后使用。
该参数用于指定将导入的DDL操作写入到SQL脚本中。
语法如下:
sqlfile=[directory_object:]file_name
file_name表示包含DDL语句的文件。
实际上,IMPDP只是从DMP文件中提取对象的DDL语句,这样IMPDP并不把数据导入数据库中,只是创建DDL语句文件。
impdp scott/1qaz2wsx directory=dump_dir dumpfile=sqlfile.dmp sqlfile=test.sql
IMPDP命令参数——TABLE_EXISTS_ACTION
该参数用于指定当表已经存在时导入作业要执行的操作,默认为SKIP。
table_exists_action={skip | append | truncate | replace}
skip:导入作业会跳过已存在表处理下一个对象;
append:会追加数据;
truncate:导入作业会截断表,然后为其追加新数据;
replace:导入作业会删除已存在表,然后重建表追加数据。
IMPDP命令参数——TRANSPORT_DA TAFILES
该参数用于指定移动空间时要被导入到目标数据库的数据文件,语法如下:
Transport_datafiles=datafile_name
datafile_name用于指定被复制到目标数据库的数据文件。
impdp system/1qaz2wsx directory=dump dumpfile=tran_datafiles.dmp transport_datafiles='d:\OracleData\test.dbf'。