Oracle DBA 实用手册
--安装篇
DOYENSEER
doyenseer@
---------------------------------------------------------
版权声明
本文档的版权归作者所有。
本文档可以自由复制和发布,但对文档修改请通知作者
前言
本手册主要介绍 Oracle 相关安装和配置的基本方法。Oracle 是运行在 Windows 和 Unix
操作平台上的主流数据库系统之一。因为 Windows 上的 Oracle 安装配置相对比较简单,所
以本手册只介绍 Unix 平台上的安装和配置,而且主要以 Linux 操作系统为主(笔者强烈推
荐 Linux)。如果不特别声明,本文档涉及的操作都是在 Red Linux 和 Oracle9i 上完成。
Oracle 的安装主要包括操作系统安装和数据库系统安装。
操作系统安装
Linux 是一套免费使用和自由传播的类 Unix 操作系统,它主要用于基于 Intel x86 系列
CPU 的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是
建立不受任何商品化软件的版权制约的、全世界都能自由使用的 Unix 兼容产品。虽然 Linux
是免费的操作系统,但是它依然是一种非常优秀的操作系统,支持多用户,多进程,实时性
好,功能强大而且稳定。同时具有良好的兼容性和可移植性。
RedHatt 作为目前众多发行版本中的一种,一方面它已经是行业的标准,有大量为其开
发的软件;另一方面 Redhat 系统的稳定性及安全性非常出色。
准备知识
作为数据库服务器的操作平台,在安装的时候,首先要考虑如何管理硬盘,合理规划硬
盘分区:
硬盘分区一共有三种类型:主分区,扩展分区和逻辑分区。
在一块硬盘上最多只能有四个主分区。可以另外建立一个扩展分区来代替四个主分区的
其中一个,然后在扩展分区下又可以建立更多的逻辑分区。扩展分区只不过是逻辑分区的“容
器”。实际上只有主分区和逻辑分区进行数据存储。
最合理的分区结构是主分区在前,扩展分区在后,然后在扩展分区中划分逻辑分区,保
证主分区的个数和扩展分区个数要控制在四个之内
每个主分区和逻辑分区都回被存储一个识别文件系统的附加信息。操作系统(Windows
或者 Linux 等等)能通过这些信息非常容易的识别和确认,应该使用哪个分区。不能识别的
操作系统分区将会被忽略。
通过分区当然不能产生任何文件系统。在分区之后必须要进行格式化,才能使用。Linux
下的分区命名通常采用设备-名称(device-name)。一般的硬盘(比如 IDE 硬盘)将采用
/dev/hdxy 来命名。X 表示硬盘(a 是第一块硬盘,b 是第二块硬盘,依次类推),y 是分区的
号码(从 0 开始,1,2,3 等等)。SCSI 硬盘将用/dev/sdxy 来命名。光驱(不管是 IDE 类型
或者 SCSI)将和硬盘一样来命名。
其次,要掌握 Linux 下软件的基本安装和卸载:
在 Windows 中,我们可以使用软件自带的安装卸载程序或在控制面板中的"添加/删除程
序"来实现。与其相类似,在 Linux 下有一个功能强大的软件安装卸载工具,名为 RPM(Red
Hat Linux 提供的一种包封装格式,现在许多 Linux 发行版本都使用)。它可以用来建立、安
装、查询、更新、卸载软件。
Linux 下软件的安装主要有两种不同的形式。第一种安装文件名为 ;另一种安
装文件名为 。以第一种方式发行的软件多为以源码形式发布的;第二种方式则
是直接以二进制形式发布的。
第一种安装方法如下:
1. 首先,将安装文件拷贝至你的目录中。
# cp /tmp
2. 解压缩包。
#tar xvzf
3. 用 ls 命令可以看到解压缩后的文件。通常在解压缩后产生的文件中,查看"Install"
的文件。该文件为纯文本文件,详细讲述了该软件包的安装方法。
#vi Install
4. 执行解压缩后产生的一个名为 configure 的可执行脚本程序。它是用于检查系统是
否有编译时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息。
为随后的编译工作做准备。
#./configure
5. 检查通过后,将生成用于编译的 MakeFile 文件。此时,可以开始进行编译了。编
译的过程视软件的规模和计算机性能的不同,所耗费的时间也不同。
#make
6. 成功编译后,键入如下的命令开始安装:
#make install
7. 安装完毕,应清除编译过程中产生的临时文件和配置过程中产生的文件。键入如下
命令:
#make clean
#make distclean
8. 卸载软件。
#make uninstall
第二种安装方法如下:
1. 在安装文件的当前目录中,用 rpm 命令进行安装。
#rpm -ivh
rpm 将自动将安装文件解包,并将软件安装到缺省的目录下。并将软件的安装信息
注册到 rpm 的数据库中,参数 ivh 表示进入安装模式并显示安装信息和进度。
如果需要强制安装,可执行:
#rpm –ivh –-force
2. 查询软件包在系统中注册的名称或是否已安装。
#rpm –q –a
或
#rpm -q -a |grep pkgnam
#rpm -q pkgnam
3. 卸载安装包。
#rpm –e pkgnam
即可卸载软件。参数 e 的作用是使 rpm 进入卸载模式。对名为[package name]的软
件包进行卸载。由于系统中各个软件包之间相互有依赖关系。如果因存在依赖关系
而不能卸载,rpm 将给予提示并停止卸载。你可以使用如下的命令来忽略依赖关系,
直接开始卸载:
#rpm –e pkgnam --nodeps
掌握技能
1. Vi 编辑器
Vi 命令是 unix 下常用而重要命令,可在全屏幕方式下编辑一个或多个文件。
Vi 有三种模式:
1. 命令模式: 进入 vi 时所处的模式。在此模式下用户可输入各种子命令对进行*作,
如删除行、粘贴行、移向下一个字、移向不同行等。
2. 文本输入模式: 在此模式下可以修改一行的内容并增添新行。在命令模式下键入
a 、i 或 c 键可进入文本输入模式,按 Escape 键可返回命令模式。
3. 命令项模式: 在此模式下,可以通过子命令输入更多的参数。如:w 子命令要求
输入一文件名,"/"子命令要求输入一个查找项。用户使用 Escape 键返回命令模式。
vi 命令一览表(部分)
功能 命令 备注
h 将光标左移一格。
l 将光标右移一格。
k 或 Ctrl+p 光标上移一行
j 或 Ctrl+n 光标下移一行
w 将光标移到下一个小字的前面。
W 将光标移到下一个大字的前面。
b 将光标移到前一个小字的前面。
B 将光标移到前一个大字的前面。
e 将光标移到下一个小字的后面。
E 将光标移到前一个大字的后面。
fc 把光标移到同一行的下一个 c 字符处。
Fc 把光标移到同一行的前一个 c 字符处。
tc 把光标移到同一行的下一个字符 c 的前一格。
Tc 把光标移到同一行的前一个字符 c 的后一格。
number| 把光标移到递 number 列上。
+或 Enter 把光标移至下一行第一个非空白字符。
- 把光标移至上一行第一个非空白字符。
移动光标
) 光标移至句尾
( 光标移至句首
} 光标移至段落开头
{ 光标移至段落结尾
nG 光标移至第 n 行首
n+ 光标下移 n 行
n- 光标上移 n 行
n$ 光标移至第 n 行尾
H 把光标移到屏幕最顶端一行。
M 光标移至屏幕中间行
L 光标移至屏幕最后行
0 (注意是数字零)光标移至当前行首
$ 光标移至当前行尾
space 字符 ">光标右移一个字符
Backspace 字符 ">光标左移一个字符
Ctrl + f 向后滚一页。
Ctrl + d 向后滚半页。
Ctrl + b 向前滚一页。
Ctrl + u 向前滚半页。
Ctrl + e 屏幕向下滚一行。
Ctrl + y 屏幕项上滚一行。 屏幕翻滚
nz
将第 n 行滚至屏幕顶部,不指定 n 时将当前行滚至屏
幕顶部。
i 在光标前
I 在当前行首
a 光标后
A 在当前行尾
o 在当前行之下新开一行
O 在当前行之上新开一行
r 字符 ">替换当前字符
R
字符及其后的字符,直至按 ESC 键 ">替换当前字符
及其后的字符,直至按 ESC 键
s
字符 ">从当前光标位置处开始,以输入的文本替代
指定数目的字符
S 删除指定数目的行,并以所输入文本代替之
ncw 或 nCW 修改指定数目的字
nCC 修改指定数目的行
ndw 或 ndW 删除光标处开始及其后的 n-1 个字
do 删至行首
d$ 删至行尾
ndd 删除当前行及其后 n-1 行
x 或 X
字符,x 删除光标后的,而 X 删除光标前的 ">删除
一个字符,x 删除光标后的,而 X 删除光标前的
插入修改
Ctrl+u 删除输入方式下所输入的文本
cc 或 S 修改一整行。
C 改变一行光标位置以后的部分。
cw 改变光标所在单词。
dd 删除当前行。
D 删除光标所在行光标后面的内容。
dw 删除光标所在的单词。
J 把下一行内容加到本行行尾。
rc 字符替换成 c . ">把光符所在字符替换成 c .
R 覆盖本行内容。
u 恢复上一次的修改。
~ 字符的大小写。 ">改变光标所在出字符的大小写。
. 重复上一个操作。
<< 把当前行移到左边。
>> 把当前行移到右边。
/pattern
文件尾搜索 pattern ">从光标开始处向文件尾搜索
pattern
?pattern
文件首搜索 pattern ">从光标开始处向文件首搜索
pattern
n 在同一方向重复上一次搜索命令
N 在反方向上重复上一次搜索命令
s/p1/p2/g 将当前行中所有 p1 均用 p2 替代
n1,n2s/p1/p2/g 将第 n1 至 n2 行中所有 p1 均用 p2 替代
g/p1/s//p2/g
文件中所有 p1 均用 p2 替换 ">将文件中所有 p1 均
用 p2 替换
/pattern/+number 将光标停在包含 pattern 的行后面第 number 行上。
/pattern/-number 将光标停在包含 pattern 的行前面第 number 行上。
搜索替换
% 移到匹配的“()”或“{}”上。
ctrl+g 文件的有关信息。 ">取得正在编辑文件的有关信息。
:sh 启动 sh ,从 sh 中返回可用 exit 或 ctrl+d .
:! Command 执行命令 command .
!! 重新执行上次的:! Command 子命令。
q 退出 vi
q! 文件并退出 vi ">不保存文件并退出 vi
ZZ 或:wq
文件的修改并退出 vi . ">保存对文件的修改并退出
vi .
e filename
文件 filename)。 ">使用 filename 激活 vi (在 vi 中
装入另一个文件 filename)。
e!
文件,若当前文件有改动,则丢弃以前的改动。 ">
重新装入当前文件,若当前文件有改动,则丢弃以前
的改动。
e+filename
文件尾部开始编辑。 ">使用 filename 激活 vi ,并从文
件尾部开始编辑。
其他命令
e+number filename 使用 filename 激活 vi ,并在第 number 行开始编辑。
e# 文件。 ">开始编辑另外一个文件。
r filename
文件,并将其内容加到当前文件后。 ">读取 filename
文件,并将其内容加到当前文件后。
r ! Command
文件,并将其输出加到当前文件后。 ">执行 command
文件,并将其输出加到当前文件后。
n1,n2 w!command
文件中 n1 行至 n2 行的内容作为 command 的输入并
执行之,若不指定 n1,n2,则表示将整个文件内容
作为 command 的输入 ">将文件中 n1 行至 n2 行的
内容作为 command 的输入并执行之,若不指定 n1,
n2,则表示将整个文件内容作为 command 的输入
2. FDisk 磁盘分区工具
通过例子来了解 fdisk 工具:
# fdisk -l
Disk /dev/hda: GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 765 6144831 7 HPFS/NTFS
/dev/hda2 766 2805 16386300 c W95 FAT32 (LBA)
/dev/hda3 2806 9729 55617030 5 Extended
/dev/hda5 2806 3825 8193118+ 83 Linux
/dev/hda6 3826 5100 10241406 83 Linux
/dev/hda7 5101 5198 787153+ 82 Linux swap / Solaris
/dev/hda8 5199 6657 11719386 83 Linux
/dev/hda9 6658 7751 8787523+ 83 Linux
/dev/hda10 7752 9729 15888253+ 83 Linux
Disk /dev/sda: 1035 MB, 1035730944 bytes
256 heads, 63 sectors/track, 125 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 25 201568+ c W95 FAT32 (LBA)
/dev/sda2 26 125 806400 5 Extended
/dev/sda5 26 50 201568+ 83 Linux
/dev/sda6 51 76 200781 83 Linux
通过上面的信息,可以看出系统挂载两个硬盘(或移动硬盘),其中一个是 hda 另
一个是 sda 。
hda 硬盘是 80G 的,有 255 个磁面;63 个扇区;9729 个磁柱;每个 cylinder(磁柱)的容
量是 8225280 bytes=8M;
sda 硬盘是 1G 的,有 256 个磁面;63 个扇区;125 个磁柱;每个 cylinder(磁柱)的容量
是 8257536 bytes=8M;
估算一个硬盘是否完全被划分, cylinders(柱体) 上一个分区的 End 和 下一个分区
的 Start 是不是一个连续的数字,另外要看一下每个硬盘设备的 fdisk -l 的头部份中 cylinders
(柱体)的值。
比如 hda 设备,共有 9729 cylinders ;通过 hda 的分区表可以看到上一个分区的 End 的值+1
就是下一个分区的 Start 的值;比如 hda2 的 Start 的值是 hda1 的 End 的值+1,这证明 hda1
和 hda2 中间没有空白分区,是连续的,以此类推;在 hda10,看到 End 的值是 9729 ,而
在 fdisk -l 头部信息中也有 9729 cylinders,证明这个硬盘已经完全划分。
而 sda 有未划分区域,至于 sda 有多少未划分空间,计算一下就知道了;扩展分区总
容量是 806400 K ,大约是 左右,而逻辑分区 sda5 和 sda6 的大小加起来是 400M
左右,所以还仍有 400M 左右未划分空间,并且只能划分为链逻辑分区。
硬盘的实际分区请根据 fdisk 中的帮助,谨慎操作。
3. df 磁盘信息查看工具
df 命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。
#df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda2 1361587 1246406 44823 97% /
Filesystem 列:是代表文件系统对应的设备文件的路径名(一般是硬盘上的分区);
1K-blocks 列:给出分区包含的数据块(1024 字节)的数目;
Used /Available 列:分别表示已用的和可用的数据块数目。用户也许会感到奇怪的是,此两
列块数之和不等于第 2 列中的块数。这是因为缺省的每个分区都留了少量空间供系统管理员
使用。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间;
Use% 列:表示普通用户空间使用的百分比,即使这一数字达到 100%,分区仍然留有系统
管理员使用的空间。
Mounted on 列:表示文件系统的安装点
注:有个跟 df 功能很相似的命令 du , du 和 df 命令都被用于获得文件系统大小的信息,df 用
于报告文件系统的总块数及剩余块数,du -s /<filesystem>;用于报告文件系统使用的块数。
但是,我们可以发现从 df 命令算出的文件系统使用块数的值与通过 du 命令得出的值是不一
致的。该值差异的存在是由于 du 与 df 命令实施上的不同: du -s 命令通过将指定文件系统中
所有的目录、符号链接和文件使用的块数累加得到该文件系统使用的总块数;而 df 命令通
过查看文件系统磁盘块分配图得出总块数与剩余块数。
文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,
间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta
Data。
du 命令是用户级的程序,它不考虑 Meta Data,而 df 命令则查看文件系统的磁盘分配
图并考虑 Meta Data。df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分
情况。
du 与 df 命令另一不同之处:如果用户删除了一个正在运行的应用所打开的某个目录下
的文件,则 du 命令返回的值显示出减去了该文件后的目录的大小。但 df 命令并不显示减去
该文件后的大小。直到该运行的应用关闭了这个打开的文件,df 返回的值才显示出减去了该
文件后的文件系统的使用情况
4. ftp 工具
主要用来从 FTP 服务器上交互式的上传或下载传输文件。
命令列表(部分)
命令 备注
? 显示 ftp 命令的说明。后面可以加参数,是加需要解释的命令名,不加则显
示包含所有命令列表。
append 使用当前文件类型设置,将本地文件附加到远程计算机中。
ascii 说明:默认情况下,将文件传输类型设置为 ASCII
binary 将文件传输类型设置为二进制。
bye 结束和远程计算机的 ftp 会话,也就是安全断开,退出 ftp.
cd 更改远程计算机上的工作目录。
dir :显示远程的文件以及子目录列表。
get 使用当前文件传输类型,把远程的文件拷贝到本地计算机上。
! 在本地计算机上运行指定命令。
lcd 更改本地计算机的本地目录
ls 显示远程目录的文件和字目录.
mdelete 删除远程计算机上的文件
mdir 显示远程目录的文件和子目录列表,
mget 使用当前文件传输类型将多个远程文件复制到本地计算机
mkdir 创建远程目录
mput 使用当前文件传输类型,批量将本地文件复制到远程计算机
open 连接到指定 ftp 服务器上
prompt 转换提示,在多个文件传输的时候,ftp 提示可以有选择的检索或保存文件,如
果关闭提示,则 mget 和 mput 命令传输所有文件,在默认情况下是打开的.
put 使用当前文件传输类型将本地文件复制到远程计算机中
pwd 显示远程计算机上的当前目录
quit 结束与远程计算机的 ftp 会话,并退出 ftp.
recv 使用当前文件传输类型将远程文件复制到本地计算机,他与 get 命令作用相同。
rename 更改远程计算机上的文件名。
rmdir 删除远程目录
send 使用当前文件传输类型将本地文件复制到远程计算机.send 和 put 命令的功
能一样。
status 显示 ftp 连接和转换的当前状态
安装过程
安装过程略。
注:Linux 安装至少需要两个分区/root 和 swap,而 swap 分区至少设置为物理内存的 2 倍。
Oracle 安装
准备知识
分清 DB_NAME 、 INSTANCE_NAME 、 ORACLE_SID 、 SERVICE_NAME 、
DB_DOMAIN 和 GLOBAL_DB_NAME
安装前,首先要分清 DB_NAME、INSTANCE_NAME、ORACLE_SID、SERVICE_NAME、
DB_DOMAIN 和 GLOBAL_DB_NAME 的概念。
一个运行着的 ORACLE 数据库就可以看成是一个 ORACLE SERVER,该 SERVER 由
数据库(Database)和实例(Instance)组成,在一般的情况下一个 ORACLE SERVER 包含一个实
例和一个与之对应的数据库,但是在特殊情况下,如 8i 的 OPS,9i 的 RAC,一个 SERVER
中一个数据库可以对应多个实例。
一系列物理文件(数据文件,控制文件,联机日志等)的集合或与之对应的逻辑结构
(表空间,段等)被称为数据库,简单的说,就是一系列与磁盘有关系的物理文件的组成。
ORACLE 内存结构和后台进程被成为数据库的实例,一个实例最多只能安装(Mount)和打开
(Open)在一个数据库上,负责数据库的相应操作并与用户交互。
数据库名(DB_NAME):用于区分数据的内部标识,是以二进制方式存储于数据库控制
文件中的参数,所以很难改变其名字(修改比较麻烦,所以在安装时设置好了就不要再改
了),数据库安装完成后,该参数被写入数据库参数文件 pfile 的 db_name 中。
数据库实例名(INSTANCE_NAME):则用于和操作系统之间的联系,用于对外部连接
时使用。在操作系统中要取得与数据库之间的交互,必须使用数据库实例名。该值允许修改,
但一般设置与数据库名相同即可。
数 据 库 实 例 名 ( ORACLE_SID ) : 虽 然 和 INSTANCE 都 是 指 数 据 库 实 例 名 ,
INSTANCE_NAME 参数是 ORACLE 数据库的参数,此参数可以在参数文件中查询到,而
ORACLE_SID 参数则是操作系统环境变量。 操作系统环境变量 ORACLE_SID 用于和操作
系统交互。也就是说,在操作系统中要想得到实例名,就必须使用 ORACLE_SID,其取值
也必须与 INSTANCE_NAME 相同。
数据库域名(DB_DOMAIN):类似网络域名的概念,(所以一个数据库名 db_name 在
不同的域里可以相同)在安装时确定(全局数据库名中填写),定义规则也相似于网络定义。
全局数据库名(GLOBAL_DB_NAME):命名规则= db_name+[db_domain]
数据库服务名(SERVICE_NAME):一般与全局数据库名相同。
合理设置 Oracle 内存参数
Oracle 实例是一组 Oracle 后台进程和内存结构的集合。当一个 Oracle 实例开始运
行时,它分配了一个称为系统全局区(SGA)的大内存块。实例的 SGA 被该实例的所
有后台进程共享。另外,每个与实例有关联的进程都有它自己私有的内存区,被称为一
个程序全局区(PGA)。
SGA 结构的大小对数据库的性能极其重要。它主要包括:
数据高速缓存区
内存中用来存储频繁访问的数据区域。由 Default pool、Keep pool、Recycle pool
三个缓存池组成。
该区域由 db_cache_size(9i)或 db_block_buffers*db_block_size(8i)值决
定的。一般设置为可用内存的 60%。
共享池
主要用来缓存 PL/SQL 程序单元,SQL 语句的解析版本,解析的 SQL 语句的
执行计划以及数据字典信息。主要包括库缓存区(共享 SQL 区和 PL/SQL 区)和
数据字典缓存区。
该区域由 shared_pool_size 值决定。一般设置为可用内存的 20%。
日志缓存区
主要用来缓存 Oracle 需要写入磁盘的 redo 日志记录。
该区域由 log_buffer 值决定。一般设置为 1-2M,不应过大。
JAVA 池
主要为 JAVA 服务的。
该区域由 Java_pool_size 值决定。若不使用,可以分配 10M~30M。
大池
可选内存区,但如果使用 MTS 服务器或使用 RMAN 备份,该内存区是需要的。
该区域由 large_pool_size 值决定。假如不使用 MTS,可分配在 20—50M 。
这部分主要用来保存并行查询时候的一些信息,还有就是 RMAN 在备份的时候可
能会使用到。如果设置了 MTS,则由于 UGA 部分要移入这里,则需要具体根据
session 最大数量和 sort_ares_size 等相关会话内存参数的设置来综合考虑这部分
大小的设置,一般可以考虑为 session * (sort_area_size + 2M)。这里要提醒一点,
不是必须使用 MTS,一般不主张使用 MTS,尤其同时在线用户数小于 500 的情况
下。
固定 SGA
Oracle 内部使用,不能设定。
PGA 程序全局区主要由 sort_area_size(用于排序所占内存)和 hash_area_size(用
于散列联接,位图索引)值决定。这两个参数在非 MTS 下都是属于 PGA ,不属于
SGA,是为每个 session 单独分配的。
总之,SGA 的大小一般为物理内存的 40%~50%左右,或参考公式:
OS 使用内存+SGA+并发执行进程数*(sort_area_size+hash_ara_size+2M) < 总内存
如果是裸设备,可考虑适当的增大 SGA。
掌握技能
操作系统命令
以下只是列出操作系统命令的部分用法,详细用法请参考 MAN 手册。
1) groupadd
功能说明:用于将新组加入系统。
语 法:groupadd [-g gid] [-o]] [-r] [-f] groupname
参 数:
-g gid:指定组 ID 号。
-o:允许组 ID 号,不必惟一。
-r:加入组 ID 号,低于 499 系统账号。
-f:加入已经有的组时,发展程序退出。
例 子:建立一个新组,并设置组 ID 加入系统。
#groupadd -g 344 test
此时在/etc/passwd 文件中产生一个组 ID(GID)是 344 的项目
2) groupdel
功能说明:用于删除群组。需要从系统上删除群组时,可用 groupdel 指令来完成这项工
作。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。
语 法:groupdel groupname
3) useradd
功能说明:用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。useradd 可用来建立
用户账号,它和 adduser 命令是相同的。账号建好之后,再用 passwd 设定账号的密码。
使用 useradd 命令所建立的账号,实际上是保存在/etc/passwd 文本文件中。
语 法:useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e
expire ] [-p passwd] [-r] name
参 数:
-c:加上备注文字,备注文字保存在 passwd 的备注栏中。
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的 shell。
-u:指定用户 ID 号。
例 子:建立一个新用户账户,并设置 ID。
#useradd wang -u 555
需要说明的是,设定 ID 值时尽量要大于 500,以免冲突。因为 Linux 安装后会建立一些
特殊用户,一般 0 到 499 之间的值留给 bin、mail 这样的系统账号。
4) userdel
功能说明:可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相
关文件。
语 法:userdel [-r] login
参 数:
-r 删除用户登入目录以及目录中所有文件。
5) passwd
功能说明:用来更改使用者的密码。
语 法:passwd username
6) chmod
功能说明:用于改变文件或目录的访问许可权。有两种改变方式:字符设定和数字设定。
语 法:chmod [who] [+ | - | =] [mode] 文件名/目录名
参 数:
操作对象 who 可以是下述字母中的任一个或者它们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组 ID 的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)
mode 可以是下述字母中的任一个或者它们的组合:
r 可读。
w 可写。
x 可执行。
或:
0 没有许可。
1 可执行许可。
2 可写许可。
4 可读许可。
7) chown
功能说明:用于更改某个文件或目录的属主和属组。
语 法:chown [选项] 用户或组,文件
参 数:
-R:递归地修改目录及其下面内容的所有权 。
-v:显示 chown 命令所做的操作。
8) chgrp
功能说明:用于改变文件的组所有权。
语 法:chgrp [选项] 组文件
参 数:
-R:递归的改变目录和它的内容的组所有权 (即使遇到错误也继续) 。
9) usermod
功能说明:修改用户帐号。
语 法:usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g
<群组>][-G <群组>][-l <帐号名称>][-s ][-u ][用户帐号]
参 数:
-c 修改用户帐号的备注文字。
-d 修改用户登入时的目录。
-e 修改帐号的有效期限。
-f 修改在密码过期后多少天即关闭该帐号。
-g 修改用户所属的群组。
-G 修改用户所属的附加群组。
-l 修改用户帐号名称。
-L 锁定用户密码,使密码无效。
-s 修改用户登入后所使用的 shell。
-u 修改用户 ID。
-U 解除密码锁定。
10) finger
功能说明:查找并显示用户信息。finger 指令会去查找,并显示指定帐号的用户相关信息,
包括本地与远端主机的用户皆可,帐号名称没有大小写的差别。单独执行 finger 指令,
它会显示本地主机现在所有的用户的登陆信息,包括帐号名称,真实姓名,登入终端机,
闲置时间,登入时间以及地址和电话。
语 法:finger [-lmsp][帐号名称...]
参 数:
-l 列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的 Shell,登入时间,
转信地址,电子邮件状态,还有计划文件和方案文件内容。
-m 排除查找用户的真实姓名。
-s 列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和
电话。
-p 列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的 Shell,登入时间,
转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容。
11) id
功能说明:显示用户的 ID,以及所属群组的 ID。id 会显示用户以及所属群组的实际与有效 ID。若
两个 ID 相同,则仅显示实际 ID。若不指定用户名称,则显示目前用户的 ID。
语 法:id [-gGnru][--help][--version][用户名称]
参 数:
-g 或--group 显示用户所属群组的 ID。
-G 或--groups 显示用户所属附加群组的 ID。
-n 或--name 显示用户,所属群组或附加群组的名称。
-r 或--real 显示实际 ID。
-u 或--user 显示用户 ID。
12) w,who,users
显示目前登入系统的用户信息。who 指令会列出登入帐号,使用的终端机,登入时间以及从何处
登入或正在使用哪个 X 显示器。单独执行 w 会显示所有的用户以及他们正在执行的程序。
13) cp
功能说明:用于复制文件和目录。可以使用这个命令复制一个文件到一个指定的目的地, 或者复制
任意多个文件到一个目的目录目录。
语 法:cp [选项] 源文件或目录 目标文件或目录
参 数:
-f: 删除存在的目标文件。
-p:保持原始文件的所有者,组,许可,和时间表属性。
-r:递归地复制目录,复制任何非目录和非符号链接。
14) mv
功能说明:用于将文件移到目录下,或将当前文件改名。
语 法:mv [选项] 源文件或目录 目标文件或目录
参 数:
-i:若目标文件已存在,则先询问是否要覆盖旧的文件。
-f:禁止交互操作。在 mv 操作要覆盖某已有的目标文件时不给任何指示,
指定此选项后,i 选项将不再起作用。
15) rm
功能说明:用于删除文件或目录。
语 法:rm [选项] 文件---
参 数:
-f:强制删除。
-r:指示 rm 将参数中列出的全部目录和子目录均递归地删除。
-i:进行交互式删除。
16) find
功能说明:用于查找文件。
例 子: 典型例子
#find . -name
#find . -name –print
#find / -name ‘c??’ –print
#find / -name ‘f*’ –print
#find . -name ‘f*’ –exec ls –l {} \;
#find . -name f\* –ok rm {} \; (交互式提问)
#find . -perm 644 –mtime 4
#find . -name ‘c??’ –o -name ‘d??’
17) tar
功能说明:可以归档多个文件和目录到一个.tar 文件下,还可以从一个归档文件中抽取一个文件和
目录。
语 法:tar [-c][-r][-t][-x][-v][-z][f 文件名] 文件和目录名
参 数:
-c: 创建归档文件。
-r: 增加文件到归档文件中。
-t: 查看归档文件中的文件。
-x: 解开归档文件。
-v: 显示冗长信息。
-z: 进行压缩和解压。
例 子:
#tar –xzvf
18) su
功能说明:作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码。
语 法:su [选项]... [-] [USER [ARG]...]
参 数:
-l: 加了这个参数之后,就好像是重新登陆为该使用者一样,大部分环
境变量(例如 HOME、SHELL 和 USER 等)都是以该使用者(USER)为主,
并且工作目录也会改变。如果没有指定 USER,缺省情况是 root。
-m, -p: 执行 su 时不改变环境变数。
USER: 欲变更的使用者账号。
ARG: 传入新的 Shell 参数。
19) umask
功能说明:umask 设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入 profile 文件,就可
控制该用户后续所建文件的存取许可。它告诉系统在创建文件时不给谁存取许可。使用
权限是所有用户。
语 法:umask [-p] [-S] [mode]
参 数:
-S:确定当前的 umask 设置。
-p:修改 umask 设置。
[mode]:修改数值。
例 子:把 umask 值改为 177,结果只有文件所有者具有读写文件的权限,其它用户不能访问该
文件。
#umask -p 177
传统 Unix 的 umask 值是 022,这样就可以防止同属于该组的其它用户及别的组的用户修
改该用户的文件。umask 命令用来设置进程所创建的文件的读写权限,最保险的值是 0077,
即关闭创建文件的进程以外的所有进程的读写权限,表示为-rw-------。在~/.bash_profile
中,加上一行命令 umask 0077 可以保证每次启动 Shell 后, 进程的 umask 权限都可以被正
确设定。
20) ps
功能说明:显示瞬间进程 (process) 的动态,使用权限是所有使用者。要对进程进行监测和控制,首
先要了解当前进程的情况,也就是需要查看当前进程。ps 命令就是最基本、也是非常强
大的进程查看命令。使用该命令可以确定有哪些进程正在运行、运行的状态、进程是否
结束、进程有没有僵尸、哪些进程占用了过多的资源等。
语 法:ps [options] [--help]
参 数:
-A: 列出所有的进程。
-l: 显示长列表。
-m: 显示内存信息。
-w: 显示加宽可以显示较多的信息。
-e: 显示所有进程。
a: 显示终端上的所有进程,包括其它用户的进程。
-au: 显示较详细的信息。
-aux: 显示所有包含其它使用者的进程。
例 子:在进行系统维护时,经常会出现内存使用量惊人,而又不知道是哪一个进程占用了大量
进程的情况。除了可以使用 top 命令查看内存使用情况之外,还可以使用下面的命令。
# ps aux | sort +5n
21) whereis
功能说明:确定指定文件的源程序/二进制程序和手册部分的位置。
语 法:whereis filename
22) 系统服务
Linux 系统服务程序的启动脚本都放置在目录/etc/ 中,启动和停止服务程序的
命令格式:service service_name arg
参数 arg 一般是:start|stop|status|restart|reload|condrestart
例子:启动 vsftpd 服务
#service vsftpd start
如果为运行级别指定要启动/停止的服务
A. 文本用户工具
命令:ntsysv
B. 命令行工具
命令:chkconfig
查看所有或指定服务的状态:chkconfig –-list [service_name]
添加/删除指定的服务:chkconfig --<add|del> <service_name>
设置指定服务在指定运行级别的启动/停止:
chkconfig [--level<levels>] <service_name> <on|off|reset>
例子:查询服务 http
# chkconfig --list
安装过程
以在 RedHat Linux AS4 上,安装 为例。
安装策略
安装策略分 8 个步骤:
(一) 检查系统软件包
主要是操作系统的开发包,所以建议安装 Linux 时,所有包都选择安装,因为现在
硬盘不是问题,至于安全效率方面,可以之后再优化操作系统。
检查 Linux 是否安装以下软件包:
-9
compat-gcc-32-c++
compat-libstdc++
compat-libstdc++
gcc-c++
-44
-44
-1
-1
-5
-11
如果没有安装的包可以在安装盘中找到安装包,单独安装即可。
(二) 修改系统参数
设置共享内存,主要修改以下核心参数:
名字 描述 取值说明
最大共享内存段尺寸(字节) Oracle SGA 由共享内存组成,且错误
设置 SHMMAX 可能会限制 SGA 的
大小。在设置 SHMMAX 时,切记 SGA
的大小应该适合于一个共享内存段。
SHMMAX 设 置 不 足 可 能 会 导 致
ORA-27123 错误。
公式:250kB + * shared_buffers +
* max_connections 或者无穷大
最小共享内存段尺寸(字节) 缺省值是 4096,无须修改
可用共享内存的总数量(字节或者
页面)
如果是字节,就和 SHMMAX 一样;
如 果 是 页 面 ,
ceil(SHMMAX/PAGE_SIZE)
信号参数 有 4 个参数,依次为 SEMMSL(每个用
户拥有信号量最大数量),SEMMNS(系
统信号量最大数量),SEMOPM( 每次
semop 系统调用操作数),SEMMNI(系
统信号量集最大数量)
-max 系统中文件句柄的最大数量 Oracle 建议将整个系统的文件句柄值
至少设置为 65536
ip_local_port_range 定于 TCP 和 UDP 使用的本地端口
范围
第一个数是开始,第二个数是最后端
口号,默认值依赖于系统中可用的内
存数:
> 128Mb 32768-61000
< 128Mb 1024-4999 or even less.
该值决定了活动连接的数量,也就是
系统可以并发的连接数
(注:确定所有共享内存的限制,可使用以下命令:ipcs -lm)
因为 RedHat Linux AS4 自带的 gcc 版本过高,所以还需降级。
(三) 建立组和用户
需要建立 dba 组及组成员 oracle。
(四) 修改 oracle 用户的 bash_profile
根据需要设置 oracle 用户的环境变量,保存到 bash_profile。
(五) 解压安装包
下载安装包及补丁包:
将安装文件上传到服务器上。
(六) 安装系统补丁
安装前需要打的补丁包:
安装后,为了运行 agent 需要打的补丁:
修复 agent 错误的补丁。
打 3238244 补丁所需要的补丁。
(七) 开始安装 oracle
执行 oracle 的安装脚本。
(八) 建库并初始化配置
执行 dbca 建立应用数据库。并修改 oracle 初始化参数。
安装操作
环境:
硬件:CPU--Pentium4 Memory--1G HD--60G
软件:OS--RedHat Linux AS4
操作步骤:
1. 检查系统软件包
查询系统是否安装过需要的软件包。
#rpm –qa |grep ‘compat’
如果系统还没有安装,可以在第 3 张安装系统盘中找到,单独安装即可。某些软件包安装有
依赖性,可以根据系统提示安装。如果安装不成功,可以使用强制安装:
#rpm --nodeps --force
2. 修改系统参数(用 root 用户登录)
设置共享内存参数:
#vi /etc/
输入下列参数值:
=536870912
=4096
=536870912
=250 32000 100 128
-max=65536
_local_port_range=1024 65000
注:一般情况下 shmmax 值为物理内存的一半(512*1024*1024)。
修改后,使内核立即生效,运行:
#sysctl -p
设置 oracle 对文件的要求:
#vi /etc/ security/
输入下列参数值:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
将 gcc 降级:
# mv /usr/bin/gcc /usr/bin/gcc34
# ln –s /usr/bin/gcc32 /usr/bin/gcc
# mv /usr/bin/g++ /usr/bin/g++34
# ln –s /usr/bin/g++32 /usr/bin/g++
安装后,可以再将 gcc 恢复回来。
3. 建立组和用户
# groupadd dba
# useradd –g dba oracle
# passwd –d oracle
4. 修改 oracle 用户的 bash_profile
建立 oracle 安装时相关目录:
# su -
# mkdir /oracle
# mkdir /oracle/product
# mkdir /oracle/product/
# mkdir /oradata
# mkdir /orasetup
# chmod 777 /orasetup
# chown /orasetup
# chmod 777 /oradata
# chown /oradata
# chmod –R 777 /oracle/product/
# chown –R /oracle/product/
#
配置环境变量:
A. root 用户(可选)
编辑 root 用户下的.bash_profile 文件,输入以下内容:
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/product/
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
export ORACLE_OWNER=oracle
export ORACLE_SID=oradb
B. oracle 用户
编辑 oracle 用户下的.bash_profile 文件,输入以下内容:
PATH=$PATH:$HOME/bin
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/product/
export
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export LD_ASSUME_KERNEL=
export THREADS_FLAG=native
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export ORACLE_SID=oradb
export ORACLE_TERM=xterm
export NLS_LANG=''
# export NLS_LANG='SIMPLIFIED '
export ORA_LANG=''
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
#export DISPLAY=:
export DISPLAY=:0
export PATH=$PATH:$ORACLE_HOME/bin
export LANG=en_US
export GDM_LANG=en_US
export LC=en_US
export EDITOR=vi
unset USERNAME
5. 解压安装包
将安装包和补丁包,FTP 到/orasetup 目录下
# su - oracle
# cd /orasetup
# zcat | cpio -idmv
# zcat | cpio -idmv
# zcat | cpio -idmv
#
6. 安装系统补丁
在安装前需要,安装 补丁:
# su -
# cd /orasetup
# unzip
# cd 4198954
# rpm -ivh
# rpm -ivh
安装完,如果出现 agaent 问题,还需再安装两个补丁:
# su -
# cd ~oracle
# unzip
# unzip
# export ORACLE_BASE=$HOME
# export ORACLE_HOME=$HOME
# export ORACLE_OWNER=oracle
# export ORACLE_SID=example
# export ORACLE_TERM=xterm
# export LD_ASSUME_KERNEL=
# export THREADS_FLAG=native
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
# export NLS_LANG=""
# export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
# export LANG=en_US
# export GDM_LANG=en_US
# export LC=en_US
# export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
# cd 3238244
# opatch apply
#
# su - oracle
# cd $ORACLE_HOME/network/lib
# make -f install
#
7. 开始安装 oracle
开始正式安装:
# cd /orasetup/Disk1
# ./ runInstaller
注:建议安装过程中选择“数据库配置”时,选择“只安装软件”,安装后,再用 DBCA 和 NETCA 建库和配
置
8. 建库并初始化配置
建库最好使用 dbca 工具建库:
# dbca
使用 netca 工具配置监听服务进程:
# netca
建库和配置操作完成以后,需要调整初始化参数:
修改 pfile 参数文件
Pfile(Parameter File)文件是基于文本格式的参数文件,含有数据库的配置参数。Oracle
9i 在安装时为每个数据库建立了一个 Pfile,默认的名称为“init+例程名.ora”,这是一个文本
文件,可以用任何文本编辑工具打开。
修改参数请参考下表:
参数 描述
compatible 兼容版本。
db_name 数据库名称。
db_domain 数据库域名,加上数据库名称 db_name 构成全局数
据库名称。此值可以为空。
db_block_size 指定数据块大小,此参数建议在建库时,根据实际
系统要求,设置该值。
db_cache_size 高速数据缓冲区大小,该值越大,可以减少对数据
库文件的 I/O 次数,提高效率。一般该值为 SGA 的
40%~60%。
db_file_multiblock_read_count 涉及一个完全连续扫描的一次 I/O 操作过程中读取
的块的最大数量。这个参数影响到全索引扫描的代
价。这个值越高,全索引扫描的代价也就会越“便
宜”。
open_cursors 指定一个会话一次可以打开的游标的最大数量,应
将该值设置得足够高,这样才能防止应用程序耗尽
打开的游标。
background_dump_dest 后台进程跟踪文件目录。
core_dump_dest 核心转储跟踪文件目录。
timed_statistics 收集操作系统的计时信息,这些信息可被用来优化
数据库和 SQL 语句,使用 statspack 收集统计信息
时建议将该值设置为 TRUE
user_dump_dest 用户进程跟踪文件目录。
control_files 指定控制文件的路径及文件名。
instance_name 数据库实例名。
job_queue_processes 用于复制环境。它指定每个例程的 SNP 作业队列进
程的数量,要自动更新表快照或执行由 DBMS_JOB
创建的请求, 请将该参数设置为 1 或更大的值。
dispatchers 为设置使用共享服务器的共享环境而设置调度程序
的数量和类型。
aq_tm_processes 如果大于零, 就会启用对队列消息的时间监视。该时
间值可用于指定消息的延迟和失效属性 (用于应用
程序的开发)
hash_join_enabled 如果设置为 TRUE, 优化程序将在计算最有效的联接
方法时考虑散列联接。Oracle 建议数据仓库应用程
序应使用 TRUE 值。
query_rewrite_enabled 启用或禁用对实体化视图的查询重写。一个特定实
体化视图只在如下条件下启用: 会话参数和单独实
体化视图均已启用, 并且基于成本的优化已启用。
star_transformation_enabled 确定基于成本的查询转换是否将被应用到星型查询
中。如果设置为 TRUE, 优化程序将考虑将基于成本
的转换应用于星型查询中; 如果设置为 FALSE,
将不使用任何转换; 如果设置为 TEMP_DISABLE,
将考虑查询转换, 但不使用临时表。
java_pool_size 指定 Java 存储池的大小,用于存储 Java 的方法、
类定义和 Java 对象。
large_pool_size 指定大型池的大小, 用于共享服务器的会话内存、
并行执行的消息缓冲区以及 RMAN 备份和恢复的
磁盘 I/O 缓冲区。
shared_pool_size 指定共享池的大小,用于存储共享游标、存储的过
程、控制结构和并行执行消息缓冲区等对象。较大
的值能改善多用户系统的性能。一般该值为 SGA 的
20%左右。
processes 指定可同时连接到一个 Oracle Server 上的操作系统
用户进程的最大数量。
fast_start_mttr_target 指定从单个数据库例程崩溃中恢复所需的时间(估计
秒数)。
remote_login_passwordfile 指定操作系统或一个文件是否检查具有权限的用户
的口令。如果设置为 NONE, Oracle 将忽略口令文件。
如果设置为 EXCLUSIVE, 将使用数据库的口令
文件对每个具有权限的用户进行验证。如果设置为
SHARED, 多个数据库将共享 SYS 和 INTERNAL
口令文件用户。
pga_aggregate_target 指定连接到例程的所有服务器进程的目标 PGA 总
内存。请在启用自动设置工作区之前将此参数设置
为一个正数。这部分内存不驻留在 SGA 中。数据库
将此参数值用作它所使用的目标 PGA 内存量。设
置此参数时, 要将 SGA 从可用于 Oracle 例程的系
统内存总量中减去。然后可将剩余内存量分配给
pga_aggregate_target。
sort_area_size 指定排序所使用的最大内存量。排序完成后, 各行将
返回, 并且内存将释放。增大该值可以提高大型排序
的效率。如果超过了该内存量, 将使用临时磁盘段。
undo_management 指定系统应使用哪种撤消空间管理模式。如果设置
为 AUTO, 例程将以 SMU 模式启动。否则将以 RBU
模式启动。在 RBU 模式下, 撤消空间会象回退段一
样在外部分配。在 SMU 模式下, 撤消空间会象撤消
表空间一样在外部分配。
undo_tablespace 撤消表空间仅用于存储撤消信息。
undo_retention 用来指定要在数据库中保留的已提交的撤消信息总
量。
其他 参看 oracle 相关资料。
修改 spfile 文件
从 Oracle9i 以后,Oracle 推荐使用 spfile,应用其新特性来存储和维护初始化参数设置,
除了第一次启动数据库需要 PFILE(然后可以根据 PFILE 创建 SPFILE),之后可以使用
spfile 来管理初始化参数。SPFILE 是一个二进制文件,可以使用 RMAN 进行备份,使用 ALTER
SYSTEM 或者 ALTER SESSION 来动态修改那些可动态修改的参数,所有更改可以立即生效,
以选择使更改只应用于当前实例还是同时应用到 spfile。