云主机centos7.8静默安装oracle

2023年 7月 10日 28.1k 0

GUI安装oracle之后可以保存响应文件,这个响应文件可以保证正确性,然后用于其他主机的oracle安装

云主机centos7.8静默安装oracle

# oracle安装

首先重装centos7系统,这里是40G+500G的云主机,默认系统安装在了40G上面

换成阿里源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache  #生成缓存
yum  update  #必须升级内核, 不然杀毒软件会装不上
yum -y install deltarpm-3.6-3.el7.x86_64  #这个是杀毒的前提条件,其他场景无需安装

ps.发现天翼云主机用阿里源后,yum install很慢,特别是Server with GUI,大小1G ,下载就要1.5小时

可以测试一下其他软件源头,或者用默认的软件源,用最快的那个

timedatectl set-timezone Asia/Shanghai     #修改时区
timedatectl  #查看时区结果

安装杀毒软件,然后安装zabbix监控

如果安装的时候使用ftp传输安装包,切记一定要用二进制模式

首先cd /tmp #把当前目录设置为tmp

登陆ftp后执行binary

之后cd 到文件的目录

然后mget * 下载全部文件到tmp目录

这样传过来的包是完整的

导入做好的firewalld规则

firewalld的配置文件在/etc/firewalld/zones/public.xml

从已经做好的电脑上把这个public.xml下载,导入新的centos电脑上/etc/firewalld/zones/ 这个位置,

systemctl restart firewalld #生效

需要无限制开放4个端口端口,云主机的安全组也需要开通这几个端口,具体按具体端口操作

另外ssh端口需要开放给允许的ip,端口具体是哪几个端口要看自己另外的文档

注意:这些限制是阿里云的,其他机器,另有一套限制规则

firewall-cmd --permanent --zone=public --add-port=0000/tcp
firewall-cmd --permanent --zone=public --add-port=0000/tcp
firewall-cmd --permanent --zone=public --add-port=0000/tcp
firewall-cmd --permanent --zone=public --add-port=0000/tcp
#下面是富规则举例,把1521端口开放给192.168.1.0网段
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port port="1521" protocol="tcp" accept" 
firewall-cmd --reload  #防火墙配置更改生效
firewall-cmd --list-all   #查看防火墙配置
systemctl disable firewalld  #先关闭防火墙
systemctl stop firewalld  

挂载500G硬盘

lsblk   #查看硬盘信息,找到未使用的硬盘,假设硬盘名是vdb,要挂载到/data目录
mkdir /data
mkfs.ext4 /dev/vdb   #格式化硬盘
mount /dev/vdb /data/    #把格式化后的vdb硬盘挂载到/data
df -h #查看结果
最后写入配置文件
vim  /etc/fstab
加入一行/dev/vdb       /data            ext4    defaults   0       1
reboot 
df -h  #看看分区还在不

设置内存双倍的swap分区

swap分区要设置在有空间的地方,比如这里40G系统硬盘,再设置32G的swap分区就放不下(不会自动报错,但是会建立很小的swap!!),所以必须设置在/data目录,在/data里面建立/swap目录,里面存放swap文件

mkdir -p /data/swap/
cd /data/swap/
dd if=/dev/zero of=swapfile bs=32M count=1k  #建立swapfile,大小为bs*count = 32M * 1k = 32G
mkswap -f swapfile    #将生成的文件转换为Swap文件
swapon swapfile  #激活swap
free -h  #查看swap分区
vim /etc/fstab  #swap写入配置
#最后一行增加/data/swap/swapfile        swap       swap    sw        0       0    
#wq保存
reboot
free -h  #查看swap分区

正式安装步骤

安装前执行以下命令解除文件限制

chattr -i /etc/gshadow
chattr -i /etc/shadow
chattr -i /etc/group
chattr -i /etc/passwd

1. 安装oracle相关依赖包

yum -y install  gcc gcc-c++ make binutilscompat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-commonglibc-devel libaio libaio-devel libgcclibstdc++ libstdc++-devel unixODBC unixODBC-devel compat-libstdc++-33.x86_64 unzip zip

手动安装ODBC相关安装包 #依赖包需要手动上传安装

用ftp上传

rpm -ivh oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-odbc-11.2.0.1.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-sqlplus-11.2.0.1.0-1.x86_64.rpm
rpm -ivh pdksh-5.2.14-37.el5.x86_64.rpm

添加用户和相关的用户组

groupadd oinstall     #创建用户组
groupadd dba        #创建用户组dba
useradd -g oinstall -g dba -m oracle    #创建oracle用户,并加入到oinstall和dba用户组
passwd oracle                     #设置oracle用户的登录密码
#用oracle账号ssh过去,发现无法su - root
#解决: 将oracle账号加入wheel组
usermod -a -G wheel oracle
systemctl start firewalld
systemctl enable  firewalld #打开防火墙

建立将要用的目录并更改权限

mkdir    /data
mkdir   /data/oracle             #创建oracle数据库安装目录
mkdir  /data/oracle/app
mkdir   /data/oracle/app/oracle
mkdir  /data/oracle/app/oradata
mkdir   /data/oracle/app/oracle/product
chown -R oracle:oinstall /data/oracle     #设置目录所有者为oinstall用户组的oracle用户
chown -R oracle:oinstall /data/   #设置目录所有者为oinstall用户组的oracle用户

修改主机名和解析名

vim   /etc/hostname
vim  /etc/hosts
*.*.*.*(本机ip) hostname       #这里一定是ifconfig看到的真实ip!!!
reboot  #重启生效

*********************************************************************************************************

配置hosts有一个大坑!!只认ifconfig显示的真实ip!!

云主机的ip分为"纯纯的公网ip" 和 "内网ip做的映射”,

对于纯公网ip,hosts直接添加公网ip对应主机名就可以

对于内网ip做的映射,hosts需要添加内网ip+主机名

举例:

云主机centos7.8静默安装oracle

图中这种就是典型的映射,172的ip是用来映射到公网的,而192.168的ip是纯内网互通的

这种情况下hosts就必须改成

http://172.30.xxx.xxx 主机名

这里如果改错了,oracle装完后用PLsql连接,会提示错误代码12514

尽管ping公网ip是通的,但是oracle不认,只认ifconfig显示的真实ip

调整系统对oracle用户的资源限制

vi /etc/security/limits.conf    #在最后添加以下语句
oracle soft nproc 2047       #进程数软限制
oracle hard nproc 16384     #进程数硬限制
oracle soft nofile 1024       #文件数软限制
oracle hard nofile 65536     #文件数硬限制

上个步骤中的进程会话限制可以采用pam_limits认证模块来实现,通过修改登录程序login的PAM设置以启用该认证。

vi /etc/pam.d/login
session required /lib64/security/pam_limits.so    #64位系统这里要设置lib64
session required pam_limits.so

#调整内核参数和用户限制

vi /etc/sysctl.conf
fs.file-max = 6815744  #设置最大打开文件数
fs.aio-max-nr = 1048576
kernel.shmall = 2097152  #共享内存的总量
kernel.shmmax = 17179869183  #最大共享内存的段大小
kernel.shmmni = 4096   #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500  #可使用的IPv4端口范围
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

#注意,这里默认的shmmax有问题:参考Oracle的kernel.shmmax和kernel.shmall设置_不会推车的娘们的博客-CSDN博客_kernel.shmmax

#内存为 12G 时,该值为 12*1024*1024*1024-1 = 12884901887

#内存为 16G 时,该值为 16*1024*1024*1024-1 = 17179869183

#内存为 32G 时,该值为 32*1024*1024*1024-1 = 34359738367

#内存为 64G 时,该值为 64*1024*1024*1024-1 = 68719476735

#内存为 128G 时,该值为 128*1024*1024*1024-1 = 137438953471

sysctl -p   #使配置生效

修改/etc/profile文件,添加以下内容

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

切换到oracle用户,修改用户环境变量

su - oracle     #注意,所有的切换都加上  - 
vim  .bash_profile
export ORACLE_BASE=/data/oracle/app   #oracle数据库安装目录
export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1  #oracle数据库路径
export ORACLE_SID=orcl   #oracle启动数据库实例名
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin  #添加系统环境变量
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib  #添加系统环境变量
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK  #解决中文乱码问题
#文件修改完后执行:
source .bash_profile

安装

设置好正确的响应文件

解压两个安装包

unzip 解压

进入目录安装

cd /tmp/database

./runInstaller -silent -responseFile /tmp/db_install.rsp -ignorePrereq

之后会弹出两个shell脚本,root权限安装

之后是安装响应文件

su - oracle

$ netca /silent /responsefile /tmp/db_install.rsp /source /tmp/database

netstat -ntlp

配置监听:

cp  /data/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/samples/tnsnames.ora /data/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/
cp  /data/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/samples/listener.ora /data/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin

修改监听文件:

cd /data/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/
vim tnsnames.ora

在文件末尾新增,根据这个服务器的具体ip来改

orcl=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

修改监听文件listener.ora

cd /data/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/
vim listener.ora
LISTENER =
 (ADDRESS_LIST=
        (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.22.1)(PORT=1521))
        (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)))

SID_LIST_LISTENER=
   (SID_LIST=
        (SID_DESC=
          (GLOBAL_DBNAME=orcl)
          (SID_NAME=orcl)
          (ORACLE_HOME=/data/oracle/app/oracle/product/11.2.0/dbhome_1)
         (PRESPAWN_MAX=20)
          (PRESPAWN_LIST=
           (PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=2)(TIMEOUT=1))
         )
        )
       )

重启监听

lsnrctl stop
lsnrctl start

云主机centos7.8静默安装oracle

启动oracle

sqlplus / as sysdba

startup

说明启动成功,到此所有安装完成。可以新建一个用户然后通过Windows客户端去访问一下。

查看一下oracle字符是否乱码

su - oracle

sqlplus

看看是否有乱码出现

之后用system账号登陆, 密码为刚才设置的密码

oracle设置开机启动

su - oracle   #切换到oracle账户
echo $ORACLE_HOME   #查看一下安装路径

修改dbstart数据库自带启动脚本

vim  $ORACLE_HOME/bin/dbstart

将ORACLE_HOME_LISTNER=$1 改成 ORACLE_HOME_LISTNER=$ORACLE_HOME

su - root #切换到root账户

vim /etc/oratab #此文件是在安装oracle是执行的root.sh后生成的,是运行dbshut和dbstart的开关

里面的N 改为Y

vim /etc/rc.d/rc.local

末尾添加两行

su - oracle -c "/data/oracle/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start"
su - oracle -c "/data/oracle/app/oracle/product/11.2.0/dbhome_1/bin/dbstart"
chmod  755    /etc/rc.d/rc.local 
reboot

重启后

su - oracle #登录oracle账号

netstat -ntlp #查看一下1521的oracle端口是否在监听,判断自启动是否生效

如果没有看到1521,那么等几分钟,oracle自启动可能要消耗一点点时间

系统设置

用ulimit -a查看,扩大open file数量到65535,corefilesize改为unlimited

ulimit -n 65535

#注意看ulimit -a 的回显,每个参数后面都有修改参数对应的办法

yum install -y libaio
yum install  -y  telnet
yum install  -y  gdb
yum install  -y  openssl
yum install  -y   ntpdate
yum install  -y   net-tools  #这个是为了后面的netstat命令
yum -y install bash-completion   #这个是因为GUI卸载导致命令补全失效,所以装回来

vim /etc/security/limits.conf

末尾加入

* soft core unlimited
* hard core unlimited
* soft nofile 65535 
* hard nofile 65535

su - root

vim /etc/profile

1.删除最后几行export CPLUS 。。。。 export NLS_LANG

ps.如果没看到export的话,就不用删了,直接加入下面这些。 否则先删后加

2.重要!!!下面代码必须加入

export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/oracle/11.2/client64/
export LIBRARY_PATH=$LIBRARY_PATH:/usr/lib/oracle/11.2/client64/lib/
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib/:$LD_LIBRARY_PATH
export ORACLE_SID=orcl
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

修改/etc/ld.so.conf 之后ldconfig

vim  /etc/ld.so.conf

/usr/lib/oracle/11.2/client64/lib

ldconfig
ntpdate    ntp1.aliyun.com

crontab -e

15 8 * * * /usr/sbin/ntpdate ntp1.aliyun.com >> /root/ntpdate.log
15 20 * * * /usr/sbin/ntpdate ntp1.aliyun.com >> /root/ntpdate.log

保存

reboot
crontab -l #查看计划任务
netstat -ntlp  #查看监听端口

telnet测试一下是否通

su - oracle

sqlplus 看看还有无乱码,另外登陆一下看看

然后注意:data文件夹的所有者更改为oracle

到这一步,还有几个没弄好的地方:

1.oracle下.bash_profile环境变量中文编码改为:export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

#改完之后,命令行的sqlplus会乱码,但是PLSQL连接就不会乱码

#必须要这样改,最终是留给PLSQL使用的!!!

最后是内核加固

内核加固部分参照内部centos7内核加固文件弄,有些地方有和上面步骤重复的,避开就好

db_install.rsp oracle静默安装响应文件参考:

#两个地方需要注意按照实际的修改,1.主机名ORACLE_HOSTNAME=centos1  2.最小内存oracle.install.db.config.starterdb.memoryLimit=1111  3.oracle数据库密码oracle.install.db.config.starterdb.password.ALL=Hello123
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_AND_CONFIG
ORACLE_HOSTNAME=centos1
UNIX_GROUP_NAME=dba
INVENTORY_LOCATION=/data/oracle/oraInventory
SELECTED_LANGUAGES=zh_CN,en
ORACLE_HOME=/data/oracle/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/data/oracle/app
oracle.install.db.InstallEdition=EE
oracle.install.db.EEOptionsSelection=false
oracle.install.db.optionalComponents=
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=false
oracle.install.db.racOneServiceName=
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.config.starterdb.characterSet=ZHS16GBK
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=1111
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=Hello123
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/data/oracle/app/oradata
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
oracle.installer.autoupdates.option=SKIP_UPDATES
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论