1、Oracle DBA实用手册-安装篇DOYENSEER-版权声明本文档的版权归作者所有。本文档可以自由复制和发布,但对文档修改请通知作者前言本手册主要介绍 Oracle 相关安装和配置的基本方法。Oracle 是运行在 Windows 和Unix 操作平台上的主流数据库系统之一。因为 Windows 上的 Oracle 安装配置相对比较简单,所以本手册只介绍 Unix 平台上的安装和配置,而且主要以 Linux 操作系统为主(笔者强烈推荐 Linux) 。如果不特别声明,本文档涉及的操作都是在 Red Linux 和 Oracle9i 上完成。Oracle 的安装主要包括操作系统安装和数据库系
2、统安装。操作系统安装Linux 是一套免费使用和自由传播的类 Unix 操作系统,它主要用于基于 Intel x86 系列CPU 的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的 Unix 兼容产品。虽然Linux 是免费的操作系统,但是它依然是一种非常优秀的操作系统,支持多用户,多进程,实时性好,功能强大而且稳定。同时具有良好的兼容性和可移植性。RedHatt 作为目前众多发行版本中的一种,一方面它已经是行业的标准,有大量为其开发的软件;另一方面 Redhat 系统的稳定性及安全性非常出色。准备知识作为数据库服
3、务器的操作平台,在安装的时候,首先要考虑如何管理硬盘,合理规划硬盘分区:硬盘分区一共有三种类型:主分区,扩展分区和逻辑分区。在一块硬盘上最多只能有四个主分区。可以另外建立一个扩展分区来代替四个主分区的其中一个,然后在扩展分区下又可以建立更多的逻辑分区。扩展分区只不过是逻辑分区的“容器”。实际上只有主分区和逻辑分区进行数据存储。最合理的分区结构是主分区在前,扩展分区在后,然后在扩展分区中划分逻辑分区,保证主分区的个数和扩展分区个数要控制在四个之内每个主分区和逻辑分区都回被存储一个识别文件系统的附加信息。操作系统(Windows 或者 Linux 等等)能通过这些信息非常容易的识别和确认,应该使用
4、哪个分区。不能识别的操作系统分区将会被忽略。通过分区当然不能产生任何文件系统。在分区之后必须要进行格式化,才能使用。Linux 下的分区命名通常采用设备- 名称(device-name) 。一般的硬盘(比如 IDE 硬盘)将采用/dev/hdxy 来命名。X 表示硬盘(a 是第一块硬盘,b 是第二块硬盘,依次类推) ,y 是分区的号码(从 0 开始,1,2,3 等等) 。SCSI 硬盘将用 /dev/sdxy 来命名。光驱(不管是IDE 类型或者 SCSI)将和硬盘一样来命名。其次,要掌握 Linux 下软件的基本安装和卸载:在 Windows 中,我们可以使用软件自带的安装卸载程序或在控制面
5、板中的“ 添加/ 删除程序“来实现。与其相类似,在 Linux 下有一个功能强大的软件安装卸载工具,名为RPM(Red Hat Linux 提供的一种包封装格式,现在许多 Linux 发行版本都使用) 。它可以用来建立、安装、查询、更新、卸载软件。Linux 下软件的安装主要有两种不同的形式。第一种安装文件名为 xxx.tar.gz;另一种安装文件名为 xxx.i386.rpm。以第一种方式发行的软件多为以源码形式发布的;第二种方式则是直接以二进制形式发布的。第一种安装方法如下:1. 首先,将安装文件拷贝至你的目录中。# cp xxx.tar.gz /tmp2. 解压缩包。#tar xvzf
6、xxx.tar.gz3. 用 ls 命令可以看到解压缩后的文件。通常在解压缩后产生的文件中,查看“Install“的文件。该文件为纯文本文件,详细讲述了该软件包的安装方法。#vi Install4. 执行解压缩后产生的一个名为 configure 的可执行脚本程序。它是用于检查系统是否有编译时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。#./configure5. 检查通过后,将生成用于编译的 MakeFile 文件。此时,可以开始进行编译了。编译的过程视软件的规模和计算机性能的不同,所耗费的时间也不同。#make6. 成功编译后,键入如下的命令开始
7、安装:#make install7. 安装完毕,应清除编译过程中产生的临时文件和配置过程中产生的文件。键入如下命令:#make clean#make distclean8. 卸载软件。#make uninstall第二种安装方法如下:1. 在安装文件的当前目录中,用 rpm 命令进行安装。#rpm -ivh xxx.i386.rpmrpm 将自动将安装文件解包,并将软件安装到缺省的目录下。并将软件的安装信息注册到 rpm 的数据库中,参数 ivh 表示进入安装模式并显示安装信息和进度。如果需要强制安装,可执行:#rpm ivh -force xxx.i386.rpm2. 查询软件包在系统中注册
8、的名称或是否已安装。#rpm q a或#rpm -q -a |grep pkgnam #rpm -q pkgnam3. 卸载安装包。#rpm e pkgnam即可卸载软件。参数 e 的作用是使 rpm 进入卸载模式。对名为package name 的软件包进行卸载。由于系统中各个软件包之间相互有依赖关系。如果因存在依赖关系而不能卸载,rpm 将给予提示并停止卸载。你可以使用如下的命令来忽略依赖关系,直接开始卸载:#rpm e pkgnam -nodeps掌握技能1. Vi 编辑器Vi命令是 unix下常用而重要命令,可在全屏幕方式下编辑一个或多个文件。Vi有三种模式: 1. 命令模式: 进入
9、vi时所处的模式。在此模式下用户可输入各种子命令对进行*作,如删除行、粘贴行、移向下一个字、移向不同行等。2. 文本输入模式: 在此模式下可以修改一行的内容并增添新行。在命令模式下键入a 、i 或 c键可进入文本输入模式,按 Escape键可返回命令模式。 3. 命令项模式: 在此模式下,可以通过子命令输入更多的参数。如:w 子命令要求输入一文件名,“/“子命令要求输入一个查找项。用户使用 Escape键返回命令模式。vi命令一览表(部分)功能 命令 备注h 将光标左移一格。l 将光标右移一格。k或 Ctrl+p 光标上移一行 j或 Ctrl+n 光标下移一行 w 将光标移到下一个小字的前面。
10、W 将光标移到下一个大字的前面。b 将光标移到前一个小字的前面。B 将光标移到前一个大字的前面。e 将光标移到下一个小字的后面。E 将光标移到前一个大字的后面。fc 把光标移到同一行的下一个 c字符处。Fc 把光标移到同一行的前一个 c字符处。tc 把光标移到同一行的下一个字符 c的前一格。Tc 把光标移到同一行的前一个字符 c的后一格。number| 把光标移到递 number列上。移动光标+或 Enter 把光标移至下一行第一个非空白字符。- 把光标移至上一行第一个非空白字符。) 光标移至句尾 ( 光标移至句首 光标移至段落开头 光标移至段落结尾 nG 光标移至第 n行首 n+ 光标下移
11、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 在当
12、前行尾 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 删除
13、输入方式下所输入的文本 cc或 S 修改一整行。 C 改变一行光标位置以后的部分。 cw 改变光标所在单词。 dd 删除当前行。 D 删除光标所在行光标后面的内容。 dw 删除光标所在的单词。 J 把下一行内容加到本行行尾。 rc 字符替换成 c . “把光符所在字符替换成 c . R 覆盖本行内容。 u 恢复上一次的修改。 字符的大小写。 “改变光标所在出字符的大小写。 . 重复上一个操作。 把当前行移到右边。 /pattern 文件尾搜索 pattern “从光标开始处向文件尾搜索pattern ?pattern 文件首搜索 pattern “从光标开始处向文件首搜索pattern n 在
14、同一方向重复上一次搜索命令 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 启动
15、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 文件尾部开始编辑。 “使用
16、 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的输入 “将文件中
17、n1行至 n2行的内容作为 command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为 command的输入 2. FDisk 磁盘分区工具通过例子来了解 fdisk 工具:# fdisk -lDisk /dev/hda: 80.0 GB, 80026361856 bytes255 heads, 63 sectors/track, 9729 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System/dev/hda1 * 1 765 6144831
18、 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/
19、hda10 7752 9729 15888253+ 83 LinuxDisk /dev/sda: 1035 MB, 1035730944 bytes256 heads, 63 sectors/track, 125 cylindersUnits = cylinders of 16128 * 512 = 8257536 bytesDevice 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+
20、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是不是一个连续的数字,另外
21、要看一下每个硬盘设备的 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 有多少未划分空间,计算一下就知道了;扩展分
22、区总容量是 806400 K ,大约是 806.400M左右,而逻辑分区 sda5 和 sda6 的大小加起来是 400M左右,所以还仍有 400M左右未划分空间,并且只能划分为链逻辑分区。硬盘的实际分区请根据 fdisk中的帮助,谨慎操作。3. df 磁盘信息查看工具df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。#dfFilesystem 1Kblocks Used Available Use% Mounted on /dev/hda2 1361587 1246406 44823 97 / Filesystem 列:是代表文件系统对应的设备文件的路径名(一般是硬盘上的分区)
23、 ;1Kblocks 列:给出分区包含的数据块(1024 字节)的数目;Used /Available列:分别表示已用的和可用的数据块数目。用户也许会感到奇怪的是,此两列块数之和不等于第 2列中的块数。这是因为缺省的每个分区都留了少量空间供系统管理员使用。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间;Use% 列:表示普通用户空间使用的百分比,即使这一数字达到 100,分区仍然留有系统管理员使用的空间。Mounted on列:表示文件系统的安装点注:有个跟 df功能很相似的命令 du , du和 df命令都被用于获得文件系统大小的信息,df用于报告文件系统的总块数
24、及剩余块数, du -s /;用于报告文件系统使用的块数。但是,我们可以发现从 df命令算出的文件系统使用块数的值与通过 du命令得出的值是不一致的。该值差异的存在是由于 du与 df命令实施上的不同 : du -s命令通过将指定文件系统中所有的目录、符号链接和文件使用的块数累加得到该文件系统使用的总块数;而 df命令通过查看文件系统磁盘块分配图得出总块数与剩余块数。文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta Data。du命令是用户级的程序,它不考虑 Meta Data,而 d
25、f命令则查看文件系统的磁盘分配图并考虑 Meta Data。 df命令获得真正的文件系统数据,而 du命令只查看文件系统的部分情况。du与 df命令另一不同之处:如果用户删除了一个正在运行的应用所打开的某个目录下的文件,则 du命令返回的值显示出减去了该文件后的目录的大小。但 df命令并不显示减去该文件后的大小。直到该运行的应用关闭了这个打开的文件, df返回的值才显示出减去了该文件后的文件系统的使用情况4. ftp 工具主要用来从 FTP 服务器上交互式的上传或下载传输文件。命令列表(部分)命令 备注? 显示 ftp命令的说明。后面可以加参数,是加需要解释的命令名,不加则显示包含所有命令列表
26、。append 使用当前文件类型设置,将本地文件附加到远程计算机中。ascii 说明:默认情况下,将文件传输类型设置为 ASCIIbinary 将文件传输类型设置为二进制。bye 结束和远程计算机的 ftp会话,也就是安全断开,退出 ftp.cd 更改远程计算机上的工作目录。dir :显示远程的文件以及子目录列表。get 使用当前文件传输类型,把远程的文件拷贝到本地计算机上。! 在本地计算机上运行指定命令。lcd 更改本地计算机的本地目录ls 显示远程目录的文件和字目录.mdelete 删除远程计算机上的文件mdir 显示远程目录的文件和子目录列表,mget 使用当前文件传输类型将多个远程文件
27、复制到本地计算机mkdir 创建远程目录mput 使用当前文件传输类型,批量将本地文件复制到远程计算机open 连接到指定 ftp服务器上prompt 转换提示,在多个文件传输的时候,ftp 提示可以有选择的检索或保存文件,如果关闭提示,则 mget和 mput命令传输所有文件,在默认情况下是打开的.put 使用当前文件传输类型将本地文件复制到远程计算机中pwd 显示远程计算机上的当前目录quit 结束与远程计算机的 ftp会话,并退出 ftp.recv 使用当前文件传输类型将远程文件复制到本地计算机,他与 get命令作用相同。rename 更改远程计算机上的文件名。rmdir 删除远程目录s
28、end 使用当前文件传输类型将本地文件复制到远程计算机.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_NA
29、ME 的概念。一个运行着的 ORACLE 数据库就可以看成是一个 ORACLE SERVER,该 SERVER 由数据库(Database)和实例(Instance)组成,在一般的情况下一个 ORACLE SERVER 包含一个实例和一个与之对应的数据库,但是在特殊情况下,如 8i 的 OPS,9i 的 RAC,一个SERVER 中一个数据库可以对应多个实例。一系列物理文件(数据文件,控制文件,联机日志等)的集合或与之对应的逻辑结构(表空间,段等)被称为数据库,简单的说,就是一系列与磁盘有关系的物理文件的组成。ORACLE 内存结构和后台进程被成为数据库的实例,一个实例最多只能安装(Mount
30、)和打开(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在不同的域里可以相同)在安装时确定(全局数据库名中填写) ,定义规则也相似于网络定义。