Author: mac

  • Silent Installation静默安装11gR2 DB SERVER单机并手动建库步骤

    静默安装11gR2 DB SERVER单机并手动建库步骤 静默安装是在我们无法使用OUI图形界面安装ORACLE DB软件,亦或者我们需要大规模部署该软件时采用的方法。 静默安装不要求启动图形界面,仅仅使用命令行即可实施。 具体在11gR2单机以silent静默方式安装时,可以省略使用response file,步骤如下: 1. 解压安装包,如果你是在Linux上且安装目前最新的Patchset 11.2.0.3(推荐)的话,首先解压介质安装包 如果在AIX上可能还需要执行必要的rootpre.sh     2. 创建必要的目录,以及Oracle用户的ulimit限制和kernel parameters [root@mlab2 grid]# mkdir /u01 [root@mlab2 grid]# chown oracle:oinstall /u01 [root@mlab2 grid]# su – oracle     3. 正式使用runInstaller -silent 静默方式安装 $ ./runInstaller -silent -debug -force \ FROM_LOCATION=/home/oracle/database/stage/products.xml \ oracle.install.option=INSTALL_DB_SWONLY \ UNIX_GROUP_NAME=oinstall \ INVENTORY_LOCATION=/u01/app/oracle/oraInventory \ ORACLE_HOME=/u01/app/oracle/product/11201/db_1 \ ORACLE_HOME_NAME=”OraDb11g_Home9″ \…

  • Script: 收集RAC DRM 诊断信息

    以下脚本可以用于收集 11gR2中 RAC DRM 动态资源管理 特性的诊断信息:   REM for 11.2 only REM written by Maclean.Liu set linesize 140 pagesize 1400 select DRMS, AVG_DRM_TIME, QUIESCE_T,FRZ_T,CLEANUP_T,REPLAY_T,FIXWRITE_T,SYNC_T from X$KJDRMAFNSTATS / select * from GV$DYNAMIC_REMASTER_STATS / select object, node, sopens, xopens, xfers from x$object_policy_statistics — where object=&object_id / select data_object_id, current_master, previous_master, remaster_cnt from gv$gcspfmaster_info / select * from gv$policy_history…

  • oracle 11g 与分区和存储相关的增强功能

    本文永久链接地址: https://www.askmac.cn/archives/oracle-11g-par…on-enhancement.html ‎ Oracle 分区 注:REF 分区支持对子表进行修剪和智能化分区联接。虽然性能方面的改善似乎是最明显的,但也不要忽略其它方面的改进。分区必须考虑性能、可管理性和可用性等所有业务相关领域。   分区增强功能   间隔分区 系统分区 组合分区增强功能 基于虚拟列的分区 引用分区 分区是一种管理大型数据库的重要工具。分区使 DBA 可以采用“分而治之”的方法管理数据库表(尤其是那些不断增长的表)。经过分区的表允许数据库在保持性能一致的同时,进行扩展以适应超大型的数据集,而不会对管理或硬件资源产生不当的影响。 分区可以加快对 Oracle DB 中数据的访问速度。不管数据库有 10 GB 还是 10 TB 的数据,分区都可以使数据的访问速度提高几个数量级。 随着 Oracle Database 11g 的推出,DBA 将会发现一系列有用的分区增强功能。这些增强功能包括: 增加了间隔分区 增加了系统分区 增强了组合分区 增加了基于虚拟列的分区 增加了引用分区   间隔分区 间隔分区是范围分区的一种扩展 当插入的数据超过了所有范围分区时,将创建指定间隔的分区。 必须至少创建一个范围分区。 间隔分区可以自动创建范围分区。 在引入间隔分区之前,DBA 需要显式定义每个分区的值范围。问题在于,为每个分区显式定义的界限不会随着分区数量的增长而扩展。 间隔分区是范围分区的一种扩展,它会在插入表中的数据超过了所有范围分区时,指示数据库自动创建特定间隔的分区。必须至少指定一个范围分区。范围分区的键值可以确定范围分区的上限值(称为转换点),数据库将为超过该转换点的数据创建间隔分区。 间隔分区可以完全自动地创建范围分区。管理新分区的创建可能是一项重复性很高的繁重任务。对于可预测性地增加涵盖小范围的分区,如添加新的每日分区,这种情况尤其突出。间隔分区可以通过按需创建分区来自动完成此类操作。 使用间隔分区时,需要考虑以下限制条件: 只能指定一个分区键列,并且该键列必须是 NUMBER 或 DATE 类型。…

  • 再议RAC Brain Split脑裂

    这2天在面试DBA Candidate的时候,我问到Oracle RAC中Brain Split脑裂决议的一些概念, 几乎所有的Candidate都告诉我当”只有2个节点的时候,投票算法就失效了,会让2个节点去抢占Quorum Disk,最先获得的节点将活下来” 。 我们姑且把这套理论叫做” 抢占论”。 “抢占论”的具体观点可能与下面这一段文字大同小异:   “在集群中,节点间通过某种机制(心跳)了解彼此的健康状态,以确保各节点协调工作。 假设只有”心跳”出现问题, 各个节点还在正常运行, 这时,每个节点都认为其他的节点宕机了, 自己是整个集群环境中的”唯一建在者”,自己应该获得整个集群的”控制权”。 在集群环境中,存储设备都是共享的, 这就意味着数据灾难, 这种情况就是”脑裂” 解决这个问题的通常办法是使用投票算法(Quorum Algorithm). 它的算法机理如下: 观点1: 集群中各个节点需要心跳机制来通报彼此的”健康状态”,假设每收到一个节点的”通报”代表一票。对于三个节点的集群,正常运行时,每个节点都会有3票。 当结点A心跳出现故障但节点A还在运行,这时整个集群就会分裂成2个小的partition。 节点A是一个,剩下的2个是一个。 这是必须剔除一个partition才能保障集群的健康运行。 对于有3个节点的集群, A 心跳出现问题后, B 和 C 是一个partion,有2票, A只有1票。 按照投票算法, B 和C 组成的集群获得控制权, A 被剔除。     观点2: 如果只有2个节点,投票算法就失效了。 因为每个节点上都只有1票。 这时就需要引入第三个设备:Quorum Device. Quorum Device 通常采用饿是共享磁盘,这个磁盘也叫作Quorum disk。 这个Quorum Disk 也代表一票。…

  • Oracle Recycle bin 回收站详解

    本文永久链接地址:https://www.askmac.cn/archives/oracle-recycle-bin.html 闪回删除和回收站 在 Oracle 数据库的早期版本中,如果错误地删除了表,则必须将数据库恢复到以前的时 间以恢复删除的表。此过程通常非常耗时,并且会导致丢失其它事务处理的工作。 Oracle Database 10g 引入了闪回删除功能,您可以使用此功能还原 DROP TABLE 语句的 结果,而不必使用时间点恢复。 注:初始化参数 RECYCLEBIN 用于控制闪回删除功能是打开 (ON) 还是关闭 (OFF)。如果 将该参数设置为 OFF,则删除的表不会进入回收站。如果将该参数设置为 ON,则删除的 表将进入回收站,并且可以进行恢复。默认情况下,将 RECYCLEBIN 设置为 ON。   回收站     如果不启用回收站,则删除表时,与该表及其相关对象关联的空间会立即变为可回收 (也就是说,该空间可用于其它对象)。 如果启用了回收站,则删除表时,则与该表及其相关对象关联的空间不会立即变为可回收, 即使该空间确实显示在 DBA_FREE_SPACE 中。相反,会将删除的对象临时放在回收站中, 这些对象仍属于其各自的所有者。在空间不紧张时,绝不会自动回收回收站对象使用的空 间。这样,便可以在尽可能长的期限内恢复回收站对象。 将删除的表移动到回收站时,将使用系统生成的名称对该表及其关联对象和约束条件 进行重命名。该操作非常有必要,因为这可以避免以后使用相同名称创建新对象时发生 名称冲突。 回收站本身是一个数据词典表,用于维护已删除对象的原始名称与各自系统生成名称之间 的关系。可以使用 DBA_RECYCLEBIN 视图查询回收站的内容。 幻灯片中的图表说明了这种新的行为: 1. 在表空间中创建了名为 EMPLOYEES 的表。 2. 删除 EMPLOYEES 表。…

  • RAC中增大db_cache_size引发的ORA-04031错误

    几个礼拜前, 有一套10.2.0.2 的 二节点RAC 数据库因为增大db_cache_size , 引发其中一个实例发生著名的ORA-04031 错误,日志如下:   Errors in file /oracle/oracle/admin/maclean/udump/u1_ora_13757.trc: ORA-00603: ORACLE server session terminated by fatal error ORA-00604: error occurred at recursive SQL level 1 ORA-04031: unable to allocate 1048 bytes of shared memory (“shared pool”,”select name,online$,contents…”,”Typecheck”,”kgghteInit”) ORA-00604: error occurred at recursive SQL level 1 ORA-04031: unable to allocate 1048 bytes…

  • 诊断 Oracle Clusterware 和 RAC 组件

    本文永久链接地址: https://www.askmac.cn/archives/rac-clusterware-diag.html ‎ RAC 调试中的一个黄金规则 请始终确保各个节点具有完全相同的系统时间,这样才能实现以下目标: –便于进行日志信息分析 –确保读取 GV$ 视图时获得准确结果 –避免实例被过早逐出 最好的建议方法是使用网络时间协议对各节点进行同步。   强烈建议在安装 RAC 之前就在所有集群节点上设置网络时间协议 (NTP)。这样可以使所有节点的时钟保持同步,并且便于根据时间戳以及对 GV$ 视图发出查询的结果对跟踪信息进行分析。 注:如果对时钟的调整超过 15 分钟,则可能导致实例被逐出。因此强烈建议在调整日期/时间之前,先关闭所有实例。   Oracle Clusterware 主要日志文件 Oracle Clusterware 将使用统一的日志目录结构来合并 Oracle Clusterware 组件日志文件。 这种合并结构简化了诊断信息收集过程,并有助于进行数据检索和问题分析。 本幻灯片显示了 Oracle Clusterware 用来存储其日志文件的主要目录: CRS 日志位于 $ORA_CRS_HOME/log/<主机名>/crsd/。crsd.log 文件每隔 10 MB 就进行一次归档(crsd.l01、crsd.l02…)。 CSS 日志位于 $ORA_CRS_HOME/log/<主机名>/cssd/。cssd.log 文件每隔 20 MB 就进行一次归档(cssd.l01、cssd.l02…)。 EVM 日志位于 $ORA_CRS_HOME/log/<主机名>/evmd。 取决于资源,具体日志位于…

  • Oracle 管理10g/11.1 Clusterware CRS/CSS

    本文永久地址: https://www.askmac.cn/archives/oracle-clusterware-management-11.html   学完本课后,应能完成以下工作: 手动控制 Oracle Clusterware 堆栈 更改表决磁盘配置 备份或恢复表决磁盘 手动备份 OCR 恢复 OCR 替换 OCR 镜像 修复 OCR 配置 更改 VIP 地址 使用 CRS 框架 防止实例自动重新启动 本课的目标是了解可在 Oracle Clusterware 级别执行的各种管理任务。虽然本课清楚详细地介绍了一些重要过程,但并没有系统地说明所使用的每个命令行工具的完整语法。在本课中,您将使用以下工具管理 Oracle Clusterware: crsctl crs_stat ocrconfig ocrcheck ocrdump srvctl oifcfg crs_profile、crs_register、crs_setperm、crs_start、crs_relocate、crs_stop、crs_unregister 有关可在本课中看到的各种命令选项的详细信息,请参阅《Oracle Database Oracle Clusterware and Oracle Real Application Clusters Administration and Deployment Guide》。    …

  • 一次Exadata上的ORA-600[kjbmprlst:shadow]故障分析

      这是一套Exadata 上的11.2.0.1   四节点RAC 系统,从今年初开始频繁地因为LMS后台进程出现内部错误ORA-600[kjbmprlst:shadow]而导致实例意外终止, 虽然是4节点RAC 保证了其高可用性, 但是仍因为 实例经常意外终止 导致应用程序交易失败。 实际我在7月份已经分析过该问题了, 详见<Oracle RAC内部错误:ORA-00600[kjbmprlst:shadow]一例>一文 , kjbmprlst:shadow内部函数用以管理kjbm shadow锁(/libserver10.a/kjbm.o )信息,存在某个已关闭的lock没有及时message给master node的代码漏洞。 实际上当时我已经给出了禁用DRM 可能可以避免该ORA-600[kjbmprlst:shadow] 的看法 ,但是 翻阅MOS 上所有现有的ORA-600[kjbmprlst:shadow] case均没有提及disable DRM可以是一种workaround的途径, 提交SR 也没有得到Oracle GCS关于该看法的 肯定回答, 此外还考虑到 核心的产品环境 使用11.2.0.1 这个bug 较多的版本确实不合适, 升级到 11.2.0.2 已修复该Bug 10121589 的bundle Patch 也算是一种不错的方案 ,所以也就没有深究下去。 之后就一直在做升级Exadata到11.2.0.2 的一些准备工作, 但是用户最后考虑到升级Exadata的步骤过于复杂, 很多步骤是不可回退的, 而且在国内升级的案例目前也不多, 推翻了 升级的方案, 于是有了下面的这一段故障分析   故障特征   如上面所说的这是一套Exadata上的4节点…

  • 11.2 中Oracle Cluster Registry(OCR)可选的存储设备

    在11.2中ocr和votedisk 可以存放在ASM中了,该版本中Oracle Cluster Registry(OCR)可选的存储设备包括:   2011-10-29 00:13:18.828: [ OCROSD][1087046128]utstoragetypecommon: Oracle Cluster Registry does not support the storage type configured. OCR can be configured on: ASM, OCFS, OCFS2, NFS, Block Device, Character Device, VxFS 2011-10-29 00:13:18.829: [ OCROSD][1087046128]utopen:6m”: OCR location # [0] [/g01/ocrlocal] configured is not a valid storage type. Return code [37]. 2011-10-29 00:13:18.829: […