分类: Oracle
2012-04-03 22:23:24
前言
本手册主要介绍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下软件的安装主要有两种不同的形式。第一种安装文件名为xxx.tar.gz;另一种安装文件名为xxx.i386.rpm。以第一种方式发行的软件多为以源码形式发布的;第二种方式则是直接以二进制形式发布的。
第一种安装方法如下:
1. 首先,将安装文件拷贝至你的目录中。
# cp xxx.tar.gz /tmp
2. 解压缩包。
#tar xvzf xxx.tar.gz
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 xxx.i386.rpm
rpm将自动将安装文件解包,并将软件安装到缺省的目录下。并将软件的安装信息注册到rpm的数据库中,参数ivh表示进入安装模式并显示安装信息和进度。
如果需要强制安装,可执行:
#rpm –ivh –-force xxx.i386.rpm
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: 80.0 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 ,大约是 806.400M左右,而逻辑分区 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 /
文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如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安装
准备知识
l 分清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):一般与全局数据库名相同。
l 合理设置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 ls.txt
#find . -name ls.txt –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 back.tar.gz
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/rc.d/init.d中,启动和停止服务程序的命令格式:service service_name arg
参数arg一般是:start|stop|status|restart|reload|condrestart
例子:启动vsftpd服务
#service vsftpd start
如果为运行级别指定要启动/停止的服务
A. 文本用户工具
命令:ntsysv
B. 命令行工具
命令:chkconfig
l 查看所有或指定服务的状态:chkconfig –-list [service_name]
l 添加/删除指定的服务:chkconfig --
l 设置指定服务在指定运行级别的启动/停止:
chkconfig [--level
例子:查询服务http
# chkconfig --list
安装过程
以在RedHat Linux AS4上,安装Oracle9.2.0.4为例。
安装策略安装策略分8个步骤:
(一) 检查系统软件包
主要是操作系统的开发包,所以建议安装Linux时,所有包都选择安装,因为现在硬盘不是问题,至于安全效率方面,可以之后再优化操作系统。
检查Linux是否安装以下软件包:
compat-db-4.1.25-9
compat-gcc-32-3.2.3-47.3
compat-gcc-32-c++-3.2.3-47.3
compat-libgcc-296-2.96-132.7.2
compat-libstdc++-296-2.96-132.7.2
compat-libstdc++-33-3.2.3-47.3
gcc-3.4.3-9.EL4
gcc-c++-3.4.3-9.EL4
gnome-libs-1.4.1.2.90-44
gnome-libs-devel-1.4.1.2.90-44
libaio-devel-0.3.102-1
libaio-0.3.102-1
make-3.80-5
openmotif21-2.1.30-11
xorg-x11-deprecated-libs-devel-6.8.1-23.EL
xorg-x11-deprecated-libs-6.8.1-23.EL
如果没有安装的包可以在安装盘中找到安装包,单独安装即可。
(二) 修改系统参数
设置共享内存,主要修改以下核心参数:
名字 | 描述 | 取值说明 |
kernel.shmmax | 最大共享内存段尺寸(字节) | Oracle SGA 由共享内存组成,且错误设置 SHMMAX 可能会限制 SGA 的大小。在设置 SHMMAX 时,切记 SGA 的大小应该适合于一个共享内存段。SHMMAX 设置不足可能会导致ORA-27123错误。 公式:250kB + 8.2kB * shared_buffers + 14.2kB * max_connections 或者无穷大 |
kernel.shmmni | 最小共享内存段尺寸(字节) | 缺省值是 4096,无须修改 |
kernel.shmall | 可用共享内存的总数量(字节或者页面) | 如果是字节,就和 SHMMAX 一样;如果是页面,ceil(SHMMAX/PAGE_SIZE) |
kernel.sem | 信号参数 | 有4 个参数,依次为SEMMSL(每个用户拥有信号量最大数量),SEMMNS(系统信号量最大数量),SEMOPM(每次semop 系统调用操作数),SEMMNI(系统信号量集最大数量) |
fs.file-max | 系统中文件句柄的最大数量 | Oracle 建议将整个系统的文件句柄值至少设置为 65536 |
ip_local_port_range | 定于TCP和UDP使用的本地端口范围 | 第一个数是开始,第二个数是最后端口号,默认值依赖于系统中可用的内存数: |
(注:确定所有共享内存的限制,可使用以下命令:ipcs -lm)
因为RedHat Linux AS4自带的gcc版本过高,所以还需降级。
(三) 建立组和用户
需要建立dba组及组成员oracle。
(四) 修改oracle用户的bash_profile
根据需要设置oracle用户的环境变量,保存到bash_profile。
(五) 解压安装包
下载安装包及补丁包:
ship_9204_linux_disk1.cpio.gz
ship_9204_linux_disk2.cpio.gz
ship_9204_linux_disk3.cpio.gz
p2617419_210_GENERIC.zip
p3238244_9204_linux.zip
p4198954_21_linux.zip
将安装文件上传到服务器上。
(六) 安装系统补丁
安装前需要打的补丁包:
p4198954_21_linux.zip
安装后,为了运行agent需要打的补丁:
p3238244_9204_LINUX.zip 修复agent错误的补丁。
p2617419_210_GENERIC.zip 打3238244补丁所需要的补丁。
(七) 开始安装oracle
执行oracle的安装脚本。
(八) 建库并初始化配置
执行dbca建立应用数据库。并修改oracle初始化参数。
安装操作
环境:
硬件:CPU--Pentium4 2.0G Memory--1G HD--60G
软件:OS--RedHat Linux AS4 DB--Oracle9.2.0.4
操作步骤:
1. 检查系统软件包
查询系统是否安装过需要的软件包。
#rpm –qa |grep ‘compat’
如果系统还没有安装,可以在第3张安装系统盘中找到,单独安装即可。某些软件包安装有依赖性,可以根据系统提示安装。如果安装不成功,可以使用强制安装:
#rpm --nodeps --force xxx.rpm
2. 修改系统参数(用root用户登录)
设置共享内存参数:
#vi /etc/sysctl.conf
输入下列参数值:
kernel.shmmax=536870912
kernel.shmmni=4096
kernel.shmall=536870912
kernel.sem=250 32000 100 128
fs.file-max=65536
net.ipv4.ip_local_port_range=1024 65000
注:一般情况下shmmax值为物理内存的一半(512*1024*1024)。
修改后,使内核立即生效,运行:
#sysctl -p
设置oracle对文件的要求:
#vi /etc/ security/limits.conf
输入下列参数值:
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/9.2.0.4
# mkdir /oradata
# mkdir /orasetup
# chmod 777 /orasetup
# chown oracle.dba /orasetup
# chmod 777 /oradata
# chown oracle.dba /oradata
# chmod –R 777 /oracle/product/9.2.0.4
# chown –R oracle.dba /oracle/product/9.2.0.4
#
配置环境变量:
A. root用户(可选)
编辑root用户下的.bash_profile文件,输入以下内容:
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/product/9.2.0.4
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/9.2.0.4
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export LD_ASSUME_KERNEL=2.4.19
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='AMERICAN_AMERICA.zhs16gbk'
# export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
export ORA_LANG='AMERICAN_AMERICA.zhs16gbk'
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
#export DISPLAY=10.1.5.192:0.0
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 ship_9204_linux_disk1.cpio.gz | cpio -idmv
# zcat ship_9204_linux_disk2.cpio.gz | cpio -idmv
# zcat ship_9204_linux_disk2.cpio.gz | cpio -idmv
#
6. 安装系统补丁
在安装前需要,安装p4198954_21_linux.zip补丁:
# su -
# cd /orasetup
# unzip p4198954_21_linux.zip
# cd 4198954
# rpm -ivh compat-libcwait-2.0-2.i386.rpm
# rpm -ivh compat-oracle-rhel4-1.0-5.i386.rpm
安装完,如果出现agaent问题,还需再安装两个补丁:
# su -
# cd ~oracle
# unzip p2617419_210_GENERIC.zip
# unzip p3238244_9204_LINUX.zip
# export ORACLE_BASE=$HOME
# export ORACLE_HOME=$HOME
# export ORACLE_OWNER=oracle
# export ORACLE_SID=example
# export ORACLE_TERM=xterm
# export LD_ASSUME_KERNEL=2.4.19
# export THREADS_FLAG=native
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
# export NLS_LANG="American_america.zhs16gbk"
# 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 ins_oemagent.mk install
#
7. 开始安装oracle
开始正式安装:
# cd /orasetup/Disk1
# ./ runInstaller
注:建议安装过程中选择“数据库配置”时,选择“只安装软件”,安装后,再用DBCA和NETCA建库和配置
8. 建库并初始化配置
建库最好使用dbca工具建库:
# dbca
使用netca工具配置监听服务进程:
# netca
建库和配置操作完成以后,需要调整初始化参数:
l 修改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相关资料。 |
l 修改spfile文件
从Oracle9i以后,Oracle推荐使用spfile,应用其新特性来存储和维护初始化参数设置,除了第一次启动数据库需要PFILE(然后可以根据PFILE创建SPFILE),之后可以使用spfile来管理初始化参数。SPFILE是一个二进制文件,可以使用RMAN进行备份,使用ALTER SYSTEM或者ALTER SESSION来动态修改那些可动态修改的参数,所有更改可以立即生效,以选择使更改只应用于当前实例还是同时应用到spfile。