前言
由于某些原因需要重装Oracle数据库,中间踩了一些小坑,在这里把相关的流程做个记录,方便后面回顾。
(一)下载和上传
Oracle19c是Oracle12c最后一个小版本,在继承了12c的多租户模式基础上,提供了更好的性能和安全性,也是本次笔者需要安装的数据库版本。
Linux系统安装Oracle数据库主要有2种形式,图形化界面安装以及静默安装。其中图形化安装要求服务器上面具备X11工具,对于内网的服务器来说安装起来相对比较繁琐(有兴趣了解如何使用图形化界面安装可以参考这篇文章:Oracle-19c图形化界面安装部署)。静默安装本质上是将图形化界面需要配置的选项以配置文件的方式提前配置好后,通过命令行的方式来进行安装。
需要注意的是,命令行的安装方式虽然表面看更加复杂,但是其实是更加灵活的,且行为是容易复制的,从专业性的角度考虑,建议选择静默安装会好一些。
1. 下载Oracle19c
最常规的方法可以去Oracle官网下载:https://www.oracle.com/cn/database/technologies/oracle19c-linux-downloads.html
这里我们根据服务器的架构选择需要安装的数据库文件进行下载,注意不要下载到下面的grid
版本了,下面的版本主要是用在集群环境的,我们这里只需要单节点部署,所以选择常规的版本即可。
下载数据库文件时,oracle要求我们先进行登录操作,这里我们可以用一下网络上公共的账号来临时登录一下
账号:2969868321@qq.com
密码:Yang199324.
2. 上传Oracle安装包到指定目录
安装包的上传位置没有什么要求,我们可以选择在/opt目录下建一个目录单独存放Oracle的安装包
(二)oracle安装和运行的环境依赖准备
yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc- gcc-c++ libaio-devel libaio libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel pdks
安装完成后会有如下信息:
(三)创建相关用户和用户组
1. 创建用户组
groupadd dba
groupadd oinstall
# 如果希望单独有用户组来管理 Oracle 自动存储管理,可以再新建下面这两组用户组(非必须)
groupadd asmdba
groupadd asmadmin
2. 创建用户
# 这里创建用户并分配主用户组为oinstall,附加用户组为dba
useradd -g oinstall -G dba oracle
# 如果前面有引入自动存储管理的用户组,那么可以在附加用户组上面补充进去
# useradd -g oinstall -G dba,asmdba,asmadmin oracle
(四)修改host文件
在服务器上分别输入hostname和ifconfig命令,获取当前服务器的主机名和IP后,在/etc/hosts文件中进行配置
# 例如
10.120.25.1 my-host-name
(五)检查和扩容Swag分区的大小
Oracle安装过程对Swag分区的大小有要求,所以执行数据库安装前我们需要先检查一下Swag分区是否符合要求,可以使用free -g命令来看一下目前服务器的内存情况。笔者本身服务器就有一定的Swap内存,所以这里可以不用再处理,如果有读者的Swag分区值为0的话,可以参考下面的步骤进行扩容。
Swag分区扩容(根据实际情况执行)
-
创建交换分区的文件:增加1G大小的交换分区,则命令写法如下,其中的 count 等于想要的块大小。
dd if=/dev/zero of=/home/swapfile bs=1M count=512
image.png -
设置交换分区文件:
mkswap /home/swapfile
#建立swap的文件系统
image.png -
立即启用交换分区文件:
swapon /home/swapfile
#启用swap文件
image.png -
使系统开机时自启用,在文件/etc/fstab中添加一行:
/home/swapfile swap swap defaults 0 0
image.png
(六)修改内核参数文件
使用命令vi /etc/sysctl.conf
编辑sysctl.conf
文件,然后添加如下内容:
ps:#号后的文本只是用于辅助解释,不需要加到文件里面
fs.aio-max-nr = 1048576 # 设置系统允许的最大异步 I/O 操作数量
fs.file-max = 6815744 # 设置系统允许的最大文件句柄数量
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 = 262144 # 设置默认的接收缓冲区大小
net.core.rmem_max = 4194304 # 设置最大接收缓冲区大小
net.core.wmem_default = 262144 # 设置默认的发送缓冲区大小
net.core.wmem_max = 1048576 # 设置最大发送缓冲区大小
配置完成后,执行sysctl -p命令让刚刚改的配置立即生效。
(七)修改用户的限制文件
使用命令vi etc/security/limits.conf编辑limits.conf文件,添加如下内容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
(八)配置PAM验证
使用命令vi etc/pam.d/login编辑login文件,添加如下内容:
session required /lib64/security/pam_limits.so
session required pam_limits.so
(九)创建数据库应用相关目录和授权
# 创建相关目录
mkdir -p /home/oracle/product/19.3/dbhome_1
mkdir -p /home/oracle/oradata
mkdir -p /home/oracle/inventory
mkdir -p /home/oracle/flash_recovery_area
# 进行授权
chown -R oracle:oinstall /home/oracle
# 下面的命令,有些博主用了-R来全量授权,不过个人觉得没这个必要,正常授权就够了
chmod 775 /home/oracle
(十)编辑环境变量文件
1. 调整profile文件
使用命令vi /etc/profile编辑profile文件,添加以下文本
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
2. 调整.bash_profile文件
切换到oracle用户,使用命令vi .bash_profile编辑.bash_profile 文件,添加如下内容
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
(十一)解压Oracle19c 安装包
将步骤(一)上传的安装包复制到$ORACLE_HOME下,执行unzip命令完成解压
(十二)编辑数据库静默安装响应文件
使用命令vi $ORACLE_HOME/install/response/db_install.rsp
编辑静默安装响应文件,执行前最好先备份
cd $ORACLE_HOME/install/response
cp db_install.rsp db_install.rsp.bak
vi db_install.rsp
需要配置的选项如下:
这里需要注意的点有2个:① ORACLE_HOME、ORACLE_BASE这些变量要根据实际情况配置 ② DBName和SID这些配置可以不按照orcl来命名,我这里只是用最常用的命令来举例而已。
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/home/oracle/oraInventory
ORACLE_HOME=/home/oracle/product/19.3/dbhome_1
ORACLE_BASE=/home/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=oinstall
oracle.install.db.OSDGDBA_GROUP=oinstall
oracle.install.db.OSKMDBA_GROUP=oinstall
oracle.install.db.OSRACDBA_GROUP=oinstall
oracle.install.db.rootconfig.executeRootScript=false
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.ConfigureAsContainerDB=false
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/home/oracle/oradata
(十三)根据响应文件静默安装Oracle
su - oracle
cd $ORACLE_HOME
./runInstaller -silent -responseFile /home/oracle/product/19.3/dbhome_1/install/response/db_install.rsp -ignorePrereq
脚本执行完成后,程序指引我们使用root用户来执行相关的配置脚本,第一个脚本是对目录和用户组权限的一些修改,第二个是检查日志是否有错误。
在这里会有有一个问题,若是只生成了root.sh
,没有orainstroot.sh
脚本,说明你之前装过oracle,且卸载的时候没有删除/etc/oraInst.loc
文件,此时就只会生成root.sh
一个脚本, 只执行者一个即可。
(十四)以静默方式配置监听器
netca.rsp
文件是用来安装监听器的响应文件,默认情况放在$ORACLE_HOME/assistants/netca
目录下,一般来说我们不需要改动这里的配置,用默认的配置直接安装监听器就行。
su - oracle
cd $ORACLE_HOME
netca /silent /responsefile /home/oracle/product/19.3/dbhome_1/response/netca.rsp
通过netstat -tunlp | grep 1521
命令查看1521端口正在监听:
(十五)配置数据库实例响应文件
前面2个步骤我们其实已经把数据库应用和监听器都安装好了,不过要想真正使用数据库,我们还得把数据库实例创建出来。同样的,数据库实例也有相关的响应文件:dbca.rsp
,放在 $ORACLE_HOME/assistants/dbca
目录下面
使用命令vi $ORACLE_HOME/assistants/dbca/dbca.rsp
编辑dbca.rsp
文件,设置以下参数:
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
gdbName=orcl
sid=orcl
createAsContainerDatabase=true
numberOfPDBs=1
pdbName=pdb1
pdbAdminPassword=oracle
templateName=General_Purpose.dbc
sysPassword=oracle
systemPassword=oracle
emExpressPort=5500
dbsnmpPassword=oracle
datafileDestination=/home/oracle/oradata
recoveryAreaDestination=/home/oracle/flash_recovery_area
characterSet=AL32UTF8
nationalCharacterSet=UTF8
totalMemory=16384
这里有2个地方需要注意:
-
totalMemory
这个配置用于配置分配给oracle的内存空间,单位是MB,这里我们根据自己服务器的实际情况配置即可,可以用free -g
来查看当前服务器的可用内存后,按需进行分配。
注意,如果这里分配的内存大于实际的剩余可用里程,那么后面创建数据库实例的时候会报错!! -
pdbName
和numberOfPDBs
这里填不填主要看是否需要创建容器数据库,如果不需要的话,那么这里不需要填写!如果和读者一样,需要创建容器数据库以及可拔插数据库的话,这里就需要配置。
pdbName用于配置可拔插数据库的数据名或者前缀,如果需要有多个可拔插数据库的话,这里可以指定前缀。如果只需要1个的话,就直接写名字就行。
numberOfPDBs
用于配置可拔插数据库的数量
(十六)创建数据库实例
配置完dbca.rsp后,我们就可以开始创建数据库实例了
su - oracle
cd $ORACLE_HOME
dbca -silent -createDatabase -responseFile /home/oracle/product/19.3/dbhome_1/assistants/dbca/dbca.rsp
创建数据库实例的过程一般会比较久,服务器配置比较差的话这里的时间可能还会更长,耐心等待一段时间后,我们就可以发现数据库实例已经成功创建出来了~
值得注意的是,通过这种方式创建的数据库实例,我们不需要人工再去调整监听器的服务配置,默认情况下就可以直连可拔插数据库。至此,Oracle19c的安装就告一段落了,我们可以在数据库连接工具上面尝试连接我们新创建的数据库实例。
补充
关于数据库实例的卸载
数据库实例既然可以创建,自然也就可以卸载,如果数据库实例创建完成后发现有些配置忘记配了或者配置错了,最终的实例不是自己想要的结果的话,我们可以通过命令来实现数据库实例的卸载。
dbca -silent -deleteDatabase -sysDBAUserName sys -sysDBAPassword <passwd> -sourceDB <SID>
其中-sysDBAUserName 和 -sysDBAPassword 参数可以不用显式地在命令中指定
数据库实例的连接
在上文中,我们一共创建了2个数据库,分别是容器数据库和可拔插数据库,这两个数据库都是支持连接的。而我们原先在dbca.rsp文件中已经定义好相关的用户名和密码,所以我们可以用sys用户作为dba角色来进行登录。
pdbAdminPassword=oracle
sysPassword=oracle
systemPassword=oracle
参考文章:
linux安装oracl19c https://segmentfault.com/a/1190000045799538
Linux(Centos7)静默安装Oracle19C https://www.cnblogs.com/Faker006/articles/17059792.html
静默安装Oracle12.2数据库 https://www.cnblogs.com/zfox2017/p/8555397.html
解压包方式安装Oracle19C https://www.cnblogs.com/wsum/p/15617175.html