2008年5月23日星期五

Oracle 10g在solaris 10下的自动运行脚本 - sery - 51CTO技术博客-领先的IT技术博客

 

Oracle 10g在solaris 10下的自动运行脚本


2007-05-24 13:05:49

标签:oracle solaris 脚本 10g [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://sery.blog.51cto.com/10037/27896

Oracle 10gsolaris 10下的自动运行脚本

作者:田逸(sery@163.com)发表在http://os.51cto.com/art/200705/47777.htm

Solaris 10使用了SMF(服务管理设施)来集中管理各项系统及网络服务,其目的是降低系统管理的难度和降低系统出错的几率。实践表明,通过SMF管理平台来配置和管理服务,还是十分麻烦的,例如要把一个用户自己订制安装的第三方软件配置到SMF里进行管理,要做很多的工作;另外,如果某个服务出现故障,将涉及服务本身和SMF这两方面,这样恢复起来难度相应增大。个人偏见:系统管理的目标是越简单越好—部署容易、维护简单及恢复快速。正好solaris 10系统有一个oracle 10g,就用它来做例子,来配置一个 oracle的自动运行脚本。

先介绍一下系统环境:

系统版本

SunOS sery 5.10 Generic_118855-33 i86pc i386 i86pc

Oracle 版本

racle Database 10g Enterprise Edition Release 10.2.0.2.0 - Prod

Oracle 安装路径

/opt/oracle/product/10.2/db_1

dbstart 路径

/opt/oracle/product/10.2/db_1/bin/dbstart

Oracle 自带一个脚本dbstart,它的用途就是用来制作自动运行脚本。在没有启动oracle实例之前,我们先手动运行脚本dbstart:

-bash-3.00$ dbstart

ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener

Usage: /opt/oracle/product/10.2/db_1/bin/dbstart ORACLE_HOME

提示没有设置ORACL_HOME_LISTNER,接着给出这个命令的使用方法。用ps –aef | grep ora看oracle相关进程是否起来,哦,没有起来!修改文件dbstart,找到ORACL_HOME_LISTNER这一行(还好,只有唯一的一行),它的默认值为“$1”,表示接受一个位置参数的意思,既然程序需要手动加位置参数ORACLE_HOME,我们不妨把“$1”直接用“ORACLE_HOME”替换掉,即 ORACLE_HOME_LISTNER=$1 -à ORACLE_HOME_LISTNER=$ORACLE_HOME,保存后再来执行脚本dbstart,顺利执行了,

-bash-3.00$ dbstart

-bash-3.00$ ps -aef | grep ora | grep -v grep

oracle 964 552 0 06:40:17 pts/1 0:00 ps -aef

oracle 552 546 0 06:08:08 pts/1 0:00 -bash

oracle 696 1 0 06:22:25 ? 0:00 /opt/oracle/product/10.2/db_1/bin/tnslsnr LISTENER –inherit //监听器起来了

但没有oracle进程,只有oracle监听器起来了。还有一个文件/var/opt/oracle/oratab修要修改,这个文件是oracle安装过程中,手动执行root.sh被创建的。打开这个文件,有效的配置只有一行,下面是某个系统上的输出:

sery:/opt/oracle/product/10.2/db_1:N

根据注释的提示,我们需要把它最后一个字段(以冒号“:”为字段分割符)的值由“N”改为“Y”,保存后再来执行dbstart &。

-bash-3.00$ dbstart

Processing Database instance "sery": log file /opt/oracle/product/10.2/db_1/startup.log

-bash-3.00$ ps -eaf | grep ora

oracle 1175 1 0 06:54:35 ? 0:00 ora_j001_sery

oracle 1173 1 1 06:54:35 ? 0:01 ora_j000_sery

oracle 1179 1 0 06:54:35 ? 0:00 ora_j003_sery

oracle 1177 1 0 06:54:35 ? 0:00 ora_j002_sery

……(省略若干输出)

这时,oracle实例运行起来了。根据这个经验,我们顺便把文件dbshut这个文件也修改了。

一切准备就绪,就可以开始写运行级别的自动脚本了。在运行级别3的目录创建文件/etc/rc3.d/S33dbstart,其内容如下:

#!/bin/bash

su - oracle -c /opt/oracle/product/10.2/db_1/bin/dbstart& //少选项-c将不会执行这个脚本,-c command

保存后在给它执行权限。同理在运行级别S的目录建文件 /etc/rcS.d/K33dbshut,文件内容如下:

#!/bin/bash

su - oracle -c /opt/oracle/product/10.2/db_1/bin/dbshut &

执行命令init 6重启solaris 10,看oracle实例及监听器是否在正常运行。当然,如果不用运行级别而用服务管理设施SMF来管理oracle服务的话,还有好多步骤修要完成,有兴趣的可以去试试。

2007-5-18

本文出自 “sery” 博客,请务必保留此出处http://sery.blog.51cto.com/10037/27896

本文出自 51CTO.COM技术博客

Oracle 10g在solaris 10下的自动运行脚本 - sery - 51CTO技术博客-领先的IT技术博客

2008年5月7日星期三

Ethereal简介 - 网络技术 - 其实我一点也不NB

 

Ethereal简介

Ethereal是一个开放源码的网络分析系统,也是是目前最好的开放源码的网络协议分析器,支持Linux和windows平台。Ethereal起初由Gerald Combs开发,随后由一个松散的etheral团队组织进行维护开发。它目前所提供的强大的协议分析功能完全可以媲美商业的网络分析系统,自从1998年发布最早的0.2版本至今,大量的志愿者为ethereal添加新的协议解析器,如今ethereal已经支持五百多种协议解析。很难想象如此多的人开发的代码可以很好的融入系统中;并且在系统中加入一个新的协议解析器很简单,一个不了解系统的结构的新手也可以根据留出的接口进行自己的协议开发。这都归功于ehereal良好的设计结构。事实上由于网络上各种协议种类繁多,各种新的协议层出不穷。一个好的协议分析器必需有很好的可扩展性和结构。这样才能适应网络发展的需要不断加入新的协议解析器。   Ethereal的捕包平台
网络分析系统首先依赖于一套捕捉网络数据包的函数库。这套函数库工作在在网络分析系统模块的最底层。作用是从网卡取得数据包或者根据过滤规则取出数据包的子集,再转交给上层分析模块。从协议上说,这套函数库将一个数据包从链路层接收,至少将其还原至传输层以上,以供上层分析。
在Linux系统中, 1992年Lawrence Berkeley Lab的Steven McCanne和Van Jacobson提出了包过滤器的一种的实现,BPF(BSD Packet Filter)。Libpcap是一个基于BPF的开放源码的捕包函数库。现有的大部分Linux捕包系统都是基于这套函数库或者是在它基础上做一些针对性的改进
在window系统中,意大利人Fulvio Risso和Loris Degioanni提出并实现了Winpcap函数库,作者称之为NPF。由于NPF的主要思想就是来源于BPF,它的设计目标就是为windows
系统提供一个功能强大的开发式数据包捕获平台,希望在Linux系统中的网络分析工具经过简单编译以后也可以移植到windows中,因此这两种捕包架构是非常现实的。就实现来说提供的函数调用接口也是一致的。
   ethereal网络分析系统也需要一个底层的抓包平台,在Linux中是采用Libpcap函数库抓包,在windows系统中采用winpcap函数库抓包
层次化的数据包协议分析方法
取得捕包函数捕回的数据包后就需要进行协议分析和协议还原工作了。由于OSI的7层协议模型,协议数据是从上到下封装后发送的。对于协议分析需要从下至上进行。首先对网络层的协议识别后进行组包还原然后脱去网络层协议头。将里面的数据交给传输层分析,这样一直进行下去直到应用层
     Ip
     |  \
   Tcp  udp
    |    \
  HTTP   TFTP
由于网络协议种类很多,就ethereal所识别的500多种协议来说,为了使协议和协议间层次关系明显。从而对数据流里的各个层次的协议能够逐层处理。Ethereal系统采用了协议树的方式。上图就是一个简单的协议树。如果协议A的所有数据都是封装在协议B里的,那么这个协议A就是协议B是另外一个协议的儿子节点。我们将最低层的无结构数据流作为根接点。那么具有相同父节点的协议成为兄弟节点。那么这些拥有同样父协议兄弟节点协议如何互相区分了?ethereal系统采用协议的特征字来识别。每个协议会注册自己的特征字。这些特征字给自己的子节点协议提供可以互相区分开来的标识。比如tcp协议的port字段注册后。 Tcp.port=21就可以认为是ftp协议,特征字可以是协议规范定义的任何一个字段。比如ip协议就可以定义proto字段为一个特征字。
在ethereal中注册一个协议解析器首先要指出它的父协议是什么。另外还要指出自己区别于父节点下的兄弟接点协议的特征。比如ftp协议。在ethereal中他的父接点是tcp协议,它的特征就是tcp协议的port字段为21。
这样当一个端口为21的tcp数据流来到时。首先由tcp协议注册的解析模块处理,处理完之后通过查找协议树找到自己协议下面的子协议,判断应该由那个子协议来执行,找到正确的子协议后,就转交给ftp注册的解析模块处理。这样由根节点开始一层层解析下去。
由于采用了协议树加特征字的设计,这个系统在协议解析上由了很强的扩展性,增加一个协议解析器只需要将解析函数挂到协议树的相应节点上即可。

软件下载:http://sccrc.onlinedown.net/down/ethereal-setup-0.99.0.exe

官方网站:http://www.ethereal.com/

Ethereal简介 - 网络技术 - 其实我一点也不NB