<<Oracle数据库性能优化艺术(第五期)>> 第15周 基于Oracle RAC架构的性能优化

本文通过实例演示了RAC业务分割、并行操作效率对比及缓存融合对数据块访问效率的影响,探讨了RAC在不同场景下的性能表现。

1.演示通过设置不同的服务,达到RAC业务分割的效果。

[oracle@rac3 ~]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....SM1.asm application    ONLINE    ONLINE    rac3        
ora....C3.lsnr application    ONLINE    ONLINE    rac3        
ora.rac3.gsd   application    ONLINE    ONLINE    rac3        
ora.rac3.ons   application    ONLINE    ONLINE    rac3        
ora.rac3.vip   application    ONLINE    ONLINE    rac3        
ora....SM2.asm application    ONLINE    ONLINE    rac4        
ora....C4.lsnr application    ONLINE    ONLINE    rac4        
ora.rac4.gsd   application    ONLINE    ONLINE    rac4        
ora.rac4.ons   application    ONLINE    ONLINE    rac4        
ora.rac4.vip   application    ONLINE    ONLINE    rac4        
ora.racdb.db   application    ONLINE    ONLINE    rac4        
ora....b1.inst application    ONLINE    ONLINE    rac3        
ora....b2.inst application    ONLINE    ONLINE    rac4        
[oracle@rac3 ~]$ srvctl add service -d racdb -s rac_fin -r "racdb1"
[oracle@rac3 ~]$ srvctl add service -d racdb -s rac_mfg -r "racdb2"

[oracle@rac3 ~]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....SM1.asm application    ONLINE    ONLINE    rac3        
ora....C3.lsnr application    ONLINE    ONLINE    rac3        
ora.rac3.gsd   application    ONLINE    ONLINE    rac3        
ora.rac3.ons   application    ONLINE    ONLINE    rac3        
ora.rac3.vip   application    ONLINE    ONLINE    rac3        
ora....SM2.asm application    ONLINE    ONLINE    rac4        
ora....C4.lsnr application    ONLINE    ONLINE    rac4        
ora.rac4.gsd   application    ONLINE    ONLINE    rac4        
ora.rac4.ons   application    ONLINE    ONLINE    rac4        
ora.rac4.vip   application    ONLINE    ONLINE    rac4        
ora.racdb.db   application    ONLINE    ONLINE    rac4        
ora...._fin.cs application    OFFLINE   OFFLINE               
ora....db1.srv application    OFFLINE   OFFLINE               
ora...._mfg.cs application    OFFLINE   OFFLINE               
ora....db2.srv application    OFFLINE   OFFLINE   
            
ora....b1.inst application    ONLINE    ONLINE    rac3        
ora....b2.inst application    ONLINE    ONLINE    rac4        
[oracle@rac3 ~]$ crs_stat -v | egrep 'fin|mfg'
NAME=ora.racdb.rac_fin.cs
NAME=ora.racdb.rac_fin.racdb1.srv
NAME=ora.racdb.rac_mfg.cs
NAME=ora.racdb.rac_mfg.racdb2.srv

[oracle@rac3 ~]$ srvctl start service -d racdb -s "ora.racdb.rac_fin.cs,ora.racdb.rac_mfg.cs"
PRKP-1025 : The service ora.racdb.rac_fin.cs does not exist.
PRKP-1025 : The service ora.racdb.rac_mfg.cs does not exist.
[oracle@rac3 ~]$ srvctl start service -d racdb -s "ora.racdb.rac_fin.racdb1.srv,ora.racdb.rac_mfg.racdb2.srv"
PRKP-1025 : The service ora.racdb.rac_fin.racdb1.srv does not exist.
PRKP-1025 : The service ora.racdb.rac_mfg.racdb2.srv does not exist.
[oracle@rac3 ~]$ srvctl start service -d racdb -s "rac_fin,rac_mfg"
[oracle@rac3 ~]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....SM1.asm application    ONLINE    ONLINE    rac3        
ora....C3.lsnr application    ONLINE    ONLINE    rac3        
ora.rac3.gsd   application    ONLINE    ONLINE    rac3        
ora.rac3.ons   application    ONLINE    ONLINE    rac3        
ora.rac3.vip   application    ONLINE    ONLINE    rac3        
ora....SM2.asm application    ONLINE    ONLINE    rac4        
ora....C4.lsnr application    ONLINE    ONLINE    rac4        
ora.rac4.gsd   application    ONLINE    ONLINE    rac4        
ora.rac4.ons   application    ONLINE    ONLINE    rac4        
ora.rac4.vip   application    ONLINE    ONLINE    rac4        
ora.racdb.db   application    ONLINE    ONLINE    rac4        
ora...._fin.cs application    ONLINE    ONLINE    rac3        
ora....db1.srv application    ONLINE    ONLINE    rac3        
ora...._mfg.cs application    ONLINE    ONLINE    rac4        
ora....db2.srv application    ONLINE    ONLINE    rac4   
     
ora....b1.inst application    ONLINE    ONLINE    rac3        
ora....b2.inst application    ONLINE    ONLINE    rac4        
[oracle@rac3 ~]$ lsnrctl status

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 09-JAN-2014 00:12:00

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER_RAC3
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                08-JAN-2014 20:35:05
Uptime                    0 days 3 hr. 36 min. 55 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/ora10g/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /opt/ora10g/product/10.2.0/db_1/network/log/listener_rac3.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.203)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.103)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
Service "+ASM_XPT" has 1 instance(s).
  Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "RACDB" has 2 instance(s).
  Instance "racdb1", status READY, has 2 handler(s) for this service...
  Instance "racdb2", status READY, has 1 handler(s) for this service...
Service "RACDB_PR" has 2 instance(s).
  Instance "racdb1", status READY, has 2 handler(s) for this service...
  Instance "racdb2", status READY, has 1 handler(s) for this service...
Service "RACDB_PR_XPT" has 2 instance(s).
  Instance "racdb1", status READY, has 2 handler(s) for this service...
  Instance "racdb2", status READY, has 1 handler(s) for this service...
Service "rac_fin" has 1 instance(s).
  Instance "racdb1", status READY, has 2 handler(s) for this service...
Service "rac_mfg" has 1 instance(s).
  Instance "racdb2", status READY, has 1 handler(s) for this service...

Service "racdbXDB" has 2 instance(s).
  Instance "racdb1", status READY, has 1 handler(s) for this service...
  Instance "racdb2", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@rac3 ~]$ cd $ORACLE_HOME/network/admin
[oracle@rac3 admin]$ vim tnsnames.ora
[oracle@rac3 admin]$ tail -32 tnsnames.ora

rac_fin =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac3-vip)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac_fin)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 180)
        (DELAY = 5)
      )
    )
  )
rac_mfg =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac4-vip)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac_mfg)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 180)
        (DELAY = 5)
      )
    )
  )

[oracle@rac3 admin]$ sqlplus system/oracle@rac_fin

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jan 9 00:17:22 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
racdb1

SQL> select sid,SERVICE_NAME from v$session where sid=(select sid from v$mystat where rownum=1);

       SID SERVICE_NAME
---------- ----------------------------------------------------------------
       138 rac_fin

SQL> conn system/oracle@rac_mfg

Connected.
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
racdb2

SQL> select sid,SERVICE_NAME from v$session where sid=(select sid from v$mystat where rownum=1);

       SID SERVICE_NAME
---------- ----------------------------------------------------------------
       147 rac_mfg

SQL>


通过以上步骤可以看到两个rac节点已被分割成了rac_fin和rac_mfg两个服务(业务).


--EOF--


2.对比将并行操作放在RAC多个节点执行和单个节点执行的效率。

INSTANCE_GROUPS和PARALLEL_INSTANCE_GROUP都是RAC参数,并且只能用于并行模式.
INSTANCE_GROUPS指定了节点属于哪个/哪些并行group,PARALLEL_INSTANCE_GROUP指定并行在哪个group里面的节点之间运行.

sqlplus / as sysdba
alter system set instance_groups='node1','allnodes' scope=spfile sid='racdb1';
alter system set instance_groups='node2','allnodes' scope=spfile sid='racdb2';
srvctl stop database -d racdb -o immediate
srvctl start database -d racdb

[oracle@rac3 admin]$ sqlplus scott/tiger

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jan 11 23:20:52 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> show parameter groups

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
asm_diskgroups                 string
instance_groups              string     node1, allnodes
SQL> show parameter instance_name

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
instance_name                 string     racdb1
SQL> create table t as select * from dba_objects;

Table created.

SQL> exec dbms_stats.gather_table_stats(user,'T');

PL/SQL procedure successfully completed.

SQL> alter session set tracefile_identifier = racpx;

Session altered.

SQL> alter session set events '10046 trace name context forever,level 12';

Session altered.

SQL> alter session set parallel_instance_group='allnodes';

Session altered.

SQL> select /*+ parallel(t,20) */ count(*) from t;

  COUNT(*)
----------
     46409

SQL> alter session set parallel_instance_group='node1';

Session altered.

SQL> select /*+ parallel(t,20) */ count(*) from t;

  COUNT(*)
----------
     46409

SQL> alter session set events '10046 trace name context off';

Session altered.

SQL> exit


[oracle@rac3 udump]$ tkprof racdb1_ora_6388_RACPX.trc racdb1_ora_6388_RACPX.trc.prf sys=no aggregate=no

TKPROF: Release 10.2.0.1.0 - Production on Sat Jan 11 23:36:50 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


[oracle@rac3 udump]$
...
********************************************************************************

alter session set parallel_instance_group='allnodes'


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.00       0.00          0          0          0           0

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 47

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       1        0.00          0.00
  SQL*Net message from client                     1        0.00          0.00
********************************************************************************

select /*+ parallel(t,20) */ count(*)
from
 t


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.02       1.09          0          3          0           0
Fetch        2      0.02       0.07          0          0          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.04       1.17          0          3          0           1

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 47

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  SORT AGGREGATE (cr=3 pr=0 pw=0 time=1171723 us)
     16   PX COORDINATOR  (cr=3 pr=0 pw=0 time=1167642 us)
      0    PX SEND QC (RANDOM) :TQ10000 (cr=0 pr=0 pw=0 time=0 us)
      0     SORT AGGREGATE (cr=0 pr=0 pw=0 time=0 us)
      0      PX BLOCK ITERATOR (cr=0 pr=0 pw=0 time=0 us)
      0       TABLE ACCESS FULL T (cr=0 pr=0 pw=0 time=0 us)


Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  KJC: Wait for msg sends to complete             2        0.00          0.00
  reliable message                                4        0.00          0.00
  enq: KO - fast object checkpoint                4        0.00          0.00
  enq: PS - contention                           28        0.00          0.01
  DFS lock handle                                49        0.19          0.93 (等待49次,最长一次耗时0.19秒,总共等待了0.93秒)
  PX Deq: reap credit                           431        0.00          0.01
  PX Deq: Join ACK                                7        0.01          0.03
  PX Deq Credit: send blkd                       17        0.01          0.02
  PX Deq: Parse Reply                            16        0.05          0.05
  SQL*Net message to client                       2        0.00          0.00
  PX Deq: Execute Reply                          33        0.00          0.05
  PX Deq: Signal ACK                              9        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00
********************************************************************************

alter session set parallel_instance_group='node1'


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.00       0.00          0          0          0           0

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 47

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       1        0.00          0.00
  SQL*Net message from client                     1        0.00          0.00
********************************************************************************

select /*+ parallel(t,20) */ count(*)
from
 t


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.01          0          3          0           0
Fetch        2      0.00       0.02          0          0          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.04          0          3          0           1

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 47

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  SORT AGGREGATE (cr=3 pr=0 pw=0 time=46627 us)
      7   PX COORDINATOR  (cr=3 pr=0 pw=0 time=45644 us)
      0    PX SEND QC (RANDOM) :TQ10000 (cr=0 pr=0 pw=0 time=0 us)
      0     SORT AGGREGATE (cr=0 pr=0 pw=0 time=0 us)
      0      PX BLOCK ITERATOR (cr=0 pr=0 pw=0 time=0 us)
      0       TABLE ACCESS FULL T (cr=0 pr=0 pw=0 time=0 us)


Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  rdbms ipc reply                                 4        0.00          0.00
  KJC: Wait for msg sends to complete             1        0.00          0.00
  reliable message                                1        0.00          0.00
  enq: KO - fast object checkpoint                4        0.00          0.00
  enq: PS - contention                            8        0.00          0.00
  PX Deq: Join ACK                                3        0.00          0.00
  PX Deq: Parse Reply                             1        0.00          0.00
  SQL*Net message to client                       2        0.00          0.00
  PX Deq: Execute Reply                          46        0.00          0.02
  PX Deq: Signal ACK                              3        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00
********************************************************************************
...


从以上trace可以看出本例中单节点的并行执行效率大大高于多节点的效率


参考
如何控制RAC跨节点并行计算
http://space6212.itpub.net/231499/viewspace-1045349/


--EOF--


3.演示RAC的cache fusion对数据块访问效率的影响。

通过trace以下两种情况来查看cache fusion对数据块访问效率的影响:

  a. 在节点1查询t2

  b. 在节点2更新t2表后,再次在节点1运行同样的查询

比较两次查询的资源消耗情况与等待事件.

[oracle@rac3 udump]$ sqlplus scott/tiger@racdb1

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jan 12 00:33:56 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> drop table t2 purge;

Table dropped.

SQL> create table t2 as select * from dept;

Table created.

SQL> exec dbms_stats.gather_table_stats(user,'T2');

PL/SQL procedure successfully completed.

SQL> alter session set tracefile_identifier = CF;

Session altered.

SQL> alter session set events '10046 trace name context forever,level 12';

Session altered.

SQL> select * from t2;

    DEPTNO DNAME      LOC
---------- -------------- -------------
    10 ACCOUNTING      NEW YORK
    20 RESEARCH      DALLAS
    30 SALES      CHICAGO
    40 OPERATIONS      BOSTON

SQL> select 'update t2 in another node and commit' notes from dual;

NOTES
------------------------------------
update t2 in another node and commit

+========================================================+
在节点2更新t2并提交,此处在另一个session中运行:
[oracle@rac4 ~]$ sqlplus scott/tiger@racdb2

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jan 12 00:29:01 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> update t2 set loc='testloc';

4 rows updated.

SQL> commit;

Commit complete.

SQL>
+========================================================+

以下回到节点1:
SQL> select * from t2;

    DEPTNO DNAME      LOC
---------- -------------- -------------
    10 ACCOUNTING      testloc
    20 RESEARCH      testloc
    30 SALES      testloc
    40 OPERATIONS      testloc

SQL> alter session set events '10046 trace name context off';

Session altered.

SQL> exit

[oracle@rac3 udump]$ tkprof racdb1_ora_32125_CF.trc racdb1_ora_32125_CF.trc.prf sys=no aggregate=no


TKPROF: Release 10.2.0.1.0 - Production on Sun Jan 12 00:36:13 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


[oracle@rac3 udump]$ view racdb1_ora_32125_CF.trc.prf
...
********************************************************************************

alter session set events '10046 trace name context forever,level 12'


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        0      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        1      0.00       0.00          0          0          0           0

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 47

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       1        0.00          0.00
  SQL*Net message from client                     1        0.00          0.00
********************************************************************************

select *
from
 t2


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          0          4          0           4
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.00          0          4          0           4

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 47

Rows     Row Source Operation
-------  ---------------------------------------------------
      4  TABLE ACCESS FULL T2 (cr=4 pr=0 pw=0 time=38 us)


Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       2        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00
********************************************************************************

select 'update t2 in another node and commit' notes
from
 dual


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          0          0          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.00          0          0          0           1

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 47

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  FAST DUAL  (cr=0 pr=0 pw=0 time=5 us)


Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       2        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00
  library cache lock                              1        0.00          0.00
********************************************************************************

select *
from
 t2


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          4          4          0           4
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.00          4          4          0           4

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 47

Rows     Row Source Operation
-------  ---------------------------------------------------
      4  TABLE ACCESS FULL T2 (cr=4 pr=4 pw=0 time=2262 us)


Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       2        0.00          0.00
  gc cr multi block request                       2        0.00          0.00
  db file scattered read                          1        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00
********************************************************************************
...


从trace可以看出本例中cache fusion使得查询消耗的时间增加了60倍, 极大地降低了数据块访问效率.


--EOF--


4.写出你对RAC的性能以及适用场景的观点。

通过把并行进程分散到rac的节点能更加充分的利用各个节点的计算能力,可能能够提升程序的性能,但是如果cache fusion情况严重,则可能损害性能.

因此部署rac的主要目的应是通过实例冗余实现高可用,而不是提高性能.


--EOF--

目录 推荐序 前言 第1章 认识Oracle RAC 1.1 RAC产生的背景 1.2 RAC体系结构 1.2.1整体结构 1.2.2物理层次结构 1.2.3逻辑层次结构 1.3 RAC的特点 1.3.1双机并行 1.3.2高可用性 1.3.3易伸缩性 1.3.4低成本 1.3.5高吞吐量 1.4 RAC存在的问题 1.4.1稳定性 1.4.2高性能 1.5 RAC软件 1.5.1存储管理软件 1.5.2集群管理软件 1.5.3数据库管理软件 1.6本章小结 第2章 搭建类似生产环境的RAC 2.1搭建环境 2.1.1 RAC的物理结构 2.1.硬件环境 2.1.3软件环境 2.2搭建存储服务器 2.2.1安装Openfiler操作系统 2.2.2Openfiler主界面 2.2.3配置iSCSI磁盘 2.3搭建数据库服务器 2.3.1为服务器配置4个网卡 2.3.2安装Linux操作系统 2.3.3挂载iSCSI磁盘 2.3.4配置udev固定iSCSI磁盘设备名称 2.3.5配置服务器的图形化环境 2.4 RAC运行环境安装前检查 2.4.1服务器检查 2.4.2存储检查 2.4.3网络检查 2.5配置数据库服务器 2.5.1安装软件包 2.5.2修改系统参数 2.5.3配置域名解析服务 2.5.4配置hosts文件 2.5.5创建组、用户和目录 2.5.6设置环境变量 2.5.7配置SSH用户等效性 2.5.8配置时间同步服务 2.5.9安装cvuqdisk包 2.5.10 CVU验证安装环境 2.6创建ASM磁盘 2.6.1安装ASMLib驱动 2.6.2创建ASMLib磁盘 2.7部署RAC 2.7.1安装Grid Infrastructure 2.7.2安装Database DBMS 2.7.3创建ASM磁盘组 2.7.4创建RAC数据库 2.8测试RAC 2.8.1连接方式测试 2.8.2异常情况测试 2.9虚拟机搭建RAC 2.9.1虚拟机Xen简介 2.9.2启动主机Xen内核 2.9.3 Xen虚拟机创建网络环境 2.9.4创建Xen存储服务器 2.9.5创建Xen数据库服务器 2.10本章小结 第3章 Clusterware集群软件 3.1 Grid Infrastructure架构 3.1.1 GI的特点 3.1.2 GI的应用 3.1.3 Clusterware的特点 3.1.4 Clusterware增强的特性 3.2 Clusterware磁盘文件 3.2.1表决磁盘 3.2.2集群注册表 3.2.3本地注册表 3.3 Clusterware启动流程 3.3.1启动流程 3.3.2后台进程 3.4 Clusterware隔离机制 3.4.1 Clusterware心跳 3.4.2 Clusterware隔离特性IPMI 3.4.3 RAC隔离体系 3.5网格即插即用 3.5.1 GPnP结构 3.5.2 GPnP profile文件 3.5.3 mDNS服务 3.6日志体系 3.6.1 ADR的特点 3.6.2 ADR目录结构 3.6.3命令行工具ADRCI 3.6.4 Clusterware日志文件 3.6.5 ASM实例和监听日志文件 3.6.6 Database日志文件 3.7本章小结 第4章 ASM存储软件 4.1 ASM简介 4.1.1 ASM的特点 4.1.2 ASM实例的功能 4.2 ASM磁盘组 4.2.1 ASM磁盘 4.2.2共享ASM磁盘组 4.2.3 ASM逻辑结构 4.2.4 ASM故障组 4.2.5 ASM条带化 4.3 ASM文件 4.3.1 ASM文件类型 4.3.2 ASM别名 4.3.3 ASM文件模板 4.4 ASM数据结构 4.4.1物理元数据 4.4.2虚拟元数据 4.5 ASM操作 4.5.1 RDBMS操作ASM文件 4.5.2 ASM文件的分配 4.5.3 ASM区间读写特性 4.5.4 ASM同步技术 4.5.5 ASM实例恢复和Crash恢复 4.5.6 ASM磁盘组操作 4.6 ACFS集群文件系统 4.6.1 ACFS概述 4.6.2 ADVM动态卷管理 4.6.3 ACFS快照 4.6.4 ACFS的备份和恢复 4.6.5 ACFS同ASM整合 4.7本章小结 第5章 RAC工作原理 5.1单实例并发与一致性 5.1.1数据读一致性与写一致性 5.1.2多版本数据块 5.1.3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值