静默安装oracle
oracle依赖环境包
一、创建用户属组
[root@localhost ~]# groupadd oinstall
[root@localhost ~]# groupadd dba
[root@localhost ~]# groupadd oper
[root@localhost ~]# useradd -g oinstall -G dba,oper oracle
[root@localhost ~]# passwd oracle #修改oracle用户密码
二、创建目录并赋予权限
[root@localhost ~]# mkdir /u01/
[root@localhost ~]# mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
[root@localhost ~]# mkdir -p /u01/app/oraInventory
[root@localhost ~]# chown -R oracle:oinstall /u01/*
[root@localhost ~]# chmod -R 775 /u01/*
三、解压oracle安装包
[root@localhost ~]# su oracle
[oracle@localhost dbhome_1]# unzip LINUX.X64_193000_db_home.zip #解压oracle安装包到当前路径
四、配置limits限制参数
编辑limits.conf,加入下面几行代码
[root@localhost app]# vim /etc/security/limits.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
orcale hard nproc 16384
orcale soft stack 10240
orcale hard stack 32768
orcale hard memlock 134217728
orcale soft memlock 134217728
五、PAM验证
在login文件中加入下面一行代码
[root@localhost ~]#
vim /etc/pam.d/login
session required pam_limits.so
六、修改内核参数
在sysctl.conf中添加下面代码
[root@localhost app]# cat /etc/sysctl.conf | grep -v ^#
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops =1
net.core.rmem_default =262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
kernel.shmmax是共享内存,用内存 * 1024 * 1024 * 1024 * 0.9 算出结果。
kernel.shmall=kernel.shmmax / kernel.shmmni 算出来
如果你想了解下面的参数功能,请参考官方文档。
使用sysctl -p 使之生效。
七、设置oracle用户环境变量
打开下面文件,添加以下内容。
[oracle@wangxin root]$ vim /home/oracle/.bash_profile
export PATH
export TMP=/tmp
export LANG=en_US
export TMPDIR=$TMP
export ORACLE_UNQNAME=orcl
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/bin:$ORACLE_HOME/bin
八、扩展虚拟内存
注意:如是内存小于4G,才需要执行此步骤,否则后面会报内存不足的问题,有些虚拟机会报,购买的云服务器若是小于4G,则必须执行此步骤,若是大于4G,则跳到下一步。
8.1 添加swap分区
先切换至root用户,使用dd命令创建名为swapfile 的swap交换文件,count指定扩展4G虚拟内存。
[root@localhost ~]#
dd if=/dev/zero of=/var/swapfile bs=1024 count=4194304
8.2、对交换文件格式化并转换为swap分区
[root@localhost ~]# mkswap /var/swapfile
8.3、挂载并且激活分区
[root@localhost ~]# swapon /var/swapfile
8.4、查看新的swap分区是否激活
[root@localhost ~]#
free -h
total used free shared buff/cache available
Mem: 1.7G 395M 76M 304K 1.3G 1.2G
Swap: 4.0G 212M 3.8G
8.5、修改 fstab 配置,设置开机自动挂载该分区,添加如下代码
[root@localhost ~]#
vi /etc/fstab
/var/swapfile swap swap defaults 0 0
8.6、查看是否使用了虚拟内存
[root@localhost ~]# free
九、安装oracle数据库(oracle用户)
配置文件位置
数据库安装配置文件 /u01/app/oracle/product/19.3.0/install/response/db_install.rsp
监听配置文件 /u01/app/oracle/product/19.3.0/assistants/netca/netca.rsp
数据库创建配置文件 /u01/app/oracle/product/19.3.0/assistants/dbca/dbca.rsp
端口号配置文件 /u01/app/oracle/product/19.3.0/db_home1/network/admin/listener.ora
db_install.rsp为模板文件,先备份再修改
[root@localhost dbhome_1]$ chmod -R 755 /u01/*
//此处不可以为777
[root@localhost dbhome_1]$ chown -R oracle:oinstall /u01/*
[root@localhost dbhome_1]$ su oracle
[oracle@localhost root]$ cd /u01/app/oracle/product/19.3.0/dbhome_1/
[oracle@localhost dbhome_1]$ cd install/response/
[oracle@localhost response]$ cp db_install.rsp db_install.rsp.bak
编辑db_install.rsp文件
[oracle@localhost response]$ vi db_install.rsp
修改如下参数
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
**#****db版本 EE企业版 SE标准版**
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.rootconfig.executeRootScript=false
执行安装程序,以oracle用户执行
[oracle@localhost response]$ $ORACLE_HOME/runInstaller -silent -responseFile $ORACLE_HOME/install/response/db_install.rsp
如果报错
You can find the log of this install session at:
/tmp/InstallActions2023-03-20_09-12-49PM/installActions2023-03-20_09-12-49PM.log
[FATAL] Error in invoking target 'libasmclntsh19.ohso libasmperl19.ohso client_sharedlib' of makefile '/u01/app/oracle/product/19.3.0/dbhome_1/rdbms/lib/ins_rdbms.mk'. See '/tmp/InstallActions2022-12-26_10-15-49AM/installActions2022-12-26_10-15-49AM.log' for details.
Moved the install session logs to:
/u01/app/oraInventory/logs/InstallActions2023-12-26_09-12-49PM
说明oracle依赖没有安装成功。需重新安装。
安装成功结果如下
重新开一个窗口登录root账号,执行下面2个脚本(root用户)
第一个脚本是对目录和用户组权限的一些修改,第二个是检查日志是否有错误。
[root@localhost ~]# /u01/app/oraInventory/orainstRoot.sh
[root@localhost ~]# /u01/app/oracle/product/19.3.0/dbhome_1/root.sh
若出现如下错误,
CAUSE: Some of the mandatory prerequisites are not met. See logs for details. /u01/app/oraInventory/logs/InstallActions2021-08-20_11-08-55PM/installActions20 21-08-20_11-08-55PM.log
执行,忽略报错,再执行上面两个脚本
[oracle@localhost logs]$ $ORACLE_HOME/runInstaller -ignorePrereq -silent -responseFile $ORACLE_HOME/install/response/db_install.rsp
在这里会有有一个问题,若是只生成了root.sh,没有orainstroot.sh脚本,说明你之前装过oracle,且卸载的时候没有删除/etc/oraInst.loc文件,此时就只会生成root.sh一个脚本, 只执行者一个即可。
十、启动默认监听
若是遇到下面的问题,你一定是忘记重新应用环境变量了
[oracle@localhost dbhome_1]$ lsnrctl status bash: lsnrctl: command not found...
重新应用环境变量,查看监听状态。
[oracle@localhost dbhome_1]$ source /home/oracle/.bash_profile
[oracle@localhost dbhome_1]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-AUG-2021 07:56:07
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
我们现在打开监听
[oracle@localhost response]$ lsnrctl start
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 20-MAR-2023 21:24:33
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Starting /u01/app/oracle/product/19.3.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Log messages written to /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 20-MAR-2023 21:24:33
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
The listener supports no services
The command completed successfully
监听已经打开了,端口1521
十一、创建新的监听
安装监听的时候一定要把默认监听停掉,否则会报错
[oracle@localhost root]$ netca /silent /responseFile $ORACLE_HOME/assistants/netca/netca.rsp
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /u01/app/oracle/product/19.3.0/dbhome_1/assistants/netca/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
The information provided for this listener is currently in use by other software on this computer.
Check the trace file for details: /u01/app/oracle/cfgtoollogs/netca/trace_OraDB19Home1-2108218AM3113.log
Oracle Net Services configuration failed. The exit code is 1
我们停掉监听重新建立监听。
[oracle@localhost root]$ lsnrctl stop
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-AUG-2021 08:31:48
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1539)))
The command completed successfully
[oracle@localhost root]$ netca /silent /responseFile $ORACLE_HOME/assistants/netca/netca.rsp
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /u01/app/oracle/product/19.3.0/dbhome_1/assistants/netca/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Listener "LISTENER" already exists.
Oracle Net Services configuration successful. The exit code is 0
这个时候我们启动监听,可以发现默认监听是1521端口,新建的监听是1539端口。
[oracle@localhost root]$ lsnrctl start
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 21-AUG-2021 08:34:42
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Starting /u01/app/oracle/product/19.3.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/wangxin/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=wangxin)(PORT=1539)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521_1)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1539)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 21-AUG-2021 08:34:42
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/wangxin/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=wangxin)(PORT=1539)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521_1)))
The listener supports no services
The command completed successfully
十二、创建数据库
静默安装数据库先修改创建响应文件
我们先给响应文件做一个备份。响应文件在$ORACLE_HOME/assistants/dbca下面
[oracle@localhost dbhome_1]$ cd assistants/dbca/
[oracle@localhost dbca]$ ls
dbca.rsp doc jlib templates
[oracle@localhost dbca]$ cp dbca.rsp dbca.rsp.bak
然后我们对响应文件做一个修改
gdbName=orcl
sid=orcl
databaseConfigType=SI
templateName=General_Purpose.dbc
sysPassword=JAVANUMBERONE
systemPassword=JAVANUMBERONE
datafileDestination={ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/
characterSet=AL32UTF8
nationalCharacterSet=UTF8
listeners=LISTENER
initParams=processes=800,sga_target=1536MB,pga_aggregate_target=512MB
上面的gdbname是全局数据库名称,sid是数据库实例名,可以自己设定,syspassword和systempassword是数据库管理员密码,可以自己随意设定。然后指定了字符集,监听名字。最后面是指定了内存参数,原则上是sga_target占75%,pga_aggregate_target占25%。我电脑只有2G内存,就设定了这样,内存大的可以自行设定换取更好的性能。
开始安装数据库,安装数据库持续时间很长。
[oracle@localhost dbca]$ dbca -silent -createDatabase -responseFile /u01/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp
若是出现报错
[FATAL] [DBT-50000] Unable to check for available memory.
[FATAL] [DBT-50001] Unable to check the value of kernel parameter {0}
则执行安装脚本添加一个参数,去掉内存检查。
[oracle@localhost root]$ dbca -silent -createDatabase -J-Doracle.assistants.dbca.validate.ConfigurationParams=false -responseFile /u01/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp
出现报错
[oracle@localhost dbca]$ dbca -silent -createDatabase -responseFile /u01/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp
[FATAL] [DBT-10503] Template file is not specified.
解决方案:
dbca.rsp配置文件中templateName=General_Purpose.dbc
出现报错
[oracle@localhost dbca]$ dbca -silent -createDatabase -responseFile /u01/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp
[FATAL] [DBT-07505] Selected listener (LISTENER) does not exist. ACTION: Specify an existing listener.
新建监听即可解决
[oracle@localhost dbca]$ netca /silent /responseFile $ORACLE_HOME/assistants/netca/netca.rsp
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /u01/app/oracle/product/19.3.0/dbhome_1/assistants/netca/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/u01/app/oracle/product/19.3.0/dbhome_1/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
[oracle@localhost dbca]$ lsnrctl stop
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 20-MAR-2023 22:01:22
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522)))
The command completed successfully
[oracle@localhost dbca]$ netca /silent /responseFile $ORACLE_HOME/assistants/netca/netca.rsp
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /u01/app/oracle/product/19.3.0/dbhome_1/assistants/netca/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Listener "LISTENER" already exists.
Oracle Net Services configuration successful. The exit code is 0
[oracle@localhost dbca]$ lsnrctl start
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 20-MAR-2023 22:02:12
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Starting /u01/app/oracle/product/19.3.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1522)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1522)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1522)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 20-MAR-2023 22:02:12
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1522)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1522)))
The listener supports no services
The command completed successfully
[oracle@localhost dbca]$ dbca -silent -createDatabase -responseFile /u01/app/oracle/product/19.3.0/dbhome_1/assistants/dbca/dbca.rsp
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
Prepare for db operation
10% complete
Copying database files
40% complete
Creating and starting Oracle instance
42% complete
46% complete
you50% complete
54% complete
60% complete
Completing Database Creation
66% complete
69% complete
70% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/u01/app/oracle/cfgtoollogs/dbca/orcl.
Database Information:
Global Database Name:orcl
System Identifier(SID):orcl
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.
到此数据库安装就已经完成了,我们可以使用命令测试一下。
[oracle@localhost root]$ sqlplus / as sysdba
启动时报错
SQL> startup
ORA-01081: cannot start already-running ORACLE - shut it down first
解决办法
sql>shutdown immediate关闭再进行
sql>startup nomount重新开启就可以了
然后使用startup命令启动数据库
也可以使用pl/sql工具连接数据库测试。如果是用购买的云服务器,且用第三方工具连接,请在服务器控制台安全策略配置开放端口。