Misc Notes

CentOS 6.7 安装 Oracle 11g2

一、准备工作

1 配hosts文件

1
$ sudo vi /etc/hosts

添加以下内容:

1
192.168.1.58 oracle

2 关闭SELINUX

1
2
$ sudo setenforce 0
$ sudo vi /etc/selinux/config

修改文件内容:

1
SELINUX=disabled

3 关闭防火墙

1
$ sudo service iptables stop

4 安装依赖包

1
$ sudo yum install binutils compat-libstdc++ cpp elfutils elfutils-libelf elfutils-libelf-devel elfutils-libs gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make mpfr nss-softokn-freebl sysstat tzdata-java unixODBC unixODBC-devel cloog-ppl kernel-headers libtool-ltdl ppl

5 创建用户、组

没有建特别的用户组,直接用了默认的,并把oracle加入sudo

1
2
$ sudo adduser oracle
$ sudo passwd oracle

6 创建安装目录

把oracle安装在 /opt/oracle 下面

1
2
3
4
5
6
7
$ sudo mkdir -p /opt/oracle
$ sudo mkdir -p /opt/oracle/product/112010/db_1
$ sudo mkdir /opt/oracle/oradata
$ sudo mkdir /opt/oracle/inventory
$ sudo mkdir /opt/oracle/flash_recovery_area
$ sudo chown -R oracle:oracle /opt/oracle
$ sudo chmod -R 775 /opt/oracle

7 修改内核参数

1
$ sudo vi /etc/sysctl.conf

修改文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
fs.aio-max-nr = 1048576  # 指的是可以同时拥有异步I/O请求的数目,Oracle推荐的值为1048576(1024×1024),也就是1024Kb个。
fs.file-max = 6815744 # 系统所有进程一共可以打开的文件数量 64bytes cat /proc/sys/fs/file-nr 在'高负荷'的情况,看看有多少文件描述符都在使用。
kernel.shmmni = 4096 # 整个系统共享内存段的最大数量。
kernel.sem = 250 32000 100 128
# 1.同一类信号的最多数量(semmsl)。
# 2.系统中信号的最多数目,=semmni*semmsl (semmns)。
# 3.每个semop系统调用所包含的最大的操作数(能调用的信号量的最多次数) (semopm)。
# 4.系统中信号类型的数目的最大值,一个信号量标识符代表一个类型(semmni)。
net.ipv4.ip_local_port_range = 32768 61000 # 表示TCP/UDP协议打开的本地端口号。 默认设置:1024 4999 建议设置:32768 61000。
net.core.rmem_default = 262144 # 设置接收socket的缺省缓存大小(字节)。
net.core.rmem_max = 4194304 # 设置接收socket的最大缓存大小(字节)
net.core.wmem_default = 212992 # 设置发送的socket缺省缓存大小(字节)
net.core.wmem_max = 1048576 # 设置发送的socket最大缓存大小(字节)

保存后执行:

1
$ sudo sysctl -p

8 修改用户限制文件(配置项未理解)

1
$ sudo vi /etc/security/limits.conf

添加以下内容:

1
2
3
4
5
oracle          soft    nproc   2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240

9 关联设置(暂时不知道干嘛用的)

1
$ sudo vi /etc/pam.d/login

添加以下内容:

1
2
session required  /lib64/security/pam_limits.so
session required pam_limits.so

10 修改/etc/profile(暂时不知道干嘛用的)

1
$ sudo vi /etc/profile

添加以下内容:

1
2
3
4
5
6
7
8
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

切换至root账号下使之生效:

1
2
$ su root
$ source /etc/profile

11 修改oracle用户环境变量

1
2
$ cd
$ vi .bash_profile

添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# for oracle
export ORACLE_BASE=/opt/oracle;
export ORACLE_HOME=/opt/oracle/product/112010/db_1
export ORACLE_SID=orcl;
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi

使之生效:

1
$ source .bash_profile

此时若命令执行失败,提示:-bash: ulimit: open files: cannot modify limit: Operation not permitted,是因为ssh登录的缘故,需要修改sshd配置如下:

1
$ sudo vi /etc/ssh/sshd_config

把UseLogin改为yes,重启ssh:

1
$ sudo service sshd restart

重点,这里重启完sshd之后,一定要exit后重新用ssh连接,否则依然会报错

二、正式开始安装

1 准备安装文件

把解压后的database文件夹放到 /opt/oralce/

2 编辑oracle数据库安装应答文件

修改db_install.rsp

1
$ vi db_install.rsp

修改文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
oracle.install.option=INSTALL_DB_SWONLY  # 29行 安装类型
ORACLE_HOSTNAME=chances # 37行 主机名称
UNIX_GROUP_NAME=oracle # 42行 安装组
INVENTORY_LOCATION=/opt/oracle/inventory # 47行 INVENTORY目录
SELECTED_LANGUAGES=en,zh_CN # 78行 选择语言,可能因为linux是en的,所以这里一定要加上en
ORACLE_HOME=/opt/oracle/product/112010/db_1 # 83行 oracle_home
ORACLE_BASE=/opt/oracle # 88行 oracle_base
oracle.install.db.InstallEdition=EE # 99行 oracle版本
oracle.install.db.DBA_GROUP=oracle # 142行 dba用户组
oracle.install.db.OPER_GROUP=oracle # 147行 oper用户组
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE # 160行 数据库类型
oracle.install.db.config.starterdb.globalDBName=orcl # 165行 globalDBName
oracle.install.db.config.starterdb.SID=orcl # 170行 SID
oracle.install.db.config.starterdb.memoryLimit=800 # 200行 自动管理内存的最小内存(M)
oracle.install.db.config.starterdb.password.ALL=xxxx # 233行 设定所有数据库用户使用同一个密码
DECLINE_SECURITY_UPDATES=true # 385行 设置安全更新

3 开始安装

用oracle账号进入 /opt/oracle/database/

1
2
3
$ su oracle
$ cd /opt/oracle/database/
$ ./runInstaller -silent -responseFile /opt/oracle/database/response/db_install.rsp -ignorePrereq

在日志里看到这个就成功了:

1
2
3
4
5
6
7
/opt/oracle/inventory/orainstRoot.sh
/opt/oracle/product/112010/db_1/root.sh
To execute the configuration scripts:
1. Open a terminal window
2. Log in as "root"
3. Run the scripts
4. Return to this window and hit "Enter" key to continue

用root用户登录按提示执行脚本:

1
2
$ /opt/oracle/inventory/orainstRoot.sh
$ /opt/oracle/product/112010/db_1/root.sh

4 配置监听

1
$ vi /opt/oracle/database/response/netca.rsp

检查这些参数:

1
2
3
4
5
INSTALL_TYPE=""custom""  #安装的类型
LISTENER_NUMBER=1 #监听器数量
LISTENER_NAMES={"LISTENER"} #监听器的名称列表
LISTENER_PROTOCOLS={"TCP;1521"} #监听器使用的通讯协议列表
LISTENER_START=""LISTENER"" #监听器启动的名称

保存后运行:

1
$ netca -silent -responseFile /opt/oracle/database/response/netca.rsp

三、添加数据库实例

1 检查配置

1
2
3
4
5
6
7
8
9
10
11
12
13
RESPONSEFILE_VERSION = "11.2.0"  #不能更改
OPERATION_TYPE = "createDatabase"
GDBNAME = "orcl" #数据库的名字
SID = "ORCL" #对应的实例名字
TEMPLATENAME = "General_Purpose.dbc" #建库用的模板文件
SYSPASSWORD = "oracle" #SYS管理员密码
SYSTEMPASSWORD = "sys" #SYSTEM管理员密码
SYSMANPASSWORD = "sys"
DBSNMPPASSWORD = "sys"
DATAFILEDESTINATION = /opt/oracle/oradata #数据文件存放目录
RECOVERYAREADESTINATION = /opt/oracle/flash_recovery_area #恢复数据存放目录
CHARACTERSET = "ZHS16GBK" #字符集,重要!!!建库后一般不能更改,所以建库前要确定清楚。
TOTALMEMORY = "10240" #10240MB,物理内存10G。

2 安装实例

进入oracle的bin目录运行:

1
$ dbca -silent -responseFile /opt/oracle/database/response/dbca.rsp

查看实例进程:

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

查看监听状态:

1
$ lsnrctl status

修改以下几个文件:

1
$ vi /opt/oracle/product/112010/db_1/bin/dbstart
1
ORACLE_HOME_LISTNER=$ORACLE_HOME
1
$ vi /opt/oracle/product/112010/db_1/bin/dbshut
1
ORACLE_HOME_LISTNER=$ORACLE_HOME
1
$ vi /etc/oratab
1
orcl:/opt/oracle/product/112010/db_1:Y

使用 dbshut、dbstart 可以测试,查看监听状态

四、结束

打开selinux

1
$ sudo vi /etc/selinux/config