按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
CALL procedure_name;
CREATE OR REPLACE TRIGGER log_employee
BEFORE INSERT ON EMPLOYEES
CALL log_execution
/
如果能用数据库的功能就用,不能的时候才考虑使用触发器。
CREATE OR REPLACE TRIGGER owner_tri
BEFORE DELETE OR INSERT OR UPDATE ON EMPLOYEES
BEGIN
if sys_context('userenv';'HOST') not in ('305wnj') then
RAISE_APPLICATION_ERROR(…20202;'You cat not do anything on this SCHEMA!');
end if;
if user'HR' then
RAISE_APPLICATION_ERROR(…20202;'You cat not do anything on this table!');
end if;
end;
8、审计
AUDIT INSERT; UPDATE; DELETE
ON departments
BY ACCESS
WHENEVER SUCCESSFUL;
每一次访问都会产生审计信息,记录用户对数据库对象的操作,操作时间和次数。但不会记录
对哪些数据进行操作,
使用触发器完成记录对哪些数据进行操作。
第 97 页,共 106 页
…………………………………………………………Page 98……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通
CHECK 约束只能做确切值的比较;
9、数据同步:
stream
CREATE SNAPSHOT emp_copy AS SELECT * FROM employees@ny;
四、backup and recover 备份与恢复
1、备份与恢复概论:
备份恢复的相关问题:
*、防止数据库在运行中可能发生的各种故障
*、增加数据库的连续可用时间 Mean…Time…Between…Failures (MTBF)
*、减低数据库的恢复用时间 Mean…Time…To…Recover (MTTR)
*、最小化数据的丢失
故障类型:
*、语句失败
*、用户进程失败
*、实例失败
*、用户错误
*、介质故障
*、网络故障
引起语句失败的原因:
*、应用的逻辑错误
*、试图在表中存放不合法的数据
*、试图执行无权限的操作
*、试图创建表;但是已经超过了空间配额的限制
*、试图对表执行 INSERT 或者 UPDATE 操作;导致新区的分配;但是在表空间上已经没有足够
的自由空间
解决语句的失败:
*、修改程序的逻辑流。
*、修改并重新执行 SQL语句。
*、提供必要的数据库权限。
*、使用 ALTER USER 命令改变用户的配额。
*、为表空间增加新的空间。
*、Oracle9i给用户了当因空间不足导致应用挂起时;通过分配空间而使挂起程序继续执行的
能力。
用户进程失败的原因:
*、用户异常的断开了会话。
*、用户会话被非正常终止。
*、用户的程序触发了地址异常;导致了会话的终止。
解决用户进程的失败:
第 98 页,共 106 页
…………………………………………………………Page 99……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通
*、PMON 进程自动检测用户进程的非正常终止。
*、PMON 自动回滚事务并释放所有被用户占用的资源和锁。
用户错误:
就是连接到数据库的用户有意或无意地做了删除了某些不该删除的数据或更新了某些不该更
新的数据等等不该做的事。
解决用户错误:
*、培训数据库用户。
*、从以前的备份中恢复。
*、从导出的文件中导入表。
*、使用 LogMiner 确定出现错误的时间。
*、执行基于时间的恢复。
*、使用 LogMiner 执行对象级的恢复。
*、使用 FlashBack 察看并修复历史数据。
介质故障的原因 :
*、磁盘驱动器头损坏
*、读写数据文件时遇到了物理故障
*、文件被意外的删除了
解决介质故障:
*、恢复策略依赖于选择了哪种备份方法以及那些文件需要恢复。
*、如果可能;使用从上一次备份开始产生的所有归档重做日志文件执行恢复。
2、定义一个备份、恢复策略:
*、商业需求:
恢复所需时间最少(Mean…Time…To…Recover)
连续无故障时间最长(Mean…Time…Between…Failure)
备份策略的制定是一个持续的过程,需要不断的调整
*、操作需求:
24…hour 的连续操作
能不能在数据库运行时执行策略的测试;有没有完善的备份恢复文档
数据库的数据是不是不断变化的
*、技术上的考虑:
资源方面: 硬件; 软件; 电源; 以及时间
执行操作系统级数据文件的物理影像拷贝
执行数据库对象的逻辑拷贝
数据库的配置
事务的大小也影响着备份的频率
*、灾难恢复的问题:
如果遇到天灾人祸;对具有备份策略的数据库有多大的影响?
地震; 洪水; 火灾
机器完全丢失
软硬件的存储故障
数据库的关键人物不在了; 例如数据库管理员
能不能周期性的测试备份恢复策略
根据以上四大方面的各种因素以及各个的不同情况来定义一个备份与恢复的策略。
第 99 页,共 106 页
…………………………………………………………Page 100……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通
3、数据库的同步:
*、所有的数据文件(除了离线状态和只读状态的)必须同步(数据文件的 SCN 号与控制文件中
SCN 号相同)数据库才可以打开。
*、同步是基于当前的检查点的。
*、应用重做日志文件中的修改记录以同步数据文件。
*、重做日志文件在实例恢复时被 Oracle 服务器自动使用。
实例恢复的过程 :
1、出现数据不同步;
2、前滚(redo);
3、在数据文件中存在提交的数据和未提交的数据;
4、回滚(undo);
5、文件中只剩下提交的数据;
配置数据库的归档模式
数据库的两种模式:
非归档模式(noarchivelog) 如果对数据操作非常频繁的话一定要选择非归档模式。
归档模式(archivelog) 不需要关闭数据库就可以恢复数据库,也可以实现数据库的不完
全恢复。
改变归档模式:
1、SHUTDOWN IMMEDIATE
2、STARTUP MOUNT
3、ALTER DATABASE ARCHIVELOG/'NOARCHIVELOG';
4、ALTER DATABASE OPEN;
5、在切换模式后做数据库的完全备份;
自动和手动归档:
自动:LOG_ARCHIVE_START=TRUE
手动:LOG_ARCHIVE_START=FALSE
设置多个 ARCn 进程:
动态参数 LOG_ARCHIVE_MAX_PROCESSES 控制在实例启动时启动的归档进程数。
最多可以设置 10 个 ARCn 归档进程。
ARCn 进程数可以使用 ALTER SYSTEM 命令改变。
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES = 3;
ALTER SYSTEM ARCHIVE LOG START 'TO ‘?/dbs/arch’'; 切换为自动归档模式
使用 LOG_ARCHIVE_DEST_n最多可以设置 10 个归档目的
使用 LOG_ARCHIVE_DEST_n选项:
*、可以设置归档目的为 MANDATORY (强制的,归档不成功就 REOPEN)或者
OPTIONAL(可选的,默认)。
*、定义失败时重试等待的时间。
log_archive_dest_1=〃LOCATION=/archive MANDATORY REOPEN〃
log_archive_dest_2=〃SERVICE=standby_db1MANDATORY REOPEN=600〃
log_archive_dest_3=〃LOCATION=/archive2 OPTIONAL〃
第 100 页,共 106 页
…………………………………………………………Page 101……………………………………………………………
资源来自网络,仅供学习! Oracle 从入门到精通
Log_archive_dest_1 必须为 MANDATORY,其他随意
设置在本地成功归档的最少个数:
LOG_ARCHIVE_MIN_SUCCEED_DEST 参数
ALTER SYSTEM LOG_ARCHIVE_MIN_SUCCEED_DEST = n 'scope = both';
一个在线重做日志组仅仅在下面的条件满足时可被重用:
所有被设置为 mandatory 的目的都已成功归档
本地成功归档的目的数大于或等于 LOG_ARCHIVE_MIN_SUCCEED_DEST 参数
控制归档的目的:
*、归档目的可以通过 LOG_ARCHIVE_DEST_STATE_n动态参数禁用。
ALTER SYSTEM SET log_archive_dest_state_3 = DEFER
*、也可以再次启用归档目的。
ALTER SYSTEM SET log_archive_dest_state_3 = ENABLE
使用 LOG_ARCHIVE_FORMAT 设置归档文件的命名格式; 日志序列号和线程号是默认
命名的一部分。
设置归档文件的命名格式:
/ORADATA/archive/ arch%s。arc
其中:
LOG_ARCHIVE_DEST_n 控制 /ORADATA/archive/
LOG_ARCHIVE_FORMAT 控制 arch%s。arc
得到关于归档的信息:
*、VARCHIVED_LOG 已经成功的归档日志
*、VARCHIVE_DEST 归档目的的信息
*、VLOG_HIST