??xml version="1.0" encoding="utf-8" standalone="yes"?>黄页网站在线观看,日本欧美精品久久久,午夜免费久久久久http://www.aygfsteel.com/darkbluefeeling/category/7131.htmlq来聊聊~~~~zh-cnTue, 27 Feb 2007 15:52:08 GMTTue, 27 Feb 2007 15:52:08 GMT60提高 Linux ?socket 性能http://www.aygfsteel.com/darkbluefeeling/archive/2006/02/15/30741.htmlp色心?/dc:creator>p色心?/author>Wed, 15 Feb 2006 01:34:00 GMThttp://www.aygfsteel.com/darkbluefeeling/archive/2006/02/15/30741.htmlhttp://www.aygfsteel.com/darkbluefeeling/comments/30741.htmlhttp://www.aygfsteel.com/darkbluefeeling/archive/2006/02/15/30741.html#Feedback0http://www.aygfsteel.com/darkbluefeeling/comments/commentRss/30741.htmlhttp://www.aygfsteel.com/darkbluefeeling/services/trackbacks/30741.html

提高 Linux ?socket 性能

加速网l应用程序的 4 U方?/P> developerWorks
 

未显C需?JavaScript 的文档选项


 


U别: 中

M. Tim Jones Q资pY件工E师QEmulex

2006 q?2 ?13 ?/P>

使用 Sockets APIQ我们可以开发客h和服务器应用E序Q它们可以在本地|络上进行通信Q也可以通过 Internet 在全球范围内q行通信。与其他 API 一P您可以通过一些方法?Sockets APIQ从而提?Socket 的性能Q或者限?Socket 的性能。本文探索了 4 U?Sockets API 来榨取应用程序的最大性能q对 GNU/Linux] 环境q行优化从而达到最好结果的Ҏ?/BLOCKQUOTE>

在开?socket 应用E序Ӟ首要d通常是确保可靠性ƈ满一些特定的需求。利用本文中l出?4 个提C,您就可以从头开始ؓ实现最x能来设计ƈ开?socket E序。本文内容包括对?Sockets API 的用、两个可以提高性能?socket 选项以及 GNU/Linux 优化?/P>

Z能够开发性能卓越的应用程序,请遵循以下技巧:

  • 最化报文传输的g时?
  • 最化pȝ调用的负载?
  • ?Bandwidth Delay Product 调节 TCP H口?
  • 动态优?GNU/Linux TCP/IP 栈?/LI>

技?1. 最化报文传输的g?/FONT>

在通过 TCP socket q行通信Ӟ数据都拆分成了数据块Q这样它们就可以装到给定连接的 TCP payloadQ指 TCP 数据包中的有效负P中了。TCP payload 的大取决于几个因素Q例如最大报文长度和路径Q,但是q些因素在连接发h都是已知的。ؓ了达到最好的性能Q我们的目标是用尽可能多的可用数据来填充每个报文。当没有_的数据来填充 payload Ӟ也称?I>最大报文段长度Qmaximum segment sizeQ?/I> ?MSSQ,TCP ׃采用 Nagle 法自动一些小的缓冲区q接C个报文段中。这样可以通过最化所发送的报文的数量来提高应用E序的效率,q减L体的|络拥塞问题?/P>

管 John Nagle 的算法可以通过这些数据连接成更大的报文来最化所发送的报文的数量,但是有时您可能希望只发送一些较的报文。一个简单的例子?telnet E序Q它让用户可以与q程pȝq行交互Q这通常都是通过一?shell 来进行的。如果用戯要求用发送报文之前输入的字符来填充某个报文段Q那么这U方法就l对不能满我们的需要?/P>

另外一个例子是 HTTP 协议。通常Q客h览器会产生一个小hQ一?HTTP h消息Q,然后 Web 服务器就会返回一个更大的响应QWeb 面Q?/P>

解决Ҏ

您应该考虑的第一件事情是 Nagle 法满一U需求。由于这U算法对数据q行合ƈQ试图构成一个完整的 TCP 报文D,因此它会引入一些g时。但是这U算法可以最化在线路上发送的报文的数量,因此可以最化|络拥塞的问题?/P>

但是在需要最化传输延时的情况中QSockets API 可以提供一U解x案。要用 Nagle 法Q您可以讄 TCP_NODELAY socket 选项Q如清单 1 所C?/P>
清单 1. ?TCP socket 用 Nagle 法

int sock, flag, ret;

/* Create new stream socket */
sock = socket( AF_INET, SOCK_STREAM, 0 );

/* Disable the Nagle (TCP No Delay) algorithm */
flag = 1;
ret = setsockopt( sock, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(flag) );

if (ret == -1) {
  printf("Couldn't setsockopt(TCP_NODELAY)\n");
  exit(-1);
}

提示Q?/B>使用 Samba 的实验表明,在从 Microsoft] Windows] 服务器上?Samba 驱动器上d数据Ӟ用 Nagle 法几乎可以加倍提高读性能?/P>

回页?/FONT>


技?2. 最化pȝ调用的负?/FONT>

M时候通过一?socket 来读写数据时Q您都是在用一?I>pȝ调用Qsystem callQ?/I>。这个调用(例如 read ?writeQ跨了用户I间应用E序与内核的边界。另外,在进入内怹前,您的调用会通过 C 库来q入内核中的一个通用函数Q?CODE>system_call()Q。从 system_call() 中,q个调用会进入文件系l层Q内怼在这儿确定正在处理的是哪U类型的讑֤。最后,调用会进?socket 层,数据是在这里进行读取或q行排队从而通过 socket q行传输的(q涉及数据的副本Q?/P>

q个q程说明pȝ调用不仅仅是在应用程序和内核中进行操作的Q而且q要l过应用E序和内怸的很多层ơ。这个过E耗费的资源很高,因此调用ơ数多Q通过q个调用链进行的工作所需要的旉p长,应用E序的性能也就低?/P>

׃我们无法避免q些pȝ调用Q因此惟一的选择是最化使用q些调用的次数。幸q的是,我们可以对这个过E进行控制?/P>

解决Ҏ

在将数据写入一?socket Ӟ量一ơ写入所有的数据Q而不是执行多ơ写数据的操作。对于读操作来说Q最好传入可以支持的最大缓冲区Q因为如果没有够多的数据,内核也会试图填充整个~冲区(另外q需要保?TCP 的通告H口为打开状态)。这P您就可以最化调用的次敎ͼq可以实现更好的整体性能?/P>

回页?/FONT>


技?3. ?Bandwidth Delay Product 调节 TCP H口

TCP 的性能取决于几个方面的因素。两个最重要的因素是链接带宽Qlink bandwidthQ?/I>Q报文在|络上传输的速率Q和 往q时_round-trip timeQ?/I> ?RTTQ发送报文与接收到另一端的响应之间的gӞ。这两个值确定了UCؓ Bandwidth Delay ProductQBDPQ的内容?/P>

l定链接带宽?RTT 之后Q您可以计出 BDP 的gQ不q这代表什么意义呢QBDP l出了一U简单的Ҏ来计理Z最优的 TCP socket ~冲区大(其中保存了排队等待传输和{待应用E序接收的数据)。如果缓冲区太小Q那?TCP H口׃能完全打开Q这会对性能造成限制。如果缓冲区太大Q那么宝늚内存资源׃造成费。如果您讄的缓冲区大小正好合适,那么可以完全利用可用的带宽。下面我们来看一个例子:

BDP = link_bandwidth * RTT

如果应用E序是通过一?100Mbps 的局域网q行通信Q其 RRT ?50 msQ那?BDP 是Q?/P>

100MBps * 0.050 sec / 8 = 0.625MB = 625KB

注意Q?/B>此处除以 8 是将位{换成通信使用的字节?/P>

因此Q我们可以将 TCP H口讄?BDP ?1.25MB。但是在 Linux 2.6 上默认的 TCP H口大小?110KBQ这会将q接的带宽限制ؓ 2.2MBpsQ计方法如下:

throughput = window_size / RTT

110KB / 0.050 = 2.2MBps

如果使用上面计算的窗口大,我们得到的带宽就?12.5MBpsQ计方法如下:

625KB / 0.050 = 12.5MBps

差别的确很大Qƈ且可以ؓ socket 提供更大的吞吐量。因此现在您q道如何ؓ您的 socket 计算最优的~冲区大了。但是又该如何来改变呢?

解决Ҏ

Sockets API 提供了几?socket 选项Q其中两个可以用于修?socket 的发送和接收~冲区的大小。清?2 展示了如何?SO_SNDBUF ?SO_RCVBUF 选项来调整发送和接收~冲区的大小?/P>

注意Q?/B>管 socket ~冲区的大小定了通告 TCP H口的大,但是 TCP q在通告H口内维护了一个拥塞窗口。因此,׃q个拥塞H口的存在,l定?socket 可能永远都不会利用最大的通告H口?/P>
清单 2. 手动讄发送和接收 socket ~冲区大?/B>

int ret, sock, sock_buf_size;

sock = socket( AF_INET, SOCK_STREAM, 0 );

sock_buf_size = BDP;

ret = setsockopt( sock, SOL_SOCKET, SO_SNDBUF,
                   (char *)&sock_buf_size, sizeof(sock_buf_size) );

ret = setsockopt( sock, SOL_SOCKET, SO_RCVBUF,
                   (char *)&sock_buf_size, sizeof(sock_buf_size) );

?Linux 2.6 内核中,发送缓冲区的大是p用用h定义的,但是接收~冲Z自动加倍。您可以q行 getsockopt 调用来验证每个缓冲区的大?/P>
巨Qjumbo frameQ?/B>

我们q可以考虑包的大从 1,500 字节修改?9,000 字节Q称为巨帧)。在本地|络中可以通过讄最大传输单元(Maximum Transmit UnitQMTUQ来讄巨Q这可以极大地提高性能?/P>

?window scaling 来说QTCP 最初可以支持最大ؓ 64KB 的窗口(使用 16 位的值来定义H口的大)。采?window scalingQRFC 1323Q扩展之后,您就可以使用 32 位的值来表示H口的大了。GNU/Linux 中提供的 TCP/IP 栈可以支持这个选项Q以及其他一些选项Q?/P>

提示Q?/B>Linux 内核q包括了自动对这?socket ~冲行优化的能力Q请参阅下面 ?1 中的 tcp_rmem ?tcp_wmemQ,不过q些选项会对整个栈造成影响。如果您只需要ؓ一个连接或一c连接调节窗口的大小Q那么这U机制也怸能满x的需要了?/P>

回页?/FONT>


技?4. 动态优?GNU/Linux TCP/IP ?/FONT>

标准?GNU/Linux 发行版试囑֯各种部v情况都进行优化。这意味着标准的发行版可能q没有对您的环境q行Ҏ的优化?/P>

解决Ҏ

GNU/Linux 提供了很多可调节的内核参敎ͼ您可以用这些参Cؓ您自q用途对操作pȝq行动态配|。下面我们来了解一下媄?socket 性能的一些更重要的选项?/P>

?/proc 虚拟文gpȝ中存在一些可调节的内核参数。这个文件系l中的每个文仉表示一个或多个参数Q它们可以通过 cat 工具q行dQ或使用 echo 命oq行修改。清?3 展示了如何查询或启用一个可调节的参敎ͼ在这U情况中Q可以在 TCP/IP 栈中启用 IP 转发Q?/P>
清单 3. 调优Q在 TCP/IP 栈中启用 IP 转发

[root@camus]# cat /proc/sys/net/ipv4/ip_forward
0
[root@camus]# echo "1" > /poc/sys/net/ipv4/ip_forward
[root@camus]# cat /proc/sys/net/ipv4/ip_forward
1
[root@camus]#

?1 l出了几个可调节的参敎ͼ它们可以帮助您提?Linux TCP/IP 栈的性能?/P>
?1. TCP/IP 栈性能使用的可调节内核参数
可调节的参数 默认?/TH> 选项说明
/proc/sys/net/core/rmem_default "110592" 定义默认的接收窗口大;对于更大?BDP 来说Q这个大也应该更大?/TD>
/proc/sys/net/core/rmem_max "110592" 定义接收H口的最大大;对于更大?BDP 来说Q这个大也应该更大?/TD>
/proc/sys/net/core/wmem_default "110592" 定义默认的发送窗口大;对于更大?BDP 来说Q这个大也应该更大?/TD>
/proc/sys/net/core/wmem_max "110592" 定义发送窗口的最大大;对于更大?BDP 来说Q这个大也应该更大?/TD>
/proc/sys/net/ipv4/tcp_window_scaling "1" 启用 RFC 1323 定义?window scalingQ要支持过 64KB 的窗口,必须启用该倹{?/TD>
/proc/sys/net/ipv4/tcp_sack "1" 启用有选择的应{(Selective AcknowledgmentQ,q可以通过有选择地应{ؕ序接收到的报文来提高性能Q这样可以让发送者只发送丢q报文D)Q(对于q域|通信来说Q这个选项应该启用Q但是这会增加对 CPU 的占用?/TD>
/proc/sys/net/ipv4/tcp_fack "1" 启用转发应答QForward AcknowledgmentQ,q可以进行有选择应答QSACKQ从而减拥塞情늚发生Q这个选项也应该启用?/TD>
/proc/sys/net/ipv4/tcp_timestamps "1" 以一U比重发时更精的ҎQ请参阅 RFC 1323Q来启用?RTT 的计;Z实现更好的性能应该启用q个选项?/TD>
/proc/sys/net/ipv4/tcp_mem "24576 32768 49152" 定 TCP 栈应该如何反映内存用;每个值的单位都是内存(通常?4KBQ。第一个值是内存使用的下限。第二个值是内存压力模式开始对~冲Z用应用压力的上限。第三个值是内存上限。在q个层次上可以将报文丢弃Q从而减对内存的用。对于较大的 BDP 可以增大q些|但是要记住,其单位是内存,而不是字节)?/TD>
/proc/sys/net/ipv4/tcp_wmem "4096 16384 131072" 动调优定义每?socket 使用的内存。第一个值是?socket 的发送缓冲区分配的最字节数。第二个值是默认|该g?wmem_default 覆盖Q,~冲区在pȝ负蝲不重的情况下可以增长到这个倹{第三个值是发送缓冲区I间的最大字节数Q该g?wmem_max 覆盖Q?/TD>
/proc/sys/net/ipv4/tcp_rmem "4096 87380 174760" ?tcp_wmem cMQ不q它表示的是动调优所使用的接收缓冲区的倹{?/TD>
/proc/sys/net/ipv4/tcp_low_latency "0" 允许 TCP/IP 栈适应在高吞吐量情况下低g时的情况Q这个选项应该用?/TD>
/proc/sys/net/ipv4/tcp_westwood "0" 启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估Qƈ试图对带宽的整体利用情况q行优化Q对?WAN 通信来说应该启用q个选项?/TD>
/proc/sys/net/ipv4/tcp_bic "1" 为快速长距离|络启用 Binary Increase CongestionQ这样可以更好地利用?GB 速度q行操作的链接;对于 WAN 通信应该启用q个选项?/TD>

与Q何调优努力一P最好的Ҏ实际上就是不断进行实验。您的应用程序的行ؓ、处理器的速度以及可用内存的多都会媄响到q些参数影响性能的方式。在某些情况中,您认为有益的操作可能恰恰是有害的Q反之亦Ӟ。因此,我们需要逐一试验各个选项Q然后检查每个选项的结果。换而言之,我们需要相信自ql验Q但是对每次修改都要q行验证?/P>

提示Q?/B>下面介绍一个有x久性配|的问题。注意,如果您重新启动了 GNU/Linux pȝQ那么您所需要的M可调节的内核参数都会恢复成默认倹{ؓ了将您所讄的g些参数的默认|可以使用 /etc/sysctl.conf 在系l启动时这些参数配|成您所讄的倹{?/P>

回页?/FONT>


GNU/Linux 工具

GNU/Linux Ҏ非常有吸引力Q这是因为其中有很多工具可以使用。尽其中大部分都是命o行工P但是它们都非常有用,而且非常直观。GNU/Linux 提供了几个工?—?有些?GNU/Linux 自己提供的,有些是开放源码Y?—?用于调试|络应用E序Q测量带?吞吐量,以及查链接的使用情况?/P>

?2 列出最有用的几?GNU/Linux 工具Q以及它们的用途。表 3 列出?GNU/Linux 发行版没有提供的几个有用工具。有兌 3 中工L更多信息请参?参考资?/FONT>?/P>
?2. M GNU/Linux 发行版中都可以找到的工具
GNU/Linux 工具 用?/TH>
ping q是用于查主机的可用性的最常用的工P但是也可以用于识别带宽g时品计的 RTT?/TD>
traceroute 打印某个q接到网l主机所l过的包括一pd路由器和|关的\径(路由Q,从而确定每?hop 之间的g时?/TD>
netstat 定有关|络子系l、协议和q接的各U统计信息?/TD>
tcpdump 昄一个或多个q接的协议的报文跟t信息;其中q包括时间信息,您可以用这些信息来研究不同协议服务的报文时间?/TD>

?3. GNU/Linux 发行版中没有提供的有用性能工具
GNU/Linux 工具 用?/TH>
netlog 为应用程序提供一些有关网l性能斚w的信息?/TD>
nettimer 为瓶颈链接带宽生成一个度量标准;可以用于协议的自动优化?/TD>
Ethereal 以一个易于用的囑Ş化界面提供了 tcpumpQ报文跟t)的特性?/TD>
iperf 量 TCP ?UDP 的网l性能Q测量最大带宽,q汇报g时和数据报的丢失情况?/TD>



回页?/FONT>


l束?/FONT>

试使用本文中介l的技巧和技术来提高 socket 应用E序的性能Q包括通过用 Nagle 法来减传输gӞ通过讄~冲区的大小来提?socket 带宽的利用,通过最化pȝ调用的个数来降低pȝ调用的负载,以及使用可调节的内核参数来优?Linux ?TCP/IP 栈?/P>

在进行优化时q需要考虑应用E序的特性。例如,您的应用E序是基?LAN 的还是会通过 Internet q行通信Q如果您的应用程序仅仅会?LAN 内部q行操作Q那么增?socket ~冲区的大小可能不会带来太大的改q,不过启用巨却一定会极大地改q性能Q?/P>

最后,q要使用 tcpdump ?Ethereal 来检查优化之后的l果。在报文U看到的变化可以帮助展示使用q些技术进行优化之后所取得的成功效果?/P>

回页?/FONT>


参考资?

学习

获得产品和技?/B>

讨论


]]>
Oracle Database 10g (10.1.0.2) Installation On RedHat Advanced Server 4.0http://www.aygfsteel.com/darkbluefeeling/archive/2006/01/19/28647.htmlp色心?/dc:creator>p色心?/author>Thu, 19 Jan 2006 06:08:00 GMThttp://www.aygfsteel.com/darkbluefeeling/archive/2006/01/19/28647.htmlhttp://www.aygfsteel.com/darkbluefeeling/comments/28647.htmlhttp://www.aygfsteel.com/darkbluefeeling/archive/2006/01/19/28647.html#Feedback0http://www.aygfsteel.com/darkbluefeeling/comments/commentRss/28647.htmlhttp://www.aygfsteel.com/darkbluefeeling/services/trackbacks/28647.html

Oracle Database 10g (10.1.0.2) Installation On RedHat Advanced Server 4.0

In this article I'll describe the installation of Oracle Database 10g (10.1.0.2) on RedHat Advanced Server 4.0. The article is based on a server installation with a minimum of 2G swap, secure Linux disabled and the following package groups installed:
  • X Window System
  • GNOME Desktop Environment
  • Editors
  • Graphical Internet
  • Text-based Internet
  • Server Configuration Tools
  • Development Tools
  • Administration Tools
  • System Tools
Alternative installations may require additional packages to be loaded in addition to the ones listed below.

Download Software

Download the following software:

Unpack Files

First unzip the files:
gunzip ship.db.cpio.gz
Next unpack the contents of the files:
cpio -idmv < ship.db.cpio
You should now have a single directory (Disk1) containing installation files.

Hosts File

The /etc/hosts file must contain a fully qualified name for the server:
<IP-address>  <fully-qualified-machine-name>  <machine-name>

Set Kernel Parameters

Add the following lines to the /etc/sysctl.conf file:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
Run the following command to change the current kernel parameters:
/sbin/sysctl -p
Add the following lines to the /etc/security/limits.conf file:
*               soft    nproc   2047
*               hard    nproc   16384
*               soft    nofile  1024
*               hard    nofile  65536
Add the following line to the /etc/pam.d/login file, if it does not already exist:
session    required     /lib/security/pam_limits.so
Note by Kent Anderson: In the event that pam_limits.so cannot set privilidged limit settings see Bug 115442.

Disable secure linux by editing the /etc/selinux/config file, making sure the SELINUX flag is set as follows:
SELINUX=disabled
Alternatively, this alteration can be done using the GUI tool (Applications > System Settings > Security Level). Click on the SELinux tab and disable the feature.

Setup

Install the following packages:
# From RedHat AS4 Disk 2
cd /media/cdrom/RedHat/RPMS
rpm -Uvh setarch-1.6-1.i386.rpm
rpm -Uvh compat-libstdc++-33-3.2.3-47.3.i386.rpm

# From RedHat AS4 Disk 3
cd /media/cdrom/RedHat/RPMS
rpm -Uvh openmotif-2.2.3-6.RHEL4.2.i386.rpm
rpm -Uvh compat-db-4.1.25-9.i386.rpm

# From RedHat AS4 Disk 4
cd /media/cdrom/RedHat/RPMS
rpm -Uvh compat-gcc-32-3.2.3-47.3.i386.rpm
rpm -Uvh compat-gcc-32-c++-3.2.3-47.3.i386.rpm
Create the new groups and users:
groupadd oinstall
groupadd dba
groupadd oper

useradd -g oinstall -G dba oracle
passwd oracle
Create the directories in which the Oracle software will be installed:
mkdir -p /u01/app/oracle/product/10.1.0/db_1
chown -R oracle.oinstall /u01
Login as root and issue the following command:
xhost +<machine-name>
Edit the /etc/redhat-release file replacing the current release information (Red Hat Enterprise Linux AS release 4 (Nahant)) with the following:
redhat-3
Login as the oracle user and add the following lines at the end of the .bash_profile file:
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1; export ORACLE_HOME
ORACLE_SID=TSH1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
#LD_ASSUME_KERNEL=2.4.1; export LD_ASSUME_KERNEL

if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
  else
    ulimit -u 16384 -n 65536
  fi
fi

Installation

Log into the oracle user. If you are using X emulation then set the DISPLAY environmental variable:
DISPLAY=<machine-name>:0.0; export DISPLAY
Start the Oracle Universal Installer (OUI) by issuing the following command in the Disk1 directory:
./runInstaller
During the installation enter the appropriate ORACLE_HOME and name then continue with a "software only" installation.

Post Installation

Create a new instance using the DBCA. If you get the "ORA-27125: unable to create shared memory segment" error when using the DBCA issue the following commands as the oracle user then try again:
cd $ORACLE_HOME/bin

mv oracle oracle.bin

cat >oracle <<"EOF"
#!/bin/bash
 
export DISABLE_HUGETLBFS=1
exec $ORACLE_HOME/bin/oracle.bin $@
EOF
 
chmod +x oracle
I didn't encounter the previous issue myself, so hopefully you won't either.

Edit the /etc/redhat-release file restoring the original release information:
Red Hat Enterprise Linux AS release 4 (Nahant)
Finally edit the /etc/oratab file setting the restart flag for each instance to 'Y':
TSH1:/u01/app/oracle/product/10.1.0/db_1:Y
Create a file called /etc/init.d/dbora containing the following:
#!/bin/sh
# description: Oracle auto start-stop script.
# chkconfig: - 20 80
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the 
# Oracle database in ORA_HOME.
ORA_HOME=/u01/app/oracle/product/10.1.0/db_1
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
then
    echo "Oracle startup: cannot start"
    exit
fi
case "$1" in
    'start')
        # Start the Oracle databases:
        # The following command assumes that the oracle login 
        # will not prompt the user for any values
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
        su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
        ;;
    'stop')
        # Stop the Oracle databases:
        # The following command assumes that the oracle login 
        # will not prompt the user for any values
        su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
        su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
        ;;
esac
Use chmod to set the privileges to 750:
chmod 750 /etc/init.d/dbora
Link the file into the appropriate run-level script directories:
ln -s /etc/init.d/dbora /etc/rc0.d/K10dbora
ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora
Associate the dbora service with the appropriate run levels:
chkconfig --level 345 dbora on
The relevant instances should now startup/shutdown automatically at system startup/shutdown.

For more information see:
Hope this helps. Regards Tim...

Back to the Top.


]]>
Installing Oracle 9i on Red Hat Linux (RHEL 4, 3, 2.1, RH 9, 8.0, 7.3, 7.2, 7.1) x86http://www.aygfsteel.com/darkbluefeeling/archive/2006/01/19/28644.htmlp色心?/dc:creator>p色心?/author>Thu, 19 Jan 2006 05:51:00 GMThttp://www.aygfsteel.com/darkbluefeeling/archive/2006/01/19/28644.htmlhttp://www.aygfsteel.com/darkbluefeeling/comments/28644.htmlhttp://www.aygfsteel.com/darkbluefeeling/archive/2006/01/19/28644.html#Feedback0http://www.aygfsteel.com/darkbluefeeling/comments/commentRss/28644.htmlhttp://www.aygfsteel.com/darkbluefeeling/services/trackbacks/28644.html阅读全文

]]>
վ֩ģ壺 | | ½| ƺ| | | ǭ| ɳ| Һ| ѳ| Ӣ| ɽ| | | ũ| | ޭ| ʡ| | ʯ̨| | | | | | | ٲ| | ξ| | ԭ| üɽ| Թ| | ϳ| ³ľ| ƽ| | | Ӫ| |