终于有空整理多年来自己在Unix/Linux方面技术,先来个Linux安装文档,是为公司写培训文档,顺便也发到博客上来,分享给大家,以回报以前的各位老师及前辈的指导与提携,我也会和你们一样,一直分享自己的所有,实现你的理想,我们大家共同的理想。
免责声明:此文档仅供参考,请依据实际环境操作,作者及此文档不对任何后果负责。
一、引言
1、目的
本安装手册编写目的在于描述Oracle11gR2数据库的具体安装步骤,使用户对Oracle11gR2版本数据库的安装有一个全面的了解。
二、安装Oracle11gR2所需环境
1、操作系统及内核
操作系统:On Linux x86-64
确定OS发布和版本命令: #在一些Linux上也可以用# lsb_release -id
# cat /proc/version
内核:
2.6.18 or later
2.6.16.21 or later
2.6.27.19 or later
确定内核版本:
# unname -r
2.6.18-238.el5
以上显示为内核版本:2.6.18,勘误级别:-238.e15
2、硬件
CPU: Pentium IV 2 GHz or faster
Mem: At least 1 GB of RAM,建议2G及以上
HDD:40G(含)
3、本文档实际软硬环境
(1)软硬件
项目 |
描述 |
备注 |
OS |
CentOS release 5.6 (Final) |
x86_64bit |
CPU |
Intel Core i3 2.93G |
|
Mem |
1048M |
|
Hdd |
40G |
操作系统:CentOS release 5.6 (Final)
(2)规划电脑名和IP
Hostname:ctcdb01 (ping此hostname无人用,并在公司IP列表中没人使用)
IP:172.18.2.60/24 (ping此IP无人用,并在公司IP列表中没有冲突,即可使用)
Password: root/ctc***
建议:IP地址及hostname要有记录表,防止IP冲突
(3)本文档参考文献:
Oracle11gR2官方联机文档:
http://www.oracle.com/pls/db112/homepage
三、Linux OS安装要求
1、安装操作系统规范
请安照我的博文:Linux安装指导手册—Unix/Linux技术文档(一)
博文链接:http://wangxin.blog.51cto.com/427450/633102
2、安装必须的程序组件
选择安装以下13个程序包组 :
桌面环境中:
(1). GNOME桌面环境 or KDE Desktop Environment
应用程序中:
(2). 图形化互联网Graphical Internet
(3). 基于文本的互联网Text-based Internet
(4). 编辑器Editors
开发中:
(5). KDE软件开发KDE Software Development
(6). X软件开发X software Development
(7). 开发工具Development Tools
(8). 老的软件开发Legacy Software Development
基本系统中:
(9). X窗口系统 X Window System
(10). 基本
(11). 管理工具 Administration Tools
(12). 系统工具 System Tools
(13). 老的软件支持
为了安全,选择这13个工具包,至于再里面的包,我们都按照默认的;别的包都不安装,把默认的安装也去掉。
四、安装Oracle前的准备工作
1、检查物理内存及Swap
# grep MemTotal /proc/meminfo
MemTotal: 1025944 kB
#grep SwapTotal /proc/meminfo
SwapTotal: 1572856 kB
2、检查可用的内存和Swap
# free -m
total used free shared buffers cached
Mem: 1001 481 520 0 70 297
-/+ buffers/cache: 113 888
Swap: 1535 0 1535
建议:物理内存最好是2GB及以上。
1024MB的物理内存,可用的只有1001MB,安装时不能通过Oracle“执行先决条件检查”,事实证明即使物理内存低于1GB一,也可以忽略此警告,并不影响Oracle软件的成功安装,如下:
物理内存 - 此先决条件将测试系统物理内存总量是否至少为 1GB (1048576.0KB)。
预期值
: 1GB (1048576.0KB)
实际值
: 1001.9MB (1025944.0KB)
错误列表:
-
PRVF-7530 : 节点 "ctcdb01" 上的物理内存不足 [所需物理内存 = 1GB (1048576.0KB)] - Cause: 发现物理内存 (RAM) 的数量不满足最低内存要求。 - Action: 向指定的节点添加物理内存 (RAM)。
3、检查Oracle11gR2所需要的rpm包
The following or later version of packages for Asianux 3, Oracle Linux 5, and Red Hat Enterprise Linux 5 should be installed:
# rpm -q binutils compat-libstdc++ compat-libstdc++-33-3.2.3 elfutils-libelf-0.125 elfutils-libelf-devel-0.125 gcc-4.1.2 gcc-c++-4.1.2 glibc-2.5-24 glibc-2.5-24 glibc-common-2.5 glibc-devel-2.5 glibc-devel-2.5 glibc-headers-2.5 ksh-20060214 libaio-0.3.106 libaio-0.3.106 libaio-devel-0.3.106 libaio-devel-0.3.106 libgcc-4.1.2 libgcc-4.1.2 libstdc++-4.1.2 libstdc++-4.1.2 libstdc++-devel4.1.2 make-3.81 numactl-devel-0.9.8.x86_64 sysstat-7.0.2 unixODBC
package compat-libstdc++ is not installed
package elfutils-libelf-0.125 is not installed
package elfutils-libelf-devel-0.125 is not installed
package glibc-2.5-24 is not installed
package glibc-2.5-24 is not installed
package ksh-20060214 is not installed
package libaio-devel-0.3.106 is not installed
package libaio-devel-0.3.106 is not installed
package libstdc++-devel4.1.2 is not installed
package numactl-devel-0.9.8.x86_64 is not installed
package sysstat-7.0.2 is not installed
package unixODBC is not installed
[root@ctcdb01 ~]#
(1) 用Winrar打开光盘镜像文件,找出所需要的包,然后一起上传到Linux服务器
# rpm –ivh *.rpm #全部安装,省掉安装的依赖性事啊
(2) 也可以从光盘安装所需要的包,这样一个一个安装比较烦
# mount /dev/cdrom /mnt
建议:如果安装的Oracle版本比较熟悉,直接安装Oracle软件,等安装检查出需要安装哪些包,再去安装;如果是新版本的Oracle,及新操作系统,还是先检查所需要的安装包,包安装完成后,再进行下一步的动作。
4、配置内核参数
以下参数均来自Oracle11gR2联机文档,详细请参考:Configuring Kernel Parameters部分;在配置该内核参数时,请先用如下命令进行查看系统原有的参数值,
# sysctl -a | grep sem
kernel.sem = 250 32000 100 128
# sysctl -a | grep ip_local_port_range
net.ipv4.ip_local_port_range = 9000 65500
如果原有的内核参数值大于Oracle建议的内核参数值,则不用修改该内核值,反之,则需要修改,建议内存大于2G的正式,一定一条条要仔细检查;Oracle建议的内核最小值如下图:
这里使用Oracle建议值配置:
# vi + /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
# sysctl –p #使内核参数立即生效
# sysctl -a |grep kernel.shmmax #查看内核参数的值
kernel.shmmax = 536870912
5、配置Oracle用户资源限制
(1)在/etc/security/limits.conf中加入以下行
# vi + /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
(2).加入以下行到/etc/pam.d/login,如果存在,则不加入
# grep pam_limits.so /etc/pam.d/login
# vi + /etc/pam.d/login
session required pam_limits.so
(3)在/etc/profile文件中加入以下行
For the Bourne, Bash, or Korn shell, add the following lines in the /etc/profile file (or the /etc/profile.local file on SUSE Linux Enterprise Server systems):
# vi + /etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
强调:Oracle用户资源限制这个部分,不配置也不会影响Oracle数据库的成功安装;但是考虑到,若有糟糕的sql语句对服务器资源的无限占用,导致长时间对用户请求无响应,还是建议提前限制Oracle用户资源为好。
6、建立用户和初始化文件
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
# su - oracle
$ pwd
/home/oracle
$ vi .bash_profile #初始化文件最少设置以下5项(黑体表示)
ORACLE_BASE=/home/oracle/app
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1/
ORACLE_SID=CTCDB
NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8" #第三段和数据库端字符集一致
PATH=$ORACLE_HOME/bin:$PATH
DISPLAY=172.18.2.159:0.0
export ORACLE_BASE ORACLE_HOME ORACLE_SID NLS_LANG PATH DISPLAY
使Oracle用户初使化文件生效:
$ . .bash_profile
7、创建Oracle基目录和软件安装目录
在此不要再创建oracle或者oradata这样的系统目录,目录名应该尽量简洁,有含义,易懂。
$ pwd
/home/oracle
$ mkdir –p $ORACLE_HOME
$ mkdir soft #开始上传数据库软件
五、开始安装Oracle
用具有root权限的账户,解压以下文件:
$ cd soft
$ unzip linux.x64_11gR2_database_1of2.zip
$ unzip linux.x64_11gR2_database_2of2.zip
查看解压后的database目录及其文件是否为oracle:oinstall属性安装数据库软件
1、安装数据库软件
安装Oracle数据库,我们一般采取先安装数据库软件,再配置监听器,最后DBCA创建数据数据库,这样有助于理解数据库架构,如果安装过程出错,也容易判断故障。
打开:Xmanager – Passive,将在本地显示图形化安装界面,如下:
$ cd database
$ ./runInstaller
1. 配置安全更新,这里都不输入,下一步,继续安装
2. 选择安装选项:仅安装数据库软件
3. 节点选择:单实例数据库安装
4. 选择产品语言:英文和中文
5. 选择数据库版本:企业版
6. 指定安装位置:默认,Oracle基目录和软件位置的路径来自.bash_profile中的设置,如下图
7. 创建产品清单:默认,此配置来自.bash_profile的设置,如下图:
8. 特权操作系统组:默认,此配置来自.bash_profile的设置,如下图:
9. 执行先决条件检查
若有警告,请检查安装Oracle的安装物理和软件条件,再次重新检查,直到通过查检,下一步:
除测试环境外,否则不要忽略警告。
10. 概要
11. 安装产品:由Oracle程序自动安装,不需要要用户干涉。
12. 以root身份执行下图所示脚本:
# /home/oracle/oraInventory/orainstRoot.sh
更改权限/home/oracle/oraInventory.
添加组的读取和写入权限。
删除全局的读取, 写入和执行权限。
更改组名/home/oracle/oraInventory 到 oinstall.
脚本的执行已完成。
# /home/oracle/app/product/11.2.0/db_1/root.sh
Running Oracle 11g root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /home/oracle/app/product/11.2.0/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
这2个脚本执行成功后,点击上图 确定 按钮。
13. 安装Oracle软件完成,关闭退出。
这时已经可以用sqlplus连接进去了……
$ ps -ef| grep ora_ #由于没创建数据库还看不到进程
2、Netca配置监听器
下面我们使用”dbca”来创建数据库,在运行”dbca”之前,先运行”netca”配置一下line网络连接,是11g版本的一个新的特性,你直接进行”dbca”会有一个Warning;
$ netca
1. 选择 监听程序配置
2. 由于第一次配置Netca,故只有添加这一项。
3. 监听程序名:LISTENER,使用默认的。
4. 选定协议:TCP,也是默认的
5. 端口配置,使用:1521标准端口,也可以自定义端口
6. 选择“否”,完成配置
7. 点击 完成 ,退出netca配置程序。
安装完成后,就可以看到listener的进程了:
$ ps -ef|grep tnslsnr
oracle 6847 1 0 15:17 ? 00:00:00 /home/oracle/app/product/11.2.0/db_1/bin/tnslsnr LISTENER -inherit
3、DBCA创建数据库
$ dbca
1. 启动数据库配置助手,后的欢迎界面,如下图:下一步
2. 选择 创建数据库
3. 选择要创建数据库的类型: 一般用途或事务处理
4. 全局数据库名:CTCDB,在单实例下和SID相同
5. 这里默认勾选 配置Enterprise Manager
6. 选择 所有账户使用同一管理口令
******
此处的密码,最好繁杂而有规律,便于记忆。
7. 此处选择 默认安装
8. 加选 启用归档,让我们的数据库一开始就运行在归档模式
9. 示例方案,勾选则安装,对初学者可以安装。
10. 数据库字符集:UTF-8,数据库字符集就是Oracle服务器端字符集
下面重点对字符集的概念和选择进行简单介绍:
1) 数据库字符集(oracle服务器端字符集)
数据库字符集在创建数据库时指定,在创建后通常不能更改。在创建数据库时,可以指定字符集(CHARACTER SET)和国家字符集(NATIONAL CHARACTER SET)。
2) 国家字符集:
(1)用以存储NCHAR, NVARCHAR2, NCLOB等类型数据
(2)国家字符集实质上是为oracle选择的附加字符集,主要作用是为了增强oracle的字符处理能力,因为NCHAR数据类型可以提供对亚洲使用定长多字节编码的支持,而数据库字符集则不能。国家字符集在oracle9i中进行了重新定义,只能在unicode编码中的AF16UTF16和UTF8中选择,默认值是AF16UTF16
3) 多字节编码(供参考)
(1)变长多字节编码
某些字符用一个字节表示,其它字符用两个或多个字符表示,变长多字节编码常用于对亚洲语言的支持, 例如日语、汉语、印地语等
例如:AL32UTF8(其中AL代表ALL,指适用于所有语言)、zhs16cgb231280
(2)定长多字节编码
每一个字符都使用固定长度字节的编码方案,目前oracle唯一支持的定长多字节编码是AF16UTF16,也是仅用于国家字符集
4) unicode编码
Unicode是一个涵盖了目前全世界使用的所有已知字符的单一编码方案,也就是说Unicode为每一个字符提供唯一的编码。UTF-16是unicode的16位编码方式,是一种定长多字节编码,用2个字节表示一个unicode字符,AF16UTF16是UTF-16编码字符集。
UTF-8是unicode的8位编码方式,是一种变长多字节编码,这种编码可以用1、2、3个字节表示一个unicode字符,AL32UTF8,UTF8、UTFE是UTF-8编码字符集
参考:http://www.itpub.net/276524.html
数据库字符集的选择。
我们在创建数据库时,需要考虑的一个问题就是选择什么字符集与国家字符集(通过create database中的CHARACTER SET与NATIONAL CHARACTER SET子句指定)。考虑这个问题,我们必须要清楚数据库中都需要存储什么数据,如果只需要存储英文信息,那么选择US7ASCII作为字符集就可以;但是如果要存储中文,那么我们就需要选择能够支持中文的字符集(如ZHS16GBK);如果需要存储多国语言文字,那就要选择UTF8了。
数据库字符集的确定,实际上说明这个数据库所能处理的字符的集合及其编码方式,由于字符集选定后再进行更改会有诸多的限制,所以在数据库创建时一定要考虑清楚后再选择。而我们许多朋友在创建数据库时,不考虑清楚,往往选择一个默认的字符集,如WE8ISO8859P1或US7ASCII,而这两个字符集都没有汉字编码,所以用这种字符集存储汉字信息从原则上说就是错误的。虽然在有些时候选用这种字符集好象也能正常使用,但它会给数据库的使用与维护带来一系列的麻烦,在后面的迭代过程中我们将深入分析。
客户端的字符集。
有过一些Oracle使用经验的朋友,大多会知道通过NLS_LANG来设置客户端的情况,NLS_LANG由以下部分组成:NLS_LANG=<Language>_<Territory>.<Clients Characterset>,其中第三部分<Clients Characterset>的本意就是用来指明客户端操作系统缺省使用的字符集。所以按正规的用法,NLS_LANG应该按照客户端机器的实际情况进行配置,尤其对于字符集一项更是如此,这样Oracle就能够在最大程度上实现数据库字符集与客户端字符集的自动转换(当然是如果需要转换的话)。
由于ZHS16GBK字符集是US7ASCII的超级。
11. 概要
12. 选择 创建数据库
13. 正在安装数据库
14. 安装完成,点击 退出 ,完成安装
https://172.18.2.60:1158/em
至此,数据库安装完成
六、验证新安装的数据库
1、安装rlwrap包
这是一个为方便使用SQL*PLUS的技巧,为了能像在DOS命令窗口中那样运行SQL*Plus,使用向上、向下键来跳回之前已经执行过的SQL语句。需要在Linux上安装rlwrap包,这个程序本身是个Shell,可以运行任何你提供给它的命令包括参数,并添加命令历史浏览功能。
下载:http://utopia.knoware.nl/~hlub/uck/rlwrap/
上传到Linux服务器,解压。进入rl目录,再执行3条命令
install rlwrap:
# gunzip rlwrap-0.30.tar.gz
# tar xvf rlwrap-0.30.tar
# tar xzvf rlwrap-0.37.tar.gz #或者一条命令搞定: *.tar.gz文件的解压
# cd rlwrap-0.30
# ./configure
# make
# make check
# make install
切到oracle用户,编辑bash文件,加入以下两行~
# su - oracle
$ vi .bash_profile
alias sqlplus="rlwrap sqlplus"
alias rman="rlwrap rman"
退出重进oracle用户即可。抛弃CV大法,疯狂敲击方向键,来提高工作效率~
2、在防火墙中放行Oracle对外的相关端口
# iptables -I INPUT -p tcp --dport 1521 -j ACCEPT
# iptables -I INPUT -p tcp --dport 1158 -j ACCEPT
# service iptables save
将当前规则保存到 /etc/sysconfig/iptables:[确定]
# service iptables restart
# iptables -L –n
PS:
# iptables -D INPUT -p tcp --dport 1158 -j ACCEPT #删除一条规则
# iptables -R INPUT 1 -p tcp --dport 1158 -j ACCEPT #更新一条规则,是INPUT链中的 第一条规则。
# service iptables save #更新规则后,请保存
# iptables -L –n –v
3、 Sqlplus验证
$ sqlplus "/as sysdba" #sqlplus本地登录
$ sqlplus system/ctc2012@ctcdb #sqlplus远程登录
$ ps -ef | grep ora_ #查看进程
oracle 3913 1 0 16:24 ? 00:00:00 ora_pmon_CTCDB
oracle 3917 1 0 16:24 ? 00:00:00 ora_vktm_CTCDB
oracle 3923 1 0 16:24 ? 00:00:00 ora_gen0_CTCDB
oracle 3943 1 0 16:24 ? 00:00:01 ora_mman_CTCDB
oracle 5602 1 0 16:29 ? 00:00:00 ora_w000_CTCDB
……省略部分输出
oracle 12757 3222 0 16:25 pts/2 00:00:00 grep ora_
4、PL/SQL连接测试
首先配置本地tnsnames.ora文件,登录Oracle服务器,
# su - oracle
$ cd $ORACLE_HOME/network/admin
$ cat tnsnames.ora
CTCDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.2.60)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = CTCDB)
)
)
把以上内容追加到本地的tnsnames.ora文件中,使用PL*SQL工具,只要能连接登录成功,即可。
5、EM测试与维护
一般Oracle安装好后,EM默认已经开启,不过重新启动oracle服务器后,需要用以下的命令开启
# su - oracle
$ emctl status dbconsole
$ emctl start dbconsole
$ emctl status dbconsole
$ emctl –help
用以下URL测试登录
https://172.18.1.61:1158/em
6、若dbconsole不能开启,请重新配置dbconsole
[oracle@oracle11gr2kam log]$ emca -config dbcontrol db -repos recreate
EMCA 开始于 2011-7-21 11:16:14
EM Configuration Assistant, 11.2.0.0.2 正式版
版权所有 (c) 2003, 2005, Oracle。保留所有权利。
输入以下信息:
数据库 SID: ora11g #用 echo $ORACLE_SID查看
已为数据库 ora11g 配置了 Database Control
您已选择配置 Database Control, 以便管理数据库 ora11g
此操作将移去现有配置和默认设置, 并重新执行配置
是否继续? [是(Y)/否(N)]: y
监听程序 ORACLE_HOME [ /home/oracle/oradata/oracle ]: /home/oracle/oradata/oracle/bin
#用ps –ef|grep tnslsnr查看
SYS 用户的口令:
DBSNMP 用户的口令:
SYSMAN 用户的口令:
通知的电子邮件地址 (可选):
通知的发件 (SMTP) 服务器 (可选):
……省略输出
[oracle@oracle11gr2kam ~]$ emctl start dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0
Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved.
https://oracle11gr2kam:1158/em/console/aboutApplication
- An instance of Oracle Enterprise Manager 11g Database Control is already running.
七、Oracle基础操作
1、查询数据库字符集
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8
2、查询国家字符集
SQL> set linesize 1000
SQL> set pagesize 1000
SQL> SELECT * FROM NLS_DATABASE_PARAMETERS;
NLS_NCHAR_CHARACTERSET UTF8
3. 查询数据文件位置
SQL> select file_id,file_name,bytes/1024/1024 Total_MB,online_status from dba_data_files;
FILE_ID FILE_NAME TOTAL_MB ONLINE_
--------- ------------------------------------------------------------ ---------- -----------
4 /home/oracle/app/oradata/CTCDB/users01.dbf 5 ONLINE
3 /home/oracle/app/oradata/CTCDB/undotbs01.dbf 110 ONLINE
2 /home/oracle/app/oradata/CTCDB/sysaux01.dbf 520 ONLINE
1 /home/oracle/app/oradata/CTCDB/system01.dbf 680 SYSTEM
5 /home/oracle/app/oradata/CTCDB/example01.dbf 100 ONLINE
4、建立表空间注意事项
在正式库中,建立的表空间往往,读写比较频繁,这时考虑到磁盘I/O竞争,建议把用户的表空间分别放在不同的磁盘上,若条件允许把Archive log也不要和用户表空间放在同一磁盘上,要分开存放。
至此Oracle安装完成,已经完全可以对外工作了……
~完~