CentOs 6.3_64静默安装oracle11g_r2

昨天在centos6.3系统下,使用图形化界面安装了oracle11g_r2,当然,使用这种安装方法已经不是第一次,由于考虑到以后作业环境下的服务器几乎都不会安装x windows软件,所以,今天开始学习如何通过命令行终端的方式静默安装oracle。

一。安装前的准备工作

#vi /etc/hosts //添加IP地址对应的hostname。

1.先安装好centos 6.3版本的系统 (略)

要求:

内存:至少1G

swap:如果1-2G物理内存,最好设置swap为1.5-2倍的物理内存大小

Available RAM

Swap Space Required

Between 1 GB and 2 GB

1.5 times the size of the RAM

Between 2 GB and 16 GB

Equal to the size of the RAM

More than 16 GB

16 GB

如果swap大小太小,可以删除或者重新制作一个分区,当成swap用一样的。

#dd if=/dev/zero of=/swap bs=1M count=10000

#mkswap /swap

#swapon /swap //挂载这个swap

#swapon -s //查看swap分区

硬盘空间:

软件目录需要4G多点,数据库存入目录要2G左右,而且还要有400M左右的临时空间供安装时候的临时之用,这些空间对当今大容量磁盘来说已经毫无压力。

The following tables describe the disk space requirements for software files, and data files for each installation type on Linux x86-64:

Installation Type

Requirement for Software Files (GB)

Enterprise Edition

4.35

Standard Edition

4.22

Installation Type

Requirement for Data Files (GB)

Enterprise Edition

1.7

Standard Edition

1.5

2.下载oracle11g_r2_x64的oracle版本(官网下载地址http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-linx8664soft-100572.html)

3.安装前的软件准备

参考官网安装手册

如果是64位系统,按照如下安装要求把i686软件也装上,否则安装时会报很多错误,无法成功安装

The following or later version of packages for Oracle Linux 6, and Red Hat Enterprise Linux 6 must be installed:

binutils-2.20.51.0.2-5.11.el6 (x86_64)

compat-libcap1-1.10-1 (x86_64)

compat-libstdc++-33-3.2.3-69.el6 (x86_64)

compat-libstdc++-33-3.2.3-69.el6.i686

gcc-4.4.4-13.el6 (x86_64)

gcc-c++-4.4.4-13.el6 (x86_64)

glibc-2.12-1.7.el6 (i686)

glibc-2.12-1.7.el6 (x86_64)

glibc-devel-2.12-1.7.el6 (x86_64)

glibc-devel-2.12-1.7.el6.i686

ksh

libgcc-4.4.4-13.el6 (i686)

libgcc-4.4.4-13.el6 (x86_64)

libstdc++-4.4.4-13.el6 (x86_64)

libstdc++-4.4.4-13.el6.i686

libstdc++-devel-4.4.4-13.el6 (x86_64)

libstdc++-devel-4.4.4-13.el6.i686

libaio-0.3.107-10.el6 (x86_64)

libaio-0.3.107-10.el6.i686

libaio-devel-0.3.107-10.el6 (x86_64)

libaio-devel-0.3.107-10.el6.i686

make-3.81-19.el6

sysstat-9.0.4-11.el6 (x86_64)

Oracle ODBC Drivers

You should install ODBC Driver Manager for UNIX. You can download and install the Driver Manager from the following URL:

http://www.unixodbc.org

To use ODBC, you must also install the following additional ODBC RPMs, depending on your operating sytem:

On Oracle Linux 6 and Red Hat Enterprise Linux 6:

unixODBC-2.2.14-11.el6 (x86_64) or later

unixODBC-2.2.14-11.el6.i686 or later

unixODBC-devel-2.2.14-11.el6 (x86_64) or later

unixODBC-devel-2.2.14-11.el6.i686 or later

以上这些软件包都是要事先安装好的,有人会问为什么要安装这些包,,,,这,,我也说不好,官方就是这么要求的,好比是只有先排队,才能买到票的道理一样,咱们不要深究这些。

4.修改内核参数。

#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 = 1048576

# /sbin/sysctl -p

参数说明 //网上摘抄

1、kernel.shmall参数是控制共享内存页数

kernel.shmall的单位是页面数,当前的x86体系上这个单位是4K ,oracle的默认安装参数是kernel.shmall = 2097152 则一共是8G的共享内存总量

总的来说,这个参数和你具体硬件关系不太大,只是大于8G的时候调整到合适你的内存容量大小,小于8G就不用了

对于32位系统,一页=4k,也就是4096字节。RHEL6.2 X64通过查询也是4096

查询操作系统页面大小

$getconf PAGESIZE

4096

kernel.shmall= 内存大小/页面大小

48*1024*1024*1024/4096=12582912(安装机器48G内存)

kernel.shmall=12582912

12582912*4096/1024/1024/1024=48G

2、kernel.shmmax

shmmax 指的是单个共享内存段的最大尺寸, 设置shmmax=1G,sga分配了1.2G,当启动实例的时候就分配2块共享内存给Oracle .如果物理内存是2 G, 假设这台DB Server上还有Apache 在运行,那么shmmax 中设置的内存也会被Apache 来使用,那么分配的2 块共享内存段给Oracle 是否就是2 * 1G , 还是仅仅满足SGA需求的1.2 G就停止分配, 其他的内存的一部分分配给Oracle PGA 和软件Apache 来使用?

一般情况下可以设置最大共享内存为物理内存的一半,如果物理内存是2G,则可以设置最大共享内存为1073741824,如上;如物理内存是1G,则可以设置最大共享内存为512 * 1024 * 1024 = 536870912;以此类推。

在redhat上最大共享内存不建议超过

4*1024*1024*1024-1=4294967295

3、kernel.shmmni参数是控制共享内存段总数

shmmni内核参数是 共享内存段的最大数量(注意这个参数不是 shmmin,是 shmmni, shmmin 表示内存段最小大小 ) 。shmmni 缺省值 4096 ,一般肯定是够用了 。

#vi /etc/security/limits.conf

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle soft stack 102405

创建oracle帐号和组

#groupadd oinstall

#groupadd dba

#useradd -g oinstall -G dba oracle

6。创建相关数据库目录

我们最好把安装数据库单独放到一个独立或多个分区的磁盘上(raid+lvm),这样即可以确保数据安全,和性能保障,又可以随时增减容量而不影响当前业务。

#mkdir /u01

#mount /dev/sda3 /u01

#mkdir /u01/app

#mkdir /u01/app/oracle/oradata //存放数据库的数据目录

#mkdir /u01/app/oracle/oradata_back //存放数据库备份文件

#chown -R oracle.oinstall /u01/app

#chmod 775 /u01/app

7。修改oracle环境变量

TMP=/tmp; export TMP

TMPDIR=$TMP; export TMPDIR

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME

ORACLE_SID=racl; export ORACLE_SID

ORACLE_TERM=xterm; export ORACLE_TERM

PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;

export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;

export CLASSPATH

二。静默安装文件

解压oracle文件,进入response目录下

#cp * /etc

#vi /etc/db_install.rsp

//相关修改可以参考我上一篇”oracle静默安装文件db_install.rsp详解“

开始安装oracle软件:

$cd /opt/database

$./runInstaller -silent -responseFile /etc/db_install.rsp

安装过程中,如果提示[WARNING]不必理会,此时安装程序仍在进行,如果出现[FATAL],则安装程序已经停止了。打开另一个终端,执行

#tail -100 f /u01/app/oracle/oraInventory/logs/installActions......log

可以实时跟踪查看安装日志,了解安装的进度。

当出现

以下配置脚本需要以 "root" 用户的身份执行。

#!/bin/sh

#要运行的 Root 脚本

/u01/app/oracle/oraInventory/orainstRoot.sh

/u01/app/oracle/product/11.2.0/db_1/root.sh

要执行配置脚本, 请执行以下操作:

1. 打开一个终端窗口

2. 以 "root" 身份登录

3. 运行脚本

4. 返回此窗口并按 "Enter" 键继续

Successfully Setup Software.

表示安装成功了。按照其提示操作。

$exit //退回到root

#/u01/app/oracle/oraInventory/orainstRoot.sh

#/u01/app/oracle/product/11.2.0/db_1/root.sh

三。静默配置监听

$netca /silent /responsefile /etc/netca.rsp

正在对命令行参数进行语法分析:

参数"silent" = true

参数"responsefile" = /etc/netca.rsp

完成对命令行参数进行语法分析。

Oracle Net Services 配置:

完成概要文件配置。

Oracle Net 监听程序启动:

正在运行监听程序控制:

/u01/app/oracle/product/11.2.0/db_1/bin/lsnrctl start LISTENER

监听程序控制完成。

监听程序已成功启动。

监听程序配置完成。

成功完成 Oracle Net Services 配置。退出代码是0

成功运行后,在/u01/app/oracle/product/11.2.0/db_1/network/admin目录下生成sqlnet.ora和listener.ora两个文件。

通过netstat -tlnp 命令,看到

tcp 0 0 :::1521 :::* LISTEN 5477/tnslsnr

说明监听器已经在1521端口上开始工作了。

四。静默建立新库(同时也建立一个对应的实例)

修改/etc/dbca.rsp,设置如下:

RESPONSEFILE_VERSION = "11.2.0" //不能更改

OPERATION_TYPE = "createDatabase"

GDBNAME = "wang.bobower" //全局数据库的名字=SID+主机域名

SID = "wang" //对应的实例名字

TEMPLATENAME = "General_Purpose.dbc" //建库用的模板文件

SYSPASSWORD = "123456" //SYS管理员密码

SYSTEMPASSWORD = "123456" //SYSTEM管理员密码

DATAFILEDESTINATION = /u01/app/oracle/oradata //数据文件存放目录

RECOVERYAREADESTINATION=/u01/app/oracle/oradata_back //恢复数据存放目录

CHARACTERSET = "ZHS16GBK" //字符集,重要!!! 建库后一般不能更改,所以建库前要确定清楚。

TOTALMEMORY = "5120" //oracle内存5120MB

静默建库命令如下

$dbca -silent -responseFile /etc/dbca.rsp

复制数据库文件

1% 已完成

3% 已完成

11% 已完成

18% 已完成

26% 已完成

37% 已完成

正在创建并启动 Oracle 实例

40% 已完成

45% 已完成

50% 已完成

55% 已完成

56% 已完成

60% 已完成

62% 已完成

正在进行数据库创建

66% 已完成

70% 已完成

73% 已完成

85% 已完成

96% 已完成

100% 已完成

有关详细信息, 请参阅日志文件 "/u01/app/oracle/cfgtoollogs/dbca/wang/wang.log"。

查看日志文件

$ cat /u01/app/oracle/cfgtoollogs/dbca/wang/wang.log

复制数据库文件

DBCA_PROGRESS : 1%

DBCA_PROGRESS : 3%

DBCA_PROGRESS : 11%

DBCA_PROGRESS : 18%

DBCA_PROGRESS : 26%

DBCA_PROGRESS : 37%

正在创建并启动 Oracle 实例

DBCA_PROGRESS : 40%

DBCA_PROGRESS : 45%

DBCA_PROGRESS : 50%

DBCA_PROGRESS : 55%

DBCA_PROGRESS : 56%

DBCA_PROGRESS : 60%

DBCA_PROGRESS : 62%

正在进行数据库创建

DBCA_PROGRESS : 66%

DBCA_PROGRESS : 70%

DBCA_PROGRESS : 73%

DBCA_PROGRESS : 85%

DBCA_PROGRESS : 96%

DBCA_PROGRESS : 100%

数据库创建完成。有关详细信息, 请查看以下位置的日志文件:

/u01/app/oracle/cfgtoollogs/dbca/wang

数据库信息:

全局数据库名:wang.bobower

系统标识符 (SID):wang

建库后实例检查:

$ ps -ef | grep ora_ | grep -v grep

oracle 9743 0.0 1.7 743204 18664 ? Ss 23:47 0:00 ora_pmon_wang

oracle 9745 0.4 1.4 740956 15356 ? Ss 23:47 0:01 ora_vktm_wang

oracle 9749 0.0 1.4 740956 15504 ? Ss 23:47 0:00 ora_gen0_wang

oracle 9751 0.0 1.4 740956 15320 ? Ss 23:47 0:00 ora_diag_wang

oracle 9753 0.0 2.1 741492 23412 ? Ss 23:47 0:00 ora_dbrm_wang

oracle 9755 0.0 1.4 740956 15524 ? Ss 23:47 0:00 ora_psp0_wang

oracle 9757 0.0 1.7 741468 18820 ? Ss 23:47 0:00 ora_dia0_wang

oracle 9759 0.0 2.6 740956 28544 ? Ss 23:47 0:00 ora_mman_wang

oracle 9761 0.0 2.1 746712 23984 ? Ss 23:47 0:00 ora_dbw0_wang

oracle 9763 0.0 1.8 756508 20752 ? Ss 23:47 0:00 ora_lgwr_wang

oracle 9765 0.0 1.6 741468 18120 ? Ss 23:47 0:00 ora_ckpt_wang

oracle 9767 0.0 7.1 747664 77796 ? Ss 23:47 0:00 ora_smon_wang

oracle 9769 0.0 2.2 741476 25052 ? Ss 23:47 0:00 ora_reco_wang

oracle 9771 0.1 5.9 746928 64728 ? Ss 23:47 0:00 ora_mmon_wang

oracle 9773 0.0 2.0 740956 21864 ? Ss 23:47 0:00 ora_mmnl_wang

oracle 9775 0.0 1.4 742876 15428 ? Ss 23:47 0:00 ora_d000_wang

oracle 9777 0.0 1.3 742020 14616 ? Ss 23:47 0:00 ora_s000_wang

oracle 9831 0.0 1.5 740956 17436 ? Ss 23:47 0:00 ora_qmnc_wang

oracle 9846 0.0 4.1 745608 44952 ? Ss 23:47 0:00 ora_cjq0_wang

oracle 9848 0.0 3.0 742540 33700 ? Ss 23:48 0:00 ora_q000_wang

oracle 9850 0.0 1.6 740952 18496 ? Ss 23:48 0:00 ora_q001_wang

oracle 9861 0.0 1.4 740956 15696 ? Ss 23:52 0:00 ora_smco_wang

oracle 9863 0.0 1.8 740984 20516 ? Ss 23:52 0:00 ora_w000_wang

查看监听状态

$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 14-MAR-2012 07:09:03

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

STATUS of the LISTENER

------------------------

Alias LISTENER

Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production

Start Date 14-MAR-2012 06:16:50

Uptime 0 days 0 hr. 52 min. 15 sec

Trace Level off

Security ON: Local OS Authentication

SNMP OFF

Listener Parameter File /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

Listener Log File /u01/app/oracle/diag/tnslsnr/oracle11gcentos6/listener/alert/log.xml

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))

Services Summary...

Service "hello.dlxg.gov.cn" has 1 instance(s).

Instance "hello", status READY, has 1 handler(s) for this service...

Service "helloXDB.dlxg.gov.cn" has 1 instance(s).

Instance "hello", status READY, has 1 handler(s) for this service...

The command completed successfully

13 修改数据库为归档模式(归档模式才能热备份,增量备份)

$ export ORACLE_SID=wang

$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 14 07:18:16 2012

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.

Total System Global Area 1603411968 bytes

Fixed Size 2213776 bytes

Variable Size 402655344 bytes

Database Buffers 1191182336 bytes

Redo Buffers 7360512 bytes

Database mounted.

SQL> alter database archivelog;

Database altered.

SQL> alter database flashback on;

Database altered.

SQL> alter database open;

Database altered.

SQL> execute utl_recomp.recomp_serial();

PL/SQL procedure successfully completed.

SQL> alter system archive log current;

System altered.

SQL> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

14 修改oracle启动配置文件

$vim /etc/oratab

racl:/u01/app/oracle/product/11.2.0/db_1:Y //把“N”改成“Y”

这样就可以通过dbstart 启动此实例,也可以通过dbshut关闭此实例了。

$ dbshut /u01/app/oracle/product/11.2.0/db_1/

Processing Database instance "hello": log file /u01/app/oracle/product/11.2.0/db_1/shutdown.log

此时所有oracle的进程关闭,监听器也停止。

$dbstart /u01/app/oracle/product/11.2.0/db_1/

Processing Database instance "hello": log file /u01/app/oracle/product/11.2.0/db_1/startup.log

此时监听器工作,hello实例运行,再次查看监听器状态。

$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 14-MAR-2012 07:35:52

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

STATUS of the LISTENER

------------------------

Alias LISTENER

Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production

Start Date 14-MAR-2012 07:35:38

Uptime 0 days 0 hr. 0 min. 13 sec

Trace Level off

Security ON: Local OS Authentication

SNMP OFF

Listener Parameter File /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora

Listener Log File /u01/app/oracle/diag/tnslsnr/oracle11gcentos6/listener/alert/log.xml

Listening Endpoints Summary...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))

Services Summary...

Service "hello.dlxg.gov.cn" has 1 instance(s).

Instance "hello", status READY, has 1 handler(s) for this service...

Service "helloXDB.dlxg.gov.cn" has 1 instance(s).

Instance "hello", status READY, has 1 handler(s) for this service...

The command completed successfully

以上就是安装的全部过程,如果想使用OEM管理和监控数据库,就要启动dbconsole了,如下:

$emctl start dbconsole

报这种错误:出现如下错误:

Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name.

网上说ORACLE_UNQNAME就是ORACL_SID,但我export ORACLE_SID=xxx设置后重新运行还是不行,不过报的是另外的错。

根据网上解决方法,可以重新创建 EM 资料档案库:

一。首先可以重建试下。

尝试解决步骤:

1,修改DBSNMP密码:

重新配置DBCONSOLE,需要输入DBSNMP密码,但任何密码都会显示错误,需要预先修改。

sql>alter user dbsnmp identified by xxx;

2,删除早期DBCONSOLE创建的用户:

sql>drop role MGMT_USER;

sql>drop user MGMT_VIEW cascade;

sql>drop user sysman cascade;

3,删除早期DBCONSOLE创建的对象:

sql>drop PUBLIC SYNONYM MGMT_TARGET_BLACKOUTS;

sql>drop public synonym SETEMVIEWUSERCONTEXT;

$emca -config dbcontrol db -repos create

按照提示做下去,一般会成功创建新资料档案库的,如果还是报错。

查看日志发现如下错误:

oracle.sysman.assistants.util.sqlEngine.SQLFatalErrorException: ORA-00955:nameis already used by an existing object

二。接下来使用如下方法:

Drop the Repository using RepManager:

<ORACLE_HOME>/sysman/admin/emdrep/bin/RepManager<hostname><listener_port> <sid> -action drop

例 如:

$cd /u01/app/oracle/product/11.2.0/db_1/sysman/admin/emdrep/bin

$./RepManager bobower 1521 racl -action drop

三。最后再重新建库。

$emca -config dbcontrol db -repos create

这样基本就是搞定了。

最后启动em

$ emctl start dbconsole

$netstat -tunpl |grep 1158

用浏览器访问https://hostname(或IP):1158/em登陆。