2008年8月29日星期五

ORA-12545:因目标主机或对象不存在解决方法

ORA-12545:因目标主机或对象不存在解决方法

真麻烦,oracle经常有问题!今天碰到了ORA-12545:因目标主机或对象不存在,

原因:机器名称改过后出现的

网上参考的解决办法

1.搜索你的oracle安装目录,找到这俩个文件 tnsnames.ora 和 listener.ora 记住就改这俩个文件就行了,还有一个大写的TNSNAMES.ORA不用管它。他们的路径如下:如 E:\oracle\ora92\network\admin 这是我的路径 你的肯定和我的不一样,但能找到这俩个文件就行了,他们在同一个目录里,编辑这俩个文件,把里面的Host= 的地方改为你的计算机名就行了。注意有多个,看仔细了。或者改成IP,下次改了IP注意再修改要统一.

2.如果这时登陆的话,肯定会提示你没有监听器,那是监听的服务没有开,到计算机的服务那

进入服务的方法:控制面板-〉管理工具-〉服务(俩个齿轮的那个图标),然后找到OracleOraHome92TNSListener这个服务,把它启动了,就好了。

注:实际测试中,用imp命令导入dmp文件时,oracle9i在工作中需要在@号后面填上全局数据库名,值得注意的是,这里不是你的SID名,10g和11g的数据库尚未发现这个问题。把tnsnames.ora 和 listener.ora 两个文件都改掉也没有用。

2008年8月25日星期一

Ubuntu Linux系统上的三款超强监视工具

Ubuntu Linux系统上的三款超强监视工具


Wireshark

世界上使用Wireshark的人相当多。它具有一个协议分析程序的全部基本特性,而且还有其它产品所没有的其它特性。其开放源代码文本专利允许专业人员对其进行功能增强的工作。它可以运行在各种计算平台上,其中包括Unix,Linux,Windows等等。

对于Ubuntu Edgy用户来说,可以使用如下的命令进行安装:

sudo apt-get install Wireshark

对于Ubuntu Dapper用户来说,可以使用如下的命令安装:

sudo apt-get install ethereal



EtherApe

EtherApe是Unix系统中的一个图形界面的网络监视器,能够以图形方式显示网络活动。主机和链接通信量的大小可以动态显示。它支持 Ethernet、 FDDI、 Token Ring、ISDN、 PPP 、 SLIP等网络类型的设备。它可以过滤显示的通信,并能够从一个文件中读取通信数据,也可以从网络中读取动态数据。

如果想在Ubuntu中安装Etherape,可以使用如下的命令:

sudo apt-get install etherape



Ethstatus

Ethstatus是一个基于控制台的监视程序,用以显示以太网接口的统计数据。它与intraf类似,不过它以一个永久性控制台任务的形式运行,并可监视网络负载。

安装ethstatus,需要执行如下的命令:

sudo apt-get install ethstatus

如果只是想在命令行上查看网卡的状态,可以直接输入如下的命令:

ethstatus

可以看到包含全部细节.其中包含了IP地址、接口名称、最高速度、收到的包等多指标。

2008年8月21日星期四

Oracle创建实例的最少参数需求

Oracle创建实例的最少参数需求
我们知道,Oracle在启动过程中,需要读取参数文件(pfile/spfile)来创建实例.Oracle在启动过程中,寻找参数文件的顺序为:spfile.ora,spfile.ora,init.ora.
而创建实例的过程中,Oracle需要的最少参数为一个,即db_name参数.
我们来看一个测试,启动一个任意设置的实例,本例ORACLE_SID=julia:
[oracle@jumper dbs]$ export ORACLE_SID=julia
[oracle@jumper dbs]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Mon May 8 11:08:36 2006
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
SQL> startup nomount;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/opt/oracle/product/9.2.0/dbs/initjulia.ora'

Oracle最后检查的文件为initjulia.ora,让我们创建这个文件,然后数据库实例即可创建:
SQL> ! echo "db_name=julia" > /opt/oracle/product/9.2.0/dbs/initjulia.ora
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 97588504 bytes
Fixed Size 451864 bytes
Variable Size 46137344 bytes
Database Buffers 50331648 bytes
Redo Buffers 667648 bytes

我们可以看一下缺省的各类文件的存储地点:
SQL> show parameter dump_dest
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
background_dump_dest string ?/rdbms/log
core_dump_dest string ?/dbs
user_dump_dest string ?/rdbms/log
SQL> show parameter control_files
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
control_files string ?/dbs/cntrl@.dbf

我们顺便看一下缺省的,警报日志中记录的信息:
[oracle@jumper dbs]$ cat $ORACLE_HOME/rdbms/log/alert_julia.log
Mon May 8 11:09:04 2006
Starting ORACLE instance (normal)
Mon May 8 11:09:04 2006
WARNING: EINVAL creating segment of size 0x0000000006400000
fix shm parameters in /etc/system or equivalent
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
SCN scheme 2
Using log_archive_dest parameter default value
LICENSE_MAX_USERS = 0
SYS auditing is disabled
Starting up ORACLE RDBMS Version: 9.2.0.4.0.
System parameters with non-default values:
db_name = julia
PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7

2008年8月20日星期三

常用的压缩解压命令(unzip和gunzip和tar)

压缩解压命令
unzip JSPWiki.zip unzip -d ../JSPWiki JSPWiki.zip 解压zip包unrar x udt2.rar 解压rar包
gunzip backup.tar.gz &tar xvf backup.tar
tar zxvf KingSoftUnion.tar.gz 解压后缀为tar.gz的文件。tar jxvf upx-3.00-i386_linux.tar.bz2 解压后缀为tar.bz2的文件。
打包一个文件夹成压缩文件tar zcvf KingSoftUnion.tar.gz KingSoftUnion/

2008年8月19日星期二

linux下用管道自动回答yes

用管道自动回答yes
yes cp -ar aaa /opt/aaa

cp如何才能强行覆盖原目录和文件?

例如我准备把A目录copy到B目录A下已经有AB目录B下也有AB目录怎样才能强行覆盖?我试过cp -fr A b根目录下的文件覆盖不提示,但执行到cp ab目录下的文件的时候还是要提示是否覆盖。
检查一下cp的alias是否加了-i。或者直接加--reply=yes
或者:unalias cp
cp aaa /opt/aaa

2008年8月18日星期一

LINUX系统调优

LINUX系统调优记录:

OS:centos4.3   

1.可以改变滑动窗口的大小 (默认应该就是“1”)   
echo "1" > /proc/sys/net/ipv4/tcp_window_scaling   

2.修改内核共享内存限制为256M,默认才2M   
echo 268435456 >/proc/sys/kernel/shmall   
echo 268435456 >/proc/sys/kernel/shmmax   

3.可使用的代理端口   
echo "1024 65000" > /proc/sys/net/ipv4/ip_local_port_range   


4.禁止广播和ping入   
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts   
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses   

5./proc/sys/net/ipv4/netfilter/ip_conntrack_max 改大到 268435456 默认只有65536   

6.echo "1800" > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established   
默认确立连接会在5天后失效,改为半小时后失效,减少ip_conntrack的有效连接数量。   

7.echo 1 > /proc/sys/net/ipv4/tcp_syncookies   
防范SYN DDOS攻击,打开TCPsyncookies,CENTOS4的内核是支持的。   

8.echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog   
SYN列队长度,不要设置太高,会消耗相应的内存。   

9.echo 3 > /proc/sys/net/ipv4/tcp_synack_retries   
SYN重试次数。   

10.echo 3 > /proc/sys/net/ipv4/tcp_syn_retries   
SYN重试次数。

2008年8月14日星期四

Nagios借助yahoo.cn邮箱实现手机短信报警功能

作者:田逸(sery@163.com)


在《Nagios远程监控软件的安装与配置详解》(http://netsecurity.51cto.com/

art/200706/48728.htm)一文中,曾经简单的介绍在没有短信网关或短信猫的情况下使用短信报警的方法。前段时间,经不住yahoo邮件无限制容量的诱惑申请了一个拿来用用,还不错,很来无意中发现还有来信短信提醒功能,乖乖,何不把报警邮件发送到这个yahoo邮箱,然后通过“来信短信提醒功能”把信息转发到手机上。


下面介绍“如何定制电邮提醒”

A如果您是中国移动用户,定制过程包括:绑定手机(免费绑定)-定制服务(10/月)

具体操作请按照以下步骤进行:

1 用您的Yahoo! ID和密码登录 Yahoo! Mail 的页面
2
点击页面左面的“
邮件到达短信提醒”链接

3 如果您的手机还没有与您的Yahoo! ID进行绑定,操作步骤:

请先绑定您的手机号码:
1
)在弹出的对话框中的“请输入您的手机号码”后面填入您想绑定的手机号码
2
)点击“确定”按钮
3
)您的手机会收到系统给您发送的验证码

如果您确实想定制此项服务:

4)在接下来的页面中,填入系统给您发送的验证码,点击“确定”按钮

按照页面的提示,用手机发送数字指令WXD3721,以完成定制过程.

4 如果您的手机已经绑定Yahoo! ID,点击页面左面的“邮件到达短信提醒”链接

按照页面的提示, 用手机发送数字指令WXD3721,以完成定制过程.
5
完全登出您的邮箱
1
)单击电邮页面右上角的“登出”链接
2
)单击“完全登出”链接。

 

B如果您是中国联通用户,定制过程包括:发送指令,定制服务(10/月)-绑定手机

具体操作请按照以下步骤进行:

1 用您的Yahoo! ID和密码登录 Yahoo! Mail 的页面
2
点击页面左面的“
邮件到达短信提醒”链接

3 如果您的手机还没有与您的Yahoo! ID进行绑定,操作步骤:

1)在弹出对话框中的“请输入您的手机号码”后面填入您想绑定的手机号码

2)点击“确定”按钮

3)发送数字指令“YH”到9372,收到短信提示后,按照提示回复短信,完成定制。

4)点击页面中的“继续”按钮,您会收到一个验证码信息,请将您收到的验证码填写到下一页中的“请输入您

手机收到的验证码”后空白处,并点击“确认”,完成绑定手机过程。
4
如果您的手机已经绑定Yahoo! ID,点击页面左面的“
邮件到达短信提醒”链接

按照上面的提示,很容易设置这个功能的。为了使短信提醒符合我们的实际要求,需要对某些项目进行设置。一个是“提示信息选择”,另一个是“提示时间设置”,其设置情况如图所示:

点左下方链接POP3+来信提醒”进行设置
 

提示信息选择选第3个单选框“您收到[寄件人]发送的邮件:[邮件标题]”,这样设置的目的是因为邮件标题可以很明显的知道故障发生在哪里(标题信息来自Nagios的配置文件);服务器需要24小时监控,所以把“提醒时间设置”相里面的3个复选框全取消。设置完毕后,用一个别的邮箱发个邮件给你的yahoo信箱,片刻手机就会收到短信。


美中不足,yahoo短信不能支持稍长一点的邮件标题,这是我打yahoo客服电话知道的。登录网站收邮件(不支持pop,我晕),发现来了不少Nagios服务报警邮件,可以没收到任何一个短信,打电话问才知道是标题过长。既然这样,我把标题改短点吧。登录Nagios系统,修改文件 commands.conf,我的文件位置是 /usr/local/nagios/etc/commands.conf,修改内容为:

# 'notify-by-email' command definition

define command{

command_name notify-by-email

command_line /usr/bin/printf "%b" "***** Nagios 2.9 *****nnNotification Type: $NOTIFICATIONTYPE$nnService: $SERVICEDESC$nHost: $HOSTALIAS$nAddress: $HOSTADDRESS$nState: $SERVICESTATE$nnDate/Time: $LONGDATETIME$nnAdditional Info:nn$SERVICEOUTPUT$" | /bin/mail -s "$HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ " $CONTACTEMAIL$

}

默认的有点长,我把它缩短成上面那个样子,即用红色字体标识的是被减缩的。接着修改文件contacts.conf,把收信人地址改称yahoo.cn邮箱。改完后须重启nagios服务。现在来检验一下效果:把nagios监控的某个服务器的服务停掉几分钟,然后去yahoo邮箱收邮件,正常的话,只要邮件一到信箱短信就跟着来了。


为了避免诸如发件人的名称为root这样的问题,启用邮件别名似乎更佳一些。


最后展示一下手机收到的短信的样式:

你收到[vmail @sery.com]的邮件:[Host UP alert for apache_sery]

看这个标题我就知道服务器是怎么一个状态。

2008年8月13日星期三

Google App Engine提供5G Python空间

Google App Engine是什么呢?它就是Google推出的免费虚拟主机空间,并且可以利用里面的工具来开发网站或制作网络应用程序---目前还仅支持Python一种语言脚本,不支持PHP、Perl、ASP等。

---注意点---如果你对Python很了解也很感兴趣,建议你去体验google提供的免费服务。目前该官方服务仅有英文版以及其入门指南。网址:http://appengine.google.com

---申请Google App Engine---申请的时候需要填写手机号码,会给你发送确认码来确认申请,目前Google在中国仅支持中国联通,所以要用联通手机申请才能收到确认码,如果你用的不是联通手机,那就无缘Google App Engine了,且一个手机只能申请一个帐户。

--相关限制---Google App Engine中的Python是运行在一个受限的环境中,例如:对操作系统的底层调用、网络操作以及一些文件系统操作都是不允许的,尝试这些操作时会引起错误。Python运行限制可以参考官方资料:http://code.google.com/appengine/docs/python

--提醒下--对于Python不太了解的新手来说,建议不要申请使用Google App Engine.

2008年8月12日星期二

安装nagios-plugins遇到hang问题

安装nagios-plugins遇到hang问题

系统:ubuntu8.04软件:nagios2.6插件:nagios-plugins-1.4.12和nagios-plugins-1.4.11

checking for ping6... /bin/ping6checking for ICMP ping syntax...

编译到这步就走不过去了。后来用下面这个方法,顺利通过。
./configure --with-ping-command=ping

另外:the problem was that there was no ip on the interface.. I added the 127.0.0.1 and it worked like a charm

ubuntu网卡设定相关

/etc/network/interfaces


iface eth0 inet static
address 192.168.0.111
netmask 255.255.255.0
gateway 192.168.0.1

也可以加上一条
auto eth0
如此一来,断线亦可自动恢愎之。

这时候我们重启下网络.Ubuntu 重启网络的命令是:
sudo /etc/init.d/networking restart

2008年8月11日星期一

ubuntu 终端乱码的解决方法

1. sudo vim /root/.bashrc在最后加入export LANG=zh.CN.GBK 保存退出
2.sudo locale-gen zh.CN.GBK
3.重启后重新登录

"the account is locked"的解决方法

用sys以sysdba的身份来进行登录,在sys状态是locked的时候也是能登录的.然后再使用 alter user sys account unlock来进行解锁

2008年8月9日星期六

基于centos4.3的linux发行版制作过程

基本过程:
定制RPM包
修改 comps.xml
重编comps.rpm
重新生成hdlist
建立pkglist
利用buildinstall处理安装程序
利用mkisofs制作安装映象
------------------------------------------------
母系统是centos4.3,为了软件最新,先升级自己的系统相关软件
rpm --import
http://mirror.be10.com/centos/4.3/os/i386/RPM-GPG-KEY-centos4
rpm --import /usr/share/doc/centos-release-4/RPM-GPG-KEY >> /dev/null
yum -y update
以下为制作安装光盘必须的包
yum install pump-devel gtk2-devel booty bogl-devel bogl-bterm elfutils-devel beecrypt-devel dietlibc
yum install anaconda anaconda-runtime busybox-anaconda
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
anaconda i386 10.1.1.37-1.centos4.2 base 4.3 M
anaconda-runtime i386 10.1.1.37-1.centos4.2 base 526 k
busybox-anaconda i386 1.00.rc1-5 base 177 k
Installing for dependencies:
anaconda-help noarch 10.1.0-1.centos4 base 800 k
bogl i386 0.1.18-4 base 93 k
booty i386 0.44.3-1 base 85 k
pyparted i386 1.6.8-2 base 22 k
检查RPM包依赖关系
cd /data/disk/EServer/RPMS
mkdir /tmp/testdb
rpm --initdb --dbpath /tmp/testdb
rpm --test --dbpath /tmp/testdb -Uvh *.rpm
以下是具体步骤:
1.设置python的系统环境变量
export PYTHONPATH=/usr/lib/anaconda
export PATH="$PATH:/usr/lib/anaconda-runtime"
2.更新光盘的文件树
genhdlist --productpath=EServer /data/disk
3.生成下一步需要的pkgfile文件
pkgorder --product EServer /data/disk/ EServer > /data/pkgfile
4.编译生成光盘引导文件和图形安装界面镜像
buildinstall --pkgorder /data/pkgfile
--version "1.2"
--product "EServer"
--release "Beta"
--prodpath EServer /data/disk
5.制作 ISO
mkisofs -r -T -J -V "EServer 1.2" -b isolinux/isolinux.bin
-c isolinux/boot.cat -no-emul-boot -boot-load-size 4
-boot-info-table -x "lost+found"
-o /data/EServer.iso /data/disk
文件isolinux/boot.cat 会由mkisofs 程序随后产生
----------------------------------------------------
为光盘生成md5验证值
implantisomd5 /data/EServer.iso
Inserting md5sum into iso image...
md5 = b49c693f83c23d7e746dfe0f81a56016
Setting supported flag to 0
如果想将图形界面修改成个性化的界面,需要修改stage2.img(光盘引导镜像,如果硬盘安装,需要修改其他img文件……)
附注:
anaconda资源修改:
mkdir /data/anaconda
mount -o loop /data/disk/EServer/base/stage2.img /data/anaconda
cd /data/anaconda
tar -cvf /data/stage2.tar .
mkdir /data/stage2
cd /data/stage2
tar -xvf /data/stage2.tar
chmod +w -R ../stage2
#-----------修改资源-----------------#
.....
....
#重新打包img镜像
cd /data
mkcramfs stage2/ stage2.img.new
cp /data/stage2.img.new /data/disk/EServer/base/stage2.img
光盘启动画面修改:
yum -y install syslinux
The graphic is in a somewhat odd format, called LSS16. As the name indicates, it is limited to 16 colors. To edit the graphic, first convert it to a PPM:
lss16toppm splash.ppm
Next, edit the file using The Gimp. Save the resulting file as an indexed gif with no more than 14 colors (plus black and white, for a total of 16). Then, convert the file to a pnm/ppm:
giftopnm splash.lss
cp splash.lss /data/disk/isolinux/splash.lss
yum install gcc xorg-x11-devel
编译gif2lss-0.4.tar.gz
保证光盘里面rpm目录下有以下包,这些包是图形化界面制作所必须的,没有他们,buildinstall将会报错。
anaconda
anaconda-runtime
anaconda-help
anaconda-product
busybox
busybox-anaconda
memtest86+
fonts-xorg-base
xorg-x11
joe
kernel*
附注:
rpm -qpi #显示rpm包的信息
rpm -Uvh #安装rpm包
rpm -qpl #列rpm包内的文件

linux下建立关机帐户

尹老师由于是给我们补课,还是很多东西没有讲,唉,无奈还是有很多东西不会,不知道怎么办!~~问别人好了,这个是尹老师给我讲的一个小技巧。拿出来表一表。

首先,进入root超级帐户,然后在终端里面用命令建立一个帐户,并给与密码。这个很简单,大家都会,直接上图。

在另一字符界面登陆gj帐户,没有问题,可以登陆。

首先,这里要介绍一下思路,要建立这个帐户就是一个原因,自己不在的时候,让另一个人帮忙关机,但是也不想让他动用root帐户,感觉这个帐户赋予的权限太大,要是在敏感岗位上就不好说了,所以这个帐户最好登陆的时候只能做一件事情,那就是关机。

要关机就要执行关机命令,一般的关机命令init 0也只有root这样的用户使用,那么这个关机帐户就必须要是超级用户,那就能不能想办法让这个用户成为管理员,但是只要这个帐户一登陆就关机,可以么?可以。我们知道gj帐户文件在/home/gj下,而且也要加载gj文件夹下面的.bash_profile文件,那么我们就可以把关机命令加载到这个文件中,那么这个帐户就会一启动就关机。

首先是赋予gj超级用户的权限,按照以下命令操作。

vi /etc/passwd

打开这个文件

修改gj帐户的账户属性和组属性都为0root帐户相同。

然后存盘退出。

下面就是修改.bash_profile文件了。

这里面的命令都要加载的,顺序是由上至下,所以在某一行加一段关机命令就可以了。

保存退出,这样关机的时候直接登陆gj帐户就ok了。

Oracle 11g R1下的自动内存管理(AMM


51CTO.COM独家翻译】Oracle在简化内存管理方面过去几年做了巨大的努力,从Oracle 9i通过PGA_AGGREGATE_TARGET参数实现PGA自动管理开始,Oracle 10g通过SGA_TARGET参数实现了SGA的自动管理,Oracle 11g更是惊人地实现了数据库所有内存块的全自动化管理,它使得动态管理SGAPGA成为现实。

写本文时,自动内存管理(AMM)已经在主流平台上得到支持,包括LinuxWindowsSolarisHP-UXAIX

AMM参数

自动内存管理是用两个初始化参数进行配置的:

MEMORY_TARGET:动态控制SGAPGA时,Oracle总共可以使用的共享内存大小,这个参数是动态的,因此提供给Oracle的内存总量是可以动态增大,也可以动态减小的。它不能超过MEMORY_MAX_TARGET参数设置的大小。默认值是0

MEMORY_MAX_TARGET:这个参数定义了MEMORY_TARGET最大可以达到而不用重启实例的值,如果没有设置MEMORY_MAX_TARGET值,默认等于MEMORY_TARGET的值。

使用动态内存管理时,SGA_TARGETPGA_AGGREGATE_TARGET代表它们各自内存区域的最小设置,要让Oracle完全控制内存管理,这两个参数应该设置为0

AMM配置

在数据库创建过程中,数据库配置助手(DBCA)允许你配置自动内存管理。

在手动创建数据库时,只需要在创建数据库之前设置合适的MEMORY_TARGETMEMORY_MAX_TARGET初始化参数。

在一个系统上启用自动内存管理其实很简单,不需要事先做太多的事情,可以使用下面的计算公式来计算:

MEMORY_TARGET=SGA_TARGET+GREATEST(PGA_AGGREGATE_TARGET,"maximumPGAallocated")


下面的查询语句向你展示有关的信息,以及如何计算出需要的值:

-- Individual values.

COLUMN name FORMAT A30

COLUMN value FORMAT A10


SELECT name, value

FROM v$parameter

WHERE name IN ('pga_aggregate_target', 'sga_target')

UNION

SELECT 'maximum PGA allocated' AS name, TO_CHAR(value) AS value

FROM v$pgastat

WHERE name = 'maximum PGA allocated';


-- Calculate MEMORY_TARGET

SELECT sga.value + GREATEST(pga.value, max_pga.value) AS memory_target

FROM (SELECT TO_NUMBER(value) AS value FROM v$parameter WHERE name = 'sga_target') sga,

(SELECT TO_NUMBER(value) AS value FROM v$parameter WHERE name = 'pga_aggregate_target') pga,

(SELECT value FROM v$pgastat WHERE name = 'maximum PGA allocated') max_pga;


假设我们需要的设置是5G,那么我们可以执行下面的语句:

CONN / AS SYSDBA

-- Set the static parameter. Leave some room for possible future growth without restart.

ALTER SYSTEM SET MEMORY_MAX_TARGET=6G SCOPE=SPFILE;


-- Set the dynamic parameters. Assuming Oracle has full control.

ALTER SYSTEM SET MEMORY_TARGET=5G SCOPE=SPFILE;

ALTER SYSTEM SET PGA_AGGREGATE_TARGET=0 SCOPE=SPFILE;

ALTER SYSTEM SET SGA_TARGET=0 SCOPE=SPFILE;


-- Restart instance.

SHUTDOWN IMMEDIATE;

STARTUP;

当数据库重启后,MEMORY_TARGET参数就可以在不重启实例的情况下随意改变大小了。如:

ALTER SYSTEM SET MEMORY_TARGET=4G SCOPE=SPFILE;


AMM调整

除现有的用于内存管理的V$视图外,Oracle 11g还新增加了下面4个视图用于自动内存管理:

V$MEMORY_CURRENT_RESIZE_OPS
◆V$MEMORY_DYNAMIC_COMPONENTS

◆V$MEMORY_RESIZE_OPS

◆V$MEMORY_TARGET_ADVICE

为每个动态组件分配的内存大小使用视图V$MEMORY_DYNAMIC_COMPONENTS显示:

COLUMN component FORMAT A30


SELECT component, current_size, min_size, max_size

FROM v$memory_dynamic_components

WHERE current_size != 0;



COMPONENT CURRENT_SIZE MIN_SIZE MAX_SIZE

------------------------------ ------------ ---------- ----------

shared pool 197132288 192937984 197132288

large pool 4194304 4194304 4194304

java pool 41943040 41943040 41943040

SGA Target 318767104 285212672 318767104

DEFAULT buffer cache 71303168 41943040 75497472

PGA Target 104857600 104857600 138412032


6 rows selected.


SQL>

V$MEMORY_CURRENT_RESIZE_OPSV$MEMORY_RESIZE_OPS分别显示了组件当前改变大小操作的信息和上一次改变大小操作的信息。

V$MEMORY_TARGET_ADVICE提供了帮助调整MEMORY_TARGET参数的信息,它显示了一段MEMORY_TARGET设置可用的范围,根据当前的设置,估算完成当前负载所需要的DB Time值。

SELECT * FROM v$memory_target_advice ORDER BY memory_size;


MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR VERSION

----------- ------------------ ------------ ------------------- ----------

303 .75 3068 1.0038 2

404 1 3056 1 2

505 1.25 3056 1 2

606 1.5 3056 1 2

707 1.75 3056 1 2

808 2 3056 1 2


6 rows selected.


SQL>

内存顾问)企业管理器中也包括了内存管理配置和顾问功能,位于“内存顾问”页面(顾问中心



点击“建议(Advice)”按钮显示“内存大小建议”屏幕,它包括了一个来自视图V$MEMORY_TARGET_ADVICE的图形显示界面。




http://www.oracle-base.com/articles/11g/AutomaticMemoryManagement_11gR1.php

2008年8月3日星期日

教你关闭Linux下不必要的系统服务

以redhat9为例,下面的系统服务一般情况下大都可以关闭:
  Cron(看情况,有时会需要)
  Anancron
  Apmd
  Atd
  Autofs
  Cups(有打印机可以不关)
  Gpm
  Isdn
  Kudzu
  Netfs
  Nfslock
  Pcmcia
  Portmap
  Rawdevice
  Rhnsd
  Sendmail(要做邮件服务器可以不关)
  ipsec(没有配置,根本就没有提供安全的作用)
.... 还有一些,这里不列出了。
  我电脑上的redhat9.0 只启动了下列的系统服务
  vmware-tools(虚拟机)
  syslog(日志记录)
  network(上网用)
  randow (起保护作用)
  keytables(扩展键盘)
  iptables(linux上的防火墙)
  xfs(图形窗口)
  xinetd(超级进程,向外提供网络服务)
  这样开机速度蛮快的。
  可以通过2种方式修改服务:
  1. chnconfig指令:
  通过chkconfig --list 查看系统所有的系统服务是关闭还是打开。
  通过chkconfig iptables on 设置随机启动服务
  通过chkconfig iptables off 设置不随机启动服务
  2. 通过setup启动图形设置工具来设置要不要随机启动服务
  注意:这样修改需要重启机器后才能生效。如果只是这次需要某个服务,但是下次开机后不
  需要,可以通过service 服务 start 来手工启动该服务。
  系统服务的配置文件在/etc/syslog中,与服务的可执行文件同名,服务通过读取配置文件来提供服务,可以修改配置文件来定制服务。例如,在/etc/syslog有iptables的配置文件iptables,里面存放防火墙规则,可以拒绝其他ip地址对本机的访问等。

2008年8月2日星期六

FreeBSD下解决Nagios不发报警短信的问题

FreeBSD下解决Nagios不发报警短信的问题

田逸


最近在一个新安装的Freebsd 7系统部署一套nagios监控系统,主要用来监控主机的存活状态、网络服务的状态以及远程主机的资源利用情况。尽管Freebsd安装源码有些麻烦,但最终还是把nagios正确安装上了,并且能正常工作,通过web方式也能看见监控对象的状况。

如上图所示,真有一个服务器的443端口对应的服务发生故障了,可是等了半天就是收不到报警邮件。登录nagios所在的系统,检查与邮件发送相关的情况,其基本操作是:检查sendmail是否起来(ps aux grep sendmail,结果正常;用mail程序手动发一封邮件给我的一个邮箱(mail –s “This is a mail test project” sery@163.com < ip_scan ,能发送和接收到这封邮件。问题在哪里呢?


由上面的排查,基本可以断定sendmail没什么问题,域名解析也是正常的(专门为这个监控服务器解析MXA记录),现在可能的原因只能在nagios这边了。进入nagios配置文件所在的目录,挨个察看配置文件。我的nagios配置目录的情况如下:

[root@nagios /usr/local/nagios]# pwd

/usr/local/nagios/etc


[root@nagios /usr/local/nagios/etc]# ls *.cfg

cgi.cfg contacts.cfg localhost.cfg services.cfg

commands.cfg hostgroups.cfg nagios.cfg timeperiods.cfg

contactgroups.cfg hosts.cfg resource.cfg

没看见有什么异常的情况,改了其中的某些设置,如cgi.cfg文件,重启nagios,还是不能发报警邮件。可是,但我点击web管理界面的时候,确实是有邮件报警行为,如下图所示:


既有主机故障通知,又有服务故障报警通知,而且都应该按我的定义发送邮件的呀!


查去查来,找不到头绪。再查sendmail 的日志/var/log/maillog,只发现我手动发送邮件的记录,而没有其他发送记录---只有下面这么一条记录:

Jul 27 14:27:48 nagios sm-mta[37141]: m6RERkYR037139: to=<sery@163.com>, ctladdr=<nagios@nagios.sery.com> (1003/1003), delay=00:00:02, xdelay=00:00:01, mailer=esmtp, pri=30623, relay=163mx02.mxmail.netease.com. [220.181.12.66], dsn=2.0.0, stat=Sent (Mail OK queued as mx16,QsCowLDbPSxWFYxIb6TzGw==.27600S2 1217140055)

看来nagios并没有调用sendmail发送邮件。


差点忘了,nagios自己也有日志记录呢!赶快打开看一眼,发现里面有不少Warning,抽一个出来,其内容如下:

[1217166816] HOST NOTIFICATION: sery;mail-server;DOWN;host-notify-by-email;CRITICAL - Plugin timed out after 10 seconds

[1217166816] Warning: Attempting to execute the command "/usr/bin/printf "%b" "***** Nagios 2.9 *****nnNotification Type: PROBLEMnHost: mail-servernState: DOWNnAddress: 211.155.115.66nInfo: CRITICAL - Plugin timed out after 10 secondsnnDate/Time: Sun Jul 27 13:53:36 UTC 2008n" /bin/mail -s "Host DOWN alert for mail-server!" sery@163.com" resulted in a return code of 127. Make sure the script or binary you are trying to execute actually exists...

其他的行也更这个类似;最有用的信息我用红色标记,其大意是不能执行上面的2进制或可执行文件。在这个条目中,只有2个执行文件—printfmail。我把它按原样单独拿出来执行,操作过程如下:

1/usr/bin/printf “"%b" "***** Nagios 2.9 *****n” 输出 ***** Nagios 2.9 *****,这是正常的结果。

2/bin/mail -s "Host DOWN alert for mail-server!" sery@163.com 输出su: /bin/mail: No such file or directory,没找到路径或目录。前面还手动发了邮件的,明明有mail这个客户端程序呀!可能这个路径不对,是linuxmail路径。查一下freebsdmail路径,执行find / -name 得到mailfreebsd的路径为/usr/bin/mail


到这里,我们知道了为啥不能发邮件的根本原因,接下来,我把nagios的配置文件commands.cfghost-notify-by-emailservice-notify-by-email的”/bin/mail”替换为“/usr/bin/mail”。其完整形式为:

# 'host-notify-by-email' command definition

define command{

command_name host-notify-by-email

command_line /usr/bin/printf "%b" "***** Nagios 2.9 *****nnNotification Type: $NOTIFICATIONTYPE$nHost: $HOSTNAME$nState: $HOSTSTATE$nAddress: $HOSTADDRESS$nInfo: $HOSTOUTPUT$nnDate/Time: $LONGDATETIME$n" /usr/bin/mail -s "Host $HOSTSTATE$ alert for $HOSTNAME$!" $CONTACTEMAIL$

}

# 'notify-by-email' command definition

define command{

command_name service-notify-by-email

command_line /usr/bin/printf "%b" "***** Nagios 2.9 *****nnNotification Type: $NOTIFICATIONTYPE$nnService: $SERVICEDESC$nHost: $HOSTALIAS$nAddress: $HOSTADDRESS$nState: $SERVICESTATE$nnDate/Time: $LONGDATETIME$nnAdditional Info:nn$SERVICEOUTPUT$" /usr/bin/mail -s "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$

}

修改完配置文件commands.cfg后重启 Nagios,再查看nagios日志,不再有“Make sure the script or binary you are trying to execute actually exists...报错,并且有发送报警邮件的记录了:

[root@nagios /usr/local/nagios/var]# tail -f nagios.log

[1217170467] SERVICE ALERT: mail-server;check_tcp 995;CRITICAL;SOFT;1;CRITICAL - Socket timeout after 10 seconds

[1217170534] Auto-save of retention data completed successfully.

[1217170577] HOST ALERT: mail-server;DOWN;SOFT;1;CRITICAL - Plugin timed out after 10 seconds

[1217170587] HOST ALERT: mail-server;DOWN;SOFT;2;CRITICAL - Plugin timed out after 10 seconds

[1217170597] HOST ALERT: mail-server;DOWN;SOFT;3;CRITICAL - Plugin timed out after 10 seconds

[1217170607] HOST ALERT: mail-server;DOWN;SOFT;4;CRITICAL - Plugin timed out after 10 seconds

[1217170607] HOST ALERT: mail-server;UP;SOFT;5;PING OK - Packet loss = 0%, RTA = 111.63 ms

[1217170607] SERVICE ALERT: mail-server;check_tcp 995;CRITICAL;SOFT;2;CRITICAL - Socket timeout after 10 seconds

[1217170687] SERVICE ALERT: mail-server;check_tcp 995;OK;SOFT;3;TCP OK - 3.137 second response time on port 995

[1217171057] SERVICE NOTIFICATION: sery;fav-0;check_tcp 443;CRITICAL;service-notify-by-email;CRITICAL - Socket timeout after 10 seconds


收邮件,迫不及待,哈哈,我的163邮箱收到久违的报警信息了。再回去瞧一眼邮件日志/var/log/malllog,也记录了这个发送情况。


经验总结:通过日志记录,对于我们排查故障确实有着不可估量的好处。在实际的工作中,我们应该随时检查系统日志以及应用程序相关的日志,从记录项中寻找蛛丝马迹,从而得出解决问题的方法。