Oracle UNIX/Linux Tips by Burleson Consulting

Semaphores and Oracle 11g

信号量和数据库

Semaphores are data structures within the operating system that function like signals for memory process communications. For Oracle, semaphores tell the Oracle processes when to stop, wait or start operations. In addition, semaphores tell Oracle processes when they are to resume processing. Each Oracle process has its own semaphore assigned to it.

For example, DBWR (Database Writer process) needs to flush the database buffer cache to write to the data files on disk. When it is time for DBWR to perform this task, DBWR semaphore signals to DBWR to flush the data from the buffer out to disk.  With System V implementations and variations of the UNIX and LINUX operating system, some of the key parameters that manage the use and allocation of semaphores with Oracle 11g exist in the following operating system level parameters:

    • SEMMNS:  number of semaphores in the operating system.
    • SEMMSL:  size limit for a single semaphore set.
    • SEMMNI: number of semaphore set identifiers in the operating system.
    • SEMMNU: number of semaphore undo structures in the operating system.

The output of semaphores can be viewed by using the ipcs command for UNIX and Linux platforms as will be observed in the following section on shared memory and Oracle 11g.

Semaphore Management in UNIX

A semaphore is a term used for a signal flag used by the Navy to communicate between ships.  In some dialects of UNIX, semaphores are used by Oracle to serialize internal Oracle processes and guarantee that one thing happens before another thing.  Oracle uses semaphores in HP/UX and Solaris to synchronize shadow processes and background processes. However, AIX UNIX does not use semaphores, and a post/wait driver is used instead to serialize tasks.

The number of semaphores for an Oracle database is normally equal to the value of the processes initialization parameter. For example, a database where processes=200 would need to have 200 UNIX semaphores allocated for the Oracle database.

When allocating semaphore in UNIX, it is critical that your UNIX kernel parameter semmns be set to at least double the high-water mark of processes for every database instance on your server.  If you fail to allocate enough semaphores by setting semmns too low, your Oracle database will fail at startup time with the message:

ORA-7279: spcre: semget error, unable to get first semaphore set

Let抯 talk about setting the semmns kernel parameter. To make changes in kernel shared memory or semaphore parameters, you need to perform the following steps:

1. Shut down any running Oracle instances

2. Locate the kernel configuration file for your OS

3. Make the necessary changes using the system utilities or the vi editor.

Today, most dialects of UNIX have specialized System Administration utilities to perform kernel management (Table 2-4)

UNIX Dialect

Utility Name

HP-UX

SAM

SCO

SYSADMSH

AIX

SMIT

Solaris

ADMINTOOL

UNIX kernel management tools

System Default values for semaphores

The number of UNIX semaphores is determined by the value of the semmns UNIX kernel parameter.

Viewing semaphores in HP/UX version 11

In HP/UX v 11, the command to display kernel parameters is kmtune and we can grep to see the semaphore settings.

root> kmtune|grep sem

sema                 1
semaem               16384
semmap               (SEMMNI+2)
semmni               200
semmns               800
semmnu               30
semume               10
semvmx               32767

Counting Used Semaphores

The ipcs UNIX command has a 杝a option that can be used to display semaphores. The total number of semaphores is determined by summing the NSEMS column in the ipcs display.  In the example below we see that there are 4 semaphores held by the ROOT user and 475 semaphores held by the ORACLE user in 3 database instances.

root> ipcs -as|grep oracle

IPC status from /dev/kmem as of Mon Sep 10 17:25:21 2001
T  ID     KEY        MODE     OWNER  GROUP   CREATOR   CGROUP NSEMS 
s  15 0x00000000 --ra-r-----  oracle  dba    oracle       dba   400

To display semaphores with the ipcs command and remove them with ipcs -pmb, see my notes onManaging UNIX memory with IPCS

Next, let抯 take a look at how we can examine UNIX system log messages.

Displaying System log Messages

In UNIX, a system failure will often precipitate an Oracle crash.  Any hardware associated with disk, CPU or RAM may cause an Oracle database crash, and the UNIX system logs can be used to identify the initial cause of the Oracle failure.

The following commands are used to display the UNIX error logs.  We need to note that you should regularly check the UNIX logs, even if there is not Oracle failure. These commands can also be useful for detecting transient disk I/O problems, memory failures, etc.

Show server log on HP/UX

In HP/UX we have a file in the /var/adm directory called syslog to hold all UNIX system messages.  In the command below we search the syslog for any lines that contain the word 揺rror�.

查看HP日志

root> grep 杋 error /var/adm/syslog/syslog.log|more

May  1 20:30:08 sprihp01 syslog: NetWorker media: (warning) 
dev/rmt/c5t6d0BESTn reading: I/O error

Show server log on AIX

查看AIX日志

In the IBM AIX operating system we use the errpt command to display the contents of the system log.

root> errpt -a|more
---------------------------------------------------------------------------
LABEL:          CORE_DUMP
IDENTIFIER:     C60BB505

Date/Time:       Tue May  9 10:34:47 
Sequence Number: 24908
Machine Id:      000138644C00
Node Id:         sp2k6n03
Class:           S
Type:            PERM
Resource Name:   SYSPROC

Again, checking the UNIX system logs should be a regular activity for the Oracle DBA. Next, let抯 take a look at how UNIX can be monitored for performance problems.

转自:http://www.dba-oracle.com/unix_linux/semaphore_management.htm

Oracle Semaphore Management in UNIX Administration的更多相关文章

  1. Oracle User Management FAQ翻译及学习笔记

    转载 最近了解到AME 的东西,很迫切,先转载一篇 [@more@] Oracle User Management FAQ翻译及学习笔记 写在前面 本文主要是翻译的英文版的Oracle User Ma ...

  2. Oracle Order Management DropShip Flow for R12

    Oracle Order Management DropShip Flow for R12 Email ThisBlogThis!Share to TwitterShare to FacebookSh ...

  3. Oracle DBA 的常用Unix参考手册(一)

    作为一名Oracle DBA,在所难免要接触Unix,但是Unix本身又是极其复杂的,想要深刻掌握同样很不容易.那么到底我们该怎么入手呢?Donald K Burleson 的<Unix for ...

  4. Oracle Inventory Management Application Program Interface ( APIs)

    In this Document   Goal   Solution   References APPLIES TO: Oracle Inventory Management - Version 12 ...

  5. Run Repository Creation Utility (RCU) for Oracle Identity Management components

    Run Repository Creation Utility (RCU) for Oracle Identity Management components         Installing O ...

  6. Oracle Inventory Management Application Program Interface ( APIs) (Doc ID 729998.1)

    In this Document Goal Solution References APPLIES TO: Oracle Inventory Management - Version 12.0.0 a ...

  7. Oracle Metadata Management (OMM)元数据管理 12.2.1发布

    元数据管理元数据管理是解决大量关键业务和技术挑战的基础,这些挑战包括元数据实体有多少,上游数据变化的影响,在浏览器中提供友好的分析展现界面,或提供企业范围内的元数据现状分析和改进视图.OMM是一款基于 ...

  8. Oracle DBA 的常用Unix参考手册(二)

    9.AIX下显示CPU数量    # lsdev -C|grep Process|wc -l10.Solaris下显示CPU数量# psrinfo -v|grep "Status of pr ...

  9. 并发处理 - 配置文件"并发:报表访问层"的设置 (Doc ID 1625757.1)

    文档内容   目标   解决方案 适用于: Oracle Concurrent Processing - 版本 12.0.0 到 12.2 [发行版 12 到 12.2] 本文档所含信息适用于所有平台 ...

随机推荐

  1. 面试前的准备---C#知识点回顾----01

    过完年来,准备找份新工作,虽然手里的工作不错,但树挪死,人挪活.咱不能一直在一个坑里生活一辈子,外面的世界毕竟是很美好的. 为了能正常的找到自己中意的工作,最近是将所有的基础知识拿出来复习了一次.仅作 ...

  2. 配置Apache2 管理 SVN

    软件环境:CentOS-7-x86_64 1.安装 mod_dav_svn   模块 2.在Apache2下增加管理配置,如: cd /etc/httpd/conf.d vim subversion. ...

  3. HDU 1046 - Gridland

    果然是数学题 #include <iostream> #include <cstdio> #include <cmath> using namespace std; ...

  4. JavaMail发送简单邮件

    非常简单的发送邮件实现,网上有很多啦,但还是自己写写记录下吧. package cn.jmail.test; import java.util.Properties; import javax.mai ...

  5. 在Win8上安装pyinstaller打包python成为可执行文件

    首先我使用的电脑系统是: Windows-8-6.2.9200 Python的版本是: 2.7.8 默认已安装python2.7且设置好了环境变量. 仅为个人记录,非教程. 首先先安装pip: 首先先 ...

  6. python 调用shell或windows命令

    目前使用到的有两种方式:os.system()和os.popen() import os os.system('cd e:cjx') #调用后返回执行结果状态 如果想获得返回结果,则使用以下方式: i ...

  7. gdal vc++ 配置说明

      1在VC中,打开菜Tool-Option,在Directories页面中的Library files中和Include files中分别添加GDAL的LIB文件目录和INCLUDE文件目录2打开菜 ...

  8. opencv菜鸟学习之旅cvNorm

    Norm 计算数组的绝对范数, 绝对差分范数或者相对差分范数 double cvNorm( const CvArr* arr1, const CvArr* arr2=NULL, int norm_ty ...

  9. VMware网络模式介绍(下篇)

    VMware网络模式介绍 VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式). Bridged 模式: 在桥接模式下,VMwa ...

  10. 如何让FPGA中的SPI与其他模块互动起来

    在上一篇文章<FPGA的SPI从机模块实现>中,已经实现了SPI的从机模块,如何通过SPI总线与FPGA内部其他模块进行通信,是本文的主要讨论内容. 一. 新建FPGA内部DAC控制模块 ...