Oracle学习日记
===========================================================
WINDOWS自带的无敌kill进程命令
===========================================================

WINDOWS自带的无敌kill进程命令
问:怎么才能关掉一个用任务管理器关不了的进程?我前段时间发现我的机子里多了一个进程,只要开机就在,我用任务管理器却怎么关也关不了

答1:杀进程很容易,随便找个工具都行。比如IceSword。关键是找到这个进程的启动方式,不然下次重启它又出来了。顺便教大家一招狠的。其实用Windows自带的工具就能杀大部分进程:

  c:>ntsd -c q -p PID

  只有System、SMSS.EXE和CSRSS.EXE不能杀。前两个是纯内核态的,最后那个是Win32子系统,ntsd本身需要它。ntsd从2000开始就是系统自带的用户态调试工具。被调试器附着(attach)的进程会随调试器一起退出,所以可以用来在命令行下终止进程。使用ntsd自动就获得了debug权限,从而能杀掉大部分的进程。ntsd会新开一个调试窗口,本来在纯命令行下无法控制,但如果只是简单的命令,比如退出(q),用-c参数从命令行传递就行了。NtsdNtsd 按照惯例也向软件开发人员提供。只有系统开发人员使用此命令。有关详细信息,请参阅 NTSD 中所附的帮助文件。用法:开个cmd.exe窗口,输入:

  ntsd -c q -p PID

  把最后那个PID,改成你要终止的进程的ID。如果你不知道进程的ID,任务管理器->进程选项卡->查看->选择列->勾上"PID(进程标识符)",然后就能看见了。

答2:xp下还有两个好东东tasklist和tskill。tasklist能列出所有的进程,和相应的信息。tskill能查杀进程,语法很简单:tskill 程序名!!


附:NTSD 中所附的帮助文件

usage: ntsd [-?] [-2] [-d] [-g] [-G] [-myob] [-lines] [-n] [-o] [-s] [-v] [-w]
[-r BreakErrorLevel] [-t PrintErrorLevel]
[-hd] [-pd] [-pe] [-pt #] [-pv] [-x | -x{e|d|n|i} ]
[-- | -p pid | -pn name | command-line | -z CrashDmpFile]
[-zp CrashPageFile] [-premote transport] [-robp]
[-aDllName] [-c "command"] [-i ImagePath] [-y SymbolsPath]
[-clines #] [-srcpath SourcePath] [-QR machine] [-wake ]
[-remote transport:server=name,portid] [-server transport:portid]
[-ses] [-sfce] [-sicv] [-snul] [-noio] [-failinc] [-noshell]

where: -? displays this help text
command-line is the command to run under the debugger
-- is the same as -G -g -o -p -1 -d -pd
-aDllName sets the default extension DLL
-c executes the following debugger command
-clines number of lines of output history retrieved by a remote client
-failinc causes incomplete symbol and module loads to fail
-d sends all debugger output to kernel debugger via DbgPrint
-d cannot be used with debugger remoting
-d can only be used when the kernel debugger is enabled
-g ignores initial breakpoint in debuggee
-G ignores final breakpoint at process termination
-hd specifies that the debug heap should not be used
for created processes. This only works on Windows Whistler.
-o debugs all processes launched by debuggee
-p pid specifies the decimal process Id to attach to
-pd specifies that the debugger should automatically detach
-pe specifies that any attach should be to an existing debug port
-pn name specifies the name of the process to attach to
-pt # specifies the interrupt timeout
-pv specifies that any attach should be noninvasive
-r specifies the (0-3) error level to break on (SeeSetErrorLevel)
-robp allows breakpoints to be set in read-only memory
-t specifies the (0-3) error level to display (SeeSetErrorLevel)
-w specifies to debug 16 bit applications in a separate VDM
-x sets second-chance break on AV exceptions
-x{e|d|n|i} sets the break status for the specified event
-2 creates a separate console window for debuggee
-i ImagePath specifies the location of the executables that generated
the fault (see _NT_EXECUTABLE_IMAGE_PATH)
-lines requests that line number information be used if present
-myob ignores version mismatches in DBGHELP.DLL
-n enables verbose output from symbol handler
-noio disables all I/O for dedicated remoting servers
-noshell disables the .shell (!!) command
-QR <machine> queries for remote servers
-s disables lazy symbol loading
-ses enables strict symbol loading
-sfce fails critical errors encountered during file searching
-sicv ignores the CV record when symbol loading
-snul disables automatic symbol loading for unqualified names
-srcpath specifies the source search path
-v enables verbose output from debugger
-wake wakes up a sleeping debugger and exits
-y specifies the symbol search path (see _NT_SYMBOL_PATH)
-z specifies the name of a crash dump file to debug
-zp specifies the name of a page.dmp file
to use with a crash dump
-remote lets you connect to a debugger session started with -server
must be the first argument if present
transport: tcp | npipe | ssl | spipe | 1394 | com
name: machine name on which the debug server was created
portid: id of the port the debugger server was created on
for tcp use: port=
for npipe use: pipe=
for 1394 use: channel=
for com use: port=,baud=,
channel=
for ssl and spipe see the documentation
example: ... -remote npipe:server=yourmachine,pipe=foobar
-server creates a debugger session other people can connect to
must be the first argument if present
transport: tcp | npipe | ssl | spipe | 1394 | com
portid: id of the port remote users can connect to
for tcp use: port=
for npipe use: pipe=
for 1394 use: channel=
for com use: port=,baud=,
channel=
for ssl and spipe see the documentation
example: ... -server npipe:pipe=foobar
-premote transport specifies the process server to connect to
transport arguments are given as with remoting

Environment Variables:

_NT_SYMBOL_PATH=[Drive:][Path]
Specify symbol image path.

_NT_ALT_SYMBOL_PATH=[Drive:][Path]
Specify an alternate symbol image path.

_NT_DEBUGGER_EXTENSION_PATH=[Drive:][Path]
Specify a path which should be searched first for extensions dlls

_NT_EXECUTABLE_IMAGE_PATH=[Drive:][Path]
Specify executable image path.

_NT_SOURCE_PATH=[Drive:][Path]
Specify source file path.

_NT_DEBUG_LOG_FILE_OPEN=filename
If specified, all output will be written to this file from offset 0.

_NT_DEBUG_LOG_FILE_APPEND=filename
If specified, all output will be APPENDed to this file.

_NT_DEBUG_HISTORY_SIZE=size
Specifies the size of a server's output history in kilobytes

Control Keys:

Quit debugger
Break into Target
Force a break into debuggee (same as Ctrl-C)
Debug Current debugger
Toggle Verbose mode
Print version information
ntsd: exiting - press enter ---


inl 发表于:2005.07.15 14:10 ::分类: ( Solaris ) ::阅读:(5423次) :: 评论 (0)
===========================================================
如何设置solaris中的dns
===========================================================

1、使用route get default命令查看网关是否是服务器192.168.0.158,如不是,可以用 route add default 192.168.0.158设置。
2、找到/etc/nsswitch.conf文件,把原文件中的host:  files改成host:  files  dns
3、找到/etc/resolv.conf文件,如没有可自己创建,加入:nameserver  202.99.160.68(网通的dns服务器ip)
4、重新启动系统。
5、使用nslookup查看网址是否能连上,例如:
#nslookup
> www.inhe.net
Server:         202.99.160.68
Address:        202.99.160.68#53

Non-authoritative answer:
Name:   www.inhe.net
Address: 61.55.136.9


inl 发表于:2005.05.07 23:21 ::分类: ( Solaris ) ::阅读:(1938次) :: 评论 (0)
===========================================================
在Solaris下自动启动oracle
===========================================================
在Solaris下自动启动oracle

在/etc/init.d下面新建一个文件dbora,内容:
#!/bin/sh
ORA_HOME=/oracle/product/9.2.0
ORA_OWNER=oracle
su - $ORA_OWNER -c "lsnrctl start"
su - $ORA_OWNER -c "sqlplus /nolog @$ORA_HOME/dbstart.sql"

$ORA_HOME/dbstart.sql的内容:
conn / as sysdba
startup
exit

将dbora改成可执行
chmod 744 dbora

将dbstart.sql改成oracle所有
chown oracle /oracle/product/9.2.0/dbstart.sql

然后作一个连接
ln -s /etc/init.d/dbora /etc/rc2.d/S99dbora
ln -s /etc/init.d/dbora /etc/rc0.d/K10dbora



inl 发表于:2005.04.06 22:01 ::分类: ( 数据库管理 ) ::阅读:(3767次) :: 评论 (0)
===========================================================
oracle8.1.7 for solaris x86完全安装手册
===========================================================

oracle8.1.7 for solaris x86完全安装手册
软件:solaris10 x86
      oracle8.1.7 for solaris x86
硬件:cpu:celeonⅡ800
      内存:256M
      硬盘:30G
      显卡:tnt2 m64
      主板:intel815
      网卡:8139
      光驱:普通
系统环境:完全OEM方式安装solaris8,剩余空间建议至少4G以上,交换分区至少400M以上(这点需要特别注意,如果少于400M安装不能正常完成,我的交换分区是1G)。

一、安装前环境设置

1、首先以root用户建立oracle用户和管理组。oracle官方文档建议建立两个管理权限组,一个作为数据库管理组dba,一个安装组件管理组orainst组。以很多资深DBA的经验来看建立一个dba组即可。
#groupadd dba
#mkdir -p /export/home/oracle
#useradd -d /export/home/oracle -g dba -m oracle
#passwd oracle
#chown oracle /export/home/oracle

2、指定oracle运行时的网络连接端口号
#vi /etc/services 
最后增加两行
orasrv 1525/tcp 
oracle listener 1521/tcp 

3、设定系统运行参数
#vi /etc/system 在set后增加一段 

set semsys:seminfo_semmni=315 
set semsys:seminfo_semmsl=300 
set semsys:seminfo_semmns=630 
set semsys:seminfo_semopm=315 
set semsys:seminfo_semvmx=32767 
set shmsys:shminfo_shmmax=4294967295 
set shmsys:shminfo_shmmni=315 
set shmsys:shminfo_shmseg=10 
set shmsys:shminfo_shmmin=1 

4、以oracle用户身份登录,指定oracle数据库文件的存放位置
$mkdir /export/home/oracle/data

5、编辑oracle用户的配置文件,设定oracle环境变量

$vi /export/home/oracle/.profile

DISPLAY=10.0.0.1:0.0 # 此处IP为启动图形界面机器的地址,注意针对自己的网络修改一下。
export DISPLAY
ORACLE_HOME=/export/home/oracle/oracle/product/8.1.7
export ORACLE_HOME
ORACLE_BASE=/export/home/oracle
export ORACLE_BASE
ORACLE_SID=orcl
export ORACLE_SID
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_LANG
PATH=.:/bin:/usr/bin:/sbin:/usr/sbin:/usr/css/bin:/usr/local/bin:/usr/proc/bin:$ORACLE_HOME/bin:$ORACLE_HOME/admin/bin:$ORACLE_HOME/lib
export PATH
LD_LIBRARY_PATH=.:/lib:/usr/lib:/usr/local/lib:/usr/share/lib:/usr/ccs/lib:$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib:/usr/java/lib
export LD_LIBRARY_PATH

完成以上工作后对机器reboot,使设置生效。

二、开始安装

选择英文图形界面后以oracle用户身份登录。因为选择中文安装会出现问题(会在最后link时出错),所以这里选择英文方式登录。

1、插入oracle安装光盘

2、运行安装程序
$/cdrom/cdrom0/runInstaller 出现oracle图形安装界面,按next继续

3、输入oracle的安装目录,选择默认即可;locate java框不要用默认值,填入/usr/java;next出现unix group框,填入dba;next出现oracle_base路径设置框,用默认值/export/home/oracle;next出现oracle_data路径设置框,这是本地oracle数据库文件的存放位置,可以设置为/export/home/oracle/data.

4、选择安装方式,有typical和custom可以选择,如果硬盘空间足够建议安装所有组件

5、出现oracle产品安装信息,确认无误后点击next,oracle开始安装

6、如果机器配置较低此时将是漫长的等待,休息休息先;安装完成100%后系统出现提示,/oracle/orainst/install.log安装日志文件提示OK

7、弹出Setup Privileges窗口,按要求su成root用户运行指定的root.sh可执行文件;出现提示 Are these setting correct (y/n):输入y回车;Enter the full pathname of the local bin directory (y/n):此处输入/usr/bin回车,最好不要用默认的/usr/local/bin

8、设置/var/opt/oracle/oratab文件的链接 
以root的身份登录,
#chown oracle /var/opt/oracle/oratab
#chown oracle /etc/oratab
回到oracle用户状态
$ln -s /var/opt/oracle/oratab /etc/oratab 

9、创建net8连接参数与数据库,此处不需特别的设置,按提示完成即可,漫长的等待。

10、如果想使用dbstart和dbshut脚本启动和关闭数据库,修改/var/opt/oracle/oratab最后一行
orcl:/export/home/oracle/oracle/product/8.1.7:N
将N改成Y.

11、执行dbstart,启动数据库。使用sqlplus工具进行测试,如能正常连接则oracle安装成功。
另外的启动方法:
1、进入sqlplus,以sys用户连接,执行startup,启动数据库。
2、在操作系统命令提示符下执行lsnrctl start启动监听listener,服务器启动完成。

三、设置Oracle Manager Server

1、创建oms知识库
$emca
默认的账号与密码为:sysman/oem_temp
2、启动oms
$oemctrl start oms
3、启动图形管理界面
$oemapp console
4、如需在windows客户端连接oracle进行网络管理请安装相应的windows客户端软件,这里不再详细叙述。


inl 发表于:2005.04.06 10:45 ::分类: ( 数据库管理 ) ::阅读:(1493次) :: 评论 (1)
===========================================================
Linux的基本文件
===========================================================

启动引导程序配置文件
LILO /etc/lilo.conf
GRUB /boot/grub/menu.lst

系统启动文件核脚本
主启动控制文件 /etc/inittab
SysV启动脚本的位置 /etc/init.d、/etc/rc.d/init.d或/etc/rc.d
SysV启动脚本链接的位置 /etc/init.d/rc?.d、/etc/rc.d/rc?.d或/etc/rc?.d
本地启动脚本 /etc/rc.d/rc.local、/etc/init.d/boot.local或/etc/rc.boot里的文件

网络配置文件
建立网络接口的脚本 /sbin/ifup
保存网络配置数据文件的目录 /etc/network、/etc/sysconfig/network和/etc/sysconfig/network-scripts
保存解析DNS服务的文件 /etc/resolv.conf
DHCP客户端的配置文件 /etc/dhclient.conf

超级服务程序配置文件和目录
inetd配置文件 /etc/inetd.conf
TCP Wrappers配置文件 /etc/hosts.allow和/etc/hosts.deny
xinetd配置文件 /etc/xinetd.conf和/etc/xinetd.d目录里的文件

硬件配置
内核模块配置文件 /etc/modules.conf

硬件访问文件
Linux设备文件 /dev目录里
保存硬件和驱动程序数据的文件 /proc目录里

扫描仪配置文件
SANE主配置 /etc/sane.d/dll.conf
特定扫描仪的配置文件 /etc/sane.d目录里以扫描仪型号命名的文件

打印机配置文件
BSD LPD核LPRng的本地打印机主配置文件 /etc/printcap
CUPS本地打印机主配置和远程访问受权文件 /etc/cups/cupsd.conf
BSD LPD远程访问受权文件 /etc/hosts.lpd
LPRng远程访问受权文件 /etc/lpd.perms

文件系统
文件系统表 /etc/fstab
软驱装配点 /floppy、/mnt/floppy或/media/floppy
光驱装配点 /cdrom、/mnt/cdrom或/media/cdrom

shell配置文件
bash系统非登录配置文件 /etc/bashrc、/etc/bash.bashrc或/etc/bash.bashrc.local
bash系统登录文件 /etc/profile和/etc/profile.d里的文件
bash用户非登录配置文件 ~/.bashrc
bash用户登录配置文件 ~/.profile

XFree86配置文件核目录
XFree86主配置文件 /etc/XF86config、/etc/X11/XF86Config或/etc/X11/XF86Config-4
字体服务程序配置文件 /etc/X11/fs/config
Xft 1.x配置文件 /etcX11/XftConfig
Xft 2.0配置文件 /etc/fonts/fonts.conf
字体目录 /usr/X11R6/lib/X11/fonts和/usr/share/fonts

Web服务程序配置文件
Apache主配置文件 /etc/apache、/etc/httpd或/httpd/conf里的httpd.conf或httpd2.conf文件
MIME类型文件 与Apache主配置文件在同一目录里的mime.types或apache-mime.types

文件服务程序配置文件
ProFTPd配置文件 /etc/proftpd.conf
vsftpd配置文件 /etc/vsftpd.conf
NFS服务程序的输出定义文件 /etc/exports
NFS客户端装配的NFS输出 /etc/fstab
Samba配置文件 /etc/samba/smb.conf
Samba用户配置文件 /etc/samba/smbpasswd

邮件服务程序配置文件
sendmail主配置文件 /etc/mail/sendmail.cf
sendmail源配置文件 /etc/mail/sendmail.mc或/usr/share/sendmail/cf/cf/linux.smtp.mc或其他文件
Postfix主配置文件 /etc/postfix/main.cf
Exim主配置文件 /etc/exim/exim.cf
Procmail配置文件 /etc/procmailrc或~/.procmailrc
Fetchmail配置文件 ~/.fetchmailrc

远程登录配置文件
SSH服务程序配置文件 /etc/ssh/sshd_config
SSH客户端配置文件 /etc/ssh/ssh_config
XDM配置文件 /etc/X11/xdm目录下
GDM配置文件 /etc/X11/gdm目录下
VNC服务程序配置文件 /usr/X11R6/bin/vncserver启动脚本和~/.vnc目录里的文件

其他服务程序配置文件
DHCP服务程序配置文件 /etc/dhcpd.conf
BIND服务程序配置文件 /etc/named.conf和/var/named/
NTP服务程序配置文件 /etc/ntp.conf

Linux下的主要文件
http://www.linuxsir.org/bbs/showthr...threadid=131580
bash配置文件实验
http://www.linuxsir.org/bbs/showthr...%FE%CA%B5%D1%E9
如何设置hosts.allow和hosts.deny?
http://www.linuxsir.org/bbs/showthr...ght=hosts.allow


inl 发表于:2005.03.10 21:28 ::分类: ( Linux ) ::阅读:(1059次) :: 评论 (0)
===========================================================
Linux中文件查找技术大全(find命令)
===========================================================
每 一种操作系统都是由成千上万个不同种类的文件所组成的。其中有系统本身自带的文件,用户自己的文件,还有共享文件等等。我们有时候经常忘记某份文件放在硬 盘中的哪个地方。在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击“开始”-“搜索”中就能按照各种方式在本地硬盘 上,局域网络,甚至在INTERNET上查找各种文件,文档。

可是使用Linux的用户就没有那么幸运了,在Linux上查找某个文件确实是一件比较麻烦的事情。毕竟在Linux中需要我们使用专用的“查找”命令来 寻找在硬盘上的文件。Linux下的文件表达格式非常复杂,不象WINDOWS,DOS下都是统一的AAAAAAA.BBB格式那么方便查找,在 WINDOWS中,只要知道要查找的文件的文件名或者后缀就非常容易查找到。Linux中查找文件的命令通常为“find”命令,“find”命令能帮助 我们在使用,管理Linux的日常事务中方便的查找出我们需要的文件。对于Linux新手来说,“find”命令也是了解和学习Linux文件特点的方 法。因为Linux发行版本繁多,版本升级很快,在Linux书籍上往往写明某个配置文件的所在位置,往往Linux新手按图索骥还是不能找到。比如说 REDHAT Linux 7.O和REDHAT Linux 7.1中有些重要的配置文件所在的硬盘位置和文件目录就有了很大的改变,如果不学会使用“find”命令,那么在成千上万的Linux文件中要找到其中的 一个配置文件是相当困难的,笔者在没有精通“find”命令之前就吃过这样的苦头。好,下面就详细为大家介绍强大的“find”命令的全部使用方法和用 途。

通过文件名查找法:
这个方法说起来就和在WINDOWS下查找文件一样容易理解了。如果你把这个文件放在单个的文件夹里面,只要使用常见的“ls"命令就能方便的查找出来, 那么使用“find”命令来查找它就不能给你留下深刻的印象,毕竟“find”命令的强大功能不止这个。如果知道了某个文件的文件名,而不知道这个文件放 到哪个文件夹,甚至是层层套嵌的文件夹里。举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录下,甚至在系统的某个地方也不知道,则这 是可以使用如下命令:
find / -name httpd.conf

这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求系统按照文件名查找,最后写上httpd.conf这个目标文件名即可。稍等一会系统会在计算机屏幕上显示出查找结果列表:
etc/httpd/conf/httpd.conf

这就是httpd.conf这个文件在Linux系统中的完整路径。查找成功。
如果输入以上查找命令后系统并没有显示出结果,那么不要以为系统没有执行find/ -name httpd.conf命令,而可能是你的系统中没有安装Apache服务器,这时只要你安装了Apache Web服务器,然后再使用find / -name httpd.conf就能找到这个配置文件了。

无错误查找技巧:
在Linux系统中“find”命令是大多数系统用户都可以使用的命令,并不是ROOT系统管理员的专利。但是普通用户使用“find”命令时也有可能遇 到这样的问题,那就是Linux系统中系统管理员ROOT可以把某些文件目录设置成禁止访问模式。这样普通用户就没有权限用“find”命令来查询这些目 录或者文件。当普通用户使用“find”命令来查询这些文件目录是,往往会出现"Permissiondenied."(禁止访问)字样。系统将无法查询 到你想要的文件。为了避免这样的错误,我们可是使用转移错误提示的方法尝试着查找文件,输入
find / -name access_log 2>/dev/null

这个方法是把查找错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误的信息就直接输送到stderrstream 2 中,access_log 2就是表明系统将把错误信息输送到stderrstream 2中,/dev/null是一个特殊的文件,表明空的或者错误的信息,这样查询到的错误信息将被转移了,不会再显示了。

在Linux系统查找文件也会遇到这样一个实际问题。如果我们在整个硬盘,这个系统中查找某个文件就要花费相当长的一段时间,特别是大型Linux系统和 容量较大的硬盘,文件放在套嵌很深的目录中的时候。如果我们知道了这个文件存放在某个大的目录中,那么只要在这个目录中往下找就能节省很多时间了。使用 find /etc -name httpd.conf 就可以解决这个问题。上面的命令就是表示在etc目录中查询httpd.conf这个文件。这里再说明一下“/ ”这个函数符号的含义,如果输入 “find/ ”就是表示要求Linux系统在整个ROOT目录下查找文件,也就是在整个硬盘上查找文件,而“find/etc”就是只在 etc目录下查找文件。因为“find/etc”表示只在etc目录下查找文件,所以查找的速度就相应要快很多了。

根据部分文件名查找方法:
这个方法和在WINDOWS中查找已知的文件名方法是一样的。不过在Linux中根据部分文件名查找文件的方法要比在WINDOWS中的同类查找方法要强 大得多。例如我们知道某个文件包含有srm这3个字母,那么要找到系统中所有包含有这3个字母的文件是可以实现的,输入:
find /etc -name '*srm*'

这个命令表明了Linux系统将在/etc整个目录中查找所有的包含有srm这3个字母的文件,比如 absrmyz, tibc.srm等等符合条件的文件都能显示出来。如果你还知道这个文件是由srm 这3个字母打头的,那么我们还可以省略最前面的星号,命令如下:
find/etc -name 'srm*'

这是只有像srmyz 这样的文件才被查找出来,象absrmyz或者 absrm这样的文件都不符合要求,不被显示,这样查找文件的效率和可靠性就大大增强了。

根据文件的特征查询方法:
如果只知道某个文件的大小,修改日期等特征也可以使用“find”命令查找出来,这和WINDOWS系统中的"搜索"功能是基本相同的。在微软的"搜索" 中WINDOWS中的"搜索助理"使得搜索文件和文件夹、打印机、用户以及网络中的其他计算机更加容易。它甚至使在Internet 上搜索更加容易。"搜索助理"还包括一个索引服务,该服务维护了计算机中所有文件的索引,使得搜索速度更快。使用"搜索助理"时,用户可以指定多个搜索标 准。例如,用户可以按名称、类型及大小搜索文件和文件夹。用户甚至可以搜索包含特定文本的文件。如果用户正使用 Active Directory,这时还可以搜索带有特定名称或位置的打印机。

例如我们知道一个Linux文件大小为1,500 bytes,那么我们可是使用如下命令来查询find / -size 1500c,字符 c 表明这个要查找的文件的大小是以bytes为单位。如果我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查找方式来解决。例如我们输 入find/ -size +10000000c 这个命令,则标明我们指定系统在根目录中查找出大于10000000字节的文件并显示出来。命令中的“+”是表示要求系统只列出大于指定大小的文件,而使 用“-”则表示要求系统列出小于指定大小的文件。下面的列表就是在Linux使用不同“ find"命令后系统所要作出的查找动作,从中我们很容易看出在Linux中使用“find"命令的方式是很多的,“ find"命令查找文件只要灵活应用,丝毫不必在WINDOWS中查找能力差。

find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件


下面的列表就是对find命令所可以指定文件的特征进行查找的部分条件。在这里并没有列举所有的查找条件,参考有关Linux有关书籍可以知道所有find命令的查找函数。
-amin n
查找系统中最后N分钟访问的文件
-atime n
查找系统中最后n*24小时访问的文件
-cmin n
查找系统中最后N分钟被改变状态的文件
-ctime n
查找系统中最后n*24小时被改变状态的文件
-empty
查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹
-false
查找系统中总是错误的文件
-fstype type
查找系统中存在于指定文件系统的文件,例如:ext2 .
-gid n
查找系统中文件数字组 ID 为 n的文件
-group gname
查找系统中文件属于gnam文件组,并且指定组和ID的文件


Find命令的控制选项说明:
Find命令也提供给用户一些特有的选项来控制查找操作。下表就是我们总结出的最基本,最常用的find命令的控制选项及其用法。
选项
用途描述
-daystart
.测试系统从今天开始24小时以内的文件,用法类似-amin
-depth
使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容
-follow
遵循通配符链接方式查找; 另外,也可忽略通配符链接方式查询
-help
显示命令摘要
-maxdepth levels
在某个层次的目录中按照递减方法查找
-mount
不在文件系统目录中查找, 用法类似 -xdev.
-noleaf
禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查找
-version
打印版本数字


使用-follow选项后,find命令则遵循通配符链接方式进行查找,除非你指定这个选项,否则一般情况下find命令将忽略通配符链接方式进行文件查找。

-maxdepth选项的作用就是限制find命令在目录中按照递减方式查找文件的时候搜索文件超过某个级别或者搜索过多的目录,这样导致查找速度变慢,查找花费的时间过多。例如,我们要在当前(.)目录技巧子目录中查找一个名叫fred的文件,我们可以使用如下命令
find . -maxdepth 2 -name fred

假如这个fred文件在./sub1/fred目录中,那么这个命令就会直接定位这个文件,查找很容易成功。假如,这个文件在. /sub1/sub2/fred目录中,那么这个命令就无法查找到。因为前面已经给find命令在目录中最大的查询目录级别为2,只能查找2层目录下的文 件。这样做的目的就是为了让find命令更加精确的定位文件,如果你已经知道了某个文件大概所在的文件目录级数,那么加入-maxdepth n 就很快的能在指定目录中查找成功。

使用混合查找方式查找文件
find命令可以使用混合查找的方法,例如我们想在/tmp目录中查找大于100000000字节并且在48小时内修改的某个文件,我们可以使用-and 来把两个查找选项链接起来组合成一个混合的查找方式。
find /tmp -size +10000000c -and -mtime +2

学习过计算机语言的朋友都知道,在计算机语言里,使用and ,or 分别表示“与”和“或”的关系。在Linux系统的查找命令中一样通用。
还有这样的例子,
find / -user fred -or -user george

我们可以解释为在/tmp目录中查找属于fred或者george这两个用户的文件。
在find命令中还可以使用“非”的关系来查找文件,如果我们要在/tmp目录中查找所有不属于panda的文件,使用一个简单的
find /tmp ! -user panda
命令就可以解决了。很简单。

查找并显示文件的方法
查找到某个文件是我们的目的,我们更想知道查找到的文件的详细信息和属性,如果我们采取现查找文件,在使用LS命令来查看文件信息是相当繁琐的,现在我们也可以把这两个命令结合起来使用。
find / -name "httpd.conf" -ls

系统查找到httpd.conf文件后立即在屏幕上显示httpd.conf文件信息。
12063 34 -rw-r--r-- 1 root root 33545 Dec 30 15:36 /etc/httpd/conf/httpd.conf

下面的表格就是一些常用的查找文件并显示文件信息的参数和使用方法
选项
用途描述
-exec command;
查找并执行命令
-fprint file
打印文件完整文件名
-fprint0 file
打印文件完整文件名包括空的文件
-fprintf file format
打印文件格式
-ok command;
给用户命令执行操作,根据用户的Y 确认输入执行
-printf format
打印文件格式
-ls
打印同种文件格式的文件.


总结:到这里为止我们已经学习了这名多关于find命令的使用方法,也列出了很多常用的find命令的选项,如果我们能熟练掌握在Linux中find命令的使用方法,那么在Linux中查找文件也不是一件困难的事情。


inl 发表于:2005.03.10 17:30 ::分类: ( Linux ) ::阅读:(1677次) :: 评论 (0)
===========================================================
安装zhcon可以在字符界面下显示中文。
===========================================================
到这里下载安装文件:
http://zhcon.sourceforge.net/download_cn.html#src
然后:
./configure
make
make install
搞定
在字符界面下直接输入:
zhcon
就启动了zhcon,这样就可以在字符界面下显示中文了。


inl 发表于:2005.03.10 14:24 ::分类: ( Linux ) ::阅读:(1171次) :: 评论 (0)
===========================================================
Linux教程-进程查看
===========================================================
Linux教程-进程查看
   linux是个多用户系统,有时候也要了解其他用户现在在干什么,所以在本节中还将接触多用户方面的 内容。同时Linux是一个多进程系统,经常需要对这些进程进行一些调配和管理;而要进行管理,首先就要知 道现在的进程情况:究竟有哪些进程?进程情况如何?等等。所以需要进程查看方面的工作。
   who命令
   该命令主要用于查看当前在线上的用户情况。这个命令非常有用。如果用户想和其他用户建立即时通讯,比如使用talk命令,那么首先要确定的就是该用户确实在线上,不然talk进程就无法建立起来。又如,系统管理员希望监视每个登录的用户此时此刻的所作所为,也要使用who命令。
   who命令的常用语法格式如下:
   who [imqsuwHT] [--count] [--idle] [--heading] [--help] [--message] [--mesg] [--version] [--writable] [file] [am i]
   所有的选项都是可选的,也就是说可以单独使用who命令。不使用任何选项时,who命令将显示以下三项内容:
   login name:登录用户名;
   terminal line:使用终端设备;
   login time:登录到系统的时间。
   如果给出的是两个非选项参数,那么who命令将只显示运行who程序的用户名、登录终端和登录时间。 通常这两个参数是“am i”,即该命令格式为:“who am i”。
   下面对who命令的常用参数进行说明。
   -m 和“who am i”的作用一样,显示运行该程序的用户名。
   -q,--count 只显示用户的登录帐号和登录用户的数量,该选项优先级高于其他任何选项。
   -s 忽略。主要是用于和其他版本的who命令兼容。
   -i,-u,--idle 在登录时间后面显示该用户最后一次对系统进行操作至今的时间,也就是常说的 “发呆”时间。其中“.”符号代表该用户在前1秒仍然处于活动状态;“old”则表示该用户空闲已经超过了24小时。
   -H,--heading 显示一行列标题。常用的标题如表4-2所示。
   表4-2 who命令输出常用标题
   标 题
   说 明
   USER
   用户登录帐号
   LINE
   用户登录使用终端
   LOGIN-TIME
   用户登录时间
   IDLE
   用户空闲 洌次唇胁僮鞯氖奔?
   PID
   用户登录shell的进程ID
   FROM
   用户网络地址
   -w,-T--mesg,--message,--writable 和-s选项一样,在登录帐号后面显示一个字符来表示用户的信息状态:
   +:允许写信息;
   -:不允许写信息;
   ?:不能找到终端设备。
   --help 在标准输出上显示帮助信息。
   --version 在标准输出上显示版本信息。
   下面介绍who命令的一些基本用法。
   如果需要查看在系统上究竟有哪些用户,可以直接使用who命令。
   [例17] 查看登录到系统的用户情况
   $ who
   root tty1 Mar 17 13:49
   foxy tty2 Mar 17 13:49
   root tty3 Mar 17 13:49
   bbs ttyp0 Mar 17 13:49 (river.net)
   可以看到,现在系统一共有四个用户.
   一般来说,这样就可以了解登录用户的大致情况了。但有时上面的显示不是那么直观,因为没有标题 说明,不容易看懂,这时就需要使用-H选项了。
   [例18] 查看登录用户的详细情况,键入:
   $ who -uH
   显示如下:
   USER LINE LOGIN-TIME IDLE FROM
   root tty1 Mar 17 13:49 .
   foxy tty2 Mar 17 13:49 00:01
   root tty3 Mar 17 13:49 00:01
   bbs ttyp0 Mar 17 13:49 00:01 (river.net)
   这样一目了然。其中-u选项指定显示用户空闲时间,所以可以看到多了一项IDLE。第一个root用户的IDLE项 是一个“.”,这就说明该用户在前1秒仍然是活动的,而其他用户后面都有一个时间,称为空闲时间。
   最后来看看使用“who am i”格式命令的结果:
   233.river.net!root tty1 Mar 17 13:49
   可见只显示出了运行该who命令的用户情况,当然这时候不存在空闲时间。
   who命令应用起来非常简单,可以比较准确地掌握用户的情况,所以使用非常广泛。
   w命令
   该命令也用于显示登录到系统的用户情况,但是与who不同的是,w命令功能更加强大,它不但可以显示有谁登录到系统,还可以显示出这些用户当前正在进行的工作,并且臣剖菹喽詗ho命令来说更加详细和科学,可以认为w命令就是who命令的一个增强版。
   w命令的显示项目按以下顺序排列:当前时间,系统启动到现在的时间,登录用户的数目,系统在最近1秒、5秒和15秒的平均负载。然后是每个用户的各项数据,项目显示顺序如下:登录帐号、终端名称、远程主机名、登录时间、空闲时间、JCPU、PCPU、当前正在运行进程的命令行。
  其中JCPU时间指的是和该终端(tty)连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间。而PCPU时间则是指当前进程(即在WHAT项中显示的进程)所占用的时间。下面介绍该命令的具体用法和参数。
   语法格式如下:
   w -[husfV] [user]
   下面对参数进行说明:
   -h 不显示标题。
   -u 当列出当前进程和CPU时间时忽略用户名。这主要是用于执行su命令后的情况。
   -s 使用短模式。不显示登录时间、JCPU和PCPU时间。
   -f 切换显示FROM项,也就是远程主机名项。默认值是不显示远程主机名,当然系统管理员可以对源文件 作一些修改使得显示该项成为默认值。
   -V 显示版本信息。
   User 只显示指定用户的相关情况。
   [例19] 显示当前登录到系统的用户的详细情况
   $ w
   2:50pm up 2 min, 4 users, load average:0.22,0.16,0.06
   USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
   root tty1 2:49pm 0:00s 0.56s 0.10s w
   foxy tty2 2:49pm 1:09 0.42s 0.42s bash
   root tty3 2:49pm 46.00s 0.67s 0.25s telnet bbs3
  bbs ttyp0 river.net 2:49pm 45.00s 0.49s 0.49s bbs h river.net
   ps命令
   1. ps简介
   前面介绍的两个命令都是用于查看当前系统用户的情况,下面就来看看进程的情况,这也是本章的主题。要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
   2. ps命令及其参数
   ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设 备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。
   该命令语法格式如下:
   ps [选项]
   下面对命令选项进行说明:
   -e 显示所有进程。
   -f 全格式。
   -h 不显示标题。
   -l 长格式。
   -w 宽输出。
   a 显示终端上的所有进程,包括其他用户的进程。
   r 只显示正在运行的进程。
   x 显示没有控制终端的进程。
   O[+|-] k1 [,[+|-] k2 [,…]] 根据SHORT KEYS、k1、k2中快捷键指定的多级排序顺序显示进程列表。对于ps的不同格式都存在着默认的顺序指定。这些默认顺序可以被用户的指定所覆盖。其中“+”字符是可选 的,“-”字符是倒转指定键的方向。
   pids 只列出付ń痰那榭觥8鹘蘄D之间使用逗号分隔。该进程列表必须在命令行参数的最后一个选项 后面紧接着给出,中间不能插入空格。比如:ps -f1,4,5。
   以下介绍长命令行选项,这些选项都使用“--”开头:
   --sort X[+|-] key [,[+|-] key [,…]] 从SORT KEYS段中选一个多字母键。“+”字符是可选的,因为默认的方向就是按数字升序或者词典顺序。比如: ps -jax -sort=uid,-ppid,+pid。
   --help 显示帮助信息。
   --version 显示该命令的版本信息。
   在前面的选项说明中提到了排序键,接下来对排序键作进一步说明。需要注意的是排序中使用的值是ps使 用的内部值,并非仅用于某些输出格式的伪值。排序键列表见表4-3。
   表4-3 排序键列表
   短格式
   长格式
   说 明
   c
   cmd
   可执行的简单名称
   C
   cmdline
   完整命令行
   f
   flags
   长模式标志
   g
   pgrp
   进程的组ID

   G
   tpgid
   控制tty进程组ID

   j
   cutime
   累计用户时间

   J
   cstime
   累计系统时间

   k
   utime
   用户时间

   K
   stime
   系统时间

   m
   min_flt
   次要页错误的数量

   M
   maj_flt
   主要页错误的数量

   n
   cmin_flt
   累计次要页错误

   N
   cmaj_flt
   累计主要页错误

   o
   session
   对话ID

   p
   pid
   进程ID

   P
   ppid
   父进程ID

   r
   rss
   驻留大小

   R
   resident
   驻留页

   s
   size
   内存大小(千字节)

   S
   share
   共享页的数量

   t
   tty
   tty次要设备号

   T
   start_time
   进程启动的时间

   U
   uid
   UID

   u
   user
   用户名

   v
   vsize
   总的虚拟内存数量(字节)

   y
   priority
   内核调度优先级

   3. 常用ps命令参数
   前面两节介绍的参数可能让读者觉得有些可怕,实际上这是一个非常容易使用的命令,一般的用户只 需掌握一些最常用的命令参数就可以了。
   最常用的三个参数是u、a、x,下面将通过例子来说明其具体用法。
   [例20] 以root身份登录系统,查看当前进程状况
   $ ps
   PID TTY TIME COMMAND
   5800 ttyp0 00:00:00 bash
   5835 ttyp0 00:00:00 ps
   可以看到,显示的项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(进程执行时间) 、COMMAND(该进程的命令行输入)。
   可以使用u选项来查看进程所有者及其他一些详细信息,如下所示:
   $ ps u
   USER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMAND
   test 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bash
   test 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 ps u
   在bash进程前面有条横线,意味着该进程便是用户的登录shell,所以对于一个登录用户来说带短横线的进 程只有一个。还可以看到%CPU、%MEM两个选项,前者指该进程占用的CPU时间和总时间的百分比;后者指该进程 占用的内存和总内存的百分比。
   在这种情况下看到了所有控制终端的进程;但是对于其他那些没有控制终端的进程还是没有观察到,所以这 时就需要使用x选项。使用x选项可以观察到所有的进程情况。

inl 发表于:2005.03.09 17:17 ::分类: ( Linux ) ::阅读:(6754次) :: 评论 (6)
===========================================================
linux下fdisk命令的使用方法
===========================================================
在学习 Linux 的过程中,安装 Linux 是每一个初学者的第一个门槛。在这个过程中间,最大的困惑莫过于给硬盘进行分区。虽然,现在各种发行版本的 Linux 已经提供了友好的图形交互界面,但是很多的人还是感觉无从下手。这其中的原因主要是不清楚 Linux 的分区规定,以及它下面最有效的分区工具— Fdisk 的使用方法。下面从这两个方面入手,来讲解这个困扰大家的问题。

Linux 的分区规定

1. 设备管理

在 Linux 中,每一个硬件设备都映射到一个系统的文件,对于硬盘、光驱等 IDE 或 SCSI 设备也不例外。

Linux 把各种 IDE 设备分配了一个由 hd 前缀组成的文件;而对于各种 SCSI 设备,则分配了一个由 sd 前缀组成的文件。例如,第一个 IDE 设备,Linux 就定义为 hda;第二个 IDE 设备就定义为 hdb;下面以此类推。而 SCSI 设备就应该是 sda、sdb、sdc 等。

2. 分区数量

要进行分区就必须针对每一个硬件设备进行操作,这就有可能是一块IDE硬盘或是一块SCSI硬盘。对于每一个硬盘(IDE 或 SCSI)设备,Linux 分配了一个 1 到 16 的序列号码,这就代表了这块硬盘上面的分区号码。例如,第一个 IDE 硬盘的第一个分区,在 Linux 下面映射的就是 hda1,第二个分区就称作是 hda2。对于 SCSI 硬盘则是 sda1、sdb1 等。

3. 各分区的作用

在 Linux 中规定,每一个硬盘设备最多能有 4 个主分区(其中包含扩展分区)构成,任何一个扩展分区都要占用一个主分区号码,也就是在一个硬盘中,主分区和扩展分区一共最多是 4 个。对于早期的 DOS 和 Windows(Windows 2000 以前的版本),系统只承认一个主分区,可以通过在扩展分区上增加逻辑盘符(逻辑分区)的方法,进一步地细化分区。
主分区的作用就是计算机用来进行启动操作系统的,因此每一个操作系统的启动,或者称作是引导程序,都应该存放在主分区上。这就是主分区和扩展分区及逻辑分区的最大区别。我们在指定安装引导 Linux 的 bootloader 的时候,都要指定在主分区上,就是最好的例证。

Linux 规定了主分区(或者扩展分区)占用 1 至 16 号码中的前 4 个号码。以第一个 IDE 硬盘为例说明,主分区(或者扩展分区)占用了 hda1、hda2、hda3、hda4,而逻辑分区占用了 hda5 到 hda16 等 12 个号码。因此,Linux 下面每一个硬盘总共最多有 16 个分区。

对于逻辑分区,Linux 规定它们必须建立在扩展分区上(在 DOS 和 Windows 系统上也是如此规定),而不是主分区上。因此,我们可以看到扩展分区能够提供更加灵活的分区模式,但不能用来作为操作系统的引导。

除去上面这些各种分区的差别,我们就可以简单地把它们一视同仁了。

5. 分区指标

对于每一个 Linux 分区来讲,分区的大小和分区的类型是最主要的指标。容量的大小读者很容易理解,但是分区的类型就不是那么容易接受了。分区的类型规定了这个分区上面的文件系统的格式。 Linux 支持多种的文件系统格式,其中包含了我们熟悉的FAT32、FAT16、NTFS、HP-UX,以及各种 Linux 特有的 Linux Native和 Linux Swap分区类型。在 Linux 系统中,可以通过分区类型号码来区别这些不同类型的分区。各种类型号码在介绍Fdisk的使用方式的时候将会介绍。

Fdisk 使用详解

下面通过介绍 Fdisk 的使用方法,来巩固上面所学到的各种关于 Linux 分区的知识。

Fdisk 是各种 Linux 发行版本中最常用的分区工具,是被定义为 Expert 级别的分区工具,它让初学者有点望而却步。

1. Fdisk 参数说明

fdisk  /dev/hda 表示给第一块硬盘分区,首先映入眼帘的如图 1 所示的欢迎界面,用户通过在这个界面中输入命令参数来操作Fdisk。

图 1 Fdisk 欢迎界面
http://linux.tcpip.com.cn/article/index.php?func=detail&par=3&parentid=2589

用户通过提示键入 “m”,可以显示 Fdisk 命令各个参数的说明。

读者可以看到 Fdisk 有很多参数,可是经常使用的就是几个,如果读者熟练掌握这几个参数就可以流畅地运用 Fdisk,对 Linux 的硬盘进行分区。我们先简单介绍各个参数的意义,然后详细说明几个重点参数,见表 1。

表 1 Fdisk 参数说明
http://linux.tcpip.com.cn/article/index.php?func=detail&par=3&parentid=2589

用户在 Linux 中进行分区的时候,最常用的参数分别是 d、l、m、n、p、q、t、w 等。

2.用 Fdisk 进行分区

在 Linux 分区过程,一般是先通过 p 参数来显示出硬盘分区表信息,然后根据信息确定将来的分区。如图2所示。

图 2 显示已有分区的
http://linux.tcpip.com.cn/article/index.php?func=detail&par=3&parentid=2589

图 2 显示了分区的大小和分区的类型。如果想完全改变硬盘的分区格式,就可以通过 d 参数一个个删除存在的硬盘分区。例如 d1,d2。

删除完毕,就可以通过 n 参数来增加新的分区。当按下 “n” 后,我们就可以看到图 3 所示的新增分区。

图 3 新增分区
http://linux.tcpip.com.cn/article/index.php?func=detail&par=3&parentid=2589

这里要选择新建的分区类型,是主分区还是扩展分区;然后选择 p 或是 e。它们的区别在上文中已经说明。然后就是设置分区的大小。需要提醒注意的是,如果硬盘上有扩展分区,就只能增加逻辑分区,不能增加扩展分区了,如图 4 所示。

图 4 新增逻辑分区
http://linux.tcpip.com.cn/article/index.php?func=detail&par=3&parentid=2589
在增加分区的时候,其类型都是默认的 Linux Native,如果需要把其中的某些分区改变为其它类型,例如 Linux Swap 或 FAT32 等,可以通过命令 t 来改变,如图 5。

图 5 转换分区类型
http://linux.tcpip.com.cn/article/index.php?func=detail&par=3&parentid=2589
当按下 “t” 改变分区类型的时候,系统会提示要改变哪个分区,并且改变为什么类型(如果想知道系统所支持的分区类型,键入 l)。图 5 表示把分区5的类型改变为 82 号 Linux 的 Swap 类型。
Linux 所支持的分区类型号码和其对应的分区类型,可以参考表 2(这些信息可以用 l 命令得到)。

表 2 分区类型对应表
http://linux.tcpip.com.cn/article/index.php?func=detail&par=3&parentid=2589
改变完了分区类型,就可以按下 “w”,保存并且退出。如果不想保存,那么可以选择 “q” 直接退出。

通过以上两个方面的学习,相信对于初学者来说,分区已经不再是 Linux 进阶中的绊脚石了。

全文出自 : 开放系统世界




inl 发表于:2005.03.09 15:31 ::分类: ( Linux ) ::阅读:(8246次) :: 评论 (2)
===========================================================
更新特殊的累加字段
===========================================================

目的:
给表b的特定记录的列cs加一。
SQL> select * from a;

        ID NAME     GRU
---------- -------- --------
         1 张三     一组
         2 李四     一组
         3 王五     二组
         4 刘流     二组
         5 tom      二组

SQL> select * from b;

        ID         CS VA
---------- ---------- --------
         1          1 aaa
         1          2 aaa
         1          3 aaa
         2          1 aaa
         3          1 bbb
         4          1 ddd
         4          2 ddd
         5          1 eee

已选择8行。

现在要更新第一组:
SQL> insert into b
  2  select b.id,max(cs)+1,'aaa' from b,a where a.id=b.id and a.gru='一组' group by b.id ;

已创建2行。

SQL> select * from b;

        ID         CS VA
---------- ---------- --------
         1          1 aaa
         1          2 aaa
         1          3 aaa
         2          1 aaa
         3          1 bbb
         4          1 ddd
         4          2 ddd
         5          1 eee
         1          4 aaa      --增加的行
         2          2 aaa      --增加的行,对比一下,cs比以前自动加1了。

已选择10行。


inl 发表于:2005.03.04 09:09 ::分类: ( SQL语句 ) ::阅读:(1539次) :: 评论 (0)
===========================================================
rh9成功安装Oracle9i手记。
===========================================================
经过几天的努力今天终于在rh9上成功安装Oracle9i,主要参考了http://www.linuxsir.org/bbs/showthread.php?t=46439 
前几次按该文安装没成功,在link的地方出了很多错误,忽略后,到dbca处就不动了,sqlplus也不能启动,今天为解决系统没有db_load命令的问题,使用添加删除程序,安装了“开发工具”,后又安装Oracle9i,这次安装过程中出错的地方和本文提到的一样了,安装成功,也不知道是不是这个原因,以下是原文(红字是我的注释):
——————————————————————————————————————
今天终于在rh9上成功安装了Oracle9,一帆风顺,写一下经验。


基本都是按照,我贴在上面的那个贴子来的。只在一个地方需要注意,即本地语言的

在安装之前有几个地方需要注意的:
你的交换分区最好有一个G左右那么大,第二你的硬盘分区最好也要有足够大的空间。

下面我那个转贴的中译本:

1、创建用户和组:
[roko@miniroko] su -

[root@miniroko]# groupadd oinstall
[root@miniroko]# groupadd dba
[root@miniroko]# useradd -g oinstall -G dba oracle
[root@miniroko]# passwd oracle


2、准备文件目录:

[root@miniroko]# mkdir -p /opt/ora9/product/9.2
[root@miniroko]# mkdir /var/opt/oracle
[root@miniroko]# chown oracle.dba /var/opt/oracle
[root@miniroko]# chown -R oracle.dba /opt/ora9

3、调节系统内核参数及安装支持软件包:
3.1、首先用命令rpm -qa|grep compat 查看系统中是否安有以下几个软件包:

compat-gcc-7.3-2.96.118.i386.rpm
compat-libgcj-7.3-2.96.118.i386.rpm
compat-libgcj-devel-7.3-2.96.118.i386.rpm
nss_db-compat-2.2-20.i386.rpm

如果没有,请拿出你的安装盘,安装以上的包(第一个在第一张盘上,其余在第二张盘上,/RedHat/RPMS目录下)。不要用原文给的那个APT的东东,不熟的人遇上没有解决的依赖性问题的话,就特别讨厌。

3.2、设置内核参数,调节信号灯及共享内存:
[root@miniroko]# echo 250 32000 100 128 > /proc/sys/kernel/sem
[root@miniroko]# echo 536870912 > /proc/sys/kernel/shmmax
[root@miniroko]# echo 4096 > /proc/sys/kernel/shmmni
[root@miniroko]# echo 2097152 > /proc/sys/kernel/shmall
[root@miniroko]# echo 65536 > /proc/sys/fs/file-max
[root@miniroko]# echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range

当然为了一开机系统就能自动帮你设好这些参数,也可改动 /etc/sysctl.conf 这个文件,加入以下的语句:
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

保存后,即可。建议关于net.ipv4.ip_local_port_range不要改动,可以用cat /proc/sys/net/ipv4/ip_local_port_range 看到红帽子对这个所定义的范围已经符合,而且端口范围比这个小。

3.3、设置oracle对文件的要求:
编辑文件:/etc/security/limits.conf 加入以下语句:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

这个需要重启后才能生效的。但是安装的时候无所谓了。

4、设置oracle的系统环境:
以oracle用户的身份登录:
su oracle

cd ~

编辑它的.bashrc文件加入以的东东:
#oracle 9i
export ORACLE_BASE=/opt/ora9
export ORACLE_HOME=/opt/ora9/product/9.2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_OWNER=oracle
export ORACLE_SID=ora9i
export ORACLE_TERM=vt100
export LD_ASSUME_KERNEL=2.4.1
export THREADS_FLAG=native
export LD_LIBRARY_PATH=/opt/ora9/product/9.2/lib:$LD_LIBRARY_PATH
export PATH=/opt/ora9/product/9.2/bin:$PATH
#
# change this NLS settings to suit your country:
# example:
# german_germany.we8iso8859p15, american_america.we8iso8859p2 etc.
#
#export NLS_LANG='croatian_croatia.ee8iso8859p2' (注意这个东东把它注释掉,因为我们用的是中文系统。然而为了能够显示中文加入以下一行:
export LC=en_US

退出,将你下载的三个iso文件准备好。 (这里最好重新启动一下,以oracle身份登录)
5、解压你下载的文件:
5.1、新建一个目录:mkdir /mnt/Oracle
5.2、将三个文件拷入新建的目录:cp ln_* /mnt/Oracle
5.3、解压三个文件: cd /mnt/Oracle
gunzip gunzip lnx_920_disk1.cpio.gz
gunzip lnx_920_disk2.cpio.gz
gunzip lnx_920_disk3.cpio.gz
cpio -idmv < lnx_920_disk1.cpio
cpio -idmv < lnx_920_disk2.cpio
cpio -idmv < lnx_920_disk3.cpio
5.4、这个将生成三个文件夹:DISK1, DISK2, DISK3
6、开始安装:
以oracle的用户身份进入:
su oracle
cd ~
/mnt/Oracle/DSIK1/runInstall.sh

在安装的过程中会遇到几个错误:
第一个错误提示关于这个文件ins_oemagent.mk的,不要去管它,选择忽略,我们将在下面的步骤中修复它。
第二错误提示:Error in invoking target install of makefile $ORACLE_HOME/ctx/lib/ins_ctx.mk
这个时候就先不要选择忽略了,这个时候你要先打开一个终端:以oracle用户的身份登录进去,运行以下的命令:
[oracle@miniroko oracle]$ cd $ORACLE_HOME/install
[oracle@miniroko install]$ tail make.log

可以看到这个,然后在其下有错误提示:
gcc -o ctxhx -L/opt/ora9/product/9.2/ctx/lib/ -L/opt/ora9/product/9.2/lib/
-L/opt/ora9/product/9.2/lib/stubs/ /opt/ora9/product/9.2/ctx/lib/ctxhx.o
-L/opt/ora9/product/9.2/ctx/lib/ -lm -lsc_ca -lsc_fa -lsc_ex -lsc_da -lsc_ut
-lsc_ch -lsc_fi -lctxhx -lc -Wl,-rpath,/opt/ora9/product/9.2/ctx/lib -lnls9
-lcore9 -lnls9 -lcore9 -lnls9 -lxml9 -lcore9 -lunls9 -lnls9
我们运行以下的命令来修改它:
[oracle@miniroko]$ cd $ORACLE_HOME/bin
[oracle@miniroko bin]$ gcc -o ctxhx -L/opt/ora9/product/9.2/ctx/lib/
-L/opt/ora9/product/9.2/lib/ -L/opt/ora9/product/9.2/lib/stubs/
/opt/ora9/product/9.2/ctx/lib/ctxhx.o -L/opt/ora9/product/9.2/ctx/lib/
-lm -lsc_ca -lsc_fa -lsc_ex -lsc_da -lsc_ut -lsc_ch -lsc_fi -lctxhx -lc
-Wl,-rpath,/opt/ora9/product/9.2/ctx/lib -lnls9 -lcore9 -lnls9 -lcore9
-lnls9 -lxml9 -lcore9 -lunls9 -lnls9 -ldl
也就重新在这个地方编译一下上面出错的地方。然后再回到安装界面,对那个错误对话框选择忽略。继续安装就行了。

第三个错误会在启动和配置助手程序的时候出错,不要管它,选择忽略就行了。我们在下面的步骤将会对第一个错误和第三个错误进宪修补。 (配置助手时间很长,要耐心等待,千万别以为死机,关掉窗口)

7、修改系统:
以oracle用户的身份登入,执行以下命令:
[oracle@miniroko oracle]$ cd $ORACLE_HOME/network/lib
[oracle@miniroko lib]$ make -f ins_net_client.mk install

然后编辑这个文件:
oracle@miniroko lib]$vi $ORACLE_HOME/ctx/lib/ins_ctx.mk找到第13行、第14行由ctxhx: $(CTXHXOBJ)
$(LINK) $(CTXHXOBJ) $(INSO_LINK)

改为:
ctxhx: $(CTXHXOBJ)
$(LINK) -ldl $(CTXHXOBJ) $(INSO_LINK)
存盘退出,执行以下命令:
[oracle@miniroko lib]$ make -f $ORACLE_HOME/ctx/lib/ins_ctx.mk install

现在可以重新启动agents了。
[oracle@miniroko lib]$ /opt/ora9/product/9.2/bin/agentctl start

8、为了方便管理,可以写一个启动脚本:
以ROOt身份进入,编写以下脚本:
#!/bin/bash
#
# (c) denis.klaric@in2.hr
#
# name: /etc/rc.d/init.d/ora9
# description: starts and stops oracle 9i database, TNS listener
# http server, and fixes kernel parameters for oracle


#oracle environment
export ORACLE_HOME=/opt/ora9/product/9.2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export NLS_LANG='croatian_croatia.ee8iso8859p2'
export ORACLE_SID=tis

export DISPLAY=:0
oracle_user=oracle

# see how we're called

case $1 in
start)
# fix kernel parameters
echo 250 32000 100 128 > /proc/sys/kernel/sem
echo 536870912 > /proc/sys/kernel/shmmax
echo 4096 > /proc/sys/kernel/shmmni
echo 2097152 > /proc/sys/kernel/shmall
echo 65536 > /proc/sys/kernel/fs/file-max
echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range

# start listener, apache and database
su - "$oracle_user"<lsnrctl start
apachectl start
sqlplus /nolog<connect / as sysdba
startup
EOS
EOO
;;

stop)
# stop listener, apache and database
su - "$oracle_user"<lsnrctl stop
apachectl stop
sqlplus /nolog<connect / as sysdba
shutdown immediate
EOS
EOO
;;

*)
echo "Usage: ora9 [start|stop]"
;;

esac

存为ora9后,然后用chmod a+x ora9,即可在以后以root身份运行/etc/rc.d/init.d/ora9 start |stop 来管理oracle的启动和停止了。如果要将这个脚本加入到系统中使其可开机运行,那么要运行以下命令:
chkconfig --level 3(或者是5) --add ora9
即可。

呵呵,我是按照以上步骤安装成功了,希望你好运。

inl 发表于:2005.02.28 21:27 ::分类: ( 数据库管理 ) ::阅读:(886次) :: 评论 (0)
===========================================================
Xwindow启动过程及自启动文件的设置
===========================================================
登录控制台后可以使用startx或xinit来启动图像界面
最常用的就是startx来启动X界面,它是个shell脚本程序,位置/etc/X11R6/bin/startx,可使用vi
来修改和了解其中的内容。
具体说来,startx是一个启动xinit的Shell Script,其执行过程如下:
1)调用xinit首先启动X服务器。
2)X服务器尝试查找用户根目录中是否存在~/.xinitrc文件 ,如果存在,则按照其中的定义启动相应的桌面,窗口管理器及界面.否则,使用默认的/etc/X11/xinit/xinitrc文件启动相应的功能.
3)X服务器尝试查找用户根目录中是否存在~/.Xclients文件.如果存在.再会在X窗口启动时,启动器中定义的X程序,否则使用/etc/X11/xinit/Xclients文件.
4)X服务器创建主窗口,这时用户会看到一个X行的图标在闪动.
5)下面X服务器完成相应的启动功能设置.

* .xinitrc和.Xclients两个文件功能很相似.但是.xinitrc着重在Xwindows系统方面.而.Xclients则侧重于用户定义窗口及桌面
例子:
自动启动输入法fcitx
在你的用户目录下找文件:.xinitrc或.xsession,把里面加上一句:
fcitx &
好了,现在你一进入XWindow,就能使用输入法了。注意的是,这一句话要加在窗口管理器的前面,比如你用的是kde,那就应该是:
fcitx &
exec startkde
你用的是gnome,就应该是:
fcitx &
exec gnome-session
其他的也一样。



inl 发表于:2005.02.26 11:11 ::分类: ( Linux ) ::阅读:(1556次) :: 评论 (0)
===========================================================
mount用法详解
===========================================================

1、挂载点必须是一个目录。

2、一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。
对于其他操作系统建立的文件系统的挂载也是这样。但是需要理解的是:光盘、软盘、其他操作系统使用的文件系统的格式与linux使用的文件系统格式是不一样的。光盘是ISO9660;软盘是fat16或ext2;windows NT是fat16、NTFS;windows98是fat16、fat32;windows2000和windowsXP是fat16、fat32、 NTFS。挂载前要了解linux是否支持所要挂载的文件系统格式。


挂载时使用mount命令:
格式:mount [-参数] [设备名称] [挂载点]

其中常用的参数有
-t<文件系统类型> 指定设备的文件系统类型,常见的有:
minix linux最早使用的文件系统
ext2 linux目前常用的文件系统
msdos MS-DOS的fat,就是fat16
vfat windows98常用的fat32
nfs 网络文件系统
iso9660 CD-ROM光盘标准文件系统
ntfs windows NT 2000的文件系统
hpfs OS/2文件系统
auto 自动检测文件系统
-o<选项> 指定挂载文件系统时的选项。有些也可用在/etc/fstab中。常用的有
codepage=XXX 代码页
iocharset=XXX 字符集
ro 以只读方式挂载
rw 以读写方式挂载
nouser 使一般用户无法挂载
user 可以让一般用户挂载设备

提醒一下,mount命令没有建立挂载点的功能,因此你应该确保执行mount命令时,挂载点已经存在。(不懂?说白了点就是你要把文件系统挂载到哪,首先要先建上个目录。这样OK?)

例子:windows98装在hda1分区,同时计算机上还有软盘和光盘需要挂载。
# mk /mnt/winc
# mk /mnt/floppy
# mk /mnt/cdrom
# mount -t vfat /dev/hda1 /mnt/winc
# mount -t msdos /dev/fd0 /mnt/floppy
# mount -t iso9660 /dev/cdrom /mnt/cdrom
现在就可以进入/mnt/winc等目录读写这些文件系统了。

要保证最后两行的命令不出错,要确保软驱和光驱里有盘。(要是硬盘的磁盘片也可以经常随时更换的话,我想就不会犯这样的错误了 :-> )
如果你的windows98目录里有中文文件名,使用上面的命令挂载后,显示的是一堆乱码。这就要用到 -o 参数里的codepage iocharset选项。codepage指定文件系统的代码页,简体中文中文代码是936;iocharset指定字符集,简体中文一般用cp936或 gb2312。


当挂载的文件系统linux不支持时,mount一定报错,如windows2000的ntfs文件系统。可以重新编译linux内核以获得对该文件系统的支持。关于重新编译linux内核,就不在这里说了。

四 、自动挂载
每次开机访问windows分区都要运行mount命令显然太烦琐,为什么访问其他的linux分区不用使用mount命令呢?
其实,每次开机时,linux自动将需要挂载的linux分区挂载上了。那么我们是不是可以设定让linux在启动的时候也挂载我们希望挂载的分区,如windows分区,以实现文件系统的自动挂载呢?
这是完全可以的。在/etc目录下有个fstab文件,它里面列出了linux开机时自动挂载的文件系统的列表。我的/etc/fstab文件如下:

/dev/hda2 / ext3 defaults 1 1
/dev/hda1 /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda3 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,codepage=936,iocharset=gb2312 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
/dev/hdb1 /mnt/winc vfat defaults,codepage=936,iocharset=cp936 0 0
/dev/hda5 /mnt/wind vfat defaults,codepage=936,iocharset=cp936 0 0


在/etc/fstab文件里,第一列是挂载的文件系统的设备名,第二列是挂载点,第三列是挂载的文件系统类型,第四列是挂载的选项,选项间用逗号分隔。第五六列不知道是什么意思,还望高手指点。

在最后两行是我手工添加的windows下的C;D盘,加了codepage=936和iocharset=cp936参数以支持中文文件名。参数defaults实际上包含了一组默认参数:

rw 以可读写模式挂载
suid 开启用户ID和群组ID设置位
dev 可解读文件系统上的字符或区块设备
exec 可执行二进制文件
auto 自动挂载
nouser 使一般用户无法挂载
async 以非同步方式执行文件系统的输入输出操作

大家可以看到在这个列表里,光驱和软驱是不自动挂载的,参数设置为noauto。(如果你非要设成自动挂载,你要确保每次开机时你的光驱和软驱里都要有盘,呵呵。)



inl 发表于:2005.02.23 10:51 ::分类: ( Linux ) ::阅读:(1267次) :: 评论 (6)
===========================================================
Redhat安装和使用40问?
===========================================================
1.安装时把grub(lilo)写到linux分区的引导区还是主引导扇区(MBR)?
如果你想电脑一启动就直接进入操作系统启动菜单就把grub(lilo)写到MBR上,如果写到linux分区的引导区则要用引导盘引导,建议写到 MBR,方便点,至于说写到MBR不安全,该怎么解释呢?每装一次win98,MBR都会被修改一次,大家觉得有什么不安全的吗?

2.如何让多系统共存?
98系统的话用lilo(gurb)即可
os loader引导多系统

3.如何让linux启动后自动进入图形界面或不让它进入图形界面?
a.进入图形界面:安装时选图形启动方式或把/etc/inittab的id:x:initdefault:这行改成id:5:initdefault:。
b.不进入图形界面:安装时选文本启动方式或把/etc/inittab的id:x:initdefault:这行改成id:3:initdefault:。

4.如何在图形界面和控制台(字符界面)之间来回切换?
a.图形界面到控制台:Ctr+Alt+Fn(n=1,2,3,4,5,6)。
b.各控制台之间切换:Alt+Fn(n=1,2,3,4,5,6)。
c.控制台到图形:Alt+F7

5.如何在gnome和kde之间切换。
如果你是以图形登录方式登录linux,那么点击登录界面上的session(任务)即可以选择gnome和kde。如果你是以文本方式登录,那执行 switchdesk gnome或switchdesk kde,然后再startx就可以进入gnome或kde。

6.Redhat linux常用的命令有哪些?
<1>ls:列目录。
用法:ls或ls dirName,参数:-a显示所有文件,-l详悉列出文件。
<2>mkdir:建目录。
用法:mkdir dirName,参数:-p建多级目录,如:mkdir a/b/c/d/e/f -p
<3>mount:挂载分区或镜像文件(.iso,.img)文件。
用法:
a.磁盘分区:mount deviceName mountPoint -o options,其中deviceName是磁盘分区的设备名,比如/dev/hda1,/dev/cdrom,/dev/fd0,mountPoint 是挂载点,它是一个目录,options是参数,如果分区是linux分区,一般不用-o options,如果是windows分区那options可以是iocharset=cp936,这样windows分区里的中文文件名就能显示出来 了。用例:比如/dev/hda5是linux分区,我要把它挂到目录a上(如没目录a那就先mkdir a),mount /dev/hda5 a,这样目录a里的东西就是分区hda5里的东西了,比如hda1是windows分区,要把它挂到b上,mount /dev/hda1 b -o iocharset=cp936。
b.镜像文件:mount fileName mountPoint -o loop,fileName是镜像文件名(*.iso,*.img),其它的不用说了,跟上面一样。用例:如我有一个a.iso光盘镜像文件,mount a.iso a -o loop,这样进入目录a你就能浏览a.iso的内容了,*.img文件的用法一样。
<4>find:查找文件。
用法:find inDir -name filename,inDir是你要在哪个目录找,filename是你要找的文件名(可以用通配符),用通配符时filename做好用单引号引起来, 否则有时会出错,用例:find . -name test*,在当前目录查找以test开头的文件。
<5>grep:在文件里查找指定的字符串。
用法:grep string filename,在filename(可用通配符)里查找string(最好用双引号引起来)。参数:-r在所有子目录里的filename里找。用 例:grep hello *.c -r在当前目录下(包括子目录)的所有.c文件里查找hello。
<5>vi:编辑器。不用说,用linux的话,这个东西一定要会用。
用法:(只能简单说一下),vi filename。filename就是你要编辑的文本文件。用了执行vi filename后,你可能会发现你无法编辑文本内容,不要着急,这是因为vi还没进入编辑状态,按a或i就可以进入编辑状态了,进入编辑状态后你就可以 编辑文本了。要退出编辑状态按Esc键就可以了。以下操作均要在非编辑状态下。查找文本:输入/和你要查找的文本并回车。退出:输入: 和q并回车,如果你修改了文本,那么你要用:q!回车才能退出。保存:输入: w回车,如果是只读文件要用: w!。保存退出:输入: wq回车,如果是只读就: wq!回车。取消:按u就可以了,按一次就取消一步,可按多次取消多步。复制粘贴一行文本:把光标移到要复制的行上的任何地方,按yy(就是连按两次 y),把光标移到要粘贴地方的上一行,按p,刚才那行文本就会被插入到光标所在行的下一行,原来光标所在行后面所有行会自动下移一行。复制粘贴多行文本: 跟复制一行差不多,只是yy改成先输入要复制的行数紧接着按yy,后面的操作一样。把光标移到指定行:输入:和行号并回车,比如移到123行:123回 车,移到结尾:$回车。

7.tar,.tar.gz,.bz2,.tar.bz2,.bz,.gz是什么文件,如何解开他们?
他们都是文件(压缩)包。
.tar:把文件打包,不压缩:tar cvf *.tar dirName 解开:tar xvf *.tar
.tar.gz:把文件打包并压缩:tar czvf *.tar.gz dirName 解开:tar xzvf *.tar.gz
.bz2:解开:bzip2 -d *.bz2
.bz:解开:bzip -d *.bz
.gz:解开:gzip -d *.gz

8.linux下如何解开.zip,.rar压缩文件?
rh8下有一个图形界面的软件file-roller可以做这件事。令外可以用unzip *.zip解开zip文件,unrar *.rar解开rar文件,不过unrar一般系统不自带,要到网上下载。

9.linux下如何浏览.iso光盘镜像文件?
a.建一个目录,如:mkdir a
b.把iso文件挂载到该目录上:mount -o loop xxxx.iso a
现在目录a里的内容就是iso文件里的内容了。

10.linux下如何访问其它分区?包括linux 分区和windows分区。
用mount命令,详见mount用法。

11.linux下如何配置显卡和显示器?

12.linux下如何配置网络?
用netconfig。“IP address:”就是要配置的IP地址,“Netmask:”子网掩码,“Default gateway (IP):”网关,“Primary nameserver:”DNS服务器IP。

13.如何让鼠标支持滚轮?
在配置鼠标时,选择微软的鼠标,并正确选择端口如ps2,usb等

14.linux下的互联网浏览器有哪些?
mozilla,netscape,opera,galeon(使用mozilla引擎),phoniex(使用mozilla引擎)。常用的就这些吧。
16.linux的系统目录结构是怎么样的?

17.如何让控制台支持中文显示?
安装zhcon。zhcon需要libimm_server.so和libpth.so.13这两个库支持。一般的中文输入法应该都有 libimm_server.so。libpth.so.13出自pth-1.3.x。把这两个文件放到/usr/lib下就行了。

18.如何配置grub?
修改/boot/grub/grub.conf文件。其中
“default=n”(n是个数字)是grub引导菜单默认被选中的项,n从0开始,0表示第一项,1表示第二项,依此类推。
“timeout=x”(x是一个数)是超时时间,单位是妙。也就是引导菜单显示后,如果x秒内用户不进行选择,那么grub将启动默认项。
“splashimage =xxxxxx”,这是引导菜单的背景图,先不理他。
其它常用项我用下面的例子来说明:
title Red Hat 8.0
root (hd1,6)
kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hdb7
initrd /boot/initrd-2.4.18-14.img
其中"Red Hat 8.0"是在启动菜单列表里显示的名字
root (hdx,y)用来指定你的boot分区位置,如果你没有分boot分区(本例就没分boot分区),那就指向根分区就行了,hdx是linux所在硬 盘,hd0是第一块硬盘,hd1是第二块,依此类推。y是分区位置,从0开始,也就是等于分区号减一,比如你要指向的分区是hdx7,那么y就是6,如果 是hdx1,那y就是0。注意root后面要有一个空格。
kernel /boot/vmlinuz-2.4.18-14,其中"/boot/vmlinuz-2.4.18-14"是你要用的内核路径,如果你编译了心内核,把它改成你的新内核的路径就行了。
ro就不用管,写上不会有错。
root=/dev/hdxx指定根分区,本例是hdb7,所以root=/dev/hdb7
initrd xxxxxxxxxxxxx这行不要也行,目前我还不清楚它是做什么用的。
上面是linux的,下面是windows的
title windows 98
rootnoverify (hd0,0)
chainloader +1
title xxxxxxx不用解释了,上面有解释。
rootnoverify (hdx,y)用来指定windows所在分区,x,y跟上面一样,注意rootnoverify后有空格。
chainloader +1照抄就行,注意空格。

19.如何配置lilo?
修改/etc/lilo.conf文件,然后运行lilo命令。

20.如何让linux启动后自动挂载制定分区?
编辑/etc/fstab文件,在里面加入相应的行,如果你对/etc/fstab的配置不熟悉,你可以用ptm,一个自动配置fstab的软件,在公社里应该有下载。

21.如何定制linux启动时启动的服务?
在控制台或终端下运行ntsysv,然后把要启动的服务选上,如果要开机不启动某个那就把他的选中去掉。

22.没有软驱如何修复grub/lilo引导菜单?
a.把第一张linux安装盘里的dosutils目录复制到windows盘中。如果是iso可以用winrar3提取。
b.进入纯dos,进入dosutils目录,执行loadlin autoboot/vmlinuz root=/dev/hdxx()hdxx是你的linux根分区。这样就能进入linux。
c.执行grub-install /dev/hdx(x=a,b,c,d) 或lilo即可以重写引导。
另外还可以参考:http://www.linuxfans.org/nuke/modul...opic&t=5101

23.如何配置鼠标?
打开一个终端或进入控制台,运行mouseconfig命令即可配置鼠标!

24.如何从dos下进入linux?
首先你需要loadlin.exe这个程序,linux第一张安装盘里的dosutils目录里有,另外你需要的就是linux内核, /boot/vmlinuz-2.4.xx-xx就是,把他弄到windows盘中,并把他重命名为vmlinuz(主要是vmlinuz-2.4.xx -xx在dos下显示有点问题),另外dosutils目录里的autoboot里也有一个vmlinuz,也是linux内核,凑合能用,但很多设备不 支持,如果linux引导程序或linux启动配置有问题,进不了linux,可以用这个内核进去修复linux。
然后用loadlin vmlinuz root=/dev/hdxx (hdxx是你的linux根分区),另外用loadlin vmlinuz root=/dev/hdxx single还可以实现单用户模式。

25.root密码丢失解决
GRUB:在引导装载程序菜单上,键入 [e] 来进入编辑模式。
你会面对一个引导项目列表。查找其中类似以下输出 的句行:
kernel /vmlinuz-2.4.18-0.4 ro root=/dev/hda2
按箭头键直到这一行被突出显示,然后按 [e]。
你现在可在文本结尾处空一格再添加 single 来告诉 GRUB 引导单用户 Linux 模式。按 [Enter] 键来使编辑结果生效。
你会被带会编辑模式屏幕,从这里,按 [b], GRUB 就会引导单用户 Linux 模式。 结束载入后,你会面对一个与以下相似的 shell 提示:
sh-2.05#
现在,你便可以改变根命令,键入:
bash# passwd root
你会被要求重新键入口令来校验。结束后, 口令就会被改变,你便可以在提示下键入 reboot 来重新引导;然后,象平常一样登录为根用户。
LILO:当系统启动到出现LILO引导画面时,对于图形引导方式按TAB键进入文本方式,然后在LILO处
输入linux single回车即可进入免密码的控制台,进入以后使用passwd命令修改root的密码
即可。
无软盘安装RedHat、SUSE、Mandrake

26.无软盘安装RedHat、SUSE、Mandrake
1、我说的无软盘安装指的是从纯dos转入Linux安装。也就是说你必须有能启动dos 的分区。(假如为C:盘要注意的是在启动dos 时不能加载任何程序。(因为我试过,很多情况下加载多余的如光驱驱动等都有可能造成下面的安装无法进行下去)

2、RedHat Linux硬盘安装方法:把Redhat第一张光盘(或ISO光盘镜像文件中)dosutils目录全部拷到C:下,然后再启动纯dos(用win98或win95的dos方式启动也可以,以下同。)再运行:

c:>dosutilsautoboot (回车)即可转入 redhat Linux的安装。

3、 Mandrake Linux的安装:在Mandrake Linux 的安装套件中没提供loadlin.exe文件。你可以到其它linux发行版中得到这个程序.如你可从redhat linux 7.x的光盘/dosutils目录中提取出来(不方便的可以找网上redhat的资源下载。)然后把内核与映像文件找出来:在第二张光盘或第二个iso 镜像文件的isolinuxalt0下。分别名为:vmlinuz与all.rdz,包括loadlin.exe把它们全部拷到C: dosutils 下。然后在dos下执行:

c:dosutilsloadlin vmlinuz initrd=all.rdz ramdisk_size=32000

如果你怕以后再装又麻烦,那你可以以仿照redhat 的方法为它制作autoboot.bat 文件也行!

4、 SUSE Linux的安装: SUSE也同样不像redhat一样把文件夹拖下来后再运行autoboot就行了。但在它的发行版里提供了loadlin.exe文件。在第一张光盘或 iso光盘镜像的dosutilsloadlin下。把它拷入C:dosutils下。并在光盘(或iso镜像文件)suseimages boot目录下分别把内核文件linux及安装映像文件initrd全都拷入C:dosutils下。然后再运行:

c:dosutilsloadlin linux root=200 rw 2 initrd=initrd

27. 网络安装redhat

redhat支持通过网络安装,这种方法适用于批量安装linux的情况,当然如果机器上没有CDROM也没有ISO文件映像时也可以用这种方法。具体方法如下:

把redhat安装盘的所有内容拷贝到提供ftp,http服务的服务器的一个目录下,多张安装盘需要拷贝到同一个目录下,并设置允许其它机器通过网络访问。

把redhat第一张安装盘的images目录下的bootnet.img用rawrite做成启动软盘,制作方法和普通软盘其它安装软盘制作方法相同。

用 做好的软盘启动,启动后安装程序会自动发现并配置网卡,此时出现一个类似redhat网络配置的界面,输入本机域名,ip,掩码,dns和网关。为了方便 以后的配置,这里最好输入打算以后使用的地址和机器名,redhat安装程序会自动把这些内容作为以后网络设置的缺省值。

然后出现一个界面要求用户选择安装方式,主要有http和ftp等方式,然后输入http或ftp服务器地址和redhat安装文件所在的路径(URL),以及访问服务器的用户名和密码,缺省为匿名登陆。

点击下一步开始安装,以后的步骤和硬盘安装完全一样。

28. 为linux添加ntfs支持的最佳步骤(自己编译内核)

具体操作步骤(这里以redhat 8.0原始安装为例,#之后的整行是输入的命令,其他系统或者打过redhat 补丁的系统只有内核以及开发程序版本不同,按照自己的情况略加修改就可以正常完成):

login as root,

#uname -r 查看kernel版本号,确认你要编译的kernel source和运行的kernel一致,这一步并非必须,你可以在一个运行版本下编译另一个版本的kernel

#cd /usr/src/linux-2.4.18-14 2.4.18-14是新装的redhat 8的内核版本,随发行版不同略有变化,根据自己的情况改后面的数字。下面不再说明。

#make mrproper 说明:这一步很重要,否则编译会出错,这是编译任何内核的第一步;

#vi Makefile 编辑Makefile, 把前面EXTRAVERSION = -14custom 去掉custum,改成 EXTRAVERSION = -14 ,对照前面uname出来的结果,Makefile最前面几行的$VERSION+$PATCHLEVEL+$SUBLEVEL+$ EXTRAVERSION 应该和你的内核版本完全一致。

#cp configs/kernel-2.4.18-i686.config .config (根据你的配置选择一个合适的config,多CPU的机器选择带smp的config)

#make menuconfig 选择File Systems,把光标定在NTFS file system support (read only) 前面,按回车是最前面显示为。紧跟的一行NTFS write support(DANGEROUS)前面不要选, 要吗?!连续按ESC键(不要太多了),直到出现保存设置对话框,打回车确认。

#make dep

#make modules SUBDIRS=fs/ntfs

#mkdir /lib/modules/2.4.18-14/kernel/fs/ntfs

#cp /usr/src/linux-2.4.18-14/fs/ntfs/ntfs.o /lib/modules/2.4.18-14/kernel/fs/ntfs

#depmod -a

如果没有错误,编译完成。

#/sbin/fdisk -l 找到后面SYSTEM显示为 HPFS/NTFS的行,那就是你的NTFS分区,记下这一行最前面的 Device,(比如 /dev/hda1)windows 2000的动态磁盘显示为SFS,也是NTFS分区。

#mount -t ntfs /dev/hda1 /mnt/ntfs 测试一下 应该可以正常mount了(别忘了先建立 /mnt/ntfs目录),ls /mnt/ntfs 看一下。

29. 硬盘安装redhat 8.0时redhat软件包管理器的使用方法

rh8的软件包管理器为管理软件安装提供了方便,但是从系统菜单运行时总是要求插入安装盘,如果没有安装盘,采用硬盘安装时不能再从redhat菜单启动软件包管理器,需要开一个terminal,并根据具体情况操作:

(1)采用ISO文件安装的rh8:

redhat-config-packages --iso-dir=/path/to/iso/files

(2)把所有CDROM文件拷贝到一个目录下的安装方式:

redhat-config-packages --tree=/path/to/rh/tree

30. firewall config为什么总是显示高级?怎么禁止firewall

redhat里面配置firewall的程序是lokkit,但是每次启动时都是显示默认高级安全,而且无法改变,这其实只是lokkit的默认显示造成的,如果看着不舒服,可以在控制台下运行

#lokkit -f --disabled
or
#lokkit -f --medium

来改变显示,保存退出后firewall设置就会变为禁止或中级。

但是这时候已有的firewall设置还在起作用,要立即生效可以:

#/etc/rc.d/init.d/iptables restart (rh 8)

or

#/etc/rc.d/init.d/ipchains restart (rh 7x)



inl 发表于:2005.02.22 14:44 ::分类: ( Linux ) ::阅读:(555次) :: 评论 (0)
===========================================================
Oracle外部身份认证研究
===========================================================

Oracle外部身份认证研究

一、服务器上使用操作系统验证
1.配置SQLNET.ORA文件
参数NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
表明解析客户端连接时所用的主机字符串的方式
TNSNAMES表示采用TNSNAMES.ORA文件来解析
ONAMES表示Oracle使用自己的名称服务器(Oracle Name Server)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES
HOSTNAME表示使用host文件,DNS,NIS等来解析

参数SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)
表明用户连接Oracle服务器时使用哪种验证方式
NONE表示Oracle数据库身份验证,NTS表示操作系统身份验证,两种方式可以并用(默认是这种)
2.建立相应的操作系统组及用户加入该组
ORA_DBA组(这个组好像是Oracle自己建立的?如果没有可以自己建立一个试试看)中的域用户和本地用户不需要Oracle用户名和密码就可以登录Oracle而且该组的用户登录数据库后都具有SYSDBA权限
(多个实例时,可以建立类似这样的组ORA_SID_DBA,其中SID指实例名)
同理:ORA_OPER组中的成员具有SYSOPER角色的权限。

例如:将Administrator加入ORA_DBA组中。


3.登录方式
C:>sqlplus “/ as sysdba”
或者C:>sqlplus nolog,然后SQL>connect / as sysdba


4.init.ora中的Remote_Login_Passwordfile对身份验证的影响
三个可选值:
NONE:默认值,指示Oracle系统不使用密码文件,通过操作系统进行身份验证的特权用户拥有SYSORA和SYSOPER权限
EXCLUSIVE:
1.表示只有一个数据库实例可以使用密码文件
2.允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户
SHARED:
1.表示可以有多个数据库实例可以使用密码文件
2.不允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户
所以,如果要以操作系统身份登录,Remote_Login_Passwordfile应该设置为NONE


5.当登录用户不是ORA_DBA组和ORA_OPER组成员时,登录数据库
需要在Oracle中创建当前操作系统用户相同的用户名,如果当前用户是域用户,则名称为:domainname/yourname,
如果是本地计算机用户,则名称为:computername/yourname
创建方法:
create "domainname/yourname" identified externally;
grant connect to "domainname/yourname";

Windows操作系统,修改注册表HKEY_LOCAL_MACHINESOFTWAREORACLEHOME0下面添加OSAUTH_PREFIX_DOMAIN,值设为FALSE,在创建Oracle用户时可以忽略掉域名

这种方式下,init.ora中有一个参数将影响数据库如何匹配一个windows用户和Oracle用户
os_authent_prefix = ""
缺省为空,Oracle8i以前,无该参数,而使用OPS$作为用户名前缀.(Oracle用户名最大长度限制为30个字符)


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

二、远程客户端使用操作系统验证

首先需要在init.ora文件中设置如下参数:
REMOTE_OS_AUTHENT=TRUE

Oracle不推荐在远程客户端上使用操作系统验证,因为客户端验证时不是通过服务器上的操作系统用户来验证,而是使用客户端自己怕操作系统来进行windows验证,这样,客户端可以采用建立对应的windows机器名和用户名的方式来欺骗Oracle的操作系统验证.
例如:
创建了如下Oracle用户
create "zlzyk" identified externally;
grant connect to "zlzyk";
如果有一台名为ZL的机器,创建了一个名为zyk的用户,并以此登录连接Oracle服务器(连接时使用@OracleSTR),无需用户名和密码
造成此问题的原因是,Oracle使用客户端操作系统进行验证,它无法区别zl是域名还是机器名.


Windows &.net杂志2004第7期(http://www.winnetmag.com/Windows/Articles/ArticleID/42280/pg/1/1.html)
作者在文章中强调(第三页最后一段):
Oracle数据库服务器上的windows身份认证很容易实施,并且使已登录的用户访问数据库很方便
但是,这种验证模型并不适合远程客户端,因为安全隐患太大。


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

三、Oracle 9i对操作系统身份认证支持的增强
Oracle 9i可以与活动目录集成,通过Oracle Enterprise Security Manager 管理用户权限
Enterprise user authentication做为一种新的外部集中认证模式
(也叫 global user authentication,Oracle 9i以前的External user authentication仅仅采用了客户端操作系统本地认证)

Oracle9i运行在一个win2000及以上的域中,注册表HKEY_LOCAL_MACHINESOFTWAREORACLEHOMEID,参数OSAUTH_X509_NAME设置为true
(默认为false,如果该参数不存在,则新增为REG_EXPAND_SZ类型)

注意:Windows NT 4.0 domain 不支持这种方式



inl 发表于:2005.02.19 21:45 ::分类: ( 数据库管理 ) ::阅读:(661次) :: 评论 (0)
自我介绍
切换风格
新闻聚合
博客日历
文章归档...
最新发表...
博客统计...
Blog信息
网站链接...