Oracle数据库备份与恢复(理论).ppt
Oracle数据库备份与恢复,引言,Oracle作为数据库的工业标准,在企业界得到了广泛的应用。为避免数据丢失和数据库失效对企业的影响,必须保持数据库的完整性和可用性。数据库管理员DBA的主要职责之一就是备份数据库和在数据库发生故障时高效、安全地恢复数据库。备份就是把数据库复制到磁带、磁盘等存储设备的过程,以供故障发生时执行数据库恢复。,数据库常见故障类型,事务内部故障系统故障介质故障计算机病毒,Oracle数据库保护机制,数据库备份事务日志数据库的事务日志是一组操作系统文件,它记录了提交事务所做的数据库修改。当提交事务时,在修改数据库之前,Oracle在事务日志中写入足够的信息,如果数据库需要恢复,可以使用这些信息重做事务(包括UNDO和REDO)。,数据库恢复,恢复可以分为完全恢复和不完全恢复 完全数据库恢复是恢复到故障发生前的状态,所有已经提交的操作都进行恢复,确保数据库不丢失任何数据,完全恢复只用于归档模式。不完全数据库恢复是将数据库恢复到备份点与介质失败点之间某个时刻的状态,并不是恢复所有提交的操作,不完全恢复可能丢失部分数据。任何类型的恢复包括两个阶段:前滚阶段和回滚(回退)阶段。,前滚阶段在前滚恢复阶段(roll-forward recovery),恢复管理器应用必要的事务日志组“重做”(REDO)所有提交的不在数据库数据文件中的事务。回滚阶段在前滚恢复后,Oracle必须执行回滚恢复(roll-back recovery)。由于一些未完成的事务对数据库的修改信息已经提交到数据库,为保证数据库的一致性,需要清除这些事务对数据库的修改,数据库应执行回滚操作(UNDO),强制撤销这些未完成事务。,前滚和回滚的执行除了管理员或应用程序调用外,执行前滚操纵还是回滚操作与检查点的出现相关,恢复数据库所使用的结构,数据库备份当介质故障时进行数据库恢复,利用备份文件恢复损坏的数据文件或控制文件。日志每一个Oracle数据库实例的日志记录了数据库所作的全部修改。回退段回退段用于存储正在进行的事务(未提交的事务)所修改数据的老数据,该信息在数据库恢复过程中用于撤销任何非提交的修改。控制文件一般用于存储数据库的物理结构的状态,控制文件中的某些状态信息在实例恢复和介质恢复期间用于引导Oracle。,不完全恢复,Oracle和恢复管理器支持三种不同类型的不完全恢复基于时间(TIME)的恢复基于时间的恢复也叫时间点恢复,它将数据库中提交事务的工作恢复到一个特定的时间点为止。基于修改(SCN)的恢复基于修改的恢复是将数据库中提交事务的工作恢复到一个特点的系统修改序列号SCN为止,Oracle为每个提交事务分配了一个唯一的SCN。一般来说,如果知道数据库恢复的最后一个事务的SCN,那么可以执行基于修改的恢复。基于取消的恢复。基于取消(CANCEL)的恢复是将数据库中提交的事务恢复到一个特定日志组。,事务与并发,事务事务(transaction)是数据库的逻辑工作单元,是用户定义的一组操作序列,如一组SQL语句,一条SQL语句或整个程序。通常情况下,一个应用程序包括多个事务。在SQL中,定义事务,以Begin开始,以Commit或Rollback结束。事务开始BEGIN 处理IF 成功 提交COMMITELSE 回滚ROLLBACK,事务属性(1)原子性:事务是数据库最小的工作单元,是不可分的。事务中的操作要么都做,要么都不做。(2)一致性:事务执行前后,数据库都应处于数据一致的状态。当数据库只包含成功提交事务的结果时,我们就说数据库处于一致性状态。(3)隔离性:尽管多个事务可以并发,但相互不干扰,隔离性要求事务不查看其他事务的中间阶段。(4)持久性:事务成功完成后,对数据库的改变必须是持久的。事务成功执行后系统故障,应能恢复对数据库的更改(Undo),如果事务执行时系统出现故障,应该允许系统在重新启动后完成未完成的事务操作(Redo),保证事务的完整性,事务是一个执行单元,也是一个恢复单元。,并发现象并发操作如果不进行适当的控制,可能导致数据库中数据的不一致性。并发操作带来的不一致性包括四类:丢失更新、读脏数据、不可重复读和幻像读。,四个隔离级别未提交读发生(read uncommitted):读取数据时,不发出共享锁,也不接受排它锁,出现读脏数据。提交读(read committed):读取数据时,使用共享锁,在该级别上,不会出现读脏数据。可重复读(repeateable read):持有锁直到事务结束。不会出现读脏数据和不可重复读。可序列化(serializable):防止其他用户更新或插入满足事务WHERE子句条件的新行,不会出现幻像读。,用户与资源,每一个Oracle数据库有一组合法的用户,合法用户可存取该数据库,可运行该数据库的应用。当建立数据库用户时,对该用户建立一个相应的模式(也称为方案),模式是数据库中用户所拥有的所有对象的集合。资源可以是为用户分配的连接、提供的CPU时间、分配的内存空间、SGA空间大小等。Oracle使用概要文件对资源进行管理,概要文件是存储在数据字典中对资源进行限制的集合,用户在使用数据库时,受到概要文件中规定参数的限制。在Oracle中每个用户都必须有一个概要文件,苦没有为用户创建概要文件,那么使用系统默认的概要文件。,创建用户创建用户必须拥有CREATE USER系统权限。创建用户时指定的选项信息有用户名称、验证方式(口令)、概要文件,分配的表空间、用户使用的限额、授予用户的角色、授予用户的权限、锁定状态等。Create user PYM identified by rabbitDefault tablespace USERSTemporary tablespace TEMPQUOTA 5m ON USERS/若没有指定资源定额,用户不能在数PASSWORD EXPIRE据库中创建对象。苦授予资源,需要ACCOUNT UNLOCK;用QUOTA参数指定。,修改用户和删除用户使用ALTER USER命令可以更改用户的信息,但必须拥有ALTER USER系统权限,数据库用户修改自身口令不需要任何系统权限。,更改用户PYM的口令为ORACLEALTER USER PYM IDENTIFIED BY ORACLE更改用户PYM在表空间USERS上的限额为无限ALTER USER PYM QUOTA UNLIMITED ON USERS更改用户PYM的默认表空间为USERSALTER USER PYM DEFAULT TABLESPACE USERS,要删除用户,应当具备DROP USER系统权限,DROP USER命令可以删除数据库中的用户,如果被删除的用户对应的模式中拥有对象信息,那么应使用CASCADE子句,将用户模式中的所有对象一同删除。DROP USER THUMPER CASCADE;也可以在OEM中,选择“用户”,点击鼠标右键,选择“移去”来删除用户。,查看用户信息可以通过Oracle数据字典查看用户的基本信息(1)DBA_USERS,数据库中所有用户的信息。(2)ALL_USERS,当前用户能看到的用户信息,包括USERNAME,USER_ID和创建日期CREATED三个字段。(3)USER_USERS,查看当前用户信息。(4)DBA_TS_QUOTAS,用户的表空间信息,包括表空间名,用户名,字节数,块数等信息。(5)USER_TS_QUOTAS,USER_RESOURCE_LIMITS,用资源限制信息。(6)USER_PASSWORD_LIMITS,用户口令管理信息,权限,权限是执行一种特殊类型的SQL语句或存取另一用户的对象的权力。系统权限对象权限。授予权限使用GRANT命令,撤销授权使用REVOKE命令。,系统权限是执行一种特殊动作或者在对象类型上执行一种特殊动作的权利。Oracle有一百多种不同系统权限,每一种系统权限允许用户执行一种特殊的数据库操作或一类数据库操作。系统权限可授权给用户或角色 常用的系统权限有:CREATE TABLE,CREATE INDEX,CREATE USER,CREATE VIEW,CREATE TRIGGER,ALTER USER,1系统权限,对象权限是在指定的表、视图、序列、过程、函数或包上执行特殊动作的权利。对于不同类型的对象,有不同类型的对象权限。常用的对象权限有:表的SELECT,INSERT,UPDATE,DELETE,ALTER权限视图的SELECT,INSERT,UPDATE,DELETE权限序列的SELECT,ALTER权限等 模式的持有者对模式中的对象具有全部对象权限。对象的持有者可将对象上的任何权限授权给其他用户。如果被授权者包含有GRANT OPTION 授权,那么该被授者也可将其权利再授权给其他用户。,2对象权限,对数据库对象的访问需要权限,通过GRANT命令可以设置用户在特定数据库对象上相应权限。GRANT SELECT ON STUDENT TO PUBLIC;,授予PYM用户建立表的系统权限,并允许PYM管理建立表的系统权限。GRANT CREATE TABLE TO PYM WITH ADMIN OPTION撤销PYM用户的建立表、视图、索引的权限。REVOKE CREATE TABLE,CREATE VIEW,CREATE INDEX FROM PYM,角色就是权限的集合,通过把角色分配给用户,就是把角色所拥有的权限分配给了用户。在一个数据库中,每一个角色名必须唯一,角色也可以是其他角色的集合。角色不包含在任何模式中,所以建立一个角色的用户被删除时不影响该角色。,角色,角色有如下特点:(1)一个角色可授予系统权限或对象权限。(2)一个角色可授权给其它角色,但不能循环授权。(3)任何角色可授权给任何数据库用户。(4)授权给一个用户的每一角色可以被允许或禁止。(5)一个间接授权角色(授权给另一角色的角色)对一用户可显式地被允许或禁止。,ORACEL利用角色更容易地进行权限管理,并有下列优点:(1)减少权限管理,不要显式地将同一权限组授权给每个用户,只需将权限组授给角色,然后将角色授权给每一用户。(2)动态权限管理,如果一组权限需要改变,只需修改角色的权限,所有授予了该角色的全部用户的安全域将自动地反映对角色所作的修改。(3)权限的选择可用性,授权给用户的角色可被禁止或被允许。角色可以使用口令保护,因此,角色给数据库增加了一个附加的安全层。,用户、权限与角色的关系:(1)每个用户可以拥有0个或者多个权限或角色(2)每个权限可以分配给多个用户或者角色(3)每个角色可以分配给多个用户或者角色(4)角色不能与用户名相同,对于大量用户的应用程序,角色将大大减少grant命令的使用。CREATE ROLE TABLE_QUERY;GRANT SELECT ON STUDENT TO TABLE_QUERY;GRANT SELECT ON CLASS TO TABLE_QUERY;GRANT SELECT ON ROOM TO TABLE_QUERY;,创建角色lotus,口令使用lotus,为角色授予创建表的权限create role lotusidentified by lotus;grant create table to lotus;,撤销lotus角色的create session权限revoke create session from lotus删除角色lotus,必须拥有DROP ANY ROLE系统权限或被授予了带管理选项的角色。删除角色将影响到被授予此角色的用户。DROP ROLE lotus;,