【写在前面:很久没有更新了,最近换了工作,换了城市,心境也不一样了,但是我会坚持记录博客这个好习惯的,加油!】
已经整了一天多,已被恶心坏了。遂记录下!
-----------------------------------------正式开始-----------------------------------------
Oracle11g For Linux的静默安装笔记
已经整了一天多,已被恶心坏了。遂记录下!
静默安装是无图形化的,能够最大程度减少出错。(实际安装过程发现也挺麻烦的,会衍生出一堆问题,也是没办法。。)
首先我使用的Linux是red hat的虚拟机,查看red hat版本的命令:
cat /proc/version
查看Linux的版本号和系统位数:cat /etc/issue && uname -a
=========================== 关于yum使用的准备 ==============================
在进行静默安装之前,需要引入一些必要依赖的package。就需要用到yum install命令去安装啦。
注意:若碰到yum命令不能使用,需要“额外援助”。——借助Centos的包来安装yum。过程大致如下:(我这里的Linux版本为6.5)
-
清除原有RHEL的YUM及相关软件包
rpm -qa | grep yum | xargs rpm -e --nodeps
rpm -qa |grep python-urlgrabber|xargs rpm -e --nodeps2.下载centos6的相关软件包
在镜像url下下载相关软件包,http://mirrors.163.com/centos/ 根据相应的Linux版本去选择,当你选择6.5会发现已经This directory (and version of CentOS) is deprecated. For normal users,
you should use /6/ and not /6.5/ in your path.
说明被摒弃了,直接去找6的版本即可。Url为http://mirrors.163.com/centos/6/updates/x86_64/Packages/。
最主要是需要得到以下几个url:
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.29-73.el6.centos.noarch.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/python-urlgrabber-3.9.1-11.el6.noarch.rpm
之所以有“找”的过程,就是以防centos对yum包的支持路径会有更改。你必须根据Linux的版本去url下找到版本合适的rpm包。这个非常重要!否则会很麻烦。
3.安装软件包。
rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm
rpm -ivh python-urlgrabber-3.9.1-11.el6.noarch.rpm
rpm -ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
rpm -ivh yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm yum-3.2.29-73.el6.centos.noarch.rpm
*注意yum-plugin-fastestmirror和yum-3.2.29要一起安装。
4.替换新的repo文件。
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
sed -i "s;\$releasever;6;g" CentOS6-Base-163.repo
mv rhel-source.repo rhel-source.repo.bak
5.执行yum repolist查看,如果显示出repo仓库列表,并显示软件包数量则OK。(或者使用yum makecache)
6.使用yum安装软件包测试。
yum -y install lrzsz
不出意外,此时yum就能正常使用了。
==============================================================================
下面正式开始静默安装oracle的旅程。
第一部分:环境依赖检测
-
选择正确的oracle版本,与linux的版本要对应。
-
硬件环境检测:物理内存不少于1G;硬盘可用空间不少于5G;swap分区空间不少于2G。
grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo
grep "model name" /proc/cpuinfo
free
df -k /tmp
df -k
-
检测安装所依赖的系统包
rpm -q gcc make binutils openmotif setarch compat-db compat-gcc-34
compat-gcc-34-c++ compat-libstdc++-296 compat-libstdc++-33 libaio libaio-devel sysstat
glibc
显示not installed的就使用如 yum install “gcc”的命令安装。
第二部分:创建用户和组
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle #dba为oracle所属的group
#设置oracle用户密码
passwd oracle
第三部分:修改参数和限制
-
修改内核参数
Vi /sbin/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
Wq保存。使设置生效:
/sbin/sysctl -p
-
修改用户限制
1)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)然后,vi /etc/pam.d/login 加入:
session required /lib/security/pam_limits.so
session required pam_limits.so
-
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
使设置生效
source /etc/profile
第四部分:创建目录或文件
1、创建安装目录(可根据情况,选择比较多空间的目录创建)
mkdir -p /u01/app/
chown -R oracle:oinstall /u01/app/
chmod -R 775 /u01/app/
2、创建/etc/oraInst.loc文件,内容如下
nventory_loc=/u01/app/oracle/oraInventory
inst_group=oinstall
更改文件的权限
chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc
第五部分:设置环境变量
设置oracle环境变量。首先切换至oracle用户:su - oracle
Vi ~/.bash_profile
在最后加上以下内容:
#Oracle For Linux
export ORACLE_BASE=/home/oracle/app
export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
rt ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export LIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
export ORACLE_OWNER=oracle
export SPFILE_PATH=$ORACLE_HOME/dbs
export ORA_NLS10=$ORACLE_HOME/nls/data
注意:ORACLE_HOME和ORACLE_BASE需要自己指定,并且需要牢记它们。
使设置生效
source /home/oracle/.bash_profile
第六部分:在合适的目录下解压oracle安装文件:
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
解压后,它们会合并在一个database的目录中。
第七部分:响应模板准备
需要修改三个响应模板。首先不妨新建一个与database同级的目录:mkdir etc
Cd /home/oracle/app/oracle/product/database/response
Cp * /home/oracle/app/oracle/product/etc/
-
修改etc下的db_install.rsp响应文件,主要是以下需要修改。
INVENTORY_LOCATION=/home/oracle/app/oracle/oraInventory
ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/home/oracle/app/oracle
这仨必须跟oracle的环境变量保持一致,至于INVENTORY_LOCATION则必须制定在%ORACLE_BASE%/oraInventory下,目的是为了存放日志。
-
修改etc下的dbca.rsp文件,修改如下:
GDBNAME = "aplatform"
SID = "aplatform"
SYSPASSWORD = "asia123"
SYSTEMPASSWORD = "asia123"
CHARACTERSET="AL32UTF8" //415行 编码
NATIONALCHARACTERSET="UTF8" //425行 编码
这是根据自己要求来指定实例名以及sys用户的登入密码,以及编码的。
第八部分:开始静默安装(执行几个响应文件,文件为etc下自己指定的路径哦)
Cd database
-
执行db_install.rsp
./runInstaller -silent -force -ignorePrereq -responseFile /home/oracle/app/oracle/product/etc/db_install.rsp
注:安装中,如果提示[WARNING]不必理会,此时安装程序仍在进行,如果出现[FATAL],则安装程序已经停止了。
查看安装日志信息了解安装进度
日志查看:
cd $ORACLE_BASE/oraInventory/logs
tail -100f installActions*.log
出现类似如下提示表示安装完成:
#-------------------------------------------------------------------
...
/home/oracle/app/oracle/product/11.2.0/dbhome_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
Successfully Setup Software.
#-------------------------------------------------------------------
使用root用户执行root.sh
Sh /home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
-
执行netca.rsp
静默配置网络
$ORACLE_HOME/bin/netca -silent -responseFile /home/oracle/app/oracle/product/etc/netca.rsp
-
执行dbca.rsp
$ORACLE_HOME/bin/dbca -silent -responseFile /home/oracle/app/oracle/product/etc/dbca.rsp
第九部分:建库后检查工作
-
实例检查:
ps -ef | grep ora_ | grep -v grep | wc -l
ps -ef | grep ora_ | grep -v grep
2)监听检查
lsnrctl status
如果出现以下错误
lsnrctl: error while loading shared libraries: /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1: cannot restore segment prot after reloc: Permission denied
解决办法:在root用户下执行以下命令
su - root
setenforce 0
3)修改oracle启动配置文件
su - oracle
vi /etc/oratab
oracl:/u01/app/oracle/product/11.2.0/db_1:Y //把“N”改成“Y”
这样就可以通过dbstart 启动此实例,监听器。
dbstart $ORACLE_HOME
此时所有oracle的进程关闭,监听器也停止。
dbshut $ORACLE_HOME
再次查看监听器状态。
lsnrctl status
第十部分:测试数据库
sqlplus / as sysdba
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database flashback on; (如果要启用数据库闪回功能则执行)
SQL> alter database open;
SQL> execute utl_recomp.recomp_serial(); (重新编译所有可能失效对象)
SQL> alter system archive log current; (手工归档测试)
创建用户以及授权:
SQL> create user username identified by password
SQL> grant dba to username
SQL> connect username/password #新用户测试连接
Ps:安装过程中会出现一堆恶心的问题,出现问题的时候随着解决问题会衍生出很多次级问题,没办法,一步步解决。
之前我一直以为PL/SQL就是oracle的客户端,实际上并不是,它只是连接工具而已。如果你本地机器没有安装oracle客户端,是无法直接使用PL/SQL来远程连接的。安装oracle服务端会同时安装客户端,但如果只有Linux上安装了服务端,那么客户端就在Linux上。但如果你本地安装了oracle,客户端在你本地机器也就有了,此时你就可以远程使用PL/SQL连上Linux上的oralce服务端啦。如果不想额外安装客户端,可使用sqldeveloper,它集成了客户端和远程连接的功能。