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

2008年4月25日星期五

华为3928与锐捷2150之间端口汇聚的配置

锐捷2150的配置:

interface aggregatePort 1
description JiLianAP 
switchport mode trunk(如果是加入的端口是trunk模式,必须加这个)

interface fastEthernet 0/46
port-group 1
description JiLianKou-1 
switchport mode trunk
spanning-tree bpdufilter enabled
  ip dhcp snooping trust
!
interface fastEthernet 0/47
port-group 1
description JiLianKou-2 
switchport mode trunk
spanning-tree bpdufilter enabled
  ip dhcp snooping trust
!
interface fastEthernet 0/48
port-group 1
description JiLianKou-3 
switchport mode trunk
spanning-tree bpdufilter enabled
  ip dhcp snooping trust
!

 

#
link-aggregation group 1 mode manual(用manual方式就可以和锐捷上述配置正常通信)
#

#
interface Ethernet1/0/23
port link-type trunk
port trunk permit vlan all
port link-aggregation group 1
#
interface Ethernet1/0/24
port link-type trunk
port trunk permit vlan all
port link-aggregation group 1
#

 

用了AG后测试数据:

2150#show inter fa0/47 co
Interface : Fa0/47                                                           
5 minute input rate  : 1105576 bits/sec, 2032 packets/sec
5 minute output rate : 9000600 bits/sec, 1037 packets/sec
InOctets             : 200029718
InUcastPkts          : 2939505
InMulticastPkts      : 3
InBroadcastPkts      : 1865
OutOctets            : 979403645
OutUcastPkts         : 903196
OutMulticastPkts     : 981
OutBroadcastPkts     : 0
Undersize packets    : 0
Oversize packets     : 0
collisions           : 0
Fragments            : 0
Jabbers              : 0
CRC alignment errors : 0
AlignmentErrors      : 0
FCSErrors            : 0
dropped packet events (due to lack of resources): 0
packets received of length (in octets):

2150#show inter fa0/48 cou
Interface : Fa0/48                                                           
5 minute input rate  : 1614960 bits/sec, 2880 packets/sec
5 minute output rate : 93628408 bits/sec, 8745 packets/sec
InOctets             : 174371625
InUcastPkts          : 2483422
InMulticastPkts      : 0
InBroadcastPkts      : 10
OutOctets            : 12699762636
OutUcastPkts         : 9822432
OutMulticastPkts     : 116
OutBroadcastPkts     : 442
Undersize packets    : 0
Oversize packets     : 0
collisions           : 0
Fragments            : 0
Jabbers              : 0
CRC alignment errors : 0
AlignmentErrors      : 0
FCSErrors            : 0
dropped packet events (due to lack of resources): 0
packets received of length (in octets):

 

结论:加入AG的两个口都用流量,一个大,一个小,起到一定程度的负载均衡作用。

2008年4月21日星期一

论广播风暴的成因、预防及排障

 

论广播风暴的成因、预防及排障

[ 作者:佚名    转贴自:本站原创    点击数:623    更新时间:2007-10-10    文章录入:luokang

一、成因
广播风暴指过多的广播包消耗了大量的网络带宽,导致正常的数据包无法正常在网络中传送,通常指一个广播包引起了多个的响应,而每个响应又引起了多个得响应,就像滚雪球一样,把网络的所有带宽都消耗殆尽。该现象通常是由于网络环路、故障网卡、病毒等引起的。
二、预防(以CISCO catalyst switch为例)
1、首先使用网管分析你网络的baseline,这样可以明确你的网络当中正常情况下的广播包比例是多少。
2、目前绝大多数交换机都支持广播风暴抑制特性,配置了这个特性以后,你可以控制每个端口的广播包维持在特定的比例之下,这样可以保留带宽给必须的应用。
配置:(以CISCO catalyst switch为例)
Int XX
storm-control broadcast level 20.00

switch#sh storm

Interface Filter State Level Current
--------- ------------- ------- -------
Fa1/0/1 Forwarding 20.00% 0.00%
3、针对缺省STP配置无法排除的网络环路问题,利用STP的BPDUguard特性来预防广播风暴。此种环路情况示意图如下:
switch------hub(portA---portB)
Switch启用了STP,而hub则被人有意无意的用一根网线联起来,导致引起了环路。SWITCH的端口不会收到其他交换机或本交换机其他端口的BPDU,不会触发该端口的STP决策过程,也就不可能blocking该端口,这样就会引起广播风暴。我们可以利用CISCO STP的BPDUguard特性来预防这一点。
int xxx
spanning-tree bpduguard enable
***值得注意的是bpduguard可以在全局下配置,也可以在每端口的基础上配置。如果在全局下配置,则只对配置了portfast的端口起作用,如果在端口下配置,则不用配置portfast

三、排障(以CISCO catalyst switch为例)
如果网络中已经产生了网络风暴(现象通常为网络丢包、响应迟缓、时断时通等),则可以利用如下的方法来排障
1、首先确认是否是网络风暴或其他异常流量引起的网络异常,在核心交换机上
Switch>sh proc cpu | e 0.00
CPU utilization for five seconds: 19%/0%; one minute: 19%; five minutes: 19%
PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
15 20170516 76615501 263 0.31% 0.13% 0.12% 0 ARP Input
26 7383266801839439482 401 5.03% 4.70% 5.08% 0 Cat4k Mgmt HiPri
27 8870781921122570949 790 5.67% 7.50% 6.81% 0 Cat4k Mgmt LoPri
43 730060152 341404109 2138 6.15% 5.29% 5.28% 0 Spanning Tree
50 59141788 401057972 147 0.47% 0.37% 0.39% 0 IP Input
56 2832760 3795155 746 0.07% 0.03% 0.01% 0 Adj Manager
58 4525900 28130423 160 0.31% 0.25% 0.18% 0 CEF process
96 20789148 344043382 60 0.23% 0.09% 0.08% 0 Standby (HSRP)
如果交换机的CPU利用率较高,且大部分的资源都被“IP Input”进程占用,则基本可以确定网络中有大流量的数据
2、查找异常流量是从交换机的那一个端口来的:
switch #sh int | i protocol|rate|broadcasts
FastEthernet1/0/1 is up, line protocol is up (connected)
Queueing strategy: fifo
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 2000 bits/sec, 3 packets/sec
Received 241676 broadcasts (0 multicast)
如果找到一个端口的input rate非常高,且接收到的广播包也非常多,则基本可以找到来源,如果该端口下联的也是可管理的交换机,则再次执行此过程,直到找到一个连接PC或者HUB的端口
3、shutdown该端口
int xx
shutdown
4、查找产生异常流量的根源
如果是HUB环路,则拆掉环;如果是病毒,则做杀毒处理;如果是网卡异常,则更换网卡。此部分不详述。
5、确认交换机的CEF功能是否启用,如果没有,则需要启用,可以加速流量的转发
switch>sh ip cef
配置CEF:
全局模式下输入
ip cef

论广播风暴的成因、预防及排障

2008年4月18日星期五

solaris文件系统的备份与恢复 - Solaris - lovegqin

 

solaris文件系统的备份与恢复

1.备份计划:
备份介质 磁带,软盘
备份哪个文件系统
备份周期  
2.备份种类:
全盘备份 级别为0
增量备份 级别1~~9

例:周一 周二 周三 周四 周五 周六 周日
1 2 3 4 5 6 7

0 5 5 5 5 5 5

8 9 10 11 12 13 14

    3 5 5 5 5 5 5

0级:月备份
3级:周备份
5级:日备份

3.以磁带机为例
磁带机的逻辑设备名:/dev/rmt/0
/dev/rmt/0n
备份/export/home
命令:ufsdump 0cuf /dev/rmt/0 /export/home
0:备份级别,此指的是全盘备份
c:盒式磁带
u:更新备份纪录
f:要操作的设备名
/export/home:要备份的文件系统
注意:备份时,应选择在单用户下。

4. 文件系统的恢复
例:/export/home 遭到了破坏,它对应的的设备名:/dev/dsk/c0t3dos7
#init s
#umount /export/home
#newfs /dev/rdsk/c0t3d0s7
#mount /dev/dsk/c0t3d0s7 /export/home
#cd /export/home
#ufstestore rvf /dev/rmt/0
(r:restore;v:列出文件名字;f:要操作的设备名字)
此过程对/ /usr 分区不适用

以上文章转载于 : http://blog.csdn.net/s

solaris文件系统的备份与恢复 - Solaris - lovegqin

Solaris上的性能监控 - Solaris - lovegqin

 

Solaris上的性能监控

Solaris提供了性能监控命令,为CPU提供使用统计,为整个系统提供中断、交换、分页和上下文转换功能。

这些监控命令包括:
1.vmstat
     vmstat命令报告Solaris上的进程、虚拟内存、磁盘、分页和CPU的活动情况。

     % vmstat 2 (每2秒显示系统活动情况)

2.sar

   sar命令用于监控交换、分页、磁盘和CPU活动。

  $sar -p 5 10(每5秒显示10次分页活动的概要)

3. iostat

    iostat命令报告终端和磁盘的活动。该报告显示哪些磁盘是忙的(该信息在平衡I/O负载时有用)。

    $iostat  2 5(每5秒显示2次终端和磁盘活动)

4.swap

   swap命令报告关于交换空间使用的信息。交换空间的不足可以导致系统悬挂,减慢响应时间。

5. mpstat

   mpstat命令报告每个处理器的统计。

以上文章转载于: http://blog.csdn.net/

Solaris上的性能监控 - Solaris - lovegqin

Solaris 下Swap分区的简单介绍 - Solaris - lovegqin

 

Solaris 下Swap分区的简单介绍

Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中 的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很 长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程 序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时 ,才进行Swap交换。这种现象对于计算机使用者是经常遇到的。有一点要声明的是,并不是所有从物理内存中交换出来的数据都会被放到Swap中(如果 这样的话,Swap会不堪重负),有相当一部分的数据直接交换到文件系统。例如,有的 程序会打开一些文件,对文件进行读写(其实每个程序都至少打开一个文件,那就是运行程序本身),当这些程序的内存空间需要交换出去时,文件部分的数据就没有必要放到   Swap空间中了,如果是读文件操作,那么内存数据直接就释放了,不需要交换出来,因
为下次需要时,直接从文件系统就能恢复;如果是写文件,只需要将变化的数据保存到文 件中,以便恢复。但是那些用malloc( 3C )和new函数(c++ 语言中分配空间的语句)生成的对象的数据则不同,需要  Swap空间,因为它们在文件系统中没有相应的“储备”文件,因此被称为“匿名”  (Anonymous)的内存数据,这类数据还包括堆栈中的一些状态和变量数据等,所以说, Swap空间是“匿名”数据的交换空间。
例如:Web服务器能根据不同的请求数量衍生出多个服务进程  (或线程),如果Swap空间用完,则服务进程无法进动,通常会出现"application is   out of memory"的错误,严重时会造成服务进程的死锁。
通常情况下,Swap空间应大于或等于物理内存的大小,最小不应小于 64M ,通常Swap空间 的大小应是物理内存的2-2.5倍(Solaris 2以上的版本有所变化,见下文)。但根据不 同的应用,应有不同的配置:如果是小的桌面系统,只需要较小的Swap空间,而大的服 务器系统则视情况不同需要不同大小的Swap空间。特别是数据库服务器和Web服务器会随 着访问量的增加,对Swap 空间的要求也会增加,具体配置参见各自服务器产品的说明。
另外,Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘I/O的操作, 如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大 大均衡I/O的负载,加快Swap交换的速度。如果只有一个交换区,所有的交换操作会使交 换区变得很忙,使系统大多数时间位于等待状态,效率很低,用性能监视工具就会发现 ,此时的CPU并不很忙,而系统却慢,这说明,瓶颈在I/O上,依靠提高CPU的速度是解决 不了问题的。
性能监视
最常用的是Vmstat命令,在大多数Unix平台下都有此命令,此命令可以查看大多数性能 的指标。
另外使用swap -s 也能简单的查看当前swap资源的使用情况。例如:
# swap -s  
你知道吗?虚拟Swap空间与 /tmp目录有相当大的关系。Sun在实现/tmp目录时,充分考 虑了应用程序运行的效率。许多应用程序,特别是数据库服务都会频繁使用 /tmp目录作 为临时数据保存区,而Solaris将 /tmp目录下的文件都放在内存中而不是硬盘里,这样 会大大提高应用程序的效率。 但是/tmp目录的空间是从系统虚拟空间里挤出来的,是虚 拟Swap空间的一部分。如果说,你用完了/tmp空间,也就是用完了Swap空间,所以要小 心监视系统的/tmp目录的使用情况,千万别用光了,否则系统会瘫痪!下面两点建议作为
参考:
1.在Mount /tmp目录时,使用(-o Size)选项来控制/tmp目录的大小。
2.当使用编译器编译文件时,如果不想占用Swap空间,则用TMPDIR环境变量指向另外一 个临时目录,而不是/tmp目录。
增加Swap空间
1.成为超级用户 $su - root  
2.创建Swap文件 #mkfile nnn[klblm] filename  
如:#mkfile  100m  swapfile1  
3.激活Swap文件
#/usr/sbin/swap -a /path/filename  
Swap文件必须以绝对路径来指定,filename指的是上一步创建的文件。
4.现在新加的Swap文件已经起作用了,但系统重新启动以后,并不会记住前几步的操作 。因此要在/etc/vfstab文件中记录文件的名字,和Swap类型,如:
/path/filename - - Swap - no -
5.效验Swap文件是否加上 /usr/sbin/swap -l  
删除多余的Swap空间
1.成为超级用户
2.使用swap -d 命令收回swap空间。
#/usr/sbin/swap -d /path/filename  
3.编辑/etc/ufstab文件,去掉此Swap(交换)文件的实体。
4.从文件系统中回收此文件。
#rm swap-filename  
5.当然,如果此Swap(交换)空间不是一个文件,而是一个分区,则需创建一个新的文件系统,再挂接到原来的文件系统上。

以上文章转载于 : http://blog.csdn.net/

Solaris 下Swap分区的简单介绍 - Solaris - lovegqin