Oracle 11gR2 64bit On Linux 安装指导手册—数据库技术(一)

    终于有空整理多年来自己在Unix/Linux方面技术,先来个Linux安装文档,是为公司写培训文档,顺便也发到博客上来,分享给大家,以回报以前的各位老师及前辈的指导与提携,我也会和你们一样,一直分享自己的所有,实现你的理想,我们大家共同的理想。

    免责声明:此文档仅供参考,请依据实际环境操作,作者及此文档不对任何后果负责。

一、引言 

1、目的

本安装手册编写目的在于描述Oracle11gR2数据库的具体安装步骤,使用户对Oracle11gR2版本数据库的安装有一个全面的了解。

二、安装Oracle11gR2所需环境

1、操作系统及内核 

操作系统:On Linux x86-64

  • Red Hat Enterprise Linux 5 Update 2
  • SUSE Linux Enterprise Server 10 SP2
  • SUSE Linux Enterprise Server 11

确定OS发布和版本命令: #在一些Linux上也可以用# lsb_release -id

  # cat /proc/version

内核:

  • On Asianux 3, Oracle Enterprise Linux 5, and Red Hat Enterprise Linux 5:

   2.6.18 or later

  • On SUSE Linux Enterprise Server 10:

   2.6.16.21 or later

  • On SUSE Linux Enterprise Server 11:

   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建议的内核最小值如下图:

clip_image002

这里使用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用户资源限制

clip_image004

(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. 配置安全更新,这里都不输入,下一步,继续安装

clip_image006

2. 选择安装选项:仅安装数据库软件

clip_image008

3. 节点选择:单实例数据库安装

clip_image010

4. 选择产品语言:英文和中文

clip_image012

5. 选择数据库版本:企业版

clip_image014

6. 指定安装位置:默认,Oracle基目录和软件位置的路径来自.bash_profile中的设置,如下图

clip_image016

7. 创建产品清单:默认,此配置来自.bash_profile的设置,如下图:

clip_image018

8. 特权操作系统组:默认,此配置来自.bash_profile的设置,如下图:

clip_image020

9. 执行先决条件检查

若有警告,请检查安装Oracle的安装物理和软件条件,再次重新检查,直到通过查检,下一步:

除测试环境外,否则不要忽略警告。

10. 概要

clip_image022

11. 安装产品:由Oracle程序自动安装,不需要要用户干涉。

clip_image024

12. 以root身份执行下图所示脚本:

clip_image026

# /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软件完成,关闭退出。

clip_image028

这时已经可以用sqlplus连接进去了……

$ ps -ef| grep ora_ #由于没创建数据库还看不到进程

2、Netca配置监听器

下面我们使用”dbca”来创建数据库,在运行”dbca”之前,先运行”netca”配置一下line网络连接,是11g版本的一个新的特性,你直接进行”dbca”会有一个Warning;

$ netca

1. 选择 监听程序配置

clip_image030

2. 由于第一次配置Netca,故只有添加这一项。

clip_image032

3. 监听程序名:LISTENER,使用默认的。

clip_image034

4. 选定协议:TCP,也是默认的

clip_image036

5. 端口配置,使用:1521标准端口,也可以自定义端口

clip_image038

6. 选择“否”,完成配置

clip_image040

7. 点击 完成 ,退出netca配置程序。

clip_image042

安装完成后,就可以看到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. 启动数据库配置助手,后的欢迎界面,如下图:下一步

clip_image044

2. 选择 创建数据库

clip_image046

3. 选择要创建数据库的类型: 一般用途或事务处理

clip_image048

4. 全局数据库名:CTCDB,在单实例下和SID相同

clip_image050

5. 这里默认勾选 配置Enterprise Manager

clip_image052

6. 选择 所有账户使用同一管理口令

clip_image054

******

此处的密码,最好繁杂而有规律,便于记忆。

7. 此处选择 默认安装

clip_image056

8. 加选 启用归档,让我们的数据库一开始就运行在归档模式

clip_image058

9. 示例方案,勾选则安装,对初学者可以安装。

clip_image060

10. 数据库字符集:UTF-8,数据库字符集就是Oracle服务器端字符集

clip_image062

下面重点对字符集的概念和选择进行简单介绍:

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. 概要

clip_image064

12. 选择 创建数据库

clip_image066

clip_image068

13. 正在安装数据库

clip_image070

14. 安装完成,点击 退出 ,完成安装

clip_image072

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安装完成,已经完全可以对外工作了……

 

~完~

 

你可能感兴趣的:(oracle,linux,职场,休闲,linux系统)