OCM贰章之RMAN

 ocm的课程,结束了4天的GC课程 ,进入了RMAN 这章.

    rman 是oracle的恢复管理器.,用来管理 数据库备份的工具.

    要想搞明白rman 是怎么一回事,还必须从oracle的 备份和恢复机制说起.

    而要理解oracle的备份和恢复机制,要把oracle体系架构中,

      进程结构需要了解:

        ckpt 检查点进程,

        lgwr 日志书写进程。

        dbwr 数据读写进程。

        arch0 归档进程。

        ctwr  更改跟踪进程。

      内存结构:

        data buff pool     数据缓冲池

        redo log buffer   在线事务日志缓冲池

        large pool           大池

     数据库文件:

        在线重做日志文件。online Redo Log files

        归档文件。              Archive log file

      那我们现在来描述一下做DML操作的时候数据库是怎么工作的:

        用户打开客户端,连接到数据库服务器。连接数据库服务器的时候,需要提供

    用户名,密码,目标IP,端口,服务名或实例名。

        服务器端的监听程序接受到客户端的连接请求以后,根据客户端提交的相关信息,

    找到服务器中相关服务,用fork,使客户进程和数据库服务器进程进行通信。

        (数据库服务器进程类似银行的大堂经理在你沟通后,她会领你到一个银行营业员那里处理具体的事务。)

        数据库服务器进程 PGA会存放 用户会话数据,游标状态,堆栈空间

         (数据库服务器进程类似银行的营业员,你提交的任何业务操作,都会由营业员来帮你完成)

        用户提交的查询语句给服务器进程以后,数据库会做一下的操作:

            1。判断是否有权限访问相应的表  share pool 的 Data Dictionary Cache 里面有

                 user 的 privileges

            2。判断相应的表和字段是否存在 share pool 的 data Dictionary cache

            3。判断sql语句是否以前执行过 share pool 的 libaray cache 中的 shared sql

                 area

                这个判断的原理就是把sql语句 通过算法生成一个hash值,然后在一个内

              存列表中搜索这个hash,找到了,就取出相应的执行计划,然后执行。这就是软解析。

                如果hash 值 在内存列表中没有,那么要新生成执行计划。硬解析。

                如果pga的uga 里面 保留了原来执行的sql语句,不解析,直接执行。

           所以说,用户在提交select 语句到数据库中查询数据的时候,在真正查数据之前,有

        很多的工作要做。速度最快的是不解析,其次是软解析,最后是硬解析。

            4。经过以上的判断以后,数据库服务器根据执行计划,到data buff cache 里面找

         相关的数据, 如果找不到,就把数据文件中的相应的表,索引等,调入内存。查询结果,返回给用户。

          以上是用户提交一条select 语句时,数据库的一些操作。我写出来还是比较粗,不够精细,如果不理解,就想想 你去银行怎么查帐的,有很多的相似之处。再一次证明了,oracle是人写出来的,不是外星人搞出来的。

        

     以上是用户提交的select语句。当用户提交的是 DML 语句 update,delete,insert ,merge.的时候,都会被当做事务来处理。事务遵循ACID原则,

                                 原子:事务中的所有操作要么全部完成,要么全部不完成。

        一致:内存外存一致,多用户更新同一张表,A用户修改了数据,但没有提交,B用户看到的还是原来的数据,这就是传说中的一致性读。

 

        隔离:锁,A用户更新一行记录,B用户更新另外一行,相互不干扰,被隔离,就是用锁来实现的

 

        永久:用户提交事务的时候,所有的操作,会先写入磁盘。 被更改在内存中的脏数据库,会被dbwr 写入磁盘。但具体什么时候写入磁盘,会有很多的参考

                                              因素。随时写磁盘,数据库的性能消耗在IO上,性能会降低。长时间不写磁盘,内存中的脏数据越积越多。数据的安全性就无法保障,如果这个时候

                                              系统宕机,丢数据,就很严重了。所以脏数据写入磁盘的频率,是一个哲学的辩证,是中庸,走两头的极端,缺陷就会暴露的非常明显。

 

      有了以上的体系架构,那么备份和还原恢复,才具有实现的可能性。

        备份backup :控制文件,spfile,数据文件,表空间,数据库,都是可以备份的对象。

                 要注意各备份的匹配问题。控制文件和数据库要匹配起来,备份才有意义。

            所以要设置自动备份控制文件。

               有的备份脚本里面,分两条命令,先备份数据库,再备份控制文件,其实这两个备份里面的scn已经不统一了,会有点小麻烦。

               全量备份,增量备份的选择也很重要,存储太多的备份,意义也不大。

               保留策略分为时间窗口和冗余度。

        还原restore:把数据库还原到以前的某一个时间点。

               选择适当的控制文件和备份集,对还原的效果和后面的恢复有积极的作用。

        恢复:recovery

              从还出来的数据库的时间点开始,应用归档日志,或 在线事务日志,到某一        个指定的时间点,或until cancel。 归档,在线事务日志里面的内容是一样的,都是           记录了数据库的变更操作。从还原的那个时间点开始,把前面作过的事情,再重新做一遍。        至于做到什么时间停止,可以设定。

 

     被备份的数据库 叫 目标库。管理目标库的元数据,备份信息的数据库,叫恢复目录库。

  恢复目录库类似于GC的OMR。

      在目录数据库上需要做什么操作:

        建立表空间 :    

            create tablespace rmancatalog datafile 'c:/rman/rmancatalog.dbf' size 15.5M

            恢复目录库的表空间最小15M,如果要管理多个目标库,那么空间还需要更大。

        建立用户:

         create user rman  identified by rman;

        赋予角色和权限:

                                     连接数据库和目录恢复拥有者

         grant connect ,recovery_datalog_owner to rman

           在rmancatalog表空间上 有无限的使用限额

         alter user rman quota unlimited on rmancatalog

                       改变用户的缺省表空间

         alter user rman default tablespace rmancatalog;

            

     连接目标数据和连接恢复目录数据库

       rman catalog rman/rman @ rman

     建立恢复目录

       create catalog tablespace  rmancatalog

        也可以不指定表空间,使用用户缺省的表空间。

                 连接目标库,目录库

      rman target  /   catalog  rman/rman @  rman

        注册目标数据库 至 恢复目录库

            register database;

 

     rman 的一些常用命令 :

        配置命令:

        show all

        configure

      备份目录管理:

        report need backup;

        report schema

     备份操作

        backup database

        backup tablespace

        backup schema

     还原操作 

        restore database

        restore tablespace

        restore schema

        脚本操作

         分配通道

        

 

        

 

        

                

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值