RedHat6.7部署Oracle11g服务端
文章目录
- 1 安装准备工作
- 1.1 选择Oracle的版本
- 1.2 硬件检测
- 1.3 操作系统检测和配置
- 1.3.1 关闭防火墙与selinux
- 1.3.2 HOST 文件检查
- 1.3.3 挂载镜像并配置yum源
- 1.3.4 下载所需依赖包与图形化插件
- 1.3.5 创建必须的用户组和用户,并修改密码
- 1.3.6 设置 oracle 用户的 SHELL LIMIT
- 1.3.7 配置操作系统核心参数
- 1.3.8 修改 oracle 用户的环境变量
- 1.3.9 创建安装目录
- 1.4 准备安装介质
- 1.4.1 安装包下载
- 1.4.2 Linux-x64 平台下7个安装包的区别
- 1.4.3 解压安装包
- 2 以图形化显示
- 2.1 root用户下操作
- 2.2 oracle用户下操作
- 3 安装 Oracle 数据库软件
- 4 创建监听
- 5 创建数据库
- 6 数据库管理与配置
- 6.1 修改密码策略
- 6.2 取消数据库审计功能
- 6.3 配置启停数据库和监听
- 6.3.1 修改/etc/oratab 文件
- 6.3.2 修改 dbstart 和 dbshut 脚本
- 配置数据库自启动
- 6.5 创建服务名
- 7 报错解决
- 7.1 缺少initorcl.ora文件
- 7.2 进程被占用
1 安装准备工作
1.1 选择Oracle的版本
oracle 版本需要根据主机的操作系统确定要安装的 Oracle 数据库是 32 位还是 64
位。一般由于现在的服务器内存都较大,所以服务器操作系统也大多为 64 位,这样我们要选择
的 Oracle 版本也必须是 64 位,也就是必须要和服务器的 CPU 架构一致。
对于 linux,可以使用如下命令确定操作系统的信息:
# uname -m
x86_64
1.2 硬件检测
购的服务器,其硬件配置一般都能满足数据库的安装要求,但有一点需要注意,如
果安装操作系统时/tmp 文件系统单独划分,一定要保证其有 1GB 的空余空间,如果确实不满足要求,可以在oracle用户的 profile中临时指定一个其他目录代替。Oracle安装完毕后,运行程序所占用的空间至少为 5GB。
1.3 操作系统检测和配置
1.3.1 关闭防火墙与selinux
[root@emrtest ~]# service iptables stop
[root@emrtest ~]# vim /etc/sysconfig/selinux
[root@emrtest ~]# setenforce 0
[root@emrtest ~]# getenforce
1.3.2 HOST 文件检查
操作系统的/etc/hosts 文件必须包含一个有效的主机名,配置hosts本地解析
[root@emrtest ~]# vim /etc/hosts
190.200.10.251 emrtest (虚拟机本机IP与主机名)
1.3.3 挂载镜像并配置yum源
[root@histest ~]# cd /mnt/
[root@histest mnt]# ls
[root@histest mnt]# mkdir cdrom
[root@histest mnt]# mount /dev/sr0 /mnt/cdrom/
[root@histest ~]# cd /etc/yum.repos.d/
[root@histest yum.repos.d]# ls
redhat.repo rhel-source.repo
[root@histest yum.repos.d]# mkdir bak
[root@histest yum.repos.d]# mv * bak/
[root@histest yum.repos.d]# vim yum.repo
[baseos]
name=redhat6.7
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
1.3.4 下载所需依赖包与图形化插件
[root@emrtest ~]# yum install -y libaio* compat* elfutils* gcc* libstdc*
[root@emrtest ]# yum install -y xorg-x11*
1.3.5 创建必须的用户组和用户,并修改密码
创建相关用户和组,作为软件安装和支持组的拥有者。创建Oracle用户和密码(P@ssw0rd),输入命令:
[root@emrtest ~]# groupadd oinstall
[root@emrtest ~]# groupadd dba
[root@emrtest ~]# useradd -g oinstall -g dba -m oracle
[root@emrtest ~]# passwd oracle
更改用户 oracle 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
1.3.6 设置 oracle 用户的 SHELL LIMIT
在Root用户下执行以下步骤:修改用户的SHELL的限制,修改/etc/security/limits.conf文件输入命令:vi /etc/security/limits.conf,按i键进入编辑模式,将下列内容加入该文件
[root@emrtest ~]# vim /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
修改/etc/pam.d/login 文件,输入命令:vi /etc/pam.d/login,按i键进入编辑模式,将下列内容加入该文件
[root@emrtest ~]# vim /etc/pam.d/login
session required /lib/security/pam_limits.so
session required pam_limits.so
编辑 /etc/profile ,输入命令:vi /etc/profile,按i键进入编辑模式,将下列内容加入该文件
[root@emrtest ~]# vim /etc/profile
unset i
unset -f pathmunge
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
1.3.7 配置操作系统核心参数
修改linux内核,修改/etc/sysctl.conf文件,输入命令: vi /etc/sysctl.conf ,按i键进入编辑模式,将下列内容加入该文件
[root@emrtest ~]# vim /etc/sysctl.conf
kernel.shmall = 4294967296
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576/etc/sysctl.conf 更改立即生效,执行以下命令。 输入:sysctl -p 显示如下:
[root@emrtest ~]# sysctl -p
1.3.8 修改 oracle 用户的环境变量
配置oracle用户的环境变量(注意根据目录位置修改,我这里要求数据库安装到/u01目录下),首先,切换到新创建的oracle用户下,输入:su – oracle ,然后直接在输入 : vi .bash_profile按i编辑 .bash_profile,进入编辑模式,增加以下内容:
[root@emrtest ~]# su - oracle
[oracle@emrtest ~]$ vim .bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2/db_1
export ORACLE_SID=iesdb
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
在/home/oracle 目录下执行. .bash_profile 使变量生效(注意两个.之间有空格)
[oracle@emrtest ~]$ cd /home/oracle/
[oracle@emrtest ~]$ . .bash_profile
1.3.9 创建安装目录
创建数据库软件目录和数据文件存放目录,目录的位置,根据自己的情况来定,注意磁盘空间即可,这里我把其放到oracle用户下,例如:输入命令:
[root@emrtest ~]# mkdir -p /u01/app/oracle/product/11.2/db_1
更改目录属主为Oracle用户所有,输入命令:
[root@emrtest ~]# chown -R oracle:oinstall /u01/
[root@emrtest ~]# chmod -R 775 /u01/
1.4 准备安装介质
1.4.1 安装包下载
Oracle 11.2.0.1 安装介质可以从 OTN 网站免费下载:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
最新的补丁集 11.2.0.3 是“完整”的安装包,也就是安装 11.2.0.3 版本不需要像 10g 时要先安
6
装初始版本,直接用 11.2.0.3 的补丁集即可全新安装。最新的补丁集需要 ORACLE 服务号才能
从 MOS 下载,现在此版本各平台的安装包已经保存在系统集成室的 FTP 服务器上,有需要可以
自行下载,注意用二进制模式下载
FTP SERVER: 172.18.60.58
USER:list
PASSWORD:listlist
1.4.2 Linux-x64 平台下7个安装包的区别
Linux-x64 平台下安装包共 7 个,其中 1-2 为数据库服务端软件,3 为 GRID 软件,在安装 RAC
时使用,单机不用,4 为客户端软件,剩余三个我们用不到。
p10404530_112030_Linux-x86-64_1of7.zip
p10404530_112030_Linux-x86-64_2of7.zip
p10404530_112030_Linux-x86-64_3of7.zip
p10404530_112030_Linux-x86-64_4of7.zip
p10404530_112030_Linux-x86-64_5of7.zip
p10404530_112030_Linux-x86-64_6of7.zip
p10404530_112030_Linux-x86-64_7of7.zip
1.4.3 解压安装包
单独创建一个目录放置安装包,并将目录属主设置为 oracle:oinstall,解压完成后会自动合并生成 database 目录
[root@emrtest ~]# ll
总用量 3664264
-rw-------. 1 root root 1473 3月 27 10:35 anaconda-ks.cfg
-rw-r--r--. 1 root root 28739 3月 27 10:35 install.log
-rw-r--r--. 1 root root 7572 3月 27 10:35 install.log.syslog
-rw-r--r--. 1 root root 1395582860 3月 28 15:25 p13390677_112040_Linux-x86-64_1of7.zip
-rw-r--r--. 1 root root 1151304589 3月 28 15:26 p13390677_112040_Linux-x86-64_2of7.zip
-rw-r--r--. 1 root root 1205251894 3月 28 15:26 p13390677_112040_Linux-x86-64_3of7.zip
unzip命令解压oracle安装文件
[root@emrtest ~]# unzip p13390677_112040_Linux-x86-64_1of7.zip
[root@emrtest ~]# unzip p13390677_112040_Linux-x86-64_2of7.zip
解压完成后 cd 进入其解压后的目录database,查看是否生成文件
[root@emrtest ~]# ls
anaconda-ks.cfg database install.log install.log.syslog p13390677_112040_Linux-x86-64_1of7.zip p13390677_112040_Linux-x86-64_2of7.zip p13390677_112040_Linux-x86-64_3of7.zip
[root@emrtest ~]# cd database/
[root@emrtest database]# ls
install readme.html response rpm runInstaller sshsetup stage welcome.html
切换到/root/目录下将database移动到/u01/下,并更改目录属主为Oracle用户所有
[root@emrtest database]# cd
[root@emrtest ~]# mv database/ /home/oracle/
[root@emrtest ~]# chown -R oracle.oinstall /home/oracle/database/
2 以图形化显示
2.1 root用户下操作
允许root以外的用户使用图形化界面,前提是虚拟机有图形化,没有则需要其他软件显示图形化界面,我这里使用的是xmanager5 passive
[root@emrtest ~]# xhost +
access control disabled, clients can connect from any host
[root@emrtest ~]# export DISPLAY=192.168.40.179:0.0 (宿主机内网IP)
[root@emrtest ~]# xhost +
2.2 oracle用户下操作
让Oracle允许使用图形化界面,此处IP是windows宿主机本地ip,内网的
[root@emrtest ~]# su - oracle
[oracle@emrtest ~]$ xhost +
[oracle@emrtest ~]$ export DISPLAY=192.168.40.179:0.0
[oracle@emrtest ~]$ xhost +
3 安装 Oracle 数据库软件
以 oracle 用户登陆本地显示器或其他图形终端工具(禁止用 root 登录后 su 到 oracle 账户,
下同),登陆语言环境需要改为英语,即执行下列命令:
[oracle@emrtest ]$ echo $LANG
zh_CN.UTF-8 (此处是中文改成英文)
[oracle@emrtest ]$ LANG=en_US.utf-8
[oracle@emrtest ]$ echo $LANG
en_US.utf-8
说明:
在执行安装命令之前,应该确保 oracle 用户的 profile 文件已经生效,可以使用 echo
$ORACLE_HOME 检查。可以通过用 oracle 用户重新登录或者在/home/oracle 目录下执
行. .bash_profile 使变量生效(注意两个.之间有空格)
执行安装,输入命令:/home/oracle/runstaller
[oracle@emrtest ~]$ /home/oracle/database/runstallers
进行安装条件检查,由于我们前期已经做过设置,因此没有错误,直接跳转到安装总结面,如有条件不满足按照提示进行修改即可,一般常见的缺少pdksh rpm包去下载一个安装进去就好了,kernel.shmmax等级显示warning,在root用户/etc/sysctl.conf文件里修改成所提供的kernel.shmmax预期值就可以了,修改完成切记要sysctl -p 立即生效配置,swap警告下方有解决方案
# swap warning
[root@emrtest ~]# cd /tmp/
[root@emrtest tmp]# dd if=/dev/zero of=swapfree bs=32k count=65515
记录了65515+0 的读入
记录了65515+0 的写出
2146795520字节(2.1 GB)已复制,1.36356 秒,1.6 GB/秒
[root@emrtest tmp]# mkswap swapfree
mkswap: swapfree: warning: don't erase bootbits sectorson whole disk. Use -f to force.
Setting up swapspace version 1, size = 2096476 KiB
no label, UUID=3874c2a3-922a-46a0-a350-98d0f0f9f77b
[root@emrtest tmp]# swapon swapfree
[root@emrtest tmp]# free -gtotal used free shared buffers cached
Mem: 31 13 17 0 0 12
-/+ buffers/cache: 0 30
Swap: 15 0 15
[root@emrtest tmp]# echo "/tmp/swapfree swap swap defaults 0 0" >> /etc/fstab
[root@emrtest tmp]# free -mtotal used free shared buffers cached
Mem: 32074 14036 18037 0 176 12854
-/+ buffers/cache: 1005 31069
Swap: 16103 0 16103
[root@emrtest ~]# /u01/app/oraInventory/orainstRoot.sh
[root@emrtest ~]# /u01/app/oracle/product/11.2.0/db_1/root.sh
4 创建监听
先创建监听,否则建库过程中无法配置企业管理器。以 oracle 用户登录,输入 netca,开始 创建监听
5 创建数据库
以 oracle 用户登录,输入 dbca,开始建库
6 数据库管理与配置
6.1 修改密码策略
步骤仅对 11g,10g 不需此操作
Oracle11g 新特性之一是用户的密码必须 180 天更新一次,否则会出现无法连接数据库的现
象,为减少由此带来的影响,修改密码策略为无时间限制
使用 sqlplus 连接到数据库(必须是 sysdba 或 system 用户),查询当前策略
[oracle@emrtest ~]$ sqlplus / as sysdba
SQL> startup;
SQL> SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';PROFILE RESOURCE_NAME RESOURCE
------------------------------ -------------------------------- --------
LIMIT
----------------------------------------
DEFAULT PASSWORD_LIFE_TIME PASSWORD
180修改此策略
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;Profile altered.
6.2 取消数据库审计功能
从 11g 开始,Oracle 在建库后就默认启动了数据库的审计功能,可以记录每一次 SQL 连接
的信息,并把这些内容默认存储到 SYSTEM 表空间,如果不及时进行清理,会造成 SYSTEM 表
27
空间快速增长,建议在没有必要的情况下,一定要关闭此功能:
以 sysdba 用户登陆进行修改并重启实例
SQL> alter system set audit_trail=none scope=spfile;System altered.SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.Total System Global Area 1.3395E+10 bytes
Fixed Size 2265904 bytes
Variable Size 6912216272 bytes
Database Buffers 6476005376 bytes
Redo Buffers 4759552 bytes
Database mounted.
Database opened.
SQL> show parameter audit_trail; (确认修改结果)NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_trail string NONE
SQL> truncate table SYS.AUD$; (删除原来的审计信息)Table truncated.
6.3 配置启停数据库和监听
6.3.1 修改/etc/oratab 文件
以 oracle 用户登录,将 SID 对应的一行最后“N”修改为“Y”
[oracle@emrtest ~]$ vim /etc/oratab
iesdb:/u01/app/oracle/product/11.2/db_1:Y
6.3.2 修改 dbstart 和 dbshut 脚本
修改 dbstart 和 dbshut 脚本,以 oracle 用户登录。两个脚本具体路径在$ORACLE_HOME/bin 下,相同方法修改 dbshut 脚本,分别执行两个脚本并用 ps –ef |grep ora_观察进程是否成功运行或关闭
[oracle@emrtest ~]$ cd $ORACLE_HOME
[oracle@emrtest db_1]$ cd bin/
[oracle@emrtest bin]$ vim dbstart
ORACLE_HOME_LISTNER=$1
修改为
ORACLE_HOME_LISTNER=$ORACLE_HOME
[oracle@emrtest bin]$ vim dbshut
ORACLE_HOME_LISTNER=$1
修改为
ORACLE_HOME_LISTNER=$ORACLE_HOME
配置数据库自启动
以 root 用户在/etc/rc.d/init.d 目录下新建 oracle 文件
[root@emrtest ~]# cd /etc/rc.d/init.d/
[root@emrtest init.d]# vim oracle
#!/bin/sh
# /etc/rc.d/init.d/oracle
# Description: Starts and stops the Oracle database, listeners and
Enterprise Manager
case "$1" in
start)
echo "Starting Oracle"
su - oracle -c dbstart
echo "Done."
echo "Starting Oracle Enterprise Manager"
su - oracle -c "emctl start dbconsole"
echo "Done."
;;
stop)
echo "Shutting Down Oracle Enterprise Manager"
su - oracle -c "emctl stop dbconsole"
echo "Done."
echo "Shutting Down Oracle Databases: "
su - oracle -c dbshut
echo "Done."
;;
*)
echo "Usage: oracle {start|stop}"
exit 1
esac
修改脚本使其具有可执行权限
[root@emrtest init.d]# chmod +x /etc/rc.d/init.d/oracle
创建启动和关闭链接
[root@emrtest init.d]# ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc5.d/S99oracle
[root@emrtest init.d]# ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc6.d/K01oracle
重启操作系统测试是否可以将数据库、监听及企业管理器一起启动
6.5 创建服务名
单机数据库创建完毕后,在数据库服务器的 tnsnames.ora 的文件中会自动产生一个服务名
iesdb(与 ORACLE_SID 同名),可以复制这段描述,分别将名字修改为 a_ms_1、b_ms_1、a_ls_1、b_ls_1(如果是现场是两个网段,则还要创建 a_ms_2、b_ms_2、a_ls_2、b_ls_2 服务名)
[oracle@emrtest ~]$ vim /u01/app/oracle/product/11.2/db_1/network/admin/tnsnames.ora
a_ms_1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 190.200.10.251)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = iesdb)))
对于集群数据库,服务名有特殊格式,不可使用 netmgr 或 netca 工具创建或修改
7 报错解决
7.1 缺少initorcl.ora文件
(ORA-01102)没有initorcl.ora文件 could not open parameter file ‘/u01/app/oracle/product/11.2/db_1/dbs/initorcl.ora’
[oracle@emrtest product]$ cd $ORACLE_BASE
[oracle@emrtest oracle]$ ls
admin cfgtoollogs checkpoints diag iesdb product
[oracle@emrtest oracle]$ cd admin/
[oracle@emrtest admin]$ ls
iesdb
[oracle@emrtest admin]$ cd iesdb/
[oracle@emrtest iesdb]$ ls
adump dpdump pfile
[oracle@emrtest iesdb]$ cd pfile/
[oracle@emrtest pfile]$ ls
init.ora.229202320469
[oracle@emrtest pfile]$ cp -r init.ora.229202320469 /u01/app/oracle/product/11.2/db_1/dbs/initorcl.ora
[oracle@emrtest pfile]$ ll /u01/app/oracle/product/11.2/db_1/dbs/
7.2 进程被占用
(ORA-01078)failure in processing system parameters sid实例名
SQL> shutdown immediate;
[oracle@emrtest ~]$ echo $ORACLE_SID
orcl
[oracle@emrtest ~]$ vim .bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2/db_1
export ORACLE_SID=iesdb
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
[oracle@emrtest ~]$ lsnrctl stop
[oracle@emrtest ~]$ lsnrctl start
[root@emrtest /]# reboot
[root@emrtest ~]# su - oracle
[oracle@emrtest ~]$ lsnrctl status
[oracle@emrtest ~]$ lsnrctl start
[oracle@emrtest ~]$ sqlplus / as sysdba
SQL> startup;
图形化软件包名
xorg-x11-utils-7.5-23.el7.x86_64