惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
博客园 - 【当耐特】
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Announcements
Recent Announcements
D
Docker
GbyAI
GbyAI
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
The Cloudflare Blog
雷峰网
雷峰网
A
About on SuperTechFans
小众软件
小众软件
博客园 - Franky
博客园 - 聂微东
F
Full Disclosure
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
MongoDB | Blog
MongoDB | Blog
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
V2EX
Engineering at Meta
Engineering at Meta
宝玉的分享
宝玉的分享
aimingoo的专栏
aimingoo的专栏
量子位
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
罗磊的独立博客
Martin Fowler
Martin Fowler
D
DataBreaches.Net
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Secure Thoughts
Project Zero
Project Zero
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tailwind CSS Blog
S
Schneier on Security
Blog — PlanetScale
Blog — PlanetScale
The Hacker News
The Hacker News
Spread Privacy
Spread Privacy
Security Latest
Security Latest
NISL@THU
NISL@THU
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
CXSECURITY Database RSS Feed - CXSecurity.com
J
Java Code Geeks

博客园 - My Data Support

用户中心 - 博客园 ORACLE版本说明 ORACLE KILL回话 MOS文章分类整理 如何在 SQL Server 2005 实例之间传输登录和密码 动态修改MYSQL配置参数 只导出表结构的SQL语句 查询大字段对象脚本 BMC监控的一个坑 RAC环境下创建本地数据文件的解决方法 如何清理监听日志 RMAN基于时间点的恢复 RAC一个节点添加本地监听地址 ORACLE坏块检查 远程访问数据库查询数据量一大就Hang 什么时候会刷新备库控制文件refresh the standby database control file? Why AIXTHREAD_SCOPE Should Be Set To 'S' On AIX 在一个RAC集群中最多支持多少节点 Database name和SID
Oracle Semaphore Management in UNIX Administration
My Data Support · 2013-09-25 · via 博客园 - My Data Support

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 on Managing 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