linux安装Oracle11G
本教程使用的环境是:
1H2C2G
Centos7 64位
检查硬件环境
内存要求>1GB(最好是2GB),交换内存大于物理内存的1.5倍,硬盘空间大于16GB。
下面是通过root用户操作
#查看当前的内存的使用,这个命令比较直观
free -m
如果交换内存比较小,我们文件作为swap分区来增加swap大小
#创建存放充当swap分区文件的目录
mkdir /swap
#创建充当swap分区的文件,文件大小就是要增加的swap大小,of是文件位置,这里我们增加2G内存=2048*1M
dd if=/dev/zero of=/swap/swapfile bs=1M count=2048
#格式化交换分区文件
mkswap /swap/swapfile
#给分区文件设置下权限:0600
chmod 0600 /swap/swapfile
{
#启动交换分区文件
swapon /swap/swapfile
#如果提示设备或资源忙,先执行
swapoff /swap/swapfile
}
#然后设置开机自启,编辑/etc/fstab追加:
/swap/swapfile swap swap defaults 0 0
修改下各种配置文件,也就是软件环境
修改主机名,这个应该是规范化
hostnamectl set-hostname oracledb
echo "127.0.0.1 oracledb" >>/etc/hosts
关闭selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
#这个是使修改立即生效
setenforce 0
0、下载Orcle11G
官方网站:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/
根据自己的服务器,下载相应的软件,我的系统是64位的,所以下载的是 Linux x86-64的,下载完的两个文件如下
- linux.x64_11gR2_database_1of2.zip
- linux.x64_11gR2_database_2of2.zip
然后用sftp工具上传到服务器
更换yum源,可以跳过
更换为阿里云的yum源,使yum命令下载软件更快
cd /etc
mv yum.repos.d yum.repos.d.bak
mkdir yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#清除缓存
yum clean all
#更新缓存
yum makecache
安装oracle依赖库
不想这样的话,可以检查下哪个没装
yum -y install binutils
compat-libstdc++-33
elfutils-libelf
elfutils-libelf-devel
expat
gcc
gcc-c++
glibc
glibc-common
glibc-devel
glibc-headers
libaio
libaio-devel
libgcc
libstdc++
libstdc++-devel
make
pdksh
sysstat
unixODBC
unixODBC-devel
最后再检查下
rpm -q
binutils
compat-libstdc++-33
elfutils-libelf
elfutils-libelf-devel
expat
gcc
gcc-c++
glibc
glibc-common
glibc-devel
glibc-headers
libaio
libaio-devel
libgcc
libstdc++
libstdc++-devel
make
pdksh
sysstat
unixODBC
unixODBC-devel
通过yum install pdksh -y 安装缺少 package ,这个库yum源中没有,需要自己下载;
通过wget命令直接下载pdksh的rpm包,下载到至/tmp/
wget -O /tmp/pdksh-5.2.14-37.el5_8.1.x86_64.rpm http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm
cd /tmp
#安装
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm
注意:**
安装oracle时,可能会提示某些依赖库没有安装(而实际上你安装了),这个是因为oracle需要32位的软件,而你安装了64位。不过不要紧,我们可以忽略掉,这个不影响什么。
Centos7中pdksh库就是ksh库,这个也可以忽略。
添加oracle用户组和用户
如果要安装Oracle数据库,则需要以下本地操作系统组和用户:
- Oracle inventory组(通常为 oinstall)
- OSDBA组 (通常为 dba)
- OSOPER组 (通常为 oper)
- Oracle软件所有者(通常为 oracle)
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle -d /home/oracle
#验证是否成功
id oracle
#给oracle用户设置密码
passwd oracle
修改内核参数
vi /etc/sysctl.conf
## 追加如下内容:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmni = 4096
# kernel.shmmax 参数设置为物理内存的一半
kernel.shmmax = 1073741824
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
限制oracle用户的shell权限
[root@localhost ~]# 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
修改用户验证选项
[root@localhost ~]# vi /etc/pam.d/login
session required /lib64/security/pam_limits.so
session required pam_limits.so
修改/etc/profile文件
[root@localhost ~]# 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
让修改立即生效
[root@localhost ~]# source /etc/profile
开始安装
创建安装目录和设置文件权限
[root@myYUn software]# mkdir -p /opt/oracle/product/11.2.0
[root@myYUn software]# mkdir /opt/oracle/oradata
[root@myYUn software]# mkdir /opt/oracle/oraInventory
[root@myYUn software]# mkdir /opt/oracle/fast_recovery_area
[root@myYUn software]# chown -R oracle:oinstall /opt/oracle
[root@myYUn software]# chmod -R 775 /opt/oracle
解压安装包
[root@myYUn install]# unzip linux.x64_11gR2_database_1of2.zip
[root@myYUn install]# unzip linux.x64_11gR2_database_2of2.zip
将解压后的文件夹直接移动到/software目录下:
mkdir /software
[root@myYUn install]# mv database/ /software/
[root@myYUn install]# cd /software
[root@myYUn install]# ll
复制应答文件到用户目录
cp -R /software/database/response /home/oracle
db_install.rsp:安装应答
dbca.rsp:创建数据库应答
netca.rsp:建立监听、本地服务名等网络设置的应答
参考文档:https://blog.csdn.net/java3344520/article/details/8063785
此步跳过!创建 vi /etc/oraInst.loc
inventory_loc=/opt/oracle/oraInventory
inst_group=oinstall
并授权:
chown oracle:oinstall /etc/oraInst.loc
chmod 664 /etc/oraInst.loc
执行了这一步,等会静默安装时,没有orainstRoot.sh了。
设置oracle用户环境变量
首先切换到oracle用户下:
[root@myYUn software]# su -l oracle
[oracle@myYUn ~]$ vim .bash_profile
在末尾添加如下内容:
ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0
ORACLE_SID=orcl
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
注意,标红处必须与创建的数据库实例名称一致,否则数据库启动后无法访问。第一次配置完记得source一下。
[oracle@myYUn ~]$ source .bash_profile
编辑静默安装响应文件
[oracle@myYUn ~]$ cd response/
[oracle@myYUn response]$ vim db_install.rsp
需要修改的选项如下:
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=oracledb
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/opt/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/opt/oracle/product/11.2.0
ORACLE_BASE=/opt/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
DECLINE_SECURITY_UPDATES=true
各参数含义如下:
-silent 表示以静默方式安装,不会有任何提示
-force 允许安装到一个非空目录
-noconfig 表示不运行配置助手netca
-responseFile 表示使用哪个响应文件,必需使用绝对路径
oracle.install.responseFileVersion 响应文件模板的版本,该参数不要更改
oracle.install.option 安装选项,本例只安装oracle软件,该参数不要更改
DECLINE_SECURITY_UPDATES 是否需要在线安全更新,设置为false,该参数不要更改
ORACLE_HOSTNAME 安装主机名
UNIX_GROUP_NAME oracle用户用于安装软件的组名
INVENTORY_LOCATION oracle产品清单目录
SELECTED_LANGUAGES oracle运行语言环境,一般包括引文和简繁体中文
ORACLE_HOME Oracle安装目录
ORACLE_BASE oracle基础目录
oracle.install.db.InstallEdition 安装版本类型,一般是企业版
oracle.install.db.isCustomInstall 是否定制安装,默认Partitioning,OLAP,RAT都选上了
oracle.install.db.customComponents 定制安装组件列表:除了以上默认的,可加上Label Security和Database Vault
oracle.install.db.DBA_GROUP oracle用户用于授予OSDBA权限的组名
oracle.install.db.OPER_GROUP oracle用户用于授予OSOPER权限的组名
根据响应文件静默安装Oracle11g
[oracle@myYUn response]$ cd /software/database/
[oracle@myYUn database]$ ./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq
执行成功:
[oracle@oracledb database]$ ./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq
正在启动 Oracle Universal Installer...
检查临时空间: 必须大于 120 MB。 实际为 36560 MB 通过
检查交换空间: 必须大于 150 MB。 实际为 4088 MB 通过
准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2020-03-04_09-00-29AM. 请稍候...[oracle@oracledb database]$ 可以在以下位置找到本次安装会话的日志:
/opt/oracle/oraInventory/logs/installActions2020-03-04_09-00-29AM.log
以下配置脚本需要以 "root" 用户的身份执行。
#!/bin/sh
#要运行的 Root 脚本
/opt/oracle/product/11.2.0/root.sh
要执行配置脚本, 请执行以下操作:
1. 打开一个终端窗口
2. 以 "root" 身份登录
3. 运行脚本
4. 返回此窗口并按 "Enter" 键继续
Successfully Setup Software.
如果安装失败,可以查看日志文件,里面会列出原因。
orainstRoot.sh:
设置产品目录位置与拥有该目录的操作系统组,并产生/etc/oraInst.loc。
如果配置过/etc/oraInst.loc,就没有这个脚本了
root.sh:
用来设置必要的操作系统权限,并将orahome,oraenv,coraenv复制到/usr/local/bin目录下。生成/etc/oratab,其中存放一些数据库相关信息。
执行这两个脚本
可以在以下位置找到本次安装会话的日志:/data/oracle/inventory/logs/installActions2018-05-13_02-14-55PM.log
按照要求执行脚本。
打开终端,退出到root身份登录,执行脚本:
[oracle@iZ2f570bi1k56uZ database]$ exit
logout
[root@iZ2f570bi1k56uZ software]# sh /data/oracle/inventory/orainstRoot.sh
Changing permissions of /data/oracle/inventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /data/oracle/inventory to oinstall.
The execution of the script is complete.
[root@iZ2f570bi1k56uZ software]# sh /data/oracle/product/11.2.0/root.sh
Check /data/oracle/product/11.2.0/install/root_iZ2f570bi1k56uZ_2018-05-13_14-25-04.log for the output of root script
以静默方式配置监听
重新使用oracle用户登录
[root@myYUn software]# su -l oracle
Last login: Sun May 13 14:09:10 CST 2018 on pts/3
[oracle@myYUn ~]$ netca /silent /responseFile /home/oracle/response/netca.rsp
注意此处,必须使用/silent /responseFile格式,而不是-silent -responseFile,因为是静默安装。
成功运行后,在/opt/oracle/product/11.2.0/network/admin中生成listener.ora和sqlnet.ora
通过netstat命令可以查看1521端口正在监听。
Yum安装netstat软件,软件包是在net-tools中。
[root@myYUn /]# yum install net-tools
[root@myYUn /]# yum install net-tools
以静默方式建立新库,同时也建立一个对应的实例
[oracle@myYUn ~]$ vim /home/oracle/response/dbca.rsp
修改文件中以下参数:
[GENERAL]
# oracle版本,不能更改
RESPONSEFILE_VERSION = "11.2.0"
# Description : Type of operation
OPERATION_TYPE = "createDatabase"
[CREATEDATABASE]
# Description : Global database name of the database
# 全局数据库的名字=SID+主机域名
# 第三方工具链接数据库的时候使用的service名称
GDBNAME = "orcl.oracledb"
# Description : System identifier (SID) of the database
# 对应的实例名字
SID = "orcl"
# Description : Name of the template
# 建库用的模板文件
TEMPLATENAME = "General_Purpose.dbc"
# Description : Password for SYS user
# SYS, 数据库管理帐户
SYSPASSWORD = "123456"
# Description : Password for SYSTEM user
# SYSTEM, 数据库管理帐户
SYSTEMPASSWORD = "123456"
# Description : Password for SYSMAN user
# SYSMAN,企业管理器帐户
SYSMANPASSWORD = "123456"
# Description : Password for DBSNMP user
# DBSNMP,目录集成平台用户
DBSNMPPASSWORD = "123456"
# Description : Location of the data file's
# 数据文件存放目录
DATAFILEDESTINATION =/opt/oracle/oradata
# Description : Location of the data file's
# 恢复数据存放目录
RECOVERYAREADESTINATION=/opt/oracle/fast_recovery_area
# Description : Character set of the database
# 字符集,重要!!! 建库后一般不能更改,所以建库前要确定清楚。
# (CHARACTERSET = "AL32UTF8" NATIONALCHARACTERSET= "UTF8")
CHARACTERSET = "AL32UTF8"
# Description : total memory in MB to allocate to Oracle
# oracle内存1638MB,物理内存2G*80%
TOTALMEMORY = "1638"
进行静默配置:
[oracle@myYUn ~]$ dbca -silent -responseFile /home/oracle/response/dbca.rsp
建库后进行实例进程检查:
[oracle@myYUn ~]$ ps -ef | grep ora_ | grep -v grep
查看监听状态:
[oracle@myYUn ~]$ lsnrctl status
数据库创建完成。
有关详细信息, 请查看以下位置的日志文件: /data/oracle/cfgtoollogs/dbca/orcl/orcl.log。
数据库信息:
全局数据库名:orcl.oracledb
系统标识符 (SID):orcl
登录查看实例状态:
[oracle@myYUn ~]$ sqlplus / as sysdba
SQL> select status from v$instance;
【linux 成功安装oracle后,为其创建一个登录账户】
如果报错:【ORA-12162: TNS:net service name is incorrectly specified】
错误原因:【这个错误是因为ORACLE_SID变量没有传进去造成的。】
解决方法:
1.查看当前ORACLE_SID
[oracle@iZ2f570bi1k56uZ ~]$ echo $ORACLE_SID
orcl
2.修改ORACLE_SID和/home/oracle/response/dbca.rsp中的一样
[oracle@iZ2f570bi1k56uZ ~]$ export ORACLE_SID=orcl
3.如果遇到ORA-12162: TNS:net service name is incorrectly specified.错误
参考文章:【ORA-12162: TNS:net service name is incorrectly specified.】
4.如果依然不能登陆,尝试修改orcle文件夹的权限
【如果本地连接时,出现监听错误,参考Linux中安装Oracle11g后出现监听的问题及解决办法】
命令行模式静默删除
首先查看dbca的帮助信息
dbca -help
修改/home/oracle/response/dbca.rsp文件里以下几个参数,下面三个参数根据建库实际情况进行修改:
OPERATION_TYPE = "deleteDatabase"
SOURCEDB = "orcl"
SYSDBAUSERNAME = "sys"
SYSDBAPASSWORD = "123456"
然后运行:
dbca -silent -responseFile /home/oracle/response/dbca.rsp
各参数含义如下:
-silent 表示以静默方式删除
-responseFile 表示使用哪个响应文件,必需使用绝对路径
RESPONSEFILE_VERSION 响应文件模板的版本,该参数不要更改
OPERATION_TYPE 安装类型,该参数不要更改
SOURCEDB 数据库名,不是全局数据库名,即不包含db_domain
很简单数据库卸载完成了,请注意,只是数据库卸载完了,数据库软件还是在的。
使用DBCA卸载数据库
dbca -silent -delete Database -responseFile dbca.rsp
a.选项-silent表示静默安装,免安装交互,大部分安装信息也不输出
b.选项-responseFile指定应答文件,要求用绝对路径
一些常用命令
进入到数据库后执行,查询数据库服务的名称
select global_name from global_name:
启动监听
lsnrctl start
关闭监听
lsnrctl stop
查看监听状态
Lsnrctl status
进入到数据库执行,关闭数据库
shutdown
进入到数据库执行,打开数据库
startup
设置开机自启
su - oracle
将下面两个文件的ORACLE_HOME_LISTNER=$1修改为ORACLE_HOME_LISTNER=$ORACLE_HOME
vim /opt/oracle/product/11.2.0/bin/dbstart
vim /opt/oracle/product/11.2.0/bin/dbshut
#修改配置
vim /etc/oratab
orcl:/opt/oracle/product/11.2.0:X改为orcl:/opt/oracle/product/11.2.0:Y
#修改rc.local文件
chmod 755 /etc/rc.d/rc.local
vim /etc/rc.d/rc.local
#在rc.local中添加:
su oracle -lc "/opt/oracle/product/11.2.0/bin/lsnrctl start"
su oracle -lc /opt/oracle/product/11.2.0/bin/dbstart
参考文档:
https://juejin.im/post/5ca20514e51d4533e324a17f
https://www.jianshu.com/p/b4200e721bfd
https://blog.51cto.com/canonind/1883066
Centos7放行 oracle:
https://blog.csdn.net/fw19940314/article/details/80182762