精华内容
下载资源
问答
  • Oracle附加日志

    千次阅读 2018-02-26 20:15:44
    Oracle附加日志 分类分为两个等级:数据库级和表级 数据库级附加日志 – 视图v$database ? SUPPLEMENTA...

    Oracle附加日志


    分类分为两个等级:数据库级表级


    数据库级附加日志

    – 视图v$database


    ? SUPPLEMENTAL_LOG_DATA_MIN: 最小附加日志,开关

        最小补充日志:是最基本的一种数据库级补充日志,而 LogMiner 正是依赖最小补充日志工作服务的(即识别 行移动 行迁移)


    启用最小补充日志命令:

    ALTER DATABASE ADD Supplemental LOG DATA;

    关闭最小补充日志命令:

    ALTER DATABASE DROP Supplemental Log Data;


    ? SUPPLEMENTAL_LOG_DATA_PK: 记录所有变化记录主键

    在update 命令的重做记录中添加被修改行的主键字段的旧值,无论是否被修改,都记录。 如果表没有主键,则由长度最小的唯一索引字段代替,若连唯一索引也没有,则记录该行所有字段。

    alter database add supplemental log data (Primary key) columns;


    ? SUPPLEMENTAL_LOG_DATA_UI: 记录所有变化记录唯一索引

    唯一索引补充日志:唯一索引主要是为 复合索引(唯一)服务的。只有唯一索引的字段被 update 时,才会记录该字段被修改前的值

    alter database add supplemental log data (unique) columns;


    ? supplemental_log_data_fk:

    外键补充日志:同唯一索引补充日志一样,只有外键字段被 update 时,才会记录被修改前的旧值,即也是为复合外键服务的。

    alter database add supplemental  log data (foreign key ) columns;


    ? SUPPLEMENTAL_LOG_DATA_ALL: 记录所有变化记录全部列

        全体字段补充日志:顾名思义就所有字段的值不论是否被修改都记录。会导致磁盘快速增长,LGWR进程繁忙。不建议使用。

    alter database add supplemental log data (all) columns;


    -建议只打开最小附加日志, 并打开所需复制表的表级附加日志

    ? ALTER DATABASE add | drop SUPPLEMENTAL LOG DATA;

    ? 目的是产生最小日志增量,避免对生产主机产生较大影响


    查询当前设置

    SELECT supplemental_log_data_min min,

    supplemental_log_data_pk pk,

    supplemental_log_data_ui ui,

    supplemental_log_data_fk fk,

    supplemental_log_data_all allc

    FROM v$database;


    表级附加日志

    – 通过OGG命令行中的add trandata schema.table 命令添加

    如果有主键则只加入主键;无主键添加唯一索引;两者皆无,则添加所有列

    – 相当于数据库里面通过Alter tableadd supplemental log group


    (column,..) always; (可查询dba_log_group_columns)


    实验环境


    1、源和目标都创建表

    源表:create table tb10(col1 int primary key, col2 int, col3 int);

    目标:create table tb10(col1 int primary key, col2 int, col3 int);


    2. 配置本地抽取进程

    GGSCI (pc6 as ogg@hyyk) 27> add extract test tranlog begin now

    GGSCI (pc6 as ogg@hyyk) 36> add exttrail ./dirdat/oo,extract test

    GGSCI (pc6 as ogg@hyyk) 33> edit params test

    extract test

    setenv (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")

    setenv (ORACLE_SID="hyyk")

    userid ogg,password oracle

    gettruncates

    exttrail ./dirdat/oo

    table sender.tb10;

    GGSCI (pc6 as ogg@hyyk) 49> add trandata sender.tb10

    增加表级附加日志


    3.配置投递进程

    GGSCI (pc6 as ogg@hyyk) 39> add extract t_dump exttrailsource ./dirdat/oo

    GGSCI (pc6 as ogg@hyyk) 41> add rmttrail /u01/app/oggd/dirdat/vv,extract t_dump

    GGSCI (pc6 as ogg@hyyk) 42> edit params t_dump

    extract t_dump

    tranlogoptions excludeuser ogg

    setenv (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")

    setenv (ORACLE_SID="hyyk")

    passthru

    userid ogg,password oracle

    rmthost 192.168.1.80,mgrport 7809

    rmttrail /u01/app/oggd/dirdat/vv

    table sender.tb10;

    4.在目标端配置复制进程

    GGSCI (ogg-80 as ogg@ogg) 3> add replicat rep_t,exttrail ./dirdat/vv,checkpointtable ogg.checkpoint

    GGSCI (ogg-80 as ogg@ogg) 5> edit params rep_t

    replicat rep_t

    --handlecollisions

    assumetargetdefs

    setenv (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")

    setenv (ORACLE_SID="ogg")

    userid ogg,password oracle

    map sender.tb10,target receiver.tb10;


    实验之前看一看在源表执行 insert update delete


    数据分析:Insert


    我们在源表插入数据

    SENDER@hyyk> insert into tb10 values(1,2,3);

    SENDER@hyyk> commit;

    在目标端查询


    我们在源端使用dumplog查看

    Logdump 72 >open ./dirdat/ww000000000

    Current LogTrail is /u01/app/oggs/dirdat/ww000000000

    Logdump 73 >ghdr on

    Logdump 74 >detail on

    Logdump 75 >detail date

    这里就验证了trail文件中只有后映像


    数据分析:update

    我们在目标端

    SENDER@hyyk> update tb10 set col2=4 where col1=1;

    SENDER@hyyk> commit;

    目标段查询


    使用dumplog查看

    这里执行update tb10 set col2=4 where col1=1;

    Logdump会有col1的记录呢

    这里就是要说明Oracle日志缺省只记录变化的列和附加日志对应列,附加日志对应的就是主键的列,col1 就是逐渐列。





    数据分析:delete

    在目标执行

    SENDER@hyyk> delete tb10 where col1=1;

    SENDER@hyyk> commit;

    SENDER@hyyk> select * from tb10;

    no rows selected


    在目标段查询


    使用dumplog查看

    这里要说明delete操作只保留前映像的


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31485142/viewspace-2151296/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/31485142/viewspace-2151296/

    展开全文
  • Oracle 附加日志(supplemental log)

    万次阅读 2014-11-30 11:16:22
    Oracle 附加日志(supplemental log) 附加日志(supplemental log)可以指示数据库在日志中添加额外信息到日志流中,以支持基于日志的工具,如逻辑standby、streams、GoldenGate、LogMiner。可以在数据库和表上...

    Oracle 附加日志(supplemental log)

    附加日志(supplemental log)可以指示数据库在日志中添加额外信息到日志流中,以支持基于日志的工具,如逻辑standby、streams、GoldenGate、LogMiner。可以在数据库和表上设置。
     
    1.数据库级设置,分两类:
    1.1最小附加日志(minimal supplemental logging):
    DATA选项启用最小附加日志。

    启用最小日志可以确保LogMiner(或其他任何基于LogMiner的产品)可以支持行链接、簇表、索引组织表等。
    语法如下:
    alter database {add|drop} supplemental log data;
     
    1.2标识键日志(identification key logging):
    DATA(all,primary key,unique,foreign key) columns选项启用最小日志及列数据日志。

    在源库日志为变化来源同步其他数据库的情况下,比如逻辑备用数据库,受影响的数据行必须以列数据标识(而不是rowid),必须启用此种附加日志。
    语法如下:
    alter database {add|drop} supplemental log {data(all,primary key,unique,foreign key) columns};
     
    缺省情况下,Oracle不启用以上任何附加日志。当使用ALL,PRIMARY,UNIQUE或FOREIGN附加日志时最小补全日志默认开启(即检查结果为IMPLICIT)。 在删除所有导致IMPLICIT最小化附加日志的附加日志后,最小化附加日志变为NO。
     
    查询当前设置
    SELECT supplemental_log_data_min min,
           supplemental_log_data_pk pk,
           supplemental_log_data_ui ui,
           supplemental_log_data_fk fk,
           supplemental_log_data_all allc
      FROM v$database;


    MIN PK UI FK ALLC
    YES NO NO NO NO
     
    2,表级附加日志设置,分两类
    2.1,可以通过以下语句设置命名日志组:
    语法:
    alter table table_name
    add supplemental log group group_a(column_a [no log],column_b,...) [always];
     
    NO LOG选项用于指定在日志中排除哪些列。

    在命名日志组中,至少存在一个无”NO LOG“的定长列。比如,对LONG列使用 no log选项,可以在更改LONG列时,记录其他列的内容(LONG列本身不能存在日志里)。
     
    ALWAYS选项, 在更新时,日志组中的所有列都会记录在日志中。

    这就是所谓的”无条件“日志组,有时也叫”always log group“。如果不指定该选项,只有在日志组中的任何列被修改时,所有列才会出现在日志中。这就是所谓的”有条件“日志组。
     
    说明:同一列可以在多个日志组中存在,但日志中只记录一次;同一列在“无条件”与“有条件”日志组中存在时,该列将“无条件”记录。
     
    2.2,可以通过以下语句设置所有列或主键/外键/唯一键组合日志组:
    语法:
    alter table table_name
    add supplemental log data(all,primary key,unique,foreign key) columns;
     
    Oracle将生成无条件或有条件日志组。对于无条件日志组,日志中将记录该日志组中的所有列;对于有条件日志组,只有日志组中的列有变化时,才会记录日志组中的所有列。
     
    如果指定“ALL”列,日志中将包含所有最大大小固定长度的列。这种日志是系统创建的无条件日志组。
    如果指定“PRIMARY KEY”列,只要有更新,组成主键的所有列都会记录在日志中。这种日志是系统创建的无条件日志组。

    Oracle使用如下顺序确定附加记录哪些列:
    *组成主键的列(主键有效,或rely且非DISABLED or INITIALLY DEFERRED状态)
    *最小的、至少有一个非空列的唯一索引
    *记录所有标量列
    如果指定“UNIQUE”列,如果任何组成唯一键或位图索引的列被修改,组成该唯一键或位图索引的其他列都会记录在日志中。这种日志是系统创建的有条件日志组。
     
    如果指定“FOREIGN KEY”列,如果任何组成外键的列被修改,组成该外键的其他列都会记录在日志中。这种日志是系统创建的有条件日志组。
     
    2.3表级测试
    drop table test;
    create table test(x int,y int);
     
    --增加附加日志
    alter table test
    add supplemental log data(all,primary key,unique,foreign key) columns;
      
    select * from dba_log_groups;
    OWNER LOG_GROUP_NAME TABLE_NAME LOG_GROUP_TYPE      ALWAYS      GENERATED
    SYS   SYS_C0037555   TEST       ALL COLUMN LOGGING  ALWAYS      GENERATED NAME
    SYS   SYS_C0037556   TEST       PRIMARY KEY LOGGING ALWAYS      GENERATED NAME
    SYS   SYS_C0037557   TEST       UNIQUE KEY LOGGING  CONDITIONAL GENERATED NAME
    SYS   SYS_C0037558   TEST       FOREIGN KEY LOGGING CONDITIONAL GENERATED NAME
     
    select * from dba_log_group_columns;
    no row selected
     
    --删除附加日志
    alter table test
    drop supplemental log data(all,primary key,unique,foreign key) columns;
     
    select * from dba_log_groups;
    no row selected
     
    select * from dba_log_group_columns;
    no row selected
     
    --增加命名附加日志
    alter table test
    add supplemental log group group_a(x,y);
     
    select * from dba_log_groups;
    OWNER LOG_GROUP_NAME TABLE_NAME LOG_GROUP_TYPE ALWAYS GENERATED
    SYS GROUP_A TEST USER LOG GROUP CONDITIONAL USER NAME
     
    select * from dba_log_group_columns;
    OWNER LOG_GROUP_NAME TABLE_NAME COLUMN_NAME POSITION LOGGING_PROPERTY
    SYS   GROUP_A        TEST       X           1        LOG
    SYS   GROUP_A        TEST       Y           2        LOG
     
    alter table test
    drop supplemental log group group_a;

     

    转自:http://www.xuebuyuan.com/1904728.html

     

    **************************

     

     Oracle 附加日志

     

    select supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_ui from v$database;
    如果某列的值为YES就是开了那种附加日志。
     
    执行
    alter database add supplemental log data;
    可以开最小附加日志(supplemental_log_data_min)。


    执行了alter database add supplemental log data;语句后需要把数据库重新启动。
     
    取消附加日志
    alter database drop supplemental log data;


    1、10g需要激活补充日志
        select supplemental_log_data_pk,supplemental_log_data_ui from v$database;
        alter database drop supplemental log data (primary key, unique index) columns;
        alter database add supplemental log data;

    2、将redo日志文件添加到logmnr分析日志列表
        exec sys.dbms_logmnr.add_logfile(logfilename=>'redo日志1', options=>sys.dbms_logmnr.new);
        exec sys.dbms_logmnr.add_logfile(logfilename=>'redo日志2', options=>sys.dbms_logmnr.addfile);
        exec sys.dbms_logmnr.add_logfile(logfilename=>'redo日志n', options=>sys.dbms_logmnr.addfile);


    3、启动并分析redo日志
        exec sys.dbms_logmnr.start_logmnr(options => sys.dbms_logmnr.dict_from_online_catalog);


    4、查看分析结果
        spool c:\log.txt
        select * from v$logmnr_contents ;
        spool off


    5、停止logmnr
        exec sys.dbms_logmnr.end_logmnr

     
    6、取消补充日志
        alter database drop supplemental log data (primary key) columns;
        alter database drop supplemental log data (unique) columns;
        alter database drop supplemental log data;

     

    转自:http://blog.itpub.net/27633655/viewspace-1081558/

     

    *************************************

     

    oracle附加日志的作用

     

    为什么GOLDENGATE使用时,一定要开启附加日志?

     

               大家想,如果我在源端做UPDATE时,目标端怎么知道我修改的是哪行数据呢!那我们用什么来标识我们修改的这行数据?ROWID?明显不行哈~~


              用主键呗~~但是主键又不存在于我们的REDO LOG中,那么就需要将主键作为附加信息添加到REDO LOG中。这样在目标端分析REDO LOG时,就知道是怎么个回事了!

              大家开启Supplemental log后,再去DUMP REDO LOG出来看看就晓得了哈~~

     

    转自:http://blog.itpub.net/21158541/viewspace-700114

     

    **************************************

     

    以下摘自:

    转自:http://www.itpub.net/thread-1726721-1-1.html

     

    我使用的是oracle 10.2.0.3版本的数据库。我想通过alter database add supplemental log data语句开启最小附加日志。请问如果开启后对数据库性能影响有多大,redo log会增加很多吗?

     

    怎么没人帮助解决?
    这是我从oracle 文档上查的:Minimal
    supplemental logging does not impose significant overhead on the database
    generating the redo log files. 

    请有经验的DBA们指点

     

    log data这种是最轻量级的追加日志,主要在日志中添加了os info及行链接、行迁移这样的信息
    因此而附加的redolog量很少

     

    同意楼上,启用最小日志可以确保LogMiner(或其他任何基于LogMiner的产品)可以支持行链接、簇表、索引组织表等。我这边在生产系统上添加了,没有影响。你可以在test环境下测试一下

     

    展开全文
  • 查看数据库级别的附加日志(Y就是开启了) SELECT T.SUPPLEMENTAL_LOG_DATA_MIN ,T....查看表级别的附加日志是否开启 登录数据库-->查看表级别附加日志 命令为 info trandata 用户名.表名 详细步骤--在Li...

    查看数据库级别的附加日志(Y就是开启了)
    SELECT T.SUPPLEMENTAL_LOG_DATA_MIN ,T.SUPPLEMENTAL_LOG_DATA_PK,T.SUPPLEMENTAL_LOG_DATA_UI FROM V$DATABASE

    查看表级别的附加日志是否开启
    登录数据库-->查看表级别附加日志 命令为 info trandata 用户名.表名


    详细步骤--在Linux中操作
    从GoldenGate安装目录进入GoldenGate软件命令行界面。
    cd goldengate 
    ./ggsic

    登录到数据库
    dblogin userid ggs password 输入密码
    提示Successfully logged into database 登录成功

    查看表级别数据库附加日志是否开启
    info trandata 用户名.表名
    未开启提示:logging of supplemental redo log data is disabled for tabel 用户名.表名
    开启提示:logging of supplemental redo log data is enabled for table 用户名.表名

    添加附加日志 (前提是登录到了数据库) 而且只在源端添加附加日志
    ADD trandata 用户名.表名


    常用OGG命令
    info all  --看一下OGG有多少链路、状态
    VIEW PARAMS 链路名字   --看一下OGG里面有多少表
    EDIT PARAMS 链路名字   --修改OGG链路里面的内容
    INFO 链路名字  --看一下OGG状态
    VIEW REPORT 链路名字  --看一下OGG报错信息
     

    展开全文
  • ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;ALTER DATA...
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS;
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7755871/viewspace-735336/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/7755871/viewspace-735336/

    展开全文
  • Oracle DB查看预警日志

    万次阅读 2016-03-10 23:34:49
    Oracle DB查看预警日志   “Database(数据库)”主页>“Related Links相关链接)”区域> “Alert Log Content (预警日志内容)”     查看预警日志 每个数据库都有一个alert_.log文件。...
  • Oracle DB 查看预警日志

    2017-08-25 11:11:00
    “Alert Log Content (预警日志内容)”查看预警日志每个数据库都有一个alert_<sid>.log文件。此文件位于数据库所在的服务器中,如果设置了$ORACLE_BASE,则此文件默认存储在$ORACLE_BASE/diag/rdbms/<db...
  • 几个月之前写了几篇关于OGG的文章,但是由于各种原因停了下来。现在将之前的再笔记整理一遍,继续写下去。...今天这篇文章写的主要是GoldenGate中附加日志的作用,而不是单纯地写附加日志本身的功能。 在...
  • 本文主要向大家介绍了Oracle数据库之Oracle Logminer 分析重做日志RedoLog和归档日志ArchiveLog,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助。在实际开发过程中,有时我们很有可能需要某个表的...
  • 文章目录Oracle数据库开启归档日志和补充日志归档日志补充日志 Oracle数据库开启归档日志和补充日志 项目中要对Oracle的redo.log进行解析,实现数据同步,由于项目逻辑原因,需要开启归档日志和补充日志。 归档日志 ...
  • “Database(数据库)”主页>...查看预警日志 每个数据库都有一个alert_<sid >.log文件。此文件位于数据库所在的服务器中,如果设置了$ORACLE_BASE,则此文件默认存储在$ORACLE_BASE/diag/r...
  • 归档日志查看 SQL> archive log list; 关闭Oracle实例 SQL> shutdown immediate; 将Oracle节点启动到 mount状态 SQL> startup nomount; ORACLE instance started. Total System Global Area ...
  • 日志挖掘:logminer 作用: 通过对日志的分析,能够获得用户的dml操作语句,用来修复用户数据的...执行日志挖掘需要打开辅助日志功能(SUPPLEMENTAL_LOG_DATA_MIN) SYS@orcl11g&gt; select supplemental_log_d...
  • oracle挖掘归档日志

    2021-03-03 15:57:51
    2.查看oralce是否开启归档模式 archive log list 输出以下信息为未开启归档 Database log mode No Archive Mode Automatic archival Disabled 输出以下信息为已开启归档(跳过下面步骤,直接进入挖掘归档日志) ...
  • --//创建测试表 SQL>...--//方法1 查看表的ddl语句 SQL> select dbms_metadata.get_ddl('TABLE','T3','POSTGRES') from dual; DBMS_METADATA.GET_DDL('TABLE','T3','POSTGRES') -----------
  • Oracle RAC开启归档日志 查看归档状态 su - oracle sqlplus / as sysdba archive log list; 查看节点实例状态 set line 120 col host_name for a30 select instance_name,host_name,status from gv$instance; ...
  • 操作: a.查看是否打开附加日志数据模式功能 select SUPPLEMENTAL_LOG_DATA_MIN from v$database; b.若没有打开,则打开 alter database a...
  • oracle Supplemental Log补全日志介绍

    千次阅读 2017-07-27 08:57:05
     Oracle补全日志(Supplemental logging)特性因其作用的不同可分为以下几种:最小(Minimal),支持所有字段(all),支持主键(primary key),支持唯一键(unique),支持外键(foreign key)。包括LONG,LOB,LONG R
  •  2:重做日志文件:Oracle数据库正常运行不可缺少的文件,重做日志文件主要记录了数据库 操作过程  用于备份和还原数据库,以达到数据库的最新状态  1):oracle 是使用循环的方式来使用重做日志文件的,所有每个...
  • Oracle日志挖掘之LogMiner 官方文档地址:http://docs.oracle.com/cd/E11882_01/server.112/e224...
  • Oracle Study--Oracle Supplemental Log补全日志介绍 Oracle补全日志(Supplemental logging)特性因其作用的不同可分为以下几种:最小(Minimal),支持所有字段(all),支持主键(primary key),支持唯一键(unique),支持...
  • 据说Oracle8i之后,就提供了Logminer日志分析工具,虽然没有GUI图形化的界面,但也阻挡不了使用他的决心。 Oracle11g下使用的情况: (1)、数据库开启归档模式 在安装Logminer之前,我们先讲数据库设置为归....
  • Oracle 补充日志(supplemental log) 附加日志(supplemental log)可以指示数据库在日志中添加额外信息到日志流中,以支持基于日志的工具,如逻辑standby、streams、Golden...
  • Oracle日志挖掘技术

    2017-04-20 10:42:20
    日志挖掘:logminer作用: 通过对日志的分析,能够获得用户的dml操作语句,用来修复用户数据的丢失或者是... 实现条件:执行日志挖掘需要打开辅助日志功能(SUPPLEMENTAL_LOG_DATA_MIN)SYS@orcl11g> select su...
  • Oracle11g的logminer是默认打开的,所以不需要额外开启, 1、Logminer环境准备 ...确定归档日志是否打开 SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,883
精华内容 5,553
关键字:

oracle查看是否打开附加日志功能