Oracle数据的备份和恢复
当我们使用一个数据库时,总希望数据是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失。因此当发生上述故障后,希望能重构这个完整的数据库该处理称为数据库恢复,而要进行数据库的恢复必须要有数据库的备份工作。
整库导出导入
导出命令 Export
添加参数 full = y 就是整库导出
exp system/a full = y
- 无需SQLPLUS环境
- EXP-00023 必须是 DBA 才能执行完整数据库或表空间导出操作
- 默认在C:\Users\梦凝哲雪 执行命令 并生成备份文件 EXPDAT.DMP
如果想指定备份文件的名称,则添加file参数即可,命令如下
exp system/a file=文件名 full=y
导入命令 Import
- 此命令如果不指定file参数,则默认用备份文件EXPDAT.DMP进行导入
- 导入时如果表等对象存在会提示失败 但不影响最终数据恢复
imp system/a full=y
异常
IMP- 00015 由于对象已存在, 下列语句失败:
- 如果指定file参数,则按照file指定的备份文件进行恢复
imp system/a full=y file=yc.dmp
按用户导出导入
导出
- 必须owner指定用户名
exp system/a owner=scott file=yc.dmp
导入
- fromuser可以指定恢复那个用户的信息
imp system/a file=yc.dmp fromuser=scott
按表导出导入
导出
- 用tables参数指定需要导出的表,如果有多个表用逗号分割即可
- 指定用户登录 因为Oracle的表都是归属于用户
exp scott/a file=yc.dmp tables=emp,dept,bonus,salgrade
导入
imp scott/a file=yc.dmp tables=emp,dept,bonus,salgrade
注意:
因为知识改了scott用户下4张表的名称 所以上述的命令有提示 约束名冲突是正常现象
数据恢复后会发现当前列表多出备份的4张表 并能进行查询操作
案例实践
Oracle中SCOTT用户的 emp、dept、bonus、salgrade表的备份文件scott.dmp
emp 雇员表
属性英文名 | 属性中文名 |
---|---|
empno | 雇员编号 |
ename | 雇员姓名 |
job | 雇员职位 |
mgr | 雇员对应的领导的编号 |
hiredate | 雇员的雇佣日期 |
sal | 雇员的基本工资 |
comm | 奖金或补助 |
deptno | 所在部门 |
dept部门表
属性英文名 | 属性中文名 |
---|---|
deptno | 部门编号 |
dname | 部门名称 |
loc | 部门所在位置 |
salgrade 工资等级表
属性英文名 | 属性中文名 |
---|---|
grade | 工资等级 |
losal | 此等级的最低工资 |
hisal | 此等级的最高工资 |
bonus 工资表
属性英文名 | 属性中文名 |
---|---|
ename | 雇员名字 |
job | 雇员职位 |
sal | 雇员工资 |
comm | 雇员资金 |