Linux-CentOS7下安装Oracle11g
简述:
-
本文操作环境采用CentOS7
-
Linux安装Oracle11g与Windows区别较大,在Linux下需要创建用户以及用户组来供Oracle使用
-
Windows可以直接图形化界面从第一步到最后启动服务和监听;Linux下安装采用静默安装则需要手动配置监听、实例、以及环境变量等设置;
下面详细介绍Oracle11g安装步骤
一、准备工作:
-
官方网站下载Linux版Oracle11g安装包(附下载地址)
https://www.oracle.com/database/technologies/112010-linx8664soft.html
-
上传到Linux服务器,可采用Winscp工具、也可XShell、或者更好用的MobaXterm
-
在Linux下新建目录并且解压zip文件到同一个文件夹内
下面详细介绍并且附上图片说明
二、详细步骤
-
下载oracle11压缩包并且上传到linux的目录下,此处我新建目录如下。
[root@iZ2zeifizy1bjjjvpnk71fZ zipbackpage]# pwd /home/sakus/oracle/install/zipbackpage [root@iZ2zeifizy1bjjjvpnk71fZ zipbackpage]# ls linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip [root@iZ2zeifizy1bjjjvpnk71fZ zipbackpage]#
把压缩包放在zipbackpage中,再解压的时候解压到install目录下
-
解压zip包
[root@iZ2zeifizy1bjjjvpnk71fZ]# unzip linux.x64_11gR2_database_1of2.zip [root@iZ2zeifizy1bjjjvpnk71fZ]# unzip linux.x64_11gR2_database_2of2.zip
如果没有unzip工具,则需要手动安装一下,执行一下命令
yum install zip yum install unzip
把解压后的database文件夹整个挪到新建的目录[/home/sakus/oracle/install]下
-
关闭selinux
[root@iZ2zeifizy1bjjjvpnk71fZ /]# vim /etc/selinux/config
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled #此处修改为disable # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
执行:
[root@iZ2zeifizy1bjjjvpnk71fZ /]# setenforce 0 setenforce: SELinux is disabled
-
关闭防火墙
---CentOS7操作步骤,CentOS6以下自行百度查看一下步骤
[root@iZ2zeifizy1bjjjvpnk71fZ]# systemctl restart firewalld.service [root@iZ2zeifizy1bjjjvpnk71fZ]# systemctl list-unit-files|grep firewalld.service firewalld.service disabled [root@iZ2zeifizy1bjjjvpnk71fZ]# systemctl disable firewalld.service
-
安装Oracle11g 所需依赖
[root@iZ2zeifizy1bjjjvpnk71fZ]# yum install gcc make binutils gcc-c++ compat-libstdc++-33elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-develnumactl-devel sysstat unixODBC unixODBC-devel pcre-devel –y
-
添加安装用户以及用户组
[root@iZ2zeifizy1bjjjvpnk71fZ]# groupadd oinstall [root@iZ2zeifizy1bjjjvpnk71fZ]# groupadd dba [root@iZ2zeifizy1bjjjvpnk71fZ]# useradd -g oinstall -G dba oracle [root@iZ2zeifizy1bjjjvpnk71fZ]# passwd oracle Changing password for user oracle. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. [root@iZ2zeifizy1bjjjvpnk71fZ]# id oracle uid=1001(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba)
-
修改Linux内核参数的配置文件
[root@iZ2zeifizy1bjjjvpnk71fZ /]# vim /etc/sysctl.conf
在文件末尾增加如下配置
##oracle config date 2020-11-18 fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 1073741824 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
检查一下是否已经写进了文件中
sysctl -p
[root@iZ2zeifizy1bjjjvpnk71fZ /]# sysctl -p vm.swappiness = 0 net.ipv4.neigh.default.gc_stale_time = 120 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_announce = 2 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_synack_retries = 2 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 kernel.sysrq = 1 fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 1073741824 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
看到添加的内容则表示添加成功并且生效了
-
修改用户的限制文件
vim /etc/security/limits.conf
在文件末尾增加如下配置
#oracle config date 2020-11-18 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240
修改/etc/pam.d/login文件
vim /etc/pam.d/login
文件末尾增加如下配置
session required /lib64/security/pam_limits.so session required pam_limits.so
修改/etc/profile
vim /etc/profile
文件末尾增加如下配置
##oracle config date 2020-11-18 if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
-
创建安装目录并且设置文件权限
[root@iZ2zeifizy1bjjjvpnk71fZ]# mkdir -p /data/oracle/product/11.2.0 [root@iZ2zeifizy1bjjjvpnk71fZ]# mkdir /data/oracle/oradata [root@iZ2zeifizy1bjjjvpnk71fZ]# mkdir /data/oracle/inventory [root@iZ2zeifizy1bjjjvpnk71fZ]# mkdir /data/oracle/fast_recovery_area [root@iZ2zeifizy1bjjjvpnk71fZ]# chown -R oracle:oinstall /data/oracle [root@iZ2zeifizy1bjjjvpnk71fZ]# chmod -R 775 /data/oracle
此处大多数都认为仅设置775权限即可,不需要设置太高
-
设置Oracle的用户环境变量
切换用户到Oracle [root@iZ2zeifizy1bjjjvpnk71fZ]# su -l oracle
[oracle@iZ2zeifizy1bjjjvpnk71fZ]$ vim .bash_profile
文件末尾增加如下内容
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/.local/bin:$HOME/bin export PATH ORACLE_BASE=/data/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 ~ ~
ORACLE_SID必须与数据库的创建时候的实例名一致,否则无法启动实例
执行 source .bash_profile
-
静默安装Oracle的响应文件
复制安装文件夹response到当前oracle用户的家目录下: [oracle@iZ2zeifizy1bjjjvpnk71fZ]$ cp -R /home/sakus/oracle/install/database/response/ . [oracle@iZ2zeifizy1bjjjvpnk71fZ]$ cd response/ [oracle@iZ2zeifizy1bjjjvpnk71fZ response]$ vim db_install.rsp
增加如下配置
oracle.install.option=INSTALL_DB_SWONLY ORACLE_HOSTNAME=CentOS UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/data/oracle/inventory SELECTED_LANGUAGES=en,zh_CN ORACLE_HOME=/data/oracle/product/11.2.0 ORACLE_BASE=/data/oracle oracle.install.db.InstallEdition=EE oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=dba DECLINE_SECURITY_UPDATES=true
-
根据响应文件安装oracle11g
-
切换到database目录
[oracle@iZ2zeifizy1bjjjvpnk71fZ response]$ cd /home/sakus/oracle/install/database/
-
执行静默安装
[oracle@iZ2zeifizy1bjjjvpnk71fZ response]$ ./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq
此处可能提示交换空间不足,先查看一下然后执行如下操作,如果没有遇到请忽略
[oracle@iZ2zeifizy1bjjjvpnk71fZ database]$ free total used free shared buff/cache available Mem: 3734288 227224 166016 995936 3341048 2234452 Swap: 524284 0 524284
参考此文章操作,需要切换到root用户下执行
https://www.cnblogs.com/gw811/p/4044436.html
防止文章丢失,引用到此
摘:linux下安装Oracle时交换空间不足的解决方法 linux上安装Oracle时交换空间不足的解决办法 增加交换空间有两种方法: 严格的说,在系统安装完后只有一种方法可以增加swap,那就是本文的第二种方法, 至于第一种方法应该是安装系统时设置交换区。 1、使用分区: 在安装OS时划分出专门的交换分区,空间大小要事先规划好,启动系统时自动进行mount。 这种方法只能在安装OS时设定,一旦设定好不容易改变,除非重装系统。 2、使用swapfile:(或者是整个空闲分区) 新建临时swapfile或者是空闲分区,在需要的时候设定为交换空间,最多可以增加8个swapfile。 交换空间的大小,与CPU密切相关,在i386系中,最多可以使用2GB的空间。 在系统启动后根据需要在2G的总容量下进行增减。 这种方法比较灵活,也比较方便,缺点是启动系统后需要手工设置。 下面是运用swapfile增加交换空间的步骤: 涉及到的命令: free ---查看内存状态命令,可以显示memory,swap,buffer cache等的大小及使用状况; dd ---读取,转换并输出数据命令; mkswap ---设置交换区 swapon ---启用交换区,相当于mount swapoff ---关闭交换区,相当于umount 步骤: 1、创建swapfile: root权限下,创建swapfile,假设当前目录为"/",执行如下命令: # dd if=/dev/zero of=swapfile bs=1024 count=500000 则在根目录下创建了一个swapfile,名称为“swapfile”,大小为500M,也可以把文件输出到自己想要的任何目录中, 个人觉得还是直接放在根目录下比较好,一目了然,不容易误破坏,放在其他目录下则不然了; 命令中选项解释: ---of:输出的交换文件的路径及名称; ---bs:块大小,单位byte,一般为1k即1024个byte; ---count:总块数即空间总大小,单位为块即k; ---if:读取的源空闲空间,为什么是zero,不清楚,先固定这么写吧; 2、将swapfile设置为swap空间 # mkswap swapfile 3、启用交换空间,这个操作有点类似于mount操作(个人理解): # swapon swapfile 至此增加交换空间的操作结束了,可以使用free命令查看swap空间大小是否发生变化; 4、如果不再使用空间可以选择关闭交换空间,这个操作有点类似于umount操作(个人理解):: # swapoff swapfile 使用这种方法在每次系统启动时都需要手动设置、开启swapfile,比较麻烦,解决方法: 在 /etc/rc.d/rc.local 文件的末行下追加加以下内容:(编辑这个文件当然是用vi了~) /sbin/swapon /swapfile 保存后退出,这样在系统启动后,swap空间就会自动加载了; 总结:在安装OS时一定要规划后swap大小,通常为内存的2倍,但是要考虑到以后增加内存的可能,所以可以考虑设的稍大一些, 想在虚拟机里面安装oracle10g,发现默认的swap交换空间不满足最低要求,因为我分配的物理内存是1G,那么就按照要求需要2G的swap交换空间,默认只有1G的交换空间。添加swap交换空间的步骤如下: 第一步:确保系统中有足够的空间来用做swap交换空间,我使用的是KVM,准备在一个独立的文件系统中添加一个swap交换文件,在/opt/image中添加2G的swap交换文件 第二步:添加交换文件并设置其大小为2G,使用如下命令 [root@sense image]# dd if=/dev/zero of=/opt/image/swap bs=1024 count=2048000 过段时间就返回如下结果: 2048000+0 records in 2048000+0 records out 2097152000 bytes (2.1 GB) copied, 272.867 seconds, 7.7 MB/s 第三步:创建(设置)交换空间,使用命令mkswap [root@sense image]# mkswap /opt/image/swap Setting up swapspace version 1, size = 2097147 kB 第四步:检查现有的交换空间大小,使用命令free [root@sense image]# free -m total used free shared buffers cached Mem: 1011 989 21 0 1 875 -/+ buffers/cache: 112 898 Swap: 1027 0 1027 或者检查meminfo文件 grep SwapTotal /proc/meminfo 第五步:启动新增加的2G的交换空间,使用命令swapon [root@sense image]# swapon /opt/image/swap 第六步:确认新增加的2G交换空间已经生效,使用命令free [[root@sense image]# free -m total used free shared buffers cached Mem: 1011 995 15 0 4 877 -/+ buffers/cache: 113 897 Swap: 3027 0 3027 或者检查meminfo文件 grep SwapTotal /proc/meminfo 第七步:修改/etc/fstab文件,使得新加的2G交换空间在系统重新启动后自动生效 在文件最后加入: /opt/image/swap swap swap defaults 0 0
注意切换到Oracle用户下继续执行静默安装命令
[oracle@iZ2zeifizy1bjjjvpnk71fZ response]$ ./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq
当出现:
Successfully Setup Software表示安装成功,中间提示warning不需要理会,当提示成功以后可以退出当前窗口了,切换到root用户继续执行一下操作
执行1: 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.
执行2: 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登录
su -l oracle
-
执行
netca /silent /responseFile /home/oracle/response/netca.rsp
提示 Listener start Successful表示成功
配置成功以后在/data/oracle/product/11.2.0/network/admin中可以看到监听文件
listener.ora
-
netstat查看端口情况
[oracle@iZ2zeifizy1bjjjvpnk71fZ database]$ netstat -an | grep 1521 tcp 0 0 0.0.0.0:1521 0.0.0.0:* LISTEN tcp 0 0 172.22.11.111:1521 172.22.11.211:60173 ESTABLISHED tcp 0 0 172.22.11.211:60173 172.22.11.211:1521 ESTABLISHED unix 2 [ ACC ] STREAM LISTENING 1571367 /var/tmp/.oracle/sEXTPROC1521 [oracle@iZ2zeifizy1bjjjvpnk71fZ database]$
表示监听启用成功
安装netstat软件
yum install net-tools
-
-
简历数据库,添加实例
[oracle@iZ2zeifizy1bjjjvpnk71fZ database]$ 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.myorcl" # 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 =/data/oracle/oradata # Description : Location of the data file's # 恢复数据存放目录 RECOVERYAREADESTINATION=/data/oracle/fast_recovery_area # Description : Character set of the database # 字符集,重要!!! 建库后一般不能更改,所以建库前要确定清楚。 # (CHARACTERSET = "AL32UTF8" NATIONALCHARACTERSET= "UTF8") CHARACTERSET = "ZHS16GBK" # Description : total memory in MB to allocate to Oracle # oracle内存1638MB,物理内存2G*80% TOTALMEMORY = "1638"
进行静默配置
dbca -silent -responseFile /home/oracle/response/dbca.rsp
检查进程实例
ps -ef | grep ora_ | grep -v grep
检查监听状态
lsnrctl status
如果此处执行有问题,请检查需要设置ORACLE_HOME
数据库创建完成以后可以再/data/oracle/cfgtoollogs/dbca/orcl/orcl.log看到日志文件
-
测试登录状态
sqlplus / as sysdba
[oracle@iZ2zeifizy1bjjjvpnk71fZ database]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Thu Nov 19 15:05:24 2020 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>
表示登录成功,实例成功启动,监听也成功启动。
-
安装完成以后创建Oracle表空间以及用户
需要执行以下内容
--创建表空间 CREATE TABLESPACE NNC_DATA01 DATAFILE '/data/oracle/oradata/orcl/nnc_data01.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ; CREATE TABLESPACE NNC_DATA02 DATAFILE '/data/oracle/oradata/orcl/nnc_data02.dbf' SIZE 300M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ; CREATE TABLESPACE NNC_DATA03 DATAFILE '/data/oracle/oradata/orcl/nnc_data03.dbf' SIZE 500M AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K ; CREATE TABLESPACE NNC_INDEX01 DATAFILE '/data/oracle/oradata/orcl/nnc_index01.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K ; CREATE TABLESPACE NNC_INDEX02 DATAFILE '/data/oracle/oradata/orcl/nnc_index02.dbf' SIZE 300M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K ; CREATE TABLESPACE NNC_INDEX03 DATAFILE '/data/oracle/oradata/orcl/nnc_index03.dbf' SIZE 500M AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ; --创建用户 CREATE USER username2019 IDENTIFIED BY password2019 DEFAULT TABLESPACE NNC_DATA01 TEMPORARY TABLESPACE temp; --用户授权 GRANT connect,dba to username2019; --创建备份文件夹 create directory exp_dir as '/data/oracle/oradata/orcl/dmpfile'; --授权文件夹操作给用户 grant read,write on directory exp_dir to username2019; --导入的过程中如果提示写入日志失败,检查oracle是否具有对dmpfile文件夹操作的权限,参考设置权限给oracle chown -R oracle.dba /soft/oracle11g/oracle11g/upraw_oracle11g chmod 777 -R /soft/oracle11g/oracle11g/upraw_oracle11g
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)