oracle public redo thread and private redo thread

来源:互联网 发布:乐视电视切换网络电视 编辑:程序博客网 时间:2024/06/08 16:24

复习之前的学习内容,对public redo thread 和 private redo thread 的用处还是比较模糊,网上搜集的资料非常有限,看来有些好东西不跳墙是不行的。

废话少说,知识点记录下来:

在rac环境下,每个实例都有自己的redo log,这套redo log称为redo thread。这套概念同样适用于单实例数据库。

redo thread有两种,private 和 public ,在默认情况下,我们使用的是public thread。但是如果我们在创建redol log时明确指定了thread参数,那么该redo为private redo。

实验如下:


单实例:

SQL> l  1* select thread#,status,enabled from v$threadSQL> /   THREAD# STATUS ENABLED---------- ------ -------- 1 OPEN   PUBLICSQL> select group#,thread#,status from v$log;    GROUP#    THREAD# STATUS---------- ---------- ---------------- 4    1 INACTIVE 5    1 CURRENTSQL> col member for a60SQL> select group#,member from v$logfile;    GROUP# MEMBER---------- ------------------------------------------------------------ 4 /home/app/oraten/oradata/oraten/redo04.log 5 /home/app/oraten/oradata/oraten/redo05.logSQL> alter database add logfile thread 2 group 6 '/home/app/oraten/oradata/oraten/redo06.log' size 100M;Database altered.SQL> alter database add logfile thread 2 group 7 '/home/app/oraten/oradata/oraten/redo07.log' size 100M;Database altered.SQL> select thread#,status,enabled from v$thread;   THREAD# STATUS ENABLED---------- ------ -------- 1 OPEN   PUBLIC 2 CLOSED DISABLEDSQL> alter database enable thread 2;Database altered.SQL> select thread#,status,enabled from v$thread;   THREAD# STATUS ENABLED---------- ------ -------- 1 OPEN   PUBLIC 2 CLOSED PRIVATESQL> show parameter threadNAME     TYPE VALUE------------------------------------ ----------- ------------------------------parallel_threads_per_cpu     integer 2thread     integer 1SQL> alter system set thread=2 scope=spfile;System altered.SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.Total System Global Area  281018368 bytesFixed Size    2095672 bytesVariable Size  222299592 bytesDatabase Buffers   50331648 bytesRedo Buffers    6291456 bytesDatabase mounted.Database opened.SQL> select thread#,status,enabled from v$thread;   THREAD# STATUS ENABLED---------- ------ -------- 1 CLOSED PUBLIC 2 OPEN   PRIVATESQL> select group#,thread#,status from v$log;    GROUP#    THREAD# STATUS---------- ---------- ---------------- 4    1 INACTIVE 5    1 CURRENT 6    2 CURRENT 7    2 UNUSEDSQL> 

Rac环境下:


 [oracle@node1 ~]$ crs_stat -t -vName           Type           R/RA   F/FT   Target    State     Host        ----------------------------------------------------------------------ora.easy.db    application    0/0    0/1    ONLINE    ONLINE    node1       ora....y1.inst application    0/5    0/0    ONLINE    ONLINE    node1       ora....y2.inst application    0/5    0/0    ONLINE    ONLINE    node2       ora....SM1.asm application    0/5    0/0    ONLINE    ONLINE    node1       ora....E1.lsnr application    0/5    0/0    ONLINE    ONLINE    node1       ora.node1.gsd  application    0/5    0/0    ONLINE    ONLINE    node1       ora.node1.ons  application    0/3    0/0    ONLINE    ONLINE    node1       ora.node1.vip  application    0/0    0/0    ONLINE    ONLINE    node1       ora....SM2.asm application    0/5    0/0    ONLINE    ONLINE    node2       ora....E2.lsnr application    0/5    0/0    ONLINE    ONLINE    node2       ora.node2.gsd  application    0/5    0/0    ONLINE    ONLINE    node2       ora.node2.ons  application    0/3    0/0    ONLINE    ONLINE    node2       ora.node2.vip  application    0/0    0/0    ONLINE    ONLINE    node2       [oracle@node1 ~]$ [oracle@node1 ~]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.5.0 - Production on Sat Aug 30 17:47:08 2014Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, OLAP, Data Miningand Real Application Testing optionsSQL> desc v$thread Name   Null?    Type ----------------------------------------- -------- ---------------------------- THREAD#    NUMBER STATUS     VARCHAR2(6) ENABLED    VARCHAR2(8) GROUPS     NUMBER INSTANCE    VARCHAR2(80) OPEN_TIME    DATE CURRENT_GROUP#     NUMBER SEQUENCE#    NUMBER CHECKPOINT_CHANGE#    NUMBER CHECKPOINT_TIME    DATE ENABLE_CHANGE#     NUMBER ENABLE_TIME    DATE DISABLE_CHANGE#    NUMBER DISABLE_TIME    DATE LAST_REDO_SEQUENCE#    NUMBER LAST_REDO_BLOCK    NUMBER LAST_REDO_CHANGE#    NUMBER LAST_REDO_TIME     DATESQL> select thread#,status,enabled from v$thread;   THREAD# STATUS ENABLED---------- ------ -------- 1 OPEN   PUBLIC 2 OPEN   PUBLICSQL> show parameter threadNAME     TYPE VALUE------------------------------------ ----------- ------------------------------parallel_threads_per_cpu     integer 2thread     integer 1SQL> exitDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, OLAP, Data Miningand Real Application Testing options[oracle@node1 ~]$ ssh oracle@node2Last login: Mon Aug 25 13:09:51 2014 from node3[oracle@node2 ~]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.5.0 - Production on Sat Aug 30 17:48:27 2014Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, OLAP, Data Miningand Real Application Testing optionsSQL> show parameter threadNAME     TYPE VALUE------------------------------------ ----------- ------------------------------parallel_threads_per_cpu     integer 2thread     integer 2SQL> alter system set thread=1 scope=spfile sid='easy2';System altered.SQL> alter system set thread=2 scope=spfile sid='easy1';System altered.SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> exitDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, OLAP, Data Miningand Real Application Testing options[oracle@node2 ~]$ exitlogoutConnection to node2 closed.[oracle@node1 ~]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.5.0 - Production on Sat Aug 30 17:55:54 2014Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, OLAP, Data Miningand Real Application Testing optionsSQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.Total System Global Area  205520896 bytesFixed Size    2095088 bytesVariable Size  121636880 bytesDatabase Buffers   75497472 bytesRedo Buffers    6291456 bytesDatabase mounted.Database opened.SQL> show parameter threadNAME     TYPE VALUE------------------------------------ ----------- ------------------------------parallel_threads_per_cpu     integer 2thread     integer 2SQL> exitDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, OLAP, Data Miningand Real Application Testing options[oracle@node1 ~]$ ssh oracle@node2Last login: Sat Aug 30 17:54:14 2014 from node1[oracle@node2 ~]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.5.0 - Production on Sat Aug 30 17:57:00 2014Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.Connected to an idle instance.SQL> startupORACLE instance started.Total System Global Area  205520896 bytesFixed Size    2095088 bytesVariable Size  100665360 bytesDatabase Buffers   96468992 bytesRedo Buffers    6291456 bytesDatabase mounted.Database opened.SQL> show parameter threadNAME     TYPE VALUE------------------------------------ ----------- ------------------------------parallel_threads_per_cpu     integer 2thread     integer 1SQL> desc gv$log    Name   Null?    Type ----------------------------------------- -------- ---------------------------- INST_ID    NUMBER GROUP#     NUMBER THREAD#    NUMBER SEQUENCE#    NUMBER BYTES    NUMBER MEMBERS    NUMBER ARCHIVED    VARCHAR2(3) STATUS     VARCHAR2(16) FIRST_CHANGE#    NUMBER FIRST_TIME    DATESQL> select inst_id,group#,thread# from gv$log;   INST_ID     GROUP# THREAD#---------- ---------- ---------- 1    1       1 1    2       1 1    3       2 1    4       2 2    1       1 2    2       1 2    3       2 2    4       28 rows selected.SQL> show parameter threadNAME     TYPE VALUE------------------------------------ ----------- ------------------------------parallel_threads_per_cpu     integer 2thread     integer 1SQL> select thread#,status,enabled from v$thread  2  ;   THREAD# STATUS ENABLED---------- ------ -------- 1 OPEN   PUBLIC 2 OPEN   PUBLICSQL> alter database add logfile thread 3 group 5 '+DG4' size 50M;Database altered.SQL> alter database add logfile member '+DG4' to group 5;Database altered.SQL> alter database add logfile thread 3 group 6 '+DG4' size 50M;Database altered.SQL> alter database add logfile member '+DG4' to group 6;Database altered.SQL> alter database enable thread 3;Database altered.SQL> select thread#,status,enabled from v$thread;   THREAD# STATUS ENABLED---------- ------ -------- 1 OPEN   PUBLIC 2 OPEN   PUBLIC 3 CLOSED PRIVATE

结论:如果我们使用add logifle 语句时,指定的thread大于instancde_number,就会产生private thread(个人猜测),只有private thread的作用,目前尚未发现有特别的用处



1 0
原创粉丝点击