友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

oracle从入门到精通(PDF格式)-第34章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




    WHEN (NEW。job_id = 'SA_REP')  

  BEGIN  

    IF  INSERTING  

       THEN :NEW。mission_pct := 0;  

    ELSIF :OLD。mission_pct IS NULL  

       THEN :NEW。mission_pct := 0;  

    ELSE   

      :NEW。mission_pct := :OLD。mission_pct + 0。05;  

    END IF;  

  END;  

  /  



3。INSTEAD OF TRIGGER:替换类型触发器  



    CREATE 'OR REPLACE' TRIGGER trigger_name  

      INSTEAD OF  

        event1 'OR event2 OR event3'  

          ON view_name   

       'REFERENCING OLD AS old | NEW AS new'  

    'FOR EACH ROW'  

    trigger_body  

    

  不允许在触发器中进行事务的操作。  



4。DDL触发器:  



    CREATE 'OR REPLACE' TRIGGER trigger_name  

     timing//   

        'ddl_event1 'OR ddl_event2 OR 。。。''  

        ON {DATABASE|SCHEMA}   

        trigger_body  

  当用户在数据库中对方案执行 CREATE ALTER DROP 操作时触发。  



5。系统事件触发器:  



    CREATE 'OR REPLACE' TRIGGER trigger_name  



                                    第 96 页,共 106 页 


…………………………………………………………Page 97……………………………………………………………

资源来自网络,仅供学习!                                                            Oracle 从入门到精通 



       timing   

            'database_event1 'OR database_event2 OR 。。。''  

           ON {DATABASE|SCHEMA}   

    trigger_body  

  在数据库启动后,和关闭前触发。  

  对数据库权限进行 CREATE ANY,ALTER  ANY。。。。。操作时触发。   

  如果是 ON SCHEMA ,该触发器是当前方案下的触发器,不能在连接其他用户登陆或断开时触发, 

  ON DATABASE 可以。          

  sys_context('userenv';'ip_address'/'isdba'/'HOST'/'os_user');  

  对日期格式的操作只能通过修改环境变量或用 TO_CHAR 来实现;  

  当触发器代码量大的时候,把触发器体整体放入一个存储过程中。   

    CREATE 'OR REPLACE' TRIGGER trigger_name  

      timing   

        event1 'OR event2 OR event3'  

          ON table_name   

      'REFERENCING OLD AS old | NEW AS new'  

    'FOR EACH ROW'  

      'WHEN condition'  

    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 的连续操作  

      能不能在数据库运行时执行策略的测试;有没有完善的备份恢复文档  

      数据库的数据是不是不断变化的  

 *、技术上的考虑:  

      资源方面: 硬件; 软件; 电源; 以及时间  

      执行操作系统级数据文件的物理影像拷贝  

      执行数据库对象的逻辑拷贝  

      数据库的配置  

      事务的大小也影响着备份的频率  

 *、灾难恢复的问题:  

      如�
返回目录 上一页 下一页 回到顶部 赞(1) 踩(1)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!