《Oracle11g新特性介绍》

下载SHOUG成员Oracle ACS首席工程师周国宏分享:《Oracle11g新特性介绍》

 

Oracle Exadata Database Machine Reracking Checklist

OCM 11g认证升级考前准备

 

 

上周五我去参加了OCM升级考试。对于考前准备我将给出一些建议,这些建议都是基于我自己做的考前准备而言

免责申明:对于考试我不会进行任何评论和建议。

请检查你是否有一个类似环境。你需要获取一个11gR1数据库和10g Enterprise Manager。就个人来说,我当时对11gR2和11g/12c em都做了准备,因为那时我已经下载不到那些旧版本的软件了。你应该有准备Linux/Unix系统,不必太介意你是否使用的是AIX, HPUX,Solaris或Linux,类似平台即可。

为了通过认证,你需要仔细阅读相关主题文章并熟练掌握相关技能 :

— 数据库:

我知道初始参数的含义,而且我能快速地在参考文档中找到它们。
我熟悉sql语法并已经阅读了SQL参考文档不止一次。

 

— 网络配置:

我可以在不看文档的情况下知道如何设置sqlnet.ora, tnsnames.ora和listener.ora。
我已经仔细测试过所有Net Service Guide中提到的参数

 

— ADR:

我知道如何在数据库和网络上设置ADR位置。
我知道如何使用命令行工具(相关命令归档在utilities -> adrci中)

 

— RMAN:

我知道如何使用配置语句对RMAN进行设置。我能很快完成备份和恢复工作。
我仔细阅读过RMAN手册

 

— Dataguard

我能很自信地使用dgmgrl工具和oem来配置并监控dataguard。
我读过Dataguard Broker Guide。

 

— 物化视图Materialized View

我阅读并测试了 Datawarehouse Guide -> Materialized views

 

— Secure Lob

我对lobs作为basicfile和securefile进行了实验并查看了其不同和相关新特性。
我已经读了secure files guide

 

— Streams

Streams是一个很复杂的产品。我上一年在巴黎参加了一个五天课程,感觉万一出了问题,streams维护和调试起来都很棘手。
我知道如果capture, propagation或apply失败的话在哪里去看,大多相关报错信息会在alert.log文件中,也有在DBA视图中。我知道如何重启不同进程。我对OEM和PL/SQL包DBMS_STREAMS_*的掌握情况有自信。
对于Streams,我已经阅读过了Streams ConceptStreams Replication Administration文档。

 

— 资源管理器 (Resource Manager)

我知道相关GUI和命令行的使用,并阅读了Admin guide -> Resource Mananger

 

— 顾问程序Advisors和基线Baselines

一个值得一读的资源是2 Days Perf Guide,听上去很怪,准备OCM考试,为什么去读一个2-Days Guide,但事实上这个文档确实提供了是一个不错讲解。
为了获取更深入的信息并了解其API使用,需要去读Performance Tuning -> Optimizing SQL Statements文档。

 

— 重放一个获取的负载

通过阅读Real Application Testing User Guide我了解了相关PL/SQL和EM的使用。

 

其他一些主题,一旦你心里知道语法,都能很通过主题关键字找到。

我花了约1年来准备这场考试,对那些看此文章并同样仍在准备认证路上的朋友,祝你好运!

By Laurent Schneider

关于MySQL认证

关于MySQL认证
By Denis Truffaut

MySQL是一个数据库管理系统。其认证被用于测试考生对于所有MySQL相关的存储和查询技术的知识掌握情况。

当前可在Oracle官网中可查到MySQL认证有以下两种

  • Oracle Certified Professional, MySQL 5.6 Database Administrator
  • Oracle Certified Professional, MySQL 5.6 Developer

相关认证需要通过的考试:

  • MySQL 5.6数据库管理OCP:1Z0-883
  • MySQL 5.6开发员OCP:1Z0-882

值得注意的是下列旧认证将在2014315日后过期, 如果你已经拥有以下认证,那么你需要考虑是否参与认证升级:

  • Oracle Certified Associate, MySQL 5
  • Oracle Certified Expert, MySQL 5.1 Cluster Database Administrator
  • Oracle Certified Professional, MySQL 5 Database Administrator
  • Oracle Certified Professional, MySQL 5 Developer

对于MySQL认证考试的反馈

当写这篇文章时,我才通过MySQL5 开发员认证。然而,我认为获取这些认证需要对相关知识有比较高的掌握度。

OCP5D

考试的题目都不简单,建议大家看题,并在考试时按顺序回答问题。注意,你可以对没把握的题先标记起来(使用【Mark】)然后在之后回到标记的题目。在最后回顾时,考试会提供对所有未回答或被标记问题的总览,在得到你的最后确认后,考生再按下【Finish】按钮完成考试。

最后,为了合理控制你的考试时间,在屏幕右上角有一个计时器方便你查看所用时间。

考试资源准备

考试中所需文档资源可以从下面找到:

OCP认证:请注意通过规则

每个考试需耗时90分钟,约包含70道题目,这意味着每题77秒的考虑时间。

你需要至少获得总考分的60%来通过考试。不过具体是否是此比例,你需要查看Oracle官网中的OCP相关考试说明来了解。

如果未能通过考试,你需要过14天后方能尝试申请重考。

OCP5certifation

MySQL OCP:总结 

为什么尝试此认证:

  • 相关费用(约1077RMB),性价比高
  • 一个考验自己知识掌握度的好方法
  • 一个高级别认证
  • 一个证明你是否专业的证据
  • 在求职市场上的一个快速认可
  • 全球知名品牌: Oracle

Oracle ASM和VxCFS的比较

关于VxCFS和ASM
 
 
ASM的主要优点在于 成本的优势:
1.ASM是免费的存储解决方案; 
2.磁盘管理与自动IO负载均衡,可以免除手动进行IO调优;
3.ASM功能绑定在Oracle内核中,无需依靠安装HACMP或第三方HA软件;(注10g中可能仍需要ha来存放OCR和Votedisk)
4.自动重组数据,较稳定的保持负载均衡
5.动态添加移除磁盘,对oracle数据库几乎透明;
6.性能上ASM接近于使用裸设备
 
虽然ORACLE 10g的早期版本,ASM很不稳定,而且在PSU 10.2.0.4.4发布时,其中修复的ASM bug数仍达到了8个,但在PSU 10.2.0.4.5及其之后,没有发现有修复ASM bug的情况,所以可以相信在PSU 10.2.0.4.4之后,ASM功能已趋于稳定(注: 在PSU 10.2.0.5.6发布时修复了1个ASM bug;在PSU 11.2.0.3.1发布时修复了6个bug)
 
缺点是:ASM的内部结构较为黑盒,当出现例如ASM header丢失时,需要ASM相关专业人员负责修复。
 
 
Veritas Cluster File System VxCFS的优势是管理方便,较ASM在技术上更透明,一旦发生故障可以更快地定位问题。
 
目前国内 VxCFS在电信业有一些核心库使用的例子, 而 ASM在银行、政府机构等行业已经有了广泛的使用,部分银行用户已部署多达上百套RAC+ASM库。

11g deferred_segment_creation特性

11g中的 deferred_segment_creation 延迟段创建特性,在CREATE TABLE DDL执行时实际不会在指定的表空间上生成segment ,而会延迟到实际有第一次INSERT或其他方式加载数据后才会产生segment。
 
该deferred_segment_creation特性的优点是:
 
1. 当需要创建大量表时可以节约时间
2. 当系统中存在大量空表/空分区时可以节约空间
 
 
该deferred_segment_creation特性的缺点是:
 
1. 由于要在第一次INSERT或其他加载数据方式时才产生segment段,而段的创建需要在表空间上分配空间allocate space,若短期内
大量空表存在插入的需求,则可能在短期内出现空间分配争用
 
2. deferred_segment_creation引入了少量的BUG.
 
以下是11.2.0.3上存在的一些bug,部分在psu或者bp中修复了:
 
NB Bug Fixed Description
15866428 11.2.0.4, 12.1.0.0 ORA-14766 / ORA-14403 during concurrent partition maintenance
14252187 12.1.0.0 ORA-600 [qesmaGetTblSeg1] from deferred segment creation in RAC
13986244 11.2.0.3.BP14, 11.2.0.4, 12.1.0.0 Various ORA-600 seen with deferred segment creation in RAC
13611310 12.1.0.0 Parallel DML with LOBs fails with ORA-7445 [qesmaGetFromLocalOrQCCache]
12614714 11.2.0.4, 12.1.0.0 ORA-1950 occurs when executing DML after EXCHANGE PARTITION and DROP USER
13649031 11.2.0.3.4, 11.2.0.3.BP06, 11.2.0.4, 12.1.0.0 ORA-10637 occurs on SHRINK of a partitioned table with deferred segments
13497523 11.2.0.3.BP15, 11.2.0.4, 12.1.0.0 Errors from SQLLDR loads into non-partitioned tables with deferred segment creation
* 13326736 11.2.0.2.8, 11.2.0.2.BP18, 11.2.0.3.3, 11.2.0.3.BP05, 11.2.0.4, 12.1.0.0 Dictionary corruption / ORA-959 due to DROP TABLESPACE
12535346 11.2.0.3.3, 11.2.0.3.BP07, 12.1.0.0 ORA-7445 [kxccexi] using referential integrity constraints with deferred segments or interval partitions
12358753 12.1.0.0 INDEX_STATS has wrong values for ANALYZE of deferred segmentindexes
11930350 12.1.0.0 Deadlock / undetected FK violation from DML on REFERENCE partitioned table
 
 
建议:
 
1. 对于存在较多空表或空分区且存在空间压力的,对性能、响应时间没有太高要求的系统可以考虑使用该特性
2. 对对性能、响应时间有较高要求的库建议关闭该特性,deferred_segment_creation=false

Oracle RAC ora.crf ologgerd

loggerd 进程属于ora.crf服务,该服务负责收集一些OS的CPU和Memory信息,作为对实例本身监控的补充,由于很多环境中没有部署OSW脚本监控OS导致很多RAC问题由于缺少OS信息而无法进一步诊断, 所以需要ora.crf收集, 但ora.crf不能替代 OSW。
建议在重要环境中部署OSW监控。 在有orca等监控工具的前提下可以考虑禁用CHM。
对于上述问题可以考虑KILL ologgerd进程释放资源。
As a temporary work around, you can kill ologgerd and delete the contents in the BDB directory. osysmond should respawn ologgerd and new bdb file will get created. The past data is lost when this is done.
 
具体可以参考:Cluster Health Monitor (CHM) FAQ [ID 1328466.1]
crsctl stop has的话 会停止ora.crf服务,应当会停掉该进程
crsctl stop cluster的话可能不会停止
可以用 $GRID_HOME/bin/crsctl stop res ora.crf -init 命令手动仅停止 ora.crf 服务
手动Kill ologgerd进程的话osysmond 会自动重启该进程respawn ologgerd ,但也可以起到释放资源的目的。

Oracle bbed的代码风格

Oracle bbed的代码风格

    371 /* K_BTTRDA, KDDBTDATA: KTB Data, data block layers defn */
    372 static const kutbl *const kutbltt[] =
    373 {
    374   &kutblcb,                                                   /* cache layer */
    375   &kutbltb,                                             /* transaction layer */
    376   &kutbldb,                                                    /* data layer */
    377   &kutbltck                                                       /* TAILCHK */
    378 };
    379 
    380 /* K_BTTRDA, KDDBTINDEX: KTB Data, index LEAF block layers defn */
    381 static const kutbl *const kutbltxl[] =
    382 {
    383   &kutblcb,                                                   /* cache layer */
    384   &kutbltb,                                             /* transaction layer */
    385   &kutbldxl,                                                   /* data layer */
    386   &kutbltck                                                       /* TAILCHK */
    387 };
    388 
    389 /* K_BTTRDA, KDDBTINDEX: KTB Data, index BRANCH block layers defn */
    390 static const kutbl *const kutbltxb[] =
    391 {
    392   &kutblcb,                                                   /* cache layer */
    393   &kutbltb,                                             /* transaction layer */
    394   &kutbldxb,                                                   /* data layer */
    395   &kutbltck                                                       /* TAILCHK */
    396 };
    397 
    398 /* K_BTTRDA, KDDBTLOBF: KTB Data, lob block layers defn */
    399 static const kutbl *const kutbltl[] =
    400 {
    401   &kutblcb,                                                   /* cache layer */
    402   &kutbltb,                                             /* transaction layer */
    403   /*&kutbldl,*/                                                     /* lob layer */
    404   &kutbltck                                                       /* TAILCHK */



bbed的源码是这样做的
KTB Data, data block layers
判断一个块的类型 然后决定 其由那几个部分组成

这样比较先进一点

例如 首先判断 block_type 之后 有相关的函数来初始化

initial_kcbh();
initial_ktbbh();
如果没有该部分就不初始化。

Oracle RMAN 10g中如何提高copy datafile的并发

Oracle RMAN 10g中如何提高copy datafile的并发
try something like this:
format后面修改为你复制的目标文件名
 run
 { allocate channel mac01  DEVICE TYPE DISK MAXOPENFILES=1 PARMS=’BLKSIZE=1048576′ ;
   allocate channel mac02  DEVICE TYPE DISK MAXOPENFILES=1 PARMS=’BLKSIZE=1048576′ ;
   allocate channel mac03  DEVICE TYPE DISK MAXOPENFILES=1 PARMS=’BLKSIZE=1048576′ ;
   allocate channel mac04  DEVICE TYPE DISK MAXOPENFILES=1 PARMS=’BLKSIZE=1048576′ ;
   backup as copy (datafile ‘+DATADG/MAC/DATAFILE/system.258.819691771′    format ‘/s01/backup/system.dbf’ channel mac01) 
   (datafile ‘+DATADG/MAC/DATAFILE/sysaux.257.819691725′    format ‘/s01/backup/sysaux.dbf’    channel mac02)
   (datafile ‘+DATADG/MAC/DATAFILE/undotbs1.260.819691817′  format ‘/s01/backup/undotbs1.dbf’  channel mac03);
 }

Enterprise Manager OMS high cpu数据收集

Q1. Was there any resource intensive activities were scheduled at that time ?
Q2. What is the frequency of issue i.e. CPU /mem spike ? Was this spike rauns for very long hours (more than 10 min or so) ?

Q3. What the patch details atside ?
$$ORACLE_HOME/OPatch/opatch lsinventory -detail

Q4. From the given screens/report ,,not sure which PID (process ID) is consuming more resource ? if your admin captured , details about the PIDs etc , please share with us .

Please share the following logs for the timestamp when issue was seen:

a) gc_inst/em/EMGC_OMS1/sysman/log/emoms.log, emoms_pbs.trc, emoms_pbs.log ,.emctl.msg file
b) gc_inst/userprojects/Domain/GCDomain/servers/EMGC_OMS1/logs/EMGC_OMS1.out.*
c) Have you captured any system dump or java thread dump during the CPU or memory spike ? if please share the same
d) Get me SYstem log which has captured the TOP resource (CPU & memory) Consumer PID details

Best Regards
Basu

What to collect when high CPU is seen by a java pid ?
Further if you notice any CPU spike or high CPU BY 12c agent /OMS , gather these details

1) OS command , PID details
$topas

2) If Java PID shown in top CPU consumer list , get thread dump using

$<OMS_HOME>/bin/emctl dump oms
$kill -3 <java pid> > /tmp/threadpid.out — generated threaddump ofpid

 

沪ICP备14014813号-2

沪公网安备 31010802001379号