dml语句产生的归档日志的大小 oracle - CSDN
精华内容
参与话题
  • oracle归档日志增长过快处理方法

    千次阅读 2019-05-02 12:32:30
    oracle归档日志一般由dml语句产生,所以增加太快应该是dml太频繁 首先查询以下每天的归档产生的情况: SELECT TRUNC(FIRST_TIME) "TIME", SUM(BLOCK_SIZE * BLOCKS) 1024 oracle归档日志一般由dml语句产生,所以...

    oracle归档日志一般由dml语句产生,所以增加太快应该是dml太频繁 首先查询以下每天的归档产生的情况: SELECT TRUNC(FIRST_TIME) "TIME", SUM(BLOCK_SIZE * BLOCKS) 1024

    oracle归档日志一般由dml语句产生,所以增加太快应该是dml太频繁

    首先查询以下每天的归档产生的情况:

    SELECT TRUNC(FIRST_TIME) "TIME",
    SUM(BLOCK_SIZE * BLOCKS) / 1024 / 1024 / 1024 "SIZE(GB)"
    FROM V$ARCHIVED_LOG
    GROUP BY TRUNC(FIRST_TIME);

    从而好判断那个时间段开始归档比较异常

    从以下两种方式分析归档日志的情况

    方法一:使用logminer

    1,使用脚本创建相关的包

    @$ORACLE_HOME/rdbms/admin/dbmslm.sql
    @$ORACLE_HOME/rdbms/admin/dbmslmd.sql;
    第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。
    第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。

    2.指定要分析的日志文件
    exec sys.dbms_logmnr.add_logfile(logfilename => '/archivelog/node/1_771348_78836667000.arc',options => dbms_logmnr.new);

    3.使用本地的在线数据字典分析归档日志
    exec sys.dbms_logmnr.start_logmnr(options => sys.dbms_logmnr.dict_from_online_catalog);



    4,查询分析出来的归档日志内容,例如统计最大修改量的Schema
    select seg_owner,count(*) from v$logmnr_contents group by seg_owner;
    select count(1),substr(sql_redo,1,30) from v$logmnr_contents group by substr(sql_redo,1,30) order by count(1) desc ;

    5.增加别的日志文件
    exec sys.dbms_logmnr.add_logfile(logfilename=>'/archivelog/node/1_773333_78836667000.arc');
    exec sys.dbms_logmnr.add_logfile(logfilename=>'/archivelog/node1/1_773334_78836667000.arc');
    6.结束分析归档日志
    exec sys.dbms_logmnr.end_logmnr;

    方法二:使用toad工具查看日志信息

    在database 找到logminer 然后把要分析的日志放进去,里面有详细的数据库执行记录,很直观的看到产生归档的语句

    查出来语句后,然后给开发一块商量还是否可以降低一些dml语句的执行频率

    转:http://m.2cto.com/database/201410/346926.html
    文章可以转载,必须以链接形式标明出处。

    本文转自 张冲andy 博客园博客,原文链接:http://www.cnblogs.com/andy6/p/5876683.html   ,如需转载请自行联系原作者

    展开全文
  • Oracle中的nologging

    万次阅读 2010-04-12 10:19:00
    Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就...

    Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。一般数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满的时候,就会发生日志切换,这时联机重做日志组2成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,就这样反复进行。
    如果数据库处于非归档模式,联机日志在切换时就会丢弃. 而在归档模式下,当发生日志切换的时候,被切换的日志会进行归档。比如,当前在使用联机重做日志1,当1写满的时候,发生日志切换,开始写联机重做日志 2,这时联机重做日志1的内容会被拷贝到另外一个指定的目录下。这个目录叫做归档目录,拷贝的文件叫归档重做日志。
    数据库使用归档方式运行时才可以进行灾难性恢复。
    归档日志模式和非归档日志模式的区别
    非归档模式只能做冷备份,并且恢复时只能做完全备份.最近一次完全备份到系统出错期间的数据不能恢复.
    归档模式可以做热备份,并且可以做增量备份,可以做部分恢复.
    用ARCHIVE LOG LIST 可以查看期模式状态时归档模式还是非归档模式.

    改变归档模式到非归档模式:
    1)SQL>SHUTDOWN NORMAL/IMMEDIATE;
    2)SQL>START MOUNT;
    3)SQL>ALTER DATABASE NOARCHIVELOG;
    4)SQL>ALTER DATABASE OPEN;


    启用自动归档: LOG_ARCHIVE_START=TRUE
    归档模式下,日志文件组不允许被覆盖(重写),当日志文件写满之后,如果没有进行手动归档,那么系统将挂起,知道归档完成为止.
    这时只能读而不能写.
    运行过程中关闭和重启归档日志进程
    SQL>ARCHIVE LOG STOP
    SQL>ARCHIVE LOG START

    手动归档: LOG_ARCHIVE_START=FALSE
    归档当前日志文件
    SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
    归档序号为052的日志文件
    SQL>ALTER SYSTEM ARCHIVE LOG SEQUENCE 052;
    归档所有日志文件
    SQL>ALTER SYSTEM ARCHIVE LOG ALL;
    改变归档日志目标
    SQL>ALTER SYSTEM ARCHIVE LOG CURRENT TO '&PATH';


    1------------------------------------------------------
    某DBA告诉我这样可以不写LOG:
    alert tablename nologgin;
    insert into tablename (select ...)
    注意:insert语句后面必须是‘select...’语句,否则无效

    2------------------------------------------------------
    NOLOGING选项只是在direct-load模式下才不写redo log,nomal DML无效

    3------------------------------------------------------
    alter table tb_txn_log nologging,然后改回来alter table tb_txn_log logging这种模式
    会影响联机交易

    4------------------------------------------------------
     insert into test1 nologging select * from dba_objects
     alter table test1 nologging
     insert into test1  select * from dba_objects

    5------------------------------------------------------

    关于nologging的用法
    有许多朋友误已写SQL或把表的属性加NOLOGGING,就可以不采成日志。这是一个误解。

    在数据迁移或大量的数据insert入库时,由于大量数据的insert或修改,经常引起redo log sync的等待,造成数据库性能缓慢。
    因为许多朋友对NOLOGGING的误解,所以许多人在insert数据时,在SQL后加nologging,想通过该用法使操作不采生日记录。但无效果。
    这里讨论nologging的具体用法:

    数据库操作,只有如下几种情况下不产成redo记录:
    1、用sql*load的direct load方式时,不采用redo记录
    2、用insert的direct方式,即在append方式insert( insert append可以实现直接路径加载,速度比常规加载方式快很多。但有一点需要注意: insert append时在表上加“6”类型的Exclusive锁,会阻塞表上的所有DML语句。因此在有业务运行的情况下要慎重使用.在使用了append选项以后,insert数据会直接加到表的最后面,而不会在表的空闲块中插入数据。
    使用append会增加数据插入的速度。
    的作用是在表的高水位上分配空间,不再使用表的extent中的空余空间
    append 属于direct insert,归档模式下append+table nologging会大量减少日志,非归档模式append会大量减少日志,append方式插入只会产生很少的undo
    不去寻找 freelist 中的free block , 直接在table HWM 上面加入数据。)
    3、create table .... as select
    4、create index
    5、alter table ... move partition
    6、alter table ... split partition
    7、alter index ... split partition
    8、alter index ... rebuild
    9、alter index ... rebuild partition
    10、INSERT, UPDATE, and DELETE on LOBs in NOCACHE NOLOGGING mode stored out of line

    展开全文
  • oracle数据库使用plsql developer 如何显示的开启一个事务?就像mysql中的begin; start transaction;语句这样。书上说 Oracle 事务分为2中类型(显式和隐式方法) 显示方法,就是利用命令完成。 Oracle中的事务不...
  • 如何加速Oracle大批量数据处理

    万次阅读 2010-01-12 14:57:00
    如何加速Oracle大批量数据处理一、 提高DML操作的办法:简单说来:1、暂停索引,更新后恢复.避免在更新的过程中涉及到索引的重建.2、批量更新,每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表...

    如何加速Oracle大批量数据处理

    一、           提高DML操作的办法:

    简单说来:
    1、暂停索引,更新后恢复.避免在更新的过程中涉及到索引的重建.
    2、批量更新,每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表空间.
    3、创建一临时的大的表空间用来应对这些更新动作.

    4、批量更新,每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表空间.

    5、创建一临时的大的表空间用来应对这些更新动作.

    6、加大排序缓冲区
        alter session set sort_area_size=100000000;
        insert into tableb select * from tablea;
        commit;

    如果UPDATE的是索引字段,就会涉及到索引的重建,暂停索引不会提高多少的速度,反而有可能降低UPDATE速度,
    因为在更新是索引可以提高数据的查询速度,重建索引引起的速度降低影响不大。

    ORACLE优化修改参数最多也只能把性能提高15%,大部分都是SQL语句的优化!

    update总体来说比insert要慢 
    几点建议:  
      1
    、如果更新的数据量接近整个表,就不应该使用index而应该采用全表扫描  
      2
    、减少不必要的index,因为update表通常需要update index  
      3
    、如果你的服务器有多个cpu,采用parellel hint,可以大幅度的提高效率
     
    另外,建表的参数非常重要,对于更新非常频繁的表,建议加大PCTFREE的值,以保证数据块中有足够的空间用于UPDATE, 从而降低CHAINED_ROWS 

    二、        各种批量DML操作:

    1)、oracle批量拷贝:

    set arraysize 20
            set copycommit 5000
            copy from
    username/password@oraclename append table_name1
            using select * from table_name2;

         2)、常规插入方式:

              insert into t1 select * from t;

               为了提高速度可以使用下面方法,来减少插入过程中产生的日志:

               alter table t1 nologging;

    insert into t1 select * from t;

    commit;

          (3)、CTAS方式:

               create table t1

    as
    select * from t;

    为了提高速度可以使用下面方法,来减少插入过程中产生的日志,并且可以制定并行度:

    create table t1 nologging parallel(degree 2) as select * from t;

         (4)、Direct-Path插入:

              insert /*+append*/ into t1 select * from t;

              commit;

              为了提高速度可以使用下面方法,来减少插入过程中产生的日志:

              alter table t1 nologging;

              insert /*+append*/ into t1 select * from t;

     

              Direct-Path插入特点:

    1、         append只在insert … select …中起作用,像insert /*+ append */ into t values(…)这类的语句是不起作用的。在updatedelete操作中,append也不起作用。

    2、 Direct-Path会使数据库不记录直接路径导入的数据的重做日志,会对恢复带来麻烦。

    3、 Direct-Path直接在表段的高水位线以上的空白数据块中写数据,不会重用高水位线以下的空间,会对空间的使用造成一定的浪费,对查询的性能也会造成一定的影响。而常规插入会优先考虑使用高水位线之下有空闲空间存在的数据块。因此理论上Direct-Path插入会比常规插入速度更快,因为Direct-Path直接使用新数据块,而常规插入要遍历freelist获取可用空闲数据块,如果 nologging 配合,这种速度优势会更加明显。

    4、 append方式插入记录后,要执行commit,才能对表进行查询。否则会出现错误:ORA-12838: 无法在并行模式下修改之后读/修改对象。

    5、 append导入数据后,如果没有提交或者回滚,在其他会话中任何对该表的DML都会被阻塞(不会报错),但对该表的查询可以正常执行。

    6、 在归档模式下,要把表设置为nologging,然后以append方式批量添加记录,才会显著减少redo数量。在非归档模式下,不必设置表的 nologging属性,即可减少redo数量。如果表上有索引,则append方式批量添加记录,不会减少索引上产生的redo数量,索引上的redo 数量可能比表的redo数量还要大。

    7、 数据直接插入数据文件,绕过buffer cache并且忽略了引用完整性约束。

    8、 不管表是否在nologging 下,只要是 direct  insert,就不会对数据内容生成undo

    9、 OracleDirect-Path INSERT 操作末尾,对具有索引的表执行索引维护,这样就避免了在drop掉索引后,再rebuild

    10、       Direct-Path INSERT比常规的插入需要更多的空间。因为它将数据插入在高水位之上。并行插入非分区表需要更多的空间,因为它需要为每一个并行线程创建临时段。

    11、       在插入期间,数据库在表上获得排他锁,用户不能在表上执行并行插入、更新或者删除操作,并行的索引创建和build也不被允许。但却可以并行查询,但查询返回的是插入之前的结果集

      (5)、并行DML:

         如果你的服务器有多个cpu,采用parellel hint,可以大幅度的提高效率
         ALTER SESSION ENABLE PARALLEL DML;

         INSERT /*+ PARALLEL(tableA, 2) */INTO tableA
         SELECT * FROM tableB;

         为了提高速度可以使用下面方法,来减少插入过程中产生的日志:

     INSERT /*+ PARALLEL(tableA, 2) */INTO tableA NOLOGGING
         SELECT * FROM tableB;

    oracle默认并不会打开PDML,对DML语句必须手工启用。即需要执行

    alter table enable parallel dml命令。

     

    并行DML特点:

    1、在并行DML模式中,默认的就是DIRECT-PATH插入,为了运行并行DML模式,必须满足以下条件:

    a、必须是Oracle企业版;

    b、必须在session中使并行DML生效,执行以下sql语句:

    ALTER SESSION { ENABLE | FORCE } PARALLEL DML;

    c、必须指定table的并行属性,在创建的时候或者其他时候,或者在insert操作时使用“PARALLEL”提示。

    d、为了使Direct-Path Insert模式失效,在INSERT语句中指定“NOAPPEND”提示,覆盖并行DML模式。

        2、并行Direct-Path INSERT到分区表:

           类似于serial Direct-Path INSERT,每个并行操作分配给一个或者多个分区,每个并行操作插入数据到各自的分区段的高水位标志之上,commit之后,用户就能看到更新的数据。

        3、并行Direct-Path INSERT到非分区表:

            每个并行执行分配一个新的临时段,并插入数据到临时段。当commit运行后,并行执行协调者合并新的临时段到主表段,用户就能看到更新的数据。

        4、Direct-Path INSERT可以使用Log或者不使用Log。

        5、另外不得不说的是,并行不是一个可扩展的特性,只有在数据仓库或作为DBA等少数人的工具在批量数据操作时利于充分利用资源,而在OLTP环境下使用并行需要非常谨慎。事实上PDML还是有比较多的限制的,例如不支持触发器,引用约束,高级复制和分布式事务等特性,同时也会带来额外的空间占用,PDDL 样是如此。

     

     

    展开全文
  • Oracle 控制文件和日志文件

    千次阅读 2016-04-26 12:19:46
    管理控制文件在Oracle数据库中,控制文件是一个很小(大小一般在10MB范围内)的二进制文件,含有数据库的结构信息,包括数据文件和日志文件的信息。可以将控制文件理解为物理数据库的一个元数据存储库。控制文件在...

    管理控制文件

    在Oracle数据库中,控制文件是一个很小(大小一般在10MB范围内)的二进制文件,含有数据库的结构信息,包括数据文件和日志文件的信息。可以将控制文件理解为物理数据库的一个元数据存储库。控制文件在数据库创建时被自动创建,并在数据库发生物理变化时更新。控制文件被不断更新,并且在任何时候都要保证控制文件是可用的。只有Oracle进程才能够安全地更新控制文件的内容,所以,任何时候都不要试图手动编辑控制文件。
    由于控制文件在数据库中的重要地位,所以保护控制文件的安全非常重要,为此Oracle系统提供了备份文件和多路复用的机制。当控制文件损坏时,用户可以通过先前的备份来恢复控制文件。系统还提供了手工创建控制文件和把控制文件备份成文本文件的方式,从而使用户能够更加灵活地管理和保护控制文件。
    控制文件中记录了对应数据库的结构信息(如,数据文件和日志文件的名称、位置等信息)和数据库当前的参数设置,其中主要包含如下内容:

    • 数据库名称和SID标识
    • 数据文件和日志文件列表(包括文件名称和对应路径信息)。
    • 数据库创建的时间戳。
    • 表空间信息。
    • 当前重做日志文件序列号。
    • 归档日志信息。
    • 检查点信息。
    • 回滚段(UNDO SEGMENT)的起始和结束。
    • 备份数据文件信息。
      (1)及时备份控制文件
      Oracle数据库的控制文件是在创建数据库时自动创建的,一般情况下,控制文件至少有一个副本。当Oracle数据库的实例启动时,控制文件用于在数据库(包括数据文件、控制文件、日志文件)和实例(指Oracle内存管理结构)之间建立起关联,它在进行数据库操作时必须被打开。当数据库的物理组成(比如,增加一个重做日志文件)发生变化时,Oracle将自动把这个变化信息记录到控制文件中。如果数据库的物理组成发生了变化,则建议用户及时备份控制文件。
      (2)保护控制文件
      一旦控制文件被损坏,数据库便无法顺利启动,而且修复也非常困难。也因为如此,控制文件的管理与维护工作显得格外重要。由于控制文件对整个数据库起着非常重要的作用,因此数据库管理员在管理控制文件时,需要采用多种策略或准则来保护控制文件,目前采用的方法主要包括多路复用控制文件和备份控制文件。
      控制文件的多路复用
      为了提高数据库的安全性,至少要为数据库建立两个控制文件,并且这两个控制文件最好分别保存在不同的磁盘中,这样就可以避免产生由于某个磁盘故障而无法启动数据库的危险,该管理策略被称为多路复用控制文件。通俗地说,多路复用控制文件是指在系统不同的位置上同时存放多个控制文件的副本,在这种情况下,如果多路复用控制文件中的某个磁盘发生物理损坏导致其所包含的控制文件损坏,数据库将被关闭(在数据库实例启动的情况下),此时就可以利用另一个磁盘中保存的控制文件来恢复被损坏的控制文件,然后再重新启动数据库,达到保护控制文件的目的。
      在初始化参数CONTROL_FILES中列出了当前数据库的所有控制文件名。Oracle将根据CONTROL_FILES参数中的信息同时修改所有的控制文件,但只读取其中的第一个控制文件中的信息。另外,需要注意的是:在整个数据库运行期间,如果任何一个控制文件被损坏,那么实例就不能再继续运行。实现控制文件的多路复用主要包括更改CONTROL_FILES参数和复制控制文件两个步骤,具体如下:
      1.更改CONTROL_FILES参数
      在SPFILE文件中,CONTROL_FILES参数用于设置数据库的控制文件路径(包括文件名),Oracle通过该参数来定位并打开控制文件,如果需要对控制文件进行多路复用,就必须先更改CONTROL_FILES参数的设置,更改这个参数可以使用ALTER SYSTEM语句
    SQL> alter system set control_files=
      2    'E:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL',
      3    'E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTL',
      4    'D:\OracleFiles\ControlFiles\CONTROL03.CTL'
      5  scope=spfile;

    在上面的代码中,前两个控制文件是在创建数据库时自动创建的,第3个控制文件是用户将要手动添加的(用于实现多路复用的功能),并且它位于不同的磁盘上(为了降低故障率),但目前还没有创建该文件,用户需要关闭数据库,然后通过手动复制来创建它。
    2.复制控制文件
    在CONTROL_FILES参数进行设置后,需要创建第3个控制文件,以达到复用控制文件的目的,具体步骤如下:
    (1)退出SQL*Plus环境。
    (2)选择“开始”/“控制面板”/“管理工具”/“组件服务”项,打开Windows的“组件服务”窗口,在该窗口的中间部分找到OracleServiceORCL和OracleDBConsoleORCL服务,手动将这些服务停止
    这里写图片描述
    (3)找到CONTROL_FILES参数中所指定的第一个控制文件,然后将这个控制文件拷贝到CONTROL_FILES参数中新增加的目录下,并按照参数的设置重新命名(这里重命名为CONTROL03.CTL,注意:它就是CONTROL01.CTL的多路复用控制文件)
    这里写图片描述
    (4)启动“组件服务”窗口中的OracleServiceORCL和OracleDBConsoleORCL服务,打开SQL*Plus环境,通过查询数据字典V$CONTROLFILE来确认添加的控制文件是否已经起作用,代码如下:

    SQL> select name as 控制文件  from V$CONTROLFILE;

    这里写图片描述

    创建控制文件
    在一般情况下,若使用了多路复用控制文件,并将各个控制文件分别存储在不同的磁盘中,则全部控制文件丢失或损坏的可能性将非常小。如果突发意外,而导致数据库的所有控制文件全部丢失或损坏,唯一的补救方法就是手工创建一个新的控制文件。手工创建控制文件使用CREATE CONTROLFILE语句

    create controlfile
    reuse database db_name
    logfile
    group 1 redofiles_list1
    group 2 redofiles_list2
    group 3 redofiles_list3
    ...
    datafile
    datafile1
    datafile2
    datafile3
    …
    maxlogfiles max_value1
    maxlogmembers max_value2
    maxinstances max_value3
    maxdatafiles max_value4
    noresetlogs|resetlogs
    archivelog|noarchivelog;

    参数说明如下:

    • db_name:数据库名称,通常是orcl。
    • redofiles_list1:重做日志组中的重做日志文件列表1,列表中的重做日志文件可以有多个,其下面两个个列表与此相同。
    • datafile1:数据文件路径,其下面两个个列表与此相同。
    • max_value1:最大的重做日志文件数,这是一个永久性的参数。
    • max_value2:最大的重做日志组成员数,这是一个永久性的参数。
    • max_value3:最大实例数,这是一个永久性的参数。
    • max_value4:最大数据文件数,这是一个永久性的参数。

      在上面的语法中,提到了永久性参数这个概念,它是在创建数据库时设置的参数,主要包括数据库名称、MAXLOGFILES、MAXLOGMEMBERS、MAXINSTANCES等。
      注意:若数据库管理员需要改变数据库的某个永久性参数,那么必须重新创建控制文件。

    备份和恢复控制文件
    为了提高数据库的可靠性,降低由于丢失控制文件而造成灾难性后果的可能性,DBA需要进场对控制文件进行备份。特别是当修改了数据库结构之后,需要立即对控制文件进行备份。
    1.备份控制文件
    备份控制文件需要使用到ALTER DATABASE BACKUP CONTROLFILE语句。有两种备份方式:一种是备份为二进制文件,另一种是备份为脚本文件。
    备份为二进制文件:备份为二进制文件需要使用“alter dabase backup controlfile”语句。

    ---- 将数据库的控制文件备份为一个二进制文件,即复制当前的控制文件
    SQL> alter database backup controlfile
      2  to 'D:\OracleFiles\ControlFiles\control_file1.bkp';

    备份为脚本文件:备份为脚本文件实际上就是备份为可读的文本文件,同样使用“alter dabase backup controlfile”语句。
    删除控制文件
    如果控制文件的位置不在适合时,可以从数据库中删除控制文件,其操作过程如下。
    (1)关闭数据库(shutdown)。
    (2)编辑初始化参数CONTROL_FILES,清除掉打算要删除的控制文件的名称。
    (3)重新启动数据库(startup)。
    上面的第二部操作,仅仅是在初始化参数CONTROL_FILES中删除了指定的控制文件,但物理磁盘上的控制文件还是存在的,用于也可以在这个操作之后,手动清除磁盘上的物理文件。
    注意:不能够将控制文件全部删除,至少保留两个或两个以上,否则数据库将无法启动。
    查询控制文件的信息
    控制文件是一个二进制文件,其中被分隔成许多部分,分别记录各种类型的信息。每一类信息成为一个记录文档段。控制文件的大小在创建时即被确定,其中各个记录文档段大小也是固定的。例如,在创建数据库时通过MAXLOGFILES子句设定数据库中最多的重做日志文件数量,那么在控制文件中就会为LOGFILE记录文档分配相应的存储空间。
    查询Oracle数据库的控制文件信息,可以使用若干个数据字典视图,与控制文件信息相关的常用数据字典视图如表所示。
    这里写图片描述

    使用v$controlfile_record_section视图查看控制文件中记录文档段的类型、文档段中每条记录的大小、记录文档中最多能够存储的条目数、已经创建的数目等信息

    SQL> select type,record_size,records_total,records_used from v$controlfile_record_section;

    这里写图片描述
    type列表示记录文档段的类型,这里以TABLESPACE为例,该数据库最多可以拥有200个表空间(RECORDS_TOTAL列),而现在系统中已经创建了9个(RECORDS_USED列)。

    管理重做日志文件

    重做日志文件用于记载事务操作所引起的数据变化,当执行DDL或DML操作时,由LGWR进程将缓冲区中与该事物相关的重做记录全部写入重做日志文件。当丢失或损坏数据库中的数据时,Oracle会根据重做日志文件中的记录恢复丢失的数据。
    1.日志文件的内容及数据恢复
    重做日志文件由重做记录组成,重做记录又称为重做条目,它由一组变更向量组成。每个变更向量都记录了数据库中某个数据块所做的修改。比如,用户执行了一条UPDATE语句对某个表的一条记录进行修改,同时生成一个条重做记录。这条重做记录可能有多个变更向量组成,在这些变更向量中记录了所有被这条语句修改过的数据块中的信息,被修改的数据块包括表中存储这条记录的数据块,以及回滚段中存储的相应回滚条目的数据块。如果由于某种原因导致这条UPDATE语句执行失败,这时事务就可以通过与这条UPDATE语句对应的重做记录找到被修改之前的结果,然后将其复制到各个数据块中,从而完成数据恢复。
    利用重做记录,不仅能够恢复对数据文件所做的修改操作,还能够恢复对回退段所做的修改操作。因此,重做日志文件不仅可以保护数据,还能够保护回退段数据。在进行数据库恢复时,Oracle会读取每个变更向量,然后将其中记录的修改信息重新应用到相应的数据块上。
    重做记录将以循环方式在SGA区的重做日志高速缓冲区中进行缓存,并且由后台进程LGWR写入到重做日志文件中。当一个事务被提交时,LGWR进程将与该事物相关的所有重做记录全部写入重做日志文件组中,同时生成一个“系统变更码”(SCN)。系统变更码SCN会随着重做记录一起保存到重做日志文件组中,以标识与重做记录相关的事务。只有当某个视图所产生的重做记录全部被写入重做日志文件后,Oracle才会认为该事务提交成功。
    2.写入重做日志文件
    在Oracle中,用户对数据库所做的修改首先被保存在内存冲,这样可以提高数据库的性能,因为对内存中的数据进行操作要比对磁盘中的数据进行操作快的多。Oracle每隔一段时间(日志信息存放超过3秒钟)或满足特定条件时(当发生提交命令、或者重做日志缓冲区的信息满1/3)就会启动LGWR进程将内存中的重做日志记录保存到重做日志文件中。因此,即使发生故障导致数据库崩溃,Oracle也可以利用重做日志文件来恢复丢失的数据。
    在创建Oracle数据库的过程中,默认创建3个重做日志文件组,每个日志文件组中包含两个日志文件成员,并且每个日志文件组都有内部序号,Oracle按照序号从小到大的顺序向日志文件组中写入日志信息。当一个重做日志文件组写满后,后台进程LGWR开始写入下一个重做日志文件组;当LGWR进程将所有的日志文件都写过一遍之后,它将再次转向第一个日志文件组重新覆盖。当前正在被LGWR进程写入日志记录的某组重做日志文件被称为“联机重做日志文件”(Online Redo Log File),图11-12显示了重做日志的循环写入方式。
    这里写图片描述
    增加日志组及其成员
    在一个Oracle数据库中,至少需要两个重做日志文件组,每个组可以包含一个或多个重做日志成员。通常情况下,数据库管理员会在创建数据库时按照事先计划创建所需要的重做日志文件组和各个组中的日志文件。在一些特殊情况下(比如,发现LGWR进程经常处于等待状态),Oracle就需要通过手工方式向数据库中添加新的重做日志组或成员,或者改变重做日志文件的名称与位置,以及删除中作日志组或成员。另外,需要注意的是:对于重做日志文件的这些日常维护工作,需要用户具有ALTER DATABASE系统权限,接下来就将讲解如何对重做日志文件进行这些日常维护操作。
    1.添加新的重做日志文件组
    在Oracle数据库的日常管理中,为了防止后台进程LGWR等待写入日志组,数据库管理员必须选择合适的日志组个数。增加重做日志文件组可以使用ALTER DATABASE ADD LOGFILE语句

    -----在system模式下,向数据库中添加一个新的重做日志文件组
    SQL> alter database add logfile
      2  ('D:\OracleFiles\LogFiles\REDO4_A.LOG',
      3  'E:\OracleFiles\LogFiles\REDO4_B.LOG')
      4  size 20M;

    在上面新增的重做日志组中有两个日志成员,它们分别位于不同的磁盘分区,大小均为20M,通常情况下,重做日志文件的大小最好在10MB到50MB之间,Oracle默认的日志文件大小是50MB。另外,上面的例子中并没有为新创建的重做日志组指定组编号,这种情况下,Oracle会自动为新建的重做日志组设置编号,一般在当前最大组号之后递增。
    如果需要为新创建的重做日志组指定编号,则需要在ALTER DATABASE ADD LOGFILE语句后添加GROUP关键字

       -----向数据库中添加一个新的重做日志文件组,并指定组编号为5
    SQL> alter database add logfile group 5
      2  ('D:\OracleFiles\LogFiles\REDO5_A.LOG',
      3  'E:\OracleFiles\LogFiles\REDO5_B.LOG')
      4  size 20M;

    使用日志组编号可以更加方便地管理重做日志组,但是日志组编号必须是连续的,不能跳跃,比如,1、3、5、7这样不连续的编号是不可以的,否则将会耗费数据库控制文件的空间。

    ------向数据库中添加一个单一的重做日志文件,并覆盖已存的同名日志文件
    SQL> alter database add logfile ‘D:\OracleFiles\LogFiles\REDO6.LOG’ reuse;

    如果要创建的日志文件已经存在,则必须在ALTER DATABASE ADD LOGFILE语句后面使用REUSE关键字,这样就可以覆盖已有的操作系统文件。在使用了REUSE的情况下,不能再使用SIZE子句设置重做日志文件的大小,重做日志文件的大小将由已存在日志文件的大小决定。
    2.创建日志成员文件
    如果某个日志组中的所有日志成员都被损坏了,那么当后台进程LGWR切换到该日志组时,Oracle会停止工作,并对该数据库执行不完全恢复,为此数据库管理员需要向该日志组中添加一个或多个日志成员。
    为重做日志组添加新的成员,需要使用ALTER DATABASE ADD LOG MEMBER语句

    ------为第4个重做日志文件组添加一个新的日志文件成员
    SQL> alter database add logfile member
      2  'E:\OracleFiles\LogFiles\REDO4_C.LOG' to group 4;

    另外,还可以通过指定重做日志组中其他成员的名称,以确定要添加的新日志成员所属于的重做日志组

    ------通过指定第5个重做日志组中的一个成员,来向该组中添加一个新的重做日志文件
    SQL> alter database add logfile member
      2  'D:\OracleFiles\LogFiles\REDO1_new.LOG' to ('E:\app\Administrator\oradata\orcl\REDO01.LOG') ;

    在上面的代码中,需要注意的是:在关键字“to”的左侧是新增加的日志成员的名称,而在其右侧则是要参照的日志成员名称,并且该日志成员的路径需要使用括号括起来。
    删除重做日志
    在某些情况下,数据库管理员可能需要删除重做日志的某个完整的组,或减少某个日志组中的成员。比如,存放某个日志文件的磁盘被损坏,就需要删除该损坏磁盘的日志文件,以防止Oracle将重做记录写入到不可访问的文件中。删除重做日志需要使用ALTER DATABASE语句,执行该语句要求用户具有ALTER DATABASE系统权限。
    1.删除日志成员
    要删除一个日志成员文件,可以使用“ALTER DATABASE DROP LOGFILE MEMBER”语句

    ---在system模式下,除“E:\OracleFiles\LogFiles\REDO4_C.LOG”重做日志文
    SQL> alter database drop logfile member
      2  'E:\OracleFiles\LogFiles\REDO4_C.LOG';

    说明: 上面的语句只是在数据字典和控制文件中将重做日志文件成员删除,而对应的物理文件并没有删除,若要删除,可以采取手动删除的方式。
    2.删除日志文件组
    如果某个日志文件组不再需要使用,可以将整个日志组删除;或者当日志组大小不合适时,由于已经存在的日志组的大小不能改变,就需要重新建立日志组,在重新建立日志组之前,就需要删除大小不合适的原日志组。删除一个日志组时,其中的成员文件也将被删除。在删除日志组时,必须要注意以下几点:

    • 无论日志组中有多少个成员,一个数据库至少需要两个日志组,删除时不能超过这个限制。
    • 只能删除处于INACTIVE状态的日志组。如果要删除处于CURRENT状态的重做日志组,必须执行一个手工切换日志,将它切换到INACTIVE状态。
    • 如果数据库处于归档模式,在删除重做日志组之前必须确定它已经被归档。
      说明: 用户可以通过查询V$LOG数据字典视图来查看重做日志文件组的状态以及它们是否已经归档。
      若要删除一个重做日志组,需要使用带有 ALTER DATABASE DROP LOGFILE语句。
    ----删除数据库中编号为5的日志组
    SQL> alter database drop logfile group 5;

    与删除指定的日志文件相同,删除日志文件组也只是在数据字典和控制文件中将日志文件组的信息删除,而对应的物理文件并没有删除,若要删除,可以采取手动删除的方式。
    3.清空重做日志文件
    清空重做日志文件实际上就是将日志文件中的内容清空,这相当于删除原有的日志文件,重新创建新的日志文件。即使数据库只有两个重做日志文件组,甚至要清空的重做日志组处于CURRENT状态,也都可以成功执行清空操作。
    清空日志文件,需要使用“ALTER DATABASE CLEAR LOGFILE”语句

    ----清空数据库中编号为4的日志组中所有日志文件的内容
    SQL> alter database clear logfile group 4;

    说明:如果要清空的重做日志文件组尚未归档,则必须在使用“ALTER DATABASE CLEAR UNARCHIVED LOGFILE”语句。

    更改重做日志的位置或名称
    在重做日志文件创建后,有时候可能需要改变它们的名称或位置。比如,某一个日志文件最初被放置在D盘上,由于D盘的空间并不足够大,随着应用系统业务量的不断增加,D盘经常发生剩余空间不足的情况,这时候数据库管理员就需要把D盘上的日志文件移动到其它大容量的磁盘分区中,针对这种情况,我们来看一下它的具体实现步骤:
    (1)关闭数据库,代码及运行结果如下。

    SQL> shutdown
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。

    (2)手动复制源文件到目标位置,甚至可以对复制后的文件进行重命名。
    (3)再次启动数据库实例,加载数据库,但不打开数据库,代码如下。

    SQL> startup mount;
    ORACLE 例程已经启动。

    (4)使用ALTER DATABASE RENAME FILE语句重新设置重做日志文件的路径及名称,代码及运行结果如下。

    SQL> alter database rename file
      2  'D:\OracleFiles\LogFiles\REDO1_NEW.LOG',
      3  'D:\OracleFiles\LogFiles\REDO4_A.LOG'
      4  to
      5  'E:\OracleFiles\LogFiles\REDO1_NEWa.LOG',
      6  'E:\OracleFiles\LogFiles\REDO4a.LOG';
    
    数据库已更改。

    在上面的代码中,关键字“to”上面的两行代码描述源日志文件及其路径,下面的两行代码描述目标日志文件。
    (5)打开数据库,代码及运行结果如下。

    SQL> alter database open;
    数据库已更改。

    (6)打开数据库后,新的重做日志文件的位置和名称将生效,通过查询V$LOGFILE字典视图就可以获知数据库现在所使用的重做日志文件。

    对于数据库管理员而言,经常查看日志文件是其一项必要的工作内容,用以了解数据库的运行情况。要了解Oracle数据库的日志文件信息,可以查询如表11-2所示的三个常用数据字典视图。
    这里写图片描述
    在SQL*Plus环境中,使用desc命令显示V$LOG数据字典视图的结构
    这里写图片描述
    在上面的运行结果中,用户需要对以下内容进行了解:

    • GROUP#:日志文件组编号。
    • SEQUENCE#:日志序列号。
    • STATUS:日志组的状态,有三种:CURRENT、INACTIVE、ACTIVE。
    • FIRST_CHANGE#:重做日志组上一次写入时的系统变更码(SCN),也称作检查点号。在使用日志文件对数据库进行恢复时,将会用到SCN。

    管理归档日志文件

    日志模式分类
    虽然归档日志文件可以保存重做日志文件中即将被覆盖的记录,但它并不是总起作用的,这样要看Oracle数据库所设置的日志模式,通常Oracle有两种日志模式:第一种是非归档日志模式(NOARCHIVELOG),第二种是归档日志模式(ARCHIVELOG)。在非归档日志模式下,原日志文件的内容会被新的日志内容所覆盖;在归档日志模式下,Oracle会首先对原日志文件进行归档存储,且在归档未完成之前不允许覆盖原有日志。
    1.归档模式(ARCHIVELOG)
    在重做日志文件被覆盖之前,Oracle能够将已经写满的重做日志文件通过复制保存到指定的位置,保存下来的所有重做日志文件被称为“归档重做日志”,这个过程就是“归档过程”。只有数据库处于归档模式时,才会对重做日志文件执行归档操作。另外,归档日志文件中不仅包含了被覆盖的日志文件,还包含重做日志文件使用的顺序号。
    当数据库的运行处于归档模式时,具有如下优势:

    • 如果发生磁盘介质损坏,则可以使用数据库备份与归档重做日志恢复已经提交的事务,保证不会发生任何数据丢失。
    • 如果为当前数据库建立一个备份数据库,通过持续地为备份数据库应用归档重做日志,可以保证源数据库与备份数据库的一致性。
    • 利用归档日志文件,可以实现使用数据库在打开状态下创建的备份文件来进行数据库恢复。

    在归档模式下,系统后台进程LGWR在写入下一个重做日志文件之前,必须等待该重做日志文件完成归档,否则LGWR进程将被暂停执行,直到对重做日志文件归档完成。归档操作可以由后台进程ARCN自动完成,也可以由数据库管理员手工完成,为了简化操作,通常情况下选择由后台进程ARCN自动完成。另外,为了提高归档的速度,可以考虑使用多个ARCN进程加速归档的速度。图显示了在归档模式下重做日志文件的自动归档过程。
    这里写图片描述

    2.非归档模式(NOARCHIVELOG)
    非归档模式只能用于保护实例故障,而不能保护介质故障,当数据库处于NOARCHIVELOG模式时,如果进行日志切换,生成的新内容将直接覆盖掉原来的日志记录。
    使用非归档模式具有如下一些特点:

    • 当检查点完成之后,后台进程LGWR可以覆盖原来的重做日志文件。
    • 如果数据库备份后的重做日志内容已经被覆盖掉,那么当出现数据库文件损坏时,只能恢复到最近一次的某个完整备份点,而且这个备份点的时间人工无法控制,甚至可能会有数据丢失。

      Oracle数据库具体应用归档模式还是非归档模式,这个由数据库对应的应用系统来决定。如果任何由于磁盘物理损坏而造成的数据丢失都是不允许的,那么就只能使用归档模式;如果只是强调应系统的运行效率,而将数据的丢失考虑次之,可以采取非归档模式,但数据库管理员必须经常定时地对数据库进行完整的备份.

    管理归档操作

    默认情况下,Oracle数据库处于非归档日志模式,这样重做日志文件中被覆盖掉的日志记录就不会被写入到归档日志文件中。根据Oracle数据库对应的应用系统的要求,用户可以把数据库的日志模式切换到归档模式,反之亦可操作。要实现数据库在归档模式与非归档模式之间进行切换,可以使用ALTER DATABASE ARCHIVELOG或NOARCHIVELOG语句。
    1.日志模式切换
    在Oracle 11g中,归档日志文件默认情况下存放到快速恢复区所对应的目录(由初始化参数DB_RECOVERY_FILE_DEST设定)中,并且会按照特定的格式生成归档日志文件名。如果只想将归档日志文件放在默认的路径下时,那么只需执行ALTER DATABASE ARCHIVELOG语句即可。
    改变日志操作模式时,用户必须以SYSDBA的身份执行相应操作。接下来讲解数据库由非归档模式切换为归档模式的具体操作步骤:
    (1)查看当前日志模式
    在改变日志模式之前,用户首先应该检查当前日志模式,这个可以通过查询动态性能视图V$DATABASE实现

    SQL> select log_mode from v$database;
    结果:
    LOG_MODE
    ------------
    NOARCHIVELOG

    通过查询结果可以看到,数据库当前处于非归档日志模式(NOARCHIVELOG)
    (2)关闭并重新启动数据库
    改变日志操作模式必须在MOUNT状态下进行,因此必须先关闭数据库,然后重新装载数据库。

    SQL> shutdown immediate;
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup mount;
    ORACLE 例程已经启动。

    注意:改变日志模式时,关闭数据库不能使用SHUTDOWN ABORT命令。
    (3)改变日志模式
    使用ALTER DATABASE ARCHIVELOG语句将数据库切换到归档模式

    SQL> alter database archivelog;
    数据库已更改。

    若是要把归档日志模式改变成非归档日志模式,只需要将ALTER DATABASE ARCHIVELOG语句中的“ARCHIVELOG”关键字换成“NOARCHIVELOG”即可,其它步骤基本相同。
    (4)打开数据库
    使用ALTER DATABASE OPEN语句打开数据库,这时数据库的日志模式就彻底改变了

    SQL> alter database open;
    数据库已更改。

    数据库打开后,用户可以使用ARCHIVE LOG LIST命令查看数据库是否处于归档模式。

    2.配置归档进程
    如果Oracle系统的后台进程LGWR经常出现等待的状态,就可以考虑启动多个ARCN进程,通过修改系统初始化参数“LOG_ARCHIVE_MAX_PROCESSES”就可以调整启动ARCN进程数量

    ----设置启动3ARCN后台系统进程
    SQL> alter system set log_archive_max_processes=3;
    系统已更改。

    说明:当数据库处于ARCHIVELOG模式时,默认情况下Oracle会自动启动两个归档日志进程。通过改变初始化参数LOG_ARCHIVE_MAX_PROCESSES的值,用户可以动态地增加或减少归档进程的个数。

    设置归档文件位置

    归档日志文件保存的位置称为归档目标,用户可以为数据库设置多个归档目标,与设置控制文件和重做日志文件一样,不同的归档目标最好位于不同的磁盘中,以缓解归档操作时磁盘的I/O瓶颈。
    归档目标在初始化参数LOG_ARCHIVE_DEST_n中进行设置,其中n为1到10的整数,即可以为数据库指定1到10个归档目标。在进行归档时,Oracle会将重做日志文件组以相同的方式归档到每一个归档目标中。在设置归档目标时,可以指定本地机器作为归档目标(LOCATION),也可以选择远程服务器作为归档目标(SERVER),下面分别来看这两种情况。
    (1)本地归档目标(LOCATION)
    若设置LOG_ARCHIVE_DEST_n参数时使用LOCATION关键字,则表示指定的归档目标在本地机器上。

    ----在本地机器上,建立4个归档目标,代码及运行结果如下。
    SQL> alter system set log_archive_dest_1 = 'location=D:\OracleFiles\archive1';
    系统已更改。
    SQL> alter system set log_archive_dest_2 = 'location=D:\OracleFiles\archive2';
    系统已更改。
    SQL> alter system set log_archive_dest_3 = 'location=D:\OracleFiles\archive3';
    系统已更改。
    SQL> alter system set log_archive_dest_4 = 'location=D:\OracleFiles\archive4';
    系统已更改。

    使用初始化参数LOG_ARCHIVE_DEST_n设置归档位置时,还可以指定OPTIONAL、MANDATORY或REOPEN选项,下面分别进行介绍。

    • OPTIONAL:该选项是默认选项,使用该选项时,无论“归档操作”是否执行成功,都可以覆盖重做日志文件。
    • MANDATORY:该选项用于强制进行“归档操作”。使用该选项时,只有在归档成功后,重做日志文件才能被覆盖。
    • REOPEN:这是一个属性选项,它用于设定重新归档的时间间隔,默认值为300秒。但需要注意的是:REOPEN属性必须跟在MANDATORY选项后。

    查看归档日志信息
    查看归档日志信息主要有两种方法:一种是使用数据字典和动态性能视图;另一种是使用ARCHIVE LOG LIST命令,下面分别进行讲解。
    (1)使用数据字典和动态性能视图
    常用的各种包含归档信息的数据字典和动态性能视图
    这里写图片描述
    下面通过查询V$ARCHIVE_DEST动态性能视图来显示归档目标信息

    SQL> select dest_name from  v$archive_dest;

    这里写图片描述
    (2)使用ARCHIVE LOG LIST命令
    在SQL*Plus环境中,使用ARCHIVE LOG LIST命令可以显示当前数据库的归档信息
    这里写图片描述

    展开全文
  • Oracle知识点总结(一)

    千次阅读 2013-04-07 21:47:13
    体系结构: 数据库的体系结构是指数据库的组成、工作过程与原理,...,服务器进程(server process),以及其他文件(如参数文件(parameter file),密码文件(password file),归档日志文件(archive log f
  • Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的。Quest Software为此提供了高效的Oracle应用开发工具-Toad。在Toad的...
  • MySql与Oracle的几个主要区别

    万次阅读 多人点赞 2016-10-13 09:43:47
    一、并发性   并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、...虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。
  • Oracle11g和12c的比较

    万次阅读 多人点赞 2018-08-16 10:45:00
    Oracle11g和12c的比较 一.差异比较 11g  1) oracle 11g在DBA管理上有很多完善,大大提升了DBA对数据库的管控能力,提供的很多自动特性,增强了调优,备份恢复,错误诊断等的功能,大大减轻DBA的低端管理工作; ...
  • mysql与Oracle的区别

    万次阅读 多人点赞 2017-08-10 11:22:45
    mysql与Oracle的区别
  • 数据库的安全性、完整性、并发控制和恢复from: http://bbs.chinaunix.net/viewthread.php?tid=188100 为了保证数据库数据的安全可靠性和正确有效,DBMS必须提供统一的数据保护功能。数据保护也为数据控制,主要...
  • Oracle insert /*+ APPEND */原理解析

    万次阅读 2016-01-10 22:15:47
    关于insert /*+ append */我们需要注意以下三点: a、非归档... b、insert /*+ append */时会对表加锁(排它锁),会阻塞表上的除了select以外所有DML语句;传统 关于insert /*+ append */我们需要注意以下三点:
  • Oracle体系结构详细图解

    万次阅读 2012-08-08 08:38:49
    首先声明一下,我的学习笔记参考书主要是官方教材,oracle9i database administration fundaments ed2.0 我觉得学习是一个循序渐进的过程,从面到点,从宏观到微观,逐步渗透,各个击破,对于oracle,怎么样从宏观上来...
  • Oracle数据库中,Insert、Update、Delete三个操作是对数据库中的数据进行插入、更新以及删除。在进行这些操作时,如果数据库中的记录比较多时,则所需要的时间比较长。如需要利用一个Update语句更新大量记录时,...
  • Oracle日志挖掘之LogMiner官方文档地址:http://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm#SUTIL019本文转自:http://blog.itpub.net/26736162/viewspace-2141148/众所周知,所有对用户数据和...
  • 理解和使用Oracle 日志分析工具-LogMiner

    千次阅读 热门讨论 2006-05-13 09:32:00
    使用该工具可以轻松获得Oracle 重作日志文件(归档日志文件)中的具体内容,特别是,该工具可以分析出所有对于数据库操作的DML(insert、update、delete等)语句,另外还可分析得到一些必要的回滚SQL语句。...
  • 处理归档日志增加过快一例

    千次阅读 2012-07-06 14:51:38
    摘要   本文介绍了不久前作者是如何彻底解决一家医院数据库由于归档日志增长过快,导致磁盘剩余空间占满,引起宕机全过程。通过本案例的描述,我们可以了解到当遇到...ORACLE归档日志、宕机、DML语句 初步了解
  • oracle12c与11g 区别总结

    万次阅读 2019-07-17 15:22:37
    1.oracle12c增加了CDB和PDB的概念 oracle12c增加了CDB和PDB的概念。 CDB全称为ContainerDatabase,中文翻译为数据库容器,PDB全称为PluggableDatabase,即可插拔数据库。 在ORACLE12C之前,实例与数据库是一对一...
  • Oracle 19c 新特性一览

    万次阅读 2019-02-14 14:33:42
    文章目录Oracle 19c 新特性一览可用性一般简化了 DG Broker中对于数据库参数的管理动态修改Fast-Start Failover (FSFO)目标库Broker的FSFO支持仅观察模式当主库闪回时,备库也会跟着闪回将主库还原点传播DG多实例...
1 2 3 4 5 ... 20
收藏数 6,975
精华内容 2,790
热门标签
关键字:

dml语句产生的归档日志的大小 oracle