安泰信息

2007年02月28日

Debian3.1下Oracle XE的安装

归档在: 未分类, Linux, DB — JACKEYJ @ 8:36 AM

Debian3.1下Oracle XE的安装

Guo Liang
Fri, 03 Mar 2006 07:07:48 -0800

Debian3.1下Oracle XE的安装

作者 blue_stone
E-mail: [EMAIL PROTECTED]
Blog: http://bluestone.cublog.cn
版本:v1.0
原始链接:
http://www.cublog.cn/u/7667/?u=http://www.cublog.cn/u/7667/showart.php?id=80769
转载请保留作者信息和原始链接. 本文档的最新版本, 可以在原始链接处找到.

Oracle Database Express Edition正式版已经提供下载了, 虽然在Oracle XE官方安装文档中说支持Debian, 但官方文档
中的方法无法成功在Debian下安装Oracle XE. 本文描述了Debian 3.1下Oracle XE的安装.  如果您有什么意见或者好的建议, 请
和作者联系.

1 软件下载

oracle xe

oracle xe可以从如下链接下载
http://www.oracle.com/technology/software/products/database/xe/index.html
下载需要Oracle Technology Network帐号, Oracle Technology Network帐号可免费注册.
oracle xe有两个不同的版本, 一个是通用字符集的版本, 支持中文字符, 内码为AL32UTF8,下载文件为
oracle-xe-univ-10.2.0.1-1.0.i386.rpm, 一种是西欧字符集的版本, 只支持英文, 下载文件为
oracle-xe-10.2.0.1-1.0.i386.rpm . 我们需要下载支持中文字符的版本, 既下载
oracle-xe-univ-10.2.0.1-1.0.i386.rpm.

libaio

在Debian3.1中, 并不提供libaio, 所以需要使用unstable或者experimental中的libaio. 如下页面包含了unstable
中libaio的信息:

http://packages.debian.org/cgi-bin/download.pl?arch=i386&file=pool%2Fmain%2Fliba%2Flibaio%
2Flibaio_0.3.104-1_i386.deb&md5sum=8c0a386e55630b3b1c4f1e1c4f45459a&arch=i386&type=main
可以选择比较近的地址下载libaio, 我下载到的文件是libaio_0.3.104-1_i386.deb

2 安装oracle xe

oracle xe只提供了rpm包, 不能直接在debian中使用, 需要使用alien先转换为deb包,  如果alien软件包还没有安装, 请使用
apt-get install alien安装alien.

debxe:~# alien -d oracle-xe-univ-10.2.0.1-1.0.i386.rpm
oracle-xe-univ_10.2.0.1-2_i386.deb generated

-d指转换成deb包格式, 转换过程需要比较长的时间. 转换完成后, 就可以使用dpkg来安装生成的deb包:
debxe:~# dpkg -i oracle-xe-univ_10.2.0.1-2_i386.deb
Selecting previously deselected package oracle-xe-univ.
(Reading database … 20241 files and directories currently installed.)
Unpacking oracle-xe-univ (from oracle-xe-univ_10.2.0.1-2_i386.deb) …
Setting up oracle-xe-univ (10.2.0.1-2) …

3 oracle xe配置前的准备

3.1 配置内核变量

将如下内容添加到/etc/sysctl.conf
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

然后运行sysctl -p使设置生效
debxe:~# sysctl -p
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

3.2 配置oracle用户, oracle用户用来运行oracle xe服务器.

debxe:~# groupadd dba
debxe:~# useradd -g dba -d /home/oracle -s /bin/bash oracle
debxe:~# passwd oracle
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
debxe:~# mkdir /home/oracle
debxe:~# cp /etc/skel/.bash* /home/oracle
debxe:~# chown -R oracle:dba /home/oracle

在/home/oracle/.bash_profile中添加如下内容
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
ORACLE_SID=XE
export ORACLE_HOME
export ORACLE_SID
export PATH=$ORACLE_HOME/bin:$PATH
export LANG=zh_CN.GBK
export LC_ALL=zh_CN.GBK
export LANGUAGE=zh_CN.GBK
export NLS_LANG=”SIMPLIFIED CHINESE_CHINA.ZHS16GBK”

3.3 修改oracle xe安装后的文件属主和文件权限的问题

使用alien转换后的deb包安装Oracle XE /usr/lib/oracle目录下的文件的所有者和所有者组是root, oracle没有写入的权限,
将无法建立数据库, 所以将/usr/lib/oracle目录下的所有文件所有这修改为oracle, 所有者组修改为dba
debxe:~# chown -R oracle:dba /usr/lib/oracle

/etc/init.d/oracle-xe的权限为444,无法执行, 使用chmod命令赋于所有用户执行权限
debxe:~# chmod a+x /etc/init.d/oracle-xe

3.4 修改xe例程的初始化参数:

修改/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts目录下的
init.ora和initXETemp.ora
change init.ora initXETemp.ora
将
sga_target=%sga_target%
修改为
sga_target=150000000
即设置sga_target为150m. 如果运行oracle xe的机器内存比较小, 可适当调小这个值.使用80000000也可以成功建立数据库
将
pga_aggregate_target=%pga_aggregate_target%
修改为
pga_aggregate_target=70000000
即设置pga_aggregate_target为70m. 如果运行oracle xe的机器内存比较小, 可适当调小这个值.使用20000000也可以成功建立
数据库.

3.5 安装libaio
debian:~# dpkg -i libaio_0.3.104-1_i386.deb
Selecting previously deselected package libaio.
(Reading database … 20245 files and directories currently installed.)
Unpacking libaio (from libaio_0.3.104-1_i386.deb) …
Setting up libaio (0.3.104-1) …

4 配置oracle xe数据库

debxe:~# /etc/init.d/oracle-xe configure

Oracle Database 10g Express Edition Configuration
————————————————-
This will configure on-boot properties of Oracle Database 10g Express
Edition.  The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts.  Press  to accept the defaults.
Ctrl-C will abort.

指定Oracle Application Express使用的端口, 如果直接按则使用默认的8080端口
Specify the HTTP port that will be used for Oracle Application Express [8080]:

指定Oracle listener的端口, 默认端口为1521
Specify a port that will be used for the database listener [1521]:

Specify a password to be used for database accounts.  Note that the same
password will be used for SYS and SYSTEM.  Oracle recommends the use of
different passwords for each database account.  This can be done after
指定SYS和SYSTEM用户的密码, 输入的密码将不回显, 需要重复输入2遍.
initial configuration:
Confirm the password:

指定是否在启动时自动启动oracle xe 数据库, 在debian中, 即使输入y, 也不能自动启动, 请参考本文5.2节.
Do you want Oracle Database 10g Express Edition to be started on boot (y/n)
[y]:

Starting Oracle Net Listener…Done
Configuring Database…Done
Starting Oracle Database 10g Express Edition Instance…Done
Installation Completed Successfully.
To access the Database Home Page go to “http://127.0.0.1:8080/apex”;

配置完成以后可以在/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/log查看配置记录
debxe:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/log# ls -al
total 28
drwxr-xr-x  2 oracle dba 4096 2006-03-03 20:32 .
drwxr-xr-x  4 oracle dba 4096 2006-03-03 20:33 ..
-rw-r–r–  1 oracle dba 5269 2006-03-03 20:32 cloneDBCreation.log
-rw-r–r–  1 oracle dba 1369 2006-03-03 20:31 CloneRmanRestore.log
-rw-r–r–  1 oracle dba 1123 2006-03-03 20:33 postDBCreation.log
-rw-r–r–  1 oracle dba  121 2006-03-03 20:32 postScripts.log
使用ps -ef|grep oracle可以看到所有包含oracle的进程
debxe:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/log# ps -ef|
grep oracle
oracle     884     1  0 20:28 ?
00:00:00 /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/tnslsnr
LISTENER -inherit
oracle     988     1  0 20:32 ?        00:00:00 xe_pmon_XE
oracle     990     1  0 20:32 ?        00:00:00 xe_psp0_XE
oracle     992     1  0 20:32 ?        00:00:00 xe_mman_XE
oracle     994     1  0 20:32 ?        00:00:00 xe_dbw0_XE
oracle     996     1  0 20:32 ?        00:00:00 xe_lgwr_XE
oracle     998     1  0 20:32 ?        00:00:00 xe_ckpt_XE
oracle    1000     1  0 20:32 ?        00:00:01 xe_smon_XE
oracle    1002     1  0 20:32 ?        00:00:00 xe_reco_XE
oracle    1004     1  0 20:32 ?        00:00:00 xe_cjq0_XE
oracle    1006     1  0 20:32 ?        00:00:01 xe_mmon_XE
oracle    1008     1  0 20:32 ?        00:00:00 xe_mmnl_XE
oracle    1010     1  0 20:32 ?        00:00:00 xe_d000_XE
oracle    1012     1  0 20:32 ?        00:00:00 xe_s000_XE
oracle    1014     1  0 20:32 ?        00:00:00 xe_s001_XE
oracle    1016     1  0 20:32 ?        00:00:00 xe_s002_XE
oracle    1018     1  0 20:32 ?        00:00:00 xe_s003_XE
oracle    1022     1  0 20:32 ?        00:00:00 xe_qmnc_XE
oracle    1049     1  0 20:33 ?        00:00:00 xe_q000_XE
oracle    1051     1  0 20:33 ?        00:00:00 xe_q001_XE

进程号为884的进程就是oracle监听程序的进程, xe_开始的进程就是XE实例的进程.

XE实例的跟踪文件放在了/usr/lib/oracle/xe/app/oracle/admin/XE下,
/usr/lib/oracle/xe/app/oracle/admin/XE/bdump/alert_XE.log文件中包含了如下行:

Database Characterset is AL32UTF8
表明XE实例使用的字符集是AL32UTF8.

配置完成后可以通过http://127.0.0.1:8080/apex访问Oracle Application Express.

5 配置以后的修改

5.1 配置完成后Oracle Application Express 只监听127.0.0.1的8080端口, 不可以在别的机器上通过浏览器访问xe实例,
debxe:/usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/log# netstat
-lnp |grep tnslsnr
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN
884/tnslsnr
tcp        0      0 0.0.0.0:1521            0.0.0.0:*               LISTEN
884/tnslsnr
unix  2      [ ACC ]     STREAM     LISTENING     4141
884/tnslsnr         /var/tmp/.oracle/sEXTPROC_FOR_XE
unix  2      [ ACC ]     STREAM     LISTENING     4143
884/tnslsnr         /var/tmp/.oracle/s#884.1
unix  2      [ ACC ]     STREAM     LISTENING     4150
884/tnslsnr         /var/tmp/.oracle/s#884.2

如果需要在别的机器上访问数据库服务器上的xe实例, 可以以system身份登陆xe数据库, 然后运行EXEC
DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

debxe:~# su - oracle
[EMAIL PROTECTED]:~$ sqlplus

SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 3月 3 20:59:18 2006

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

请输入用户名:  system/oracle

连接到:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);

PL/SQL 过程已成功完成.

SQL> exit
从 Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production 断开

其中, oracle是我的xe数据库的system用户的密码.

修改完毕后使用netstat -lnp |grep tnslsnr查看修改的结果
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
884/tnslsnr
tcp        0      0 0.0.0.0:1521            0.0.0.0:*               LISTEN
884/tnslsnr
unix  2      [ ACC ]     STREAM     LISTENING     4141
884/tnslsnr         /var/tmp/.oracle/sEXTPROC_FOR_XE
unix  2      [ ACC ]     STREAM     LISTENING     4143
884/tnslsnr         /var/tmp/.oracle/s#884.1
unix  2      [ ACC ]     STREAM     LISTENING     4150
884/tnslsnr         /var/tmp/.oracle/s#884.2

5.2 即使在第4步中配置oracle自动启动, 在debian系统中, oracle xe也无法自动启动. 如果需要设置oracle xe自动启动, 可在
在相应的位置建立符号链接, 建立过程如下
debxe:~# cd /etc/rc2.d
debxe:/etc/rc2.d# ln -s ../init.d/oracle-xe S80oracle-xe
debxe:/etc/rc2.d# cd ../rc3.d/
debxe:/etc/rc3.d# ln -s ../init.d/oracle-xe S80oracle-xe
debxe:/etc/rc3.d# cd ../rc4.d/
debxe:/etc/rc4.d# ln -s ../init.d/oracle-xe S80oracle-xe
debxe:/etc/rc4.d# cd ../rc5.d/
debxe:/etc/rc5.d# ln -s ../init.d/oracle-xe S80oracle-xe
debxe:/etc/rc5.d# cd ../rc6.d/
debxe:/etc/rc6.d# ln -s ../init.d/oracle-xe K20oracle-xe
debxe:/etc/rc6.d# cd ../rc0.d
debxe:/etc/rc0.d# ln -s ../init.d/oracle-xe K20oracle-xe
debxe:/etc/rc0.d# cd ../rc1.d
debxe:/etc/rc1.d# ln -s ../init.d/oracle-xe K20oracle-xe
debxe:/etc/rc1.d#

6 版本变更

v0.1 2006年3月1日, 初稿.

v1.0 2006年3月3日, 第一版, 按照文档重新做了1遍, 修改不分错误, 增加了更多阅读部分.

7 更多阅读

Oracle Database Express Edition 10g Release 2 (10.2) Document Library
http://www.oracle.com/pls/xe102/homepage

Oracle® Database Express Edition Installation Guide 10g Release 2 (10.2) for
Linux
http://download-west.oracle.com/docs/cd/B25329_01/doc/install.102/b25144/toc.htm

Oracle® Database Express Edition 2 Day DBA 10g Release 2 (10.2)
http://download-west.oracle.com/docs/cd/B25329_01/doc/admin.102/b25107/toc.htm

2007年02月27日

vim syntax highlighting on ubuntu

归档在: 未分类, Linux, java, php, perl, python — JACKEYJ @ 8:52 AM

In ubuntu 6.0.6 , vim syntax highlighting is disable by default.
to enable it to uncomment in /etc/vim/vimrc file syntax on item
such as below:
[code]
” Vim5 and later versions support syntax highlighting. Uncommenting the next
” line enables syntax highlighting by default.
syntax on

[/code]

2007年02月25日

2007 真实的谎言

归档在: 未分类 — JACKEYJ @ 9:13 AM

早在春节来临之前,当铁路部门宣布春运不涨价之后,安徽有关部门即通过媒体向全社会承诺“公路春运不涨价”。但据记者调查,在舒城、六安、定远、合肥等地,长途汽车动辄涨价一二十元,并且超载,城市出租车以拒载相要挟、哄抬车价等混乱现象此起彼伏,群众为此叫苦不迭(2月24日《中国青年报》报道)。

现在不但公路食言,就连最早提出不涨价的铁老大也食言。

宁波-杭州东的T748、746、741同样变相的涨价,把原来的所有的硬座车厢都改成了软座。票价也有原来的¥24变成了¥37。

人民群众再次被老大们忽悠了:(

2007年02月22日

掌握sudo的使用

归档在: 未分类, Linux — JACKEYJ @ 3:48 PM
作者:王聪@西邮
2006年7月28号

“sudo”是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他 特许用户才能完成的任务,比如:运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab, /etc/samba/smb.conf等。这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。

一. sudo的特点

sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会导致非法用户攫取 root权限。同时,它还要兼顾易用性,让系统管理员能够更有效,更方便地使用它。sudo设计者的宗旨是:给用户尽可能少的权限但仍允许完成他们的工作。所以,sudo有以下特点:

  • 1. sudo能够限制指定用户在指定主机上运行某些命令。
  • 2. sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。
  • 3. sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
  • 4. sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。

    二. sudo命令

    sudo程序本身就是一个设置了SUID位的二进制文件。我们可以检查一下它的权限:

    $ls -l /usr/bin/sudo
    —s–x–x 2 root root 106832 02-12 17:41 /usr/bin/sudo

    它的所有者是root,所以每个用户都可以像root那样执行该程序。设置了SUID的程序在运行时可以给使用者以所有者的EUID。这也是为什么设置了SUID的程序必须小心编写。但是设置一个命令文件的SUID和用sudo来运行它是不同的概念,它们起着不同的作用。sudo 的配置都记录在/etc/sudoers文件中,我们下面将会详细说明。配置文件指明哪些用户可以执行哪些命令。要使用sudo,用户必须提供一个指定用 户名和密码。注意:sudo需要的不是目标用户的密码,而是执行sudo的用户的密码。如果不在sudoers中的用户通过sudo执行命令,sudo会 向管理员报告这一事件。用户可以通过sudo -v来查看自己是否是在sudoers 之中。如果是,它还可以更新你的“入场券”上的时间;如果不是,它会提示你,但不会通知管理员。

    sudo命令格式如下:

    sudo -K | -L | -V | -h | -k | -l | -vsudo [-HPSb] [-a auth_type] [-c class|-] [-p prompt] [-u username|#uid] {-e file [...] | -i | -s | command}

    下面我们再来看一下sudo其它常用的一些参数:

    选项 含义 作用
    sudo -h Help 列出使用方法,退出。
    sudo -V Version 显示版本信息,并退出。
    sudo -l List 列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。
    sudo -u username|#uid User 以指定用户的身份执行命令。后面的用户是除root以外的,可以是用户名,也可以是#uid。
    sudo -k Kill 清除“入场卷”上的时间,下次再使用sudo时要再输入密码。
    sudo -K Sure kill 与-k类似,但是它还要撕毁“入场卷”,也就是删除时间戳文件。
    sudo -b command Background 在后台执行指定的命令。
    sudo -p prompt command Prompt 可以更改询问密码的提示语,其中%u会代换为使用者帐号名称,%h会显示主机名称。非常人性化的设计。
    sudo -e file Edit 不是执行命令,而是修改文件,相当于命令sudoedit

    还有一些不常用的参数,在手册页sudo(8)中可以找到。

    三. 配置sudo

    配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo有两个原 因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。

    visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,就像:

    >>> sudoers file: syntax error, line 22 <<

    此时我们有三种选择:键入“e”是重新编辑,键入“x”是不保存退出,键入“Q”是退出并保存。如果真选择Q,那么sudo将不会再运行,直到错误被纠正。现在,我们一起来看一下神秘的配置文件,学一下如何编写它。让我们从一个简单的例子开始:让用户foobar可以通过sudo执行所有root可执行的命令。以root身份用visudo打开配置文件,可以看到类似下面几行:

    # Runas alias specification# User privilege specificationroot    ALL=(ALL) ALL

    我们一看就明白个差不多了,root有所有权限,只要仿照现有root的例子就行,我们在下面加一行(最好用tab作为空白):

    foobar  ALL=(ALL)	ALL

    保存退出后,切换到foobar用户,我们用它的身份执行命令:

    [foobar@localhost ~]$ ls /rootls: /root: 权限不够
    [foobar@localhost ~]$ sudo ls /rootPassword:anaconda-ks.cfg  Desktop  install.log  install.log.syslog

    好了,我们限制一下foobar的权利,不让他为所欲为。比如我们只想让他像root那样使用ls和ifconfig,把那一行改为:

    foobar  localhost=	/sbin/ifconfig,   /bin/ls

    再来执行命令:

    [foobar@localhost ~]$ sudo head -5 /etc/shadowPassword:
    Sorry, user foobar is not allowed to execute '/usr/bin/head -5 /etc/shadow' as root on localhost.localdomain.
    [foobar@localhost ~]$ sudo /sbin/ifconfigeth0      Link encap:Ethernet  HWaddr 00:14:85:EC:E9:9B...

    现 在让我们来看一下那三个ALL到底是什么意思。第一个ALL是指网络中的主机,我们后面把它改成了主机名,它指明 foobar可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个 ALL当然就是指命令名了。例如,我们想让foobar用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:

    foobar	linux=(jimmy,rene)	/bin/kill

    但这还有个问题,foobar到底以jimmy还是rene的身份执行?这时我们应该想到了sudo -u了,它正是用在这种时候。 foobar可以使用sudo -u jimmy kill PID或者sudo -u rene kill PID,但这样挺麻烦,其实我们可以不必每次加-u,把rene或jimmy设为默认的目标用户即可。再在上面加一行:

    Defaults:foobar	runas_default=rene

    Defaults后面如果有冒号,是对后面用户的默认,如果没有,则是对所有用户的默认。就像配置文件中自带的一行:

    Defaults    env_reset

    另一个问题是,很多时候,我们本来就登录了,每次使用sudo还要输入密码就显得烦琐了。我们可不可以不再输入密码呢?当然可以,我们这样修改配置文件:

    foobar  localhost=NOPASSWD:     /bin/cat, /bin/ls

    再来sudo一下:

    [foobar@localhost ~]$ sudo ls /rootanaconda-ks.cfg  Desktop  install.log  install.log.syslog

    当然,你也可以说“某些命令用户foobar不可以运行”,通过使用!操作符,但这不是一个好主意。因为,用!操作符来从ALL中“剔出”一些命令一般是没什么效果的,一个用户完全可以把那个命令拷贝到别的地方,换一个名字后再来运行。

    四. 日志与安全

    sudo为安全考虑得很周到,不仅可以记录日志,还能在有必要时向系统管理员报告。但是,sudo的日志功能不是自动的,必须由管理员开启。这样来做:

    # touch /var/log/sudo# vi /etc/syslog.conf

    在syslog.conf最后面加一行(必须用tab分割开)并保存:

    local2.debug					/var/log/sudo

    重启日志守候进程,

    ps aux | grep syslogd

    把得到的syslogd进程的PID(输出的第二列是PID)填入下面:

    kill –HUP PID

    这样,sudo就可以写日志了:

    [foobar@localhost ~]$ sudo ls /rootanaconda-ks.cfg  Desktop  install.log  install.log.syslog
    $cat /var/log/sudoJul 28 22:52:54 localhost sudo:   foobar : TTY=pts/1 ; PWD=/home/foobar ; USER=root ; COMMAND=/bin/ls /root

    不过,有一个小小的“缺陷”,sudo记录日志并不是很忠实:

    [foobar@localhost ~]$ sudo cat /etc/shadow > /dev/null
    [foobar@localhost ~]$ cat /var/log/sudo...Jul 28 23:10:24 localhost sudo:   foobar : TTY=pts/1 ;
    PWD=/home/foobar ; USER=root ; COMMAND=/bin/cat /etc/shadow

    重定向没有被记录在案!为什么?因为在命令运行之前,shell把重定向的工作做完了,sudo根本就没看到重定向。这也有个好处,下面的手段不会得逞:

    [foobar@localhost ~]$ sudo ls /root > /etc/shadowbash: /etc/shadow: 权限不够

    sudo 有自己的方式来保护安全。以root的身份执行sudo -V,查看一下sudo的设置。因为考虑到安全问题,一部分环境变量并没有传递给sudo后面的命令,或者被检查后再传递的,比如:PATH,HOME, SHELL等。当然,你也可以通过sudoers来配置这些环境变量。
    如上所见,sudo对于控制和审查root的访问很有帮助,它能让系统管理员更有效,安全地管理系统。掌握sudo的正确使用也是对于系统管理员的良好训练。本文只是初步地介绍了sudo 的使用,了解更多请参考sudoers(5)和sudo(8)手册页。

  • 2007年02月20日

    linux web site 收藏

    归档在: 未分类, Linux, apache, java, php, perl, python — JACKEYJ @ 9:10 PM

    国外
    http://lwn.net/
    http://www.tldp.org/
    https://rhn.redhat.com
    http://www.justlinux.com/
    http://www.linuxtoday.com/
    http://www.linuxquestions.org/
    http://www.fokus.gmd.de/linux/
    http://www.linux-tutorial.info/
    http://public.www.planetmirror.com/
    http://www.freebsdforums.org/forums/
    http://www.netfilter.org/documentation/
    http://www-106.ibm.com/developerworks/linux/
    http://www.redhat.com/docs/ redhat官方文档,redhat用户必看
    http://www.redhat.com/apps/support/errata/ redhat安全性警告、软件更新和增强,建议每周至少查阅一次

    国内
    http://www.fanqiang.com/
    http://www.linuxsir.com/
    http://www.chinaunix.net/
    http://www.linuxfans.org/
    http://www.linuxeden.com/
    http://www.linuxforum.net/
    http://www.linuxaid.com.cn/
    http://freesoft.online.sh.cn/
    http://www-900.ibm.com/developerWorks/cn/linux/index.shtml

    redhat linux下载地址
    ftp://ftp.redhat.com/pub/redhat/linux
    http://redhat.com/download/mirror.html

    redhat 发行版全球官方镜像站
    http://freesoft.online.sh.cn 国内高速下载
    http://www.linuxeden.com/
    http://www.freshrpms.net/
    http://www.linux.cz/apt-rpm/ - Red Hat linux 7.x repositories (with all freshrpms included too!)
    http://apt-rpm.tuxfamily.org/ - Red Hat linux 6.2, 7.x and 8.0 repositories
    http://apt.nlc.no/apt/ - Red Hat linux 6.2, 7.x and Rawhide repositories
    http://ftp.uninett.no/pub/linux/apt/ - Red Hat linux 6.2, 7.x, 8.0 and Rawhide repositories
    http://redhat.usu.edu/ - Red Hat linux 7.2, 7.3 and 8.0 repositories
    ftp://mirror.pa.msu.edu/apt/ - Red Hat linux 7.2, 7.3 and 8.0 repositories
    http://apt-rpm.codefactory.se/ - Red Hat linux 7.2, 7.3 and 8.0 and gnomehide repositories http://apt.42h.de/ - Red Hat Linux 7.2, 7.3 and 8.0 repositories
    http://apt.toggletext.com.au/ - A few Red Hat linux 7.2 custom packages http://people.ecsc.co.uk/~matt/repository.html - Lots of custom Red Hat Linux 8.0 GNOME 2 and related packages
    http://ftp-stud.fht-esslingen.de/apt/ - Red Hat linux 7.x, 8.x and rawhide
    http://apt.unl.edu/ - Red Hat linux 7.3 and 8.0
    http://kde-redhat.sourceforge.net/ - KDE for Red Hat project

    linux 常用软件搜索
    http://bingle.pku.edu.cn 北大天网ftp搜索,教育网和国内用户查找软件应首先访问,软件特别丰富
    http://www.linuxforum.net/ 有很多国外软件的官方镜像,应首先访问
    http://rpmfind.net
    http://freshmeat.net
    http://sourceforge.net
    注:很多软件主站是在sourceforge上的,形如http://phpmyadmin.sourceforge.net的地址,可以通过http://sourceforge.net/projects/phpmyadmin这样的地址访问,如不能上也可用http镜象直接下载软件如 http://telia.dl.sourceforge.net/phpmyadmin/
    http://www.gnu.org GNU的大本营,gcc,bash之类的软件源码可以到这里得到 linux 文档和FAQs
    http://www.tldp.org 强烈推荐! The linux document project: linux HOWTO and guides
    http://www.linux.org.tw/CLDP/ 强烈推荐! TLDP中文版,繁体
    http://www.linuxgazette.com/ linux在线杂志
    http://linux.tcpip.com.**/*ownload/ linux中文版文档和软件下载
    http://cosoft.org.cn/html/documents/ 很多中文版手册
    http://www.google.com 强烈推荐!本站的讨论内容也可以通过google搜索得到,遇到疑难问题到google搜索会得到比绝大多数论坛更快的回答

    linux 桌面主站一览表
    GNOME: http://www.gnome.org
    KDE: http://www.kde.org
    XFce: http://www.xfce.org/
    Window Maker: http://www.windowmaker.org/
    BlackBox: http://sourceforge.net/projects/blackboxwm
    XPde: http://www.xpde.com
    ROX: http://sourceforge.net/projects/rox
    5dwm: http://5dwm.org/
    foXdesktop: http://sourceforge.net/projects/foxdesktop
    EDE: http://sourceforge.net/projects/ede
    UDE: http://sourceforge.net/projects/udeproject

    其它OS:
    Mandrake linux http://www.mandrakelinux.com
    debian linux http://www.debian.org
    slackware linux http://www.slackware.com
    suse linux http://www.suse.com
    FreeBSD http://www.freebsd.org
    netbsd http://www.netbsd.org
    openbsd http://www.openbsd.org
    Solaris http://www.sun.com/solaris 硬件和安装专业站点
    linux Kernel内核: http://www.kernel.org
    USB安装问题: http://www.linux-usb.org
    笔记本计算机安装: http://www.linux-laptop.net
    打印机驱动 http://www.linuxprinting.org

    主要服务器软件主站
    1. WWW server:
    Apache http://www.apache.org Apache
    SSL模块Mod_ssl http://www.modssl.org
    aol server http://www.aolserver.com

    2. Servlets/JSP引擎:
    Tomcat: http://jakarta.apache.org
    Resin: http://www.caucho.com
    开源应用服务器AS–Jboss: http://www.jboss.org

    3. 服务器语言:
    PHP http://www.php.net
    Zend http://www.zend.com
    Java http://www.javasoft.com
    Python http://www.python.org
    Zope http://www.zope.org
    Perl http://www.perl.org
    Ruby http://www.ruby-lang.org/en

    4. 数据库:
    MySQL http://www.mysql.com
    PostgreSQL http://www.postgresql.org
    Oracle http://www.oracle.com
    sap db http://www.sapdb.org
    PHPMyAdmin — http://www.phpmyadmin.org
    PHPPgAdmin: http://sourceforge.net/projects/phppgadmin

    5. FTP服务器
    wu-ftpd http://www.wu-ftpd.org
    Proftpd http://www.proftpd.org
    Pure-ftpd http://www.pureftpd.org
    ncftpd http://www.ncftpd.com
    vsftpd http://vsftpd.beasts.org

    6. SMTP服务器
    Sendmail http://www.sendmail.org
    qmail http://www.qmail.org
    Postfix http://www.postfix.org
    Exim http://www.exim.org
    POP3–qpopper http://www.qpopper.org

    7. IMAP服务器
    Cyrus-IMAPD http://asg.web.cmu.edu/cyrus/imapd
    UW IMAP http://www.washington.edu/imap
    courierimap http://www.inter7.com/courierimap

    8. 基本安全工具
    firewall Iptables: http://www.iptables.org
    shorewall: http://www.shorewall.net
    inetd Xinetd: http://www.xinetd.org
    Openssl: http://www.openssl.org
    OpenSSH: http://www.openssh.org
    nmap: http://http://www.insecure.org/nmap
    Tripwire: http://www.tripwire.org
    snort: http://www.snort.org
    nessus: http://www.nessus.org
    GnuPG: http://www.gnupg.org
    chkrootkit: http://www.chkrootkit.org
    安全顾问: http://www.cert.org

    9. 其它服务器软件
    CVS–CVS http://www.cvshome.org
    DNS域名解析BIND http://www.isc.org/products/BIND/
    DHCP–DHCP http://www.isc.org/products/DHCP/
    INN新闻组INN: http://www.isc.org/products/INN/
    Proxy代理缓存: Squid http://www.squid-cache.org
    Socks代理:http://www.socks.nec.com/
    Samba Server: http://www.samba.org
    Print CUPS: http://www.cups.org
    LDAP OpenLDAP: http://www.openldap.org
    流量分析 MRTG http://www.mrtg.org
    日志分析 webalizer http://www.mrunix.net/webalizer/
    Ipsec/VPN http://www.freeswan.org
    路由 Zebra http://www.zebra.org
    集群 LVS http://www.linuxvirtualserver.org
    MPICH http://www-unix.mcs.anl.gov/mpi/mpich/
    PVM:http://www.netlib.org/pvm3/
    Rsync: http://rsync.samba.org
    linuxconf: http://www.solucorp.qc.ca/linuxconf/
    Webmin: http://www.webmin.com

    10. 其他
    RedHat Advance Server2.1升级内核
    http://redhat.pacific.net.au/redhat/linux/updates/enterprise/2.1AS/en/os/SRPMS/

    2007年02月06日

    最简单的URL跳转方式

    归档在: 未分类, Linux, apache, java, php — JACKEYJ @ 9:29 AM

    在你的head里面加入一下代码就可以了
    < meta HTTP-EQUIV=REFRESH CONTENT="10000;URL='http://www.zjant.com'">
    CONTENT=0 代表跳转等待的时间
    URL=’http://www.zjant.com’跳转的网址

    如果嫌不够保险,可用下面的在page中加入一个java script
    内容是:

    window.location.replace(’http://www.zjant.com/’);

    2007年02月05日

    Apache HTTP Server 与 Tomcat 的三种连接方式介绍

    归档在: 未分类, Linux, apache, jboss, java — JACKEYJ @ 2:38 PM

    developerWorks 中国  >  Open source | Web development >

    Apache HTTP Server 与 Tomcat 的三种连接方式介绍 
     
      文档选项
       将此页作为电子邮件发送
     
     

    拓展 Tomcat 应用
      下载 IBM 开源 J2EE 应用服务器 WAS CE 新版本 V1.1
     
     
    级别: 初级

    刘 冬 (javayou@gmail.com), 开发工程师,  
    2007 年 1 月 15 日

    整合 Apache Http Server 和 Tomcat 可以提升对静态文件的处理性能、利用 Web 服务器来做负载均衡以及容错、无缝的升级应用程序。本文介绍了三种整合 Apache 和 Tomcat 的方式。
    首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接。事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装好 tomcat 后通过 8080 端口可以直接使用 Tomcat 所运行的应用程序,你也可以将该端口改为 80。

    既然 Tomcat 本身已经可以提供这样的服务,我们为什么还要引入 Apache 或者其他的一些专门的 HTTP 服务器呢?原因有下面几个:
    1. 提升对静态文件的处理性能

    2. 利用 Web 服务器来做负载均衡以及容错

    3. 无缝的升级应用程序

    这三点对一个 web 网站来说是非常之重要的,我们希望我们的网站不仅是速度快,而且要稳定,不能因为某个 Tomcat 宕机或者是升级程序导致用户访问不了,而能完成这几个功能的、最好的 HTTP 服务器也就只有 apache 的 http server 了,它跟 tomcat 的结合是最紧密和可靠的。

    接下来我们介绍三种方法将 apache 和 tomcat 整合在一起。

    JK

    这是最常见的方式,你可以在网上找到很多关于配置JK的网页,当然最全的还是其官方所提供的文档。JK 本身有两个版本分别是 1 和 2,目前 1 最新的版本是 1.2.19,而版本 2 早已经废弃了,以后不再有新版本的推出了,所以建议你采用版本 1。

    JK 是通过 AJP 协议与 Tomcat 服务器进行通讯的,Tomcat 默认的 AJP Connector 的端口是 8009。JK 本身提供了一个监控以及管理的页面 jkstatus,通过 jkstatus 可以监控 JK 目前的工作状态以及对到 tomcat 的连接进行设置,如下图所示:

    图 1:监控以及管理的页面 jkstatus
    图 1:监控以及管理的页面 jkstatus
    在这个图中我们可以看到当前JK配了两个连接分别到 8109 和 8209 端口上,目前 s2 这个连接是停止状态,而 s1 这个连接自上次重启后已经处理了 47 万多个请求,流量达到 6.2 个 G,最大的并发数有 13 等等。我们也可以利用 jkstatus 的管理功能来切换 JK 到不同的 Tomcat 上,例如将 s2 启用,并停用 s1,这个在更新应用程序的时候非常有用,而且整个切换过程对用户来说是透明的,也就达到了无缝升级的目的。关于 JK 的配置文章网上已经非常多了,这里我们不再详细的介绍整个配置过程,但我要讲一下配置的思路,只要明白了配置的思路,JK 就是一个非常灵活的组件。

    JK 的配置最关键的有三个文件,分别是

    httpd.conf
    Apache 服务器的配置文件,用来加载 JK 模块以及指定 JK 配置文件信息

    workers.properties
    到 Tomcat 服务器的连接定义文件

    uriworkermap.properties
    URI 映射文件,用来指定哪些 URL 由 Tomcat 处理,你也可以直接在 httpd.conf 中配置这些 URI,但是独立这些配置的好处是 JK 模块会定期更新该文件的内容,使得我们修改配置的时候无需重新启动 Apache 服务器。

    其中第二、三个配置文件名都可以自定义。下面是一个典型的 httpd.conf 对 JK 的配置

    # (httpd.conf) # 加载 mod_jk 模块
    LoadModule jk_module modules/mod_jk.so
    # # Configure mod_jk #
    JkWorkersFile conf/workers.properties
    JkMountFile conf/uriworkermap.properties
    JkLogFile logs/mod_jk.log JkLogLevel warn

    接下来我们在 Apache 的 conf 目录下新建两个文件分别是 workers.properties、uriworkermap.properties。这两个文件的内容大概如下

    # # workers.properties #   # list the workers by name
    worker.list=DLOG4J, status  # localhost server 1 # ------------------------
    worker.s1.port=8109
    worker.s1.host=localhost
    worker.s1.type=ajp13
    # localhost server 2 # ------------------------
    worker.s2.port=8209
    worker.s2.host=localhost
    worker.s2.type=ajp13
    worker.s2.stopped=1
    worker.DLOG4J.type=lb
    worker.retries=3
    worker.DLOG4J.balanced_workers=s1, s2
    worker.DLOG4J.sticky_session=1
    worker.status.type=status

    以上的 workers.properties 配置就是我们前面那个屏幕抓图的页面所用的配置。首先我们配置了两个类型为 ajp13 的 worker 分别是 s1 和 s2,它们指向同一台服务器上运行在两个不同端口 8109 和 8209 的 Tomcat 上。接下来我们配置了一个类型为 lb(也就是负载均衡的意思)的 worker,它的名字是 DLOG4J,这是一个逻辑的 worker,它用来管理前面配置的两个物理连接 s1 和 s2。最后还配置了一个类型为 status 的 worker,这是用来监控 JK 本身的模块。有了这三个 worker 还不够,我们还需要告诉 JK,哪些 worker 是可用的,所以就有 worker.list = DLOG4J, status 这行配置。

    接下来便是 URI 的映射配置了,我们需要指定哪些链接是由 Tomcat 处理的,哪些是由 Apache 直接处理的,看看下面这个文件你就能明白其中配置的意义

    /*=DLOG4J
    /jkstatus=status
    !/*.gif=DLOG4J
    !/*.jpg=DLOG4J
    !/*.png=DLOG4J
    !/*.css=DLOG4J
    !/*.js=DLOG4J
    !/*.htm=DLOG4J
    !/*.html=DLOG4J

    相信你已经明白了一大半了:所有的请求都由 DLOG4J 这个 worker 进行处理,但是有几个例外,/jkstatus 请求由 status 这个 worker 处理。另外这个配置中每一行数据前面的感叹号是什么意思呢?感叹号表示接下来的 URI 不要由 JK 进行处理,也就是 Apache 直接处理所有的图片、css 文件、js 文件以及静态 html 文本文件。

    通过对 workers.properties 和 uriworkermap.properties 的配置,可以有各种各样的组合来满足我们前面提出对一个 web 网站的要求。您不妨动手试试!


      

    回页首

    http_proxy

    这是利用 Apache 自带的 mod_proxy 模块使用代理技术来连接 Tomcat。在配置之前请确保是否使用的是 2.2.x 版本的 Apache 服务器。因为 2.2.x 版本对这个模块进行了重写,大大的增强了其功能和稳定性。

    http_proxy 模式是基于 HTTP 协议的代理,因此它要求 Tomcat 必须提供 HTTP 服务,也就是说必须启用 Tomcat 的 HTTP Connector。一个最简单的配置如下

    ProxyPass /images ! ProxyPass /css ! ProxyPass /js ! ProxyPass / http://localhost:8080/

    在这个配置中,我们把所有 http://localhost 的请求代理到 http://localhost:8080/ ,这也就是 Tomcat 的访问地址,除了 images、css、js 几个目录除外。我们同样可以利用 mod_proxy 来做负载均衡,再看看下面这个配置

    ProxyPass /images !
    ProxyPass /css !
    ProxyPass /js !
    ProxyPass / balancer://example/
    BalancerMember http://server1:8080/
    BalancerMember http://server2:8080/
    BalancerMember http://server3:8080/

    配置比 JK 简单多了,而且它也可以通过一个页面来监控集群运行的状态,并做一些简单的维护设置。

    图 2:监控集群运行状态
    图 2:监控集群运行状态


      

    回页首

    ajp_proxy

    ajp_proxy 连接方式其实跟 http_proxy 方式一样,都是由 mod_proxy 所提供的功能。配置也是一样,只需要把 http:// 换成 ajp:// ,同时连接的是 Tomcat 的 AJP Connector 所在的端口。上面例子的配置可以改为:

    ProxyPass /images !
    ProxyPass /css !
    ProxyPass /js !
    ProxyPass / balancer://example/
    BalancerMember ajp://server1:8080/
    BalancerMember ajp://server2:8080/
    BalancerMember ajp://server3:8080/

    采用 proxy 的连接方式,需要在 Apache 上加载所需的模块,mod_proxy 相关的模块有 mod_proxy.so、mod_proxy_connect.so、mod_proxy_http.so、mod_proxy_ftp.so、mod_proxy_ajp.so, 其中 mod_proxy_ajp.so 只在 Apache 2.2.x 中才有。如果是采用 http_proxy 方式则需要加载 mod_proxy.so 和 mod_proxy_http.so;如果是 ajp_proxy 则需要加载 mod_proxy.so 和 mod_proxy_ajp.so这两个模块。


      

    回页首

    三者比较

    相对于 JK 的连接方式,后两种在配置上是比较简单的,灵活性方面也一点都不逊色。但就稳定性而言就不像 JK 这样久经考验,毕竟 Apache 2.2.3 推出的时间并不长,采用这种连接方式的网站还不多,因此,如果是应用于关键的互联网网站,还是建议采用 JK 的连接方式。

     

    参考资料

     

    关于作者

    2007年02月02日

    杭州-郑州的长途汽车

    归档在: 未分类 — JACKEYJ @ 8:58 AM

    从杭州到郑州现在每天有两班汽车,12个小时就可以到达,比坐火车方便多了。
    杭州的上车地点:
    汽车北站    14:05   17:30

    汽车东站    15:10    18:20

    杭州的联系电话:13336013882     0571-86786946

    郑州上车点:

    长途汽车中心站:    16:40    19:40

    郑州联系电话:0371-66332567    13203888716    13213012222

    通过域名来访问mysql而引起的问题

    归档在: Linux, DB, java — JACKEYJ @ 8:53 AM

    最 近dw上新的系统,使用在/etc/hosts里面配置主机名来映射IP地址。然后通过域名来访问mysql,结果在使用loadrunner进行性能 测试的时候,当使用10个并发,持续10分钟测试php连接mysql的速度。发现随着时间的推移,数据库连接的速度明显下降,平均的连接时间都在20s 以上。
    而且在mysql 中的processlist列表里面出现了很多类似下面的连接。
    | 1045 | unauthenticated user | 10.0.1.70:59038 | NULL | Connect | | login | NULL |
    这个时候通过php访问mysql的速度很慢。
    最后通过修改mysql的配置,在my.cnf中加入
    [mysqld]
    skip-name-resolve
    back_log=500
    再次用同样的方法测试,得到的结果是平均连接时间在5.116s。

    由此可见,域名访问mysql对速度的影响之大出乎我们意料!!

    2007年02月01日

    Installing Oracle 10g on CentOS 4.3 Step-by-Step

    归档在: 未分类, Linux, DB — JACKEYJ @ 7:20 PM

    Installing Oracle 10g on RHEL AS 3 Step-by-Step

    [Oracle] Installing Oracle 10g on RHEL AS 3 Step-by-Step整理:Fenng 日期:06-Apr-2004  出处:http://www.dbanotes.net版本:1.01
    不 久前,Oracle(甲骨文)公司在美国加州的总部宣布, Oracle 10g 数据库 与 Oracle RAC 在 TPC-H 基准测试中创造了新的世界纪录.这是个令人震惊的消息.因为这个测试是在 Linux ( Red Hat Enterprise Linux Advanced Server 3) 的平台上进行的. 这充分显示了 Oracle 在低成本 Linux 集群服务器上高效管理大规模数据仓库的能力, 也表明 Linux 在性能价格比上显而易见的优势,标志着Linux在大规模企业应用上已经成熟.
    相信很多朋友已经对10g跃跃欲试了,现在从这里让我们开始10g之旅.
    本 文描述了在Red Hat Enterprise Linux Advanced Server 3 (RHEL 3)上安装Oracle 10g 必要的步骤和相关知识. 本文假定你的Linux 操作系统已经安装完毕,并且您应该具有一定的 Unix 操作系统背景知识.
    配置RedHat AS 3操作系统版本:
    Red Hat Enterprise Linux AS release 3 (Taroon)Kernel 2.4.21-4.EL on an i686
    按照常规来安装操作系统,记得要安装开发工具(gcc等必要工具).
    必要的硬件信息检查
    检查内容
    最小值
    检查命令参考
    物理内存
    512M
    # grep MemTotal /proc/meminfo
    交换空间
    1.0 GB或者2倍内存大小
    # grep SwapTotal /proc/meminfo
    /tmp 空间
    400 MB
    # df -k /tmp
    软件所需空间
    2.5 GB
    # df -k (空间越大越好,如果是正式系统,应该进行详尽的规划)
    数据库文件
    1.2 GB
    # df -k (空间越大越好,如果是正式系统,应该进行详尽的规划)
    检查完如上各项之后, 应该修改核心参数.执行如下命令:
    #vi /etc/sysctl.conf
    #注释:#表示使用root用户操作,$表示使用oracle 用户进行操作.提示符后面的蓝色部分表示需要输入的命令,以下同. 在该文件末尾加入如下内容:
    kernel.shmall = 2097152
    kernel.shmmax = 2147483648
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    fs.file-max = 65536
    net.ipv4.ip_local_port_range = 1024 65000
    编辑完之后,保存,执行 # /sbin/sysctl -p 命令操作来使我们所做的变更生效.
    注:上面kernel.shmmax/kernel.sem等是典型的核心参数配置.您可能需要根据您的实际环境进行适当的变动.
    关于这些核心参数的说明在Oracle的 Oracle9i Installation Guide Release 2 (9.2.0.1.0) for UNIX Systems 中有很详细的说明.( http://download-west.oracle.com/docs/html/A96167_01/toc.htm ) 然后,应该检查一下上面的操作是否正确:
    # /sbin/sysctl -a grep sem
    # /sbin/sysctl -a grep shm
    # /sbin/sysctl -a grep file-max
    # /sbin/sysctl -a grep ip_local_port_range
    为Oracle用户设定Shell的限制
    一般来说,出于性能上的考虑,还需要需要进行如下的设定,以便改进Oracle用户的有关 nofile(可打开的文件描述符的最大数)和nproc(单个用户可用的最大进程数量)
    # vi /etc/security/limits.conf
    # 添加如下的行
    * soft nproc 2047
    * hard nproc 16384
    * soft nofile 1024
    * hard nofile 65536
    添加如下的行到/etc/pam.d/login 文件:
    session required /lib/security/pam_limits.so
    编辑 /etc/profile 文件,添加如下部分:
    if [ $USER = “oracle” ]; then
    if [ $SHELL = “/bin/ksh” ]; then
    ulimit -p 16384
    ulimit -n 65536
    else
    ulimit -u 16384 -n 65536
    fi
    fi
    之后,执行$ unlimit 验证一下.
    检查并安装相关补丁
    在这个版本的RHEL上安装Oracle,必须要有几个软件包. 确认以下 rpm包都已经安装:
    make-3.79
    binutils-2.11
    openmotif-2.2.2-16
    setarch-1.3-1
    compat-db-4.0.14.5
    compat-gcc-7.3-2.96.122
    compat-gcc-c++-7.3-2.96.122
    compat-libstdc++-7.3-2.96.122
    compat-libstdc++-devel-7.3-2.96.122
    # rpm -qa grep compat
    # 在我的机器上输出如下:
    compat-gcc-c++-7.3-2.96.122
    compat-libstdc++-7.3-2.96.122
    compat-libstdc++-devel-7.3-2.96.122
    compat-glibc-7.x-2.2.4.32.5
    compat-db-4.0.14-5
    compat-gcc-7.3-2.96.122
    # rpm -qa grep openmotif
    openmotif-devel-2.2.2-16
    openmotif-2.2.2-16
    # rpm -qa grep setarch
    setarch-1.3-1
    上面显示的内容是在笔者已经安装了具体的RPM包之后的结果.一般情况下,你的系统上的输出结果和这个不同.如果个别包没有安装,把系统安装光盘mount上,找到具体的软件包(大多数在第三张光盘上),然后利用如下的命令来安装相应的包:
    # rpm -ivh compat…..rpm
    要额外注意的是,这些软件包之间是有依赖性的,先后的顺序要找好.否则会报告不能安装的错误. 此外,最好验证一下 gcc和glibc的版本(要求是gcc-3.2.3-2 或者更高):
    #gcc -v
    #rpm -q glibc
    创建用户和相关的组
    # /usr/sbin/groupadd oinstall
    # /usr/sbin/groupadd dba
    # /usr/sbin/useradd -g oinstall -G dba oracle
    如果只是测试目的的话,不创建oinstall组也没什么. 不过还是规范一点比较好.如果oracle 用户和dba组等已经存在,作适当的调整即可.
    检查并调整环境变量
    登录为oracle用户
    # su - oracle
    $ cd
    $ vi .bash_profile
    #添加如下内容,你的具体值应该不会和这个完全相同.
    export ORACLE_BASE=/u/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1
    export ORACLE_SID=TEST
    export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
    export LC_CTYPE=en_US.UTF-8
    然后执行
    $ source .bash_profile
    使环境变量生效. /u/app/oracle 等目录应该建立好并做合适的授权.
    开始安装10g
    mount你的安装盘.(我一般都是把文件拷贝到系统中一个具体的位置,比如/u/install ) .执行:
    $ sh /u/install/runInstaller
    如 果不能出现安装画面,查看本文后面的FAQ。非常值得称道的是,10g的安装相比以前的多了一个 Checking operating system certification 的步骤。特别实用。安装文件会自动检测所需的条件。如果有不符合的地方,安装程序会报告给你.并会给出具体原因。大大减少了出错的可能. 下面是检查成功输出的内容 :
    Checking operating system certification
    Expected result: One of redhat-2.1,redhat-3,UnitedLinux-1.0
    Actual Result: redhat-3
    Check complete. The overall result of this check is: Passed
    =======================================================================
    Checking kernel parameters
    Checking for VERSION=2.4.9.25; found VERSION=2.4.21. Passed
    Checking for shmall=2097152; found shmall=2097152. Passed
    Checking for shmseg=10; found shmseg=4096. Passed
    Checking for semmsl=250; found semmsl=250. Passed
    Checking for semmni=128; found semmni=128. Passed
    Checking for filemax=65536; found filemax=65536. Passed
    Checking for shmmni=4096; found shmmni=4096. Passed
    Checking for semmns=32000; found semmns=32000. Passed
    Checking for semopm=100; found semopm=100.Passed
    Checking for shmmin=1; found shmmin=1. Passed
    Checking for shmmax=2147483648; found shmmax=2147483648. Passed
    Check complete. The overall result of this check is: Passed
    =======================================================================
    Checking recommended operating system packages
    Checking for make-3.79; found make-3.79.1-17. Passed
    Checking for binutils-2.11.90.0.8-12; found binutils-2.14.90.0.4-26. Passed
    Checking for gcc-2.96; found gcc-3.2.3-20. Passed
    Checking for openmotif-2.1.30-11; found openmotif-2.2.2-16. Passed
    Check complete. The overall result of this check is: Passed
    =======================================================================
    Checking recommended glibc version
    Expected result: 2.2.4.31.7
    Actual Result: 2.3.2.95.3
    Check complete. The overall result of this check is: Passed
    =======================================================================
    Validating ORACLE_BASE location (if set)
    Check complete. The overall result of this check is: Passed
    =======================================================================
    其他的步骤比较清晰,不再赘述.
    最后系统会提示你运行root.sh文件.按照提示做即可.
    FAQ (在Linux平台安装Oracle比较常见的问题)
    1. 不能启动安装界面
    运行runInstaller提示信息类似如下:
    xlib:connection to “localhost:0.0″ refused by server
    xlib:client is not authorized to connect to server
    Exception in thread “main” java.lang.InternalError:
    can’t connect to x11 window server using “localhost:0.0″ at …….
    解决办法: 设定你的DISPLAY环境参数.
    # export DISPLAY= your_IPaddress :0.0
    把your_IPaddress换成你的IP.或者用root简单的执行一下# xhost + (要注意这样会有安全上的隐患)
    2.安装界面显示很多”口口”样子的乱码
    解决办法:查看locale输出
    # locale
    LANG=en_US.UTF-8
    LC_CTYPE=zh_CN.GB18030
    LC_NUMERIC=”en_US.UTF-8″
    LC_TIME=”en_US.UTF-8″
    LC_COLLATE=”en_US.UTF-8″
    LC_MONETARY=”en_US.UTF-8″
    LC_MESSAGES=”en_US.UTF-8″
    LC_PAPER=”en_US.UTF-8″
    LC_NAME=”en_US.UTF-8″
    LC_ADDRESS=”en_US.UTF-8″
    LC_TELEPHONE=”en_US.UTF-8″
    LC_MEASUREMENT=”en_US.UTF-8″
    LC_IDENTIFICATION=”en_US.UTF-8″
    LC_ALL=
    执行#export LC_CTYPE=en_US.UTF-8 然后重新调用安装程序.
    3. 用IE登录Linux服务器上的em出现乱码
    在Linux(Unix) 环境下成功安装了Oracle 10g,从windows下用IE浏览器登录 10g 的em, 按钮是”口口”这样的方框. 解决办法: 参考: http://www.dbanotes.net/Oracle/Oracle-10g-font.properties.htm
    4.创建数据库的时候出现ORA-03113的错误
    解决办法: 查看核心参数是否调整正确.参考:
    http://www.dbanotes.net/Oracle/ORA-03113.htm
    5. RedHat 9 / FC1等系统10g不支持如何安装?解决办法:在10g不支持的Linux发行版上安装10g的解决方法1). 运行runInstaller -ignoreSysPrereqs,这样会跳过检查. 2). 摘自 www.puschitz.com 修改/etc/redhat-release文件:
    #su - root
    #cp /etc/redhat-release /etc/redhat-release.backup
    #cat > /etc/redhat-release << EOF
    Red Hat Enterprise Linux AS release 3 (Taroon)
    EOF
    安装完毕,执行如下操作:
    #su - root
    #cp /etc/redhat-release.backup /etc/redhat-release
    3). http://www.dbanotes.net/Oracle/10G-Beta-Install-Bug.htm
    同样的思路,我们可以修改Oracle 的install/oraparam.ini文件达到目的.
    6.如何关掉那些 ocssd.bin 进程?
    解决办法:编辑/etc/inittab文件(做好备份) 注释掉这一行:
    h1:3:respawn:/etc/init.d/init.cssd run >/dev/null 2>…………….
    参考信息
    Werner Puschitz 的 10g 安装指南 - http://www.puschitz.com/InstallingOracle10g.shtmlWerner Puschitz 的站点的文章很翔实,如果您遇到了本文没有说清的问题,可以去看看那里.本文借鉴了该站点不少内容.
    http://www.google.com - http://www.google.com 关于核心参数等信息一定要用Google查找.
    Oracle Database Quick Installation Guide 10g Release 1 (10.1) for Linux x86 http://download-west.oracle.com/docs/html/B10813_01/toc.htm
    Oracle Database Installation Guide 10g Release 1 (10.1) for UNIX Systems http://download-west.oracle.com/docs/html/B10811_02/toc.htm
    DBAnotes.net 我的站点 包括不少和Oracle有关的信息 - http://www.dbanotes.net

    Powered by ZJANT