Oracle专题17之数据备份和恢复

前端之家收集整理的这篇文章主要介绍了Oracle专题17之数据备份和恢复前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1、数据备份和恢复的概述

a、备份与恢复的必要性

  • 由于计算机系统的各种软硬件故障,用户错误操作以及一些恶意破坏难以避免,因此这就影响到数据的正确性,甚至造成数据损失,服务器崩溃的严重后果。
  • 所以经常的备份可以有效地防止数据丢失,能够把数据从错误状态恢复到正确状态。

b、备份解决方

  • Oracle备份有分为:物理备份和逻辑备份。
  • 物理备份又分为冷备份和热备份。(热备份又分为用户管理备份和Oracle管理备份)

c、冷备份(脱机备份)具体步骤


sql> conn sys/02000059 as sysdba
	已连接。
	sql> shutdown immediate
	数据库已经关闭。
	已经卸载数据库。
	ORACLE 例程已经关闭

2、把需要备份的文件拷贝到指定的位置。(复制所有需要备份的文件) 3、拷贝完成后,如果继续让用户使用数据库,需要以open方式启动数据库

sql> startup open
	ORACLE 例程已经启动。

	Total System Global Area 3373858816 bytes
	Fixed Size                  2180424 bytes
	Variable Size            2013268664 bytes
	Database Buffers         1342177280 bytes
	Redo Buffers               16232448 bytes
	数据库装载完毕。
	数据库已经打开。

d、脱机备份的优点和不足

  • 优点: 1、是非常快速的备份方法(只需要拷贝文件)。 2、容易归档(简单拷贝即可)。 3、容易恢复到某个时间点上(只需要将文件在拷贝回去)。 4、能够与归档方法向结合,作为数据库“最新状态”的恢复。 5、低度维护,高度安全。

  • 不足: 1、单独使用时,只能提供到“某一时间点上”的恢复。 2、在实施备份的全过程中,数据库必须要做备份而不能作为其他工作。也就是说,在脱机备份过程中,数据库必须是关闭状态。 3、若磁盘空间有限,只能拷贝到其他外部存储设备上时,速度会很慢。 4、不能按表或者按用户恢复。

e、数据库恢复

f、脱机恢复

  • 脱机恢复是使用备份文件数据库恢复到备份时的状态。

g、脱机恢复的具体操作

2、数据的导入和导出

a、图形化导入导出数据的方式

1、使用PLsql Developer工具导出数据: - 第一种是导出为.dump的文件格式,.dmp文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最为广泛。 - 第二种是导出为.sql文件的,可用文本编辑器查看,通用性比较好,但是效率不如第一种,适合小数据量导入导出。

2、使用PLsql Developer工具导出数据: - 第一种是导入为.dump格式的文件: - 第二种是导入为.sql格式的文件: - 需要注意,导入的.sql格式的文件可以没有数据,但是必须要有表的结构,不然导入会失败。

b、命令行的方式进行数据的导出

  • 数据导出命令执行方式如下:
EXP[username/password] 参数1 参数2
exp system/oracle@orcl file=c:\dump\oracle_bak.dmp full=y
exp scott/tiger1@orcl file=c:\dump\scott_bak.dmp owner=scott
  • 示例3:将scott用户中表emp,dept导出
exp scott/tiger1@orcl file=c:\dump\table_bak.dmp tables=(emp,dept)

c、命令行的方式进行数据的导入

  • 导入数据命令执行方式如下:
IMP [username/password] 参数1 参数2 ... ...
imp scott/tiger1@orcl file=c:\dump\scott_bak.dmp ignore=y
  • 需要注意,此示例中用scott用户进行的导出操作,在导入时也必须由scott用户进行导入操作。

3、利用触发器实现数据的同步备份

a、利用触发器实现数据的同步备份图示

b、示例:利用触发器实现数据的同步备份

  • 因为在系统中只安装一个Oracle数据库,选择的方式是在同一数据库中进行备份:(即A表和A表备份都在同一个数据库中) 1、创建员工表的备份表:
CREATE TABLE emp_bak
AS
SELECT * FROM emp;

2、创建触发器来实现数据的同步备份。(如当删除员工后,备份表同步删除

CREATE OR REPLACE TRIGGER syno_bak_tirgger
	AFTER DELETE
	ON emp
	FOR EACH ROW
	BEGIN
		DELETE FROM emp_bak WHERE empno = :old.empno;
	END;

3、测试

DELETE FROM emp WHERE empno = 7951;

	SELECT * FROM emp;
	SELECT * FROM emp_bak;

猜你在找的Oracle相关文章