学习要求
有一定关系型数据的操作功底,会SQL语句
教学目标
熟练掌握Oracle数据库的数据备份与恢复
备份
概念
备份就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。备份是一份数据副本。
分类
从物理与逻辑的角度来分类: 从物理与逻辑的,备份可以分为物理备份和逻辑备份。 物理备份:对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数据库的时候进行的,后者是以归档日志的方式对运行的数据库进行备份。可以使用oracle的恢复管理器(RMAN)或操作系统命令进行数据库的物理备份。
逻辑备份:对数据库逻辑组件(如表和存储过程等数据库对象)的备份。逻辑备份的手段很多,如传统的EXP,数据泵(EXPDP),数据库闪回技术等第三方工具,都可以进行数据库的逻辑备份。
从数据库的备份角度分类: 从数据库的备份角度,备份可以分为完全备份和增量备份和差异备份 完全备份:每次对数据库进行完整备份,当发生数据丢失的灾难时,完全备份无需依赖其他信息即可实现100%的数据恢复,其恢复时间最短且操作最方便。
增量备份:只有那些在上次完全备份或增量备份后被修改的文件才会被备份。优点是备份数据量小,需要的时间短,缺点是恢复的时候需要依赖以前备份记录,出问题的风险较大。
差异备份:备份那些自从上次完全备份之后被修改过的文件。从差异备份中恢复数据的时间较短,因此只需要两份数据—最后一次完整备份和最后一次差异备份,缺点是每次备份需要的时间较长。
逻辑备份(expdp和impdp)
Oracle 的导入导出有2种exp/imp和expdp/impdp,相对来看expdp/impdp用的最多,所以它们来讲解。
数据导出
注意:1>必须是超管用户操作sys 2>必须是cmd 客户端输入
步骤1:切换到超管用户
conn sys/admin as sysdba;
步骤2:创建导入目录
-- create directory 目录名 as '目录路径'
create directory data_bak as 'E:\data_bak';
步骤3:查看当前创建的导出目录
select * from dba_directories;
步骤4:为创建的目录赋权限(scott用户后续能操作该目录)
-- grant read,write on directory 目录名 to 需要赋值的用户名
grant read, write on directory data_bak to scott;
步骤5:导出数据并备份
-- expdp 用户名/密码@数据库实例名 directory=导出目录 dumpfile=导出的文件名.dmp logfile=导出的日志名.log
expdp scott/tiger@localhost:1521/ORCL dumpfile=data_bak dumpfile=scott.dmp logfile=scott.log;
其他导出【拓展】
1、“full=y”,全量导出数据库
$ expdp sys/admin@orcl dumpfile=expdp.dmp directory=data_dir full=y logfile=expdp.log
2、schemas按用户导出
$ expdp user/passwd@orcl schemas=user dumpfile=expdp.dmp directory=data_dir logfile=expdp.log
3、按表空间导出
$ expdp sys/passwd@orcl tablespace=tbs1,tbs2 dumpfile=expdp.dmp directory=data_dir logfile=expdp.log
4、导出表
$ expdp user/passwd@orcl tables=table1,table2 dumpfile=expdp.dmp directory=data_dir logfile=expdp.log
5、按查询条件导出
$ expdp user/passwd@orcl tables=table1='where number=1234' dumpfile=expdp.dmp directory=data_dir logfile=expdp.log
恢复
跟备份是反向操作
数据导入
删掉一些表,再将之前备份的数据导入进来
impdp scott/tiger@localhost:1521/ORCL schemas=scott directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
其他导入【拓展】
impdp user/passwd directory=data_dir dumpfile=expdp.dmp full=y
2、同名用户导入,从用户A导入到用户A;
impdp A/passwd schemas=A directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
3、
①从A用户中把表table1和table2导入到B用户中;
impdp B/passwdtables=A.table1,A.table2 remap_schema=A:B directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
②将表空间TBS01、TBS02、TBS03导入到表空间A_TBS,将用户B的数据导入到A,并生成新的oid防止冲突;
impdp A/passwd remap_tablespace=TBS01:A_TBS,TBS02:A_TBS,TBS03:A_TBS remap_schema=B:A FULL=Y transform=oid:n
directory=data_dir dumpfile=expdp.dmp logfile=impdp.log
4、导入表空间;
impdp sys/passwd tablespaces=tbs1 directory=data_dir dumpfile=expdp.dmp logfile=impdp.log
5、追加数据;
impdp sys/passwd directory=data_dir dumpfile=expdp.dmp schemas=system table_exists_action=replace logfile=impdp.log;
--table_exists_action:导入对象已存在时执行的操作。有效关键字:SKIP,APPEND,REPLACE和TRUNCATE
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/36097.html