Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1032149
  • 博文数量: 159
  • 博客积分: 3063
  • 博客等级: 中校
  • 技术积分: 2703
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-01 01:51
文章分类

全部博文(159)

文章存档

2013年(48)

2012年(111)

分类: Oracle

2012-04-03 22:23:24

前言

本手册主要介绍Oracle相关安装和配置的基本方法。Oracle是运行在WindowsUnix操作平台上的主流数据库系统之一。因为Windows上的Oracle安装配置相对比较简单,所以本手册只介绍Unix平台上的安装和配置,而且主要以Linux操作系统为主(笔者强烈推荐Linux)。如果不特别声明,本文档涉及的操作都是在Red LinuxOracle9i上完成。

Oracle的安装主要包括操作系统安装和数据库系统安装。

操作系统安装

Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。虽然Linux是免费的操作系统,但它依然是一种非常优秀的操作系统,支持多用户,多进程,实时性好,功能强大而且稳定。同时具有良好的兼容性和可移植性。

RedHatt作为目前众多发行版本中的一种,一方面它已经是行业的标准,有大量为其开发的软件;另一方面Redhat系统的稳定性及安全性非常出色。

准备知识

作为数据库服务器的操作平台,在安装的时候,首先要考虑如何管理硬盘,合理规划硬盘分区:

盘分区一共有三种类型:主分区,扩展分区和逻辑分区

在一块硬盘上最多只能有四个主分区。可以另外建立一个扩展分区来代替四个主分区的其中一个,然后在扩展分区下可以建立更多的逻辑分区。扩展分区只不过是逻辑分区的容器。实际上只有主分区和逻辑分区进行数据存储。

最合理的分区结构主分区在前,扩展分区在后,然后在扩展分区中划分逻辑分区,保证主分区的个数扩展分区个数要控制在四个之内

每个主分区和逻辑分区都回被存储一个识别文件系统的附加信息。操作系统(Windows或者Linux等等)能通过这些信息非常容易的识别和确认,应该使用哪个分区。不能识别的操作系统分区将会被忽略。

通过分区当然不能产生任何文件系统。在分区之后必须要进行格式化,才能使用。Linux下的分区命名通常采用设备-名称(device-name)。一般的硬盘(比如IDE硬盘)将采用/dev/hdxy来命名。X表示硬盘(a是第一块硬盘,b是第二块硬盘,依次类推),y是分区的号码(从0开始,123等等)。SCSI硬盘将用/dev/sdxy来命名。光驱(不管是IDE类型或者SCSI)将和硬盘一样来命名。

其次,要掌握Linux下软件的基本安装和卸载:

Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的"添加/删除程序"来实现。与其相类似,在Linux下有一个功能强大的软件安装卸载工具,名为RPMRed 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 /;用于报告文件系统使用的块数。但是,我们可以发现从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安装

准备知识

l 分清DB_NAMEINSTANCE_NAMEORACLE_SIDSERVICE_NAMEDB_DOMAINGLOBAL_DB_NAME

安装前,首先要分清DB_NAMEINSTANCE_NAMEORACLE_SIDSERVICE_NAMEDB_DOMAINGLOBAL_DB_NAME的概念。

一个运行着的ORACLE数据库就可以看成是一个ORACLE SERVER,该SERVER由数据库(Database)和实例(Instance)组成,在一般的情况下一个ORACLE SERVER包含一个实例和一个与之对应的数据库,但是在特殊情况下,如8iOPS9iRAC,一个SERVER中一个数据库可以对应多个实例。

      一系列物理文件(数据文件,控制文件,联机日志等)的集合或与之对应的逻辑结构(表空间,段等)被称为数据库,简单的说,就是一系列与磁盘有关系的物理文件的组成。ORACLE内存结构和后台进程被成为数据库的实例,一个实例最多只能安装(Mount)和打开(Open)在一个数据库上,负责数据库的相应操作并与用户交互。

数据库名(DB_NAME):用于区分数据的内部标识,是以二进制方式存储于数据库控制文件中的参数,所以很难改变其名字(修改比较麻烦,所以在安装时设置好了就不要再改了),数据库安装完成后,该参数被写入数据库参数文件pfiledb_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 poolKeep poolRecycle 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文件中产生一个组IDGID)是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 wangu 555

需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0499之间的值留给binmail这样的系统账号。

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 可读。

可写。 

x 可执行。

或:

0 没有许可。

可执行许可。

可写许可。

可读许可。

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,以及所属群组的IDid会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若指定用户名称,则显示目前用户的ID

语 法:id [-gGnru][--help][--version][用户名称]

数:

-g或--group  显示用户所属群组的ID。

-G或--groups  显示用户所属附加群组的ID。
-n或--name  显示用户,所属群组或附加群组的名称。
-r或--real  显示实际ID。
-u或--user  显示用户ID。

12) wwhousers

显示目前登入系统的用户信息。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 加了这个参数之后,就好像是重新登陆为该使用者一样,大部分环

境变量(例如HOMESHELLUSER等)都是以该使用者(USER)为主,并且工作目录也会改变。如果没有指定USER,缺省情况是root

m,p 执行su时不改变环境变数。

USER 欲变更的使用者账号

ARG 传入新的Shell参数

19) umask

功能说明:umask设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入profile文件,就可控制该用户后续所建文件的存取许可。它告诉系统在创建文件时不给谁存取许可。使用权限是所有用户。

语 法:umask [-p] [-S] [mode] 

数:

S:确定当前的umask设置。

p:修改umask 设置。

[mode]:修改数值

    子:umask值改为177,结果只有文件所有者具有读写文件的权限,其它用户不能访问该文件。

umaskp 177

传统Unixumask值是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

定于TCPUDP使用的本地端口范围

第一个数是开始,第二个数是最后端口号,默认值依赖于系统中可用的内存数:
> 128Mb 32768-61000
< 128Mb 1024-4999 or even less.
该值决定了活动连接的数量,也就是系统可以并发的连接数

(注:确定所有共享内存的限制,可使用以下命令: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

注:建议安装过程中选择“数据库配置”时,选择“只安装软件”,安装后,再用DBCANETCA建库和配置

8. 建库并初始化配置

建库最好使用dbca工具建库:

# dbca

使用netca工具配置监听服务进程:

# netca

建库和配置操作完成以后,需要调整初始化参数:

l 修改pfile参数文件

PfileParameter 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

阅读(2182) | 评论(2) | 转发(2) |
给主人留下些什么吧!~~

aaron82192012-04-05 14:58:39

呵呵,作为知识大全,收藏起来先

miaoyouliang9992012-04-05 10:24:36

挺全的