友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

oracle从入门到精通(PDF格式)-第19部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 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 的连续操作  

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

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

 *、技术上的考虑:  

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

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

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

      数据库的配置  

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

 *、灾难恢复的问题:  

      如果遇到天灾人祸;对具有备份策略的数据库有多大的影响?  

      地震; 洪水; 火灾   

      机器完全丢失  

      软硬件的存储故障  

      数据库的关键人物不在了; 例如数据库管理员  

      能不能周期性的测试备份恢复策略  

 根据以上四大方面的各种因素以及各个的不同情况来定义一个备份与恢复的策略。  



                          第 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_HISTORY 日志历史  

    *、VDATABASE  

       Select log_mode from VDATABASE;  

    *、VARCHIVE_PROCESSES  

    命令行:  

    ARCHIVE LOG LIST;  

    show parameter archive ……AS SYSDBA connected  



    4、数据库的备份  



1。物理备份与逻辑备份:  



  ORACLE 提供的 exp和 imp 实用程序可以处理 ORACLE 数据库的逻辑备份和恢复。  

  exp 用与逻辑备份;  

  imp 负责恢复这些逻辑备份;  

  对于逻辑备份来说,时间点恢复是不可能的。  

    

  下边介绍的备份和恢复的方法都是物理备份与恢复,对于此处的了解会有助与更好的使用RMAN。  



                                 第 101 页,共 106 页 


…………………………………………………………Page 102……………………………………………………………

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



    术语:  

     1。  完整数据库备份 …Whole database backup   

              目的数据库可能是打开或者关闭状态  

              备份所有的数据文件和控制文件  

     2。  部分数据库备份 …Partial database backups  

            
返回目录 上一页 下一页 回到顶部 0 0
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!