使用CentOS 7.x 静默安装 Oracle 12c r2

时间:2021-10-10 21:42:10

环境检查

物理内存不少于1.5G

硬盘可以空间不少于5G

swap分区空间不少于2G

支持256色以上显卡

cpu主频不小于550mHZ

 

JDK

 

1.安装必要安装包

yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33  gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libXi libXi*.i686 libXtst sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686

 

2.创建所需的操作系统组和用户并设置oralce账户密码

groupadd oinstall
groupadd dba
groupadd oper
useradd -g oinstall -G dba,oper oracle
 
passwd oracle
 

3.修改内核参数

vim /etc/sysctl.conf

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

sysctl -p

 

4. 修改用户内核限制参数

vim /etc/security/limits.d/20-nproc.conf 

oracle   soft   nofile    1024  

oracle   hard   nofile    65536  

oracle   soft   nproc    16384  

oracle   hard   nproc    16384  

oracle   soft   stack    10240  

oracle   hard   stack    32768  

oracle   hard   memlock    134217728  

oracle   soft   memlock    134217728

 

5.创建安装目录并设置权限

mkdir /u01

mkdir /u01/app

mkdir -p /u01/app/oracle/oradata 

mkdir -p /u01/app/oracle/oradata_back

chmod -R 775 /u01/app

chown -R oracle:oinstall /u01  

 

6.修改环境变量

vim /etc/profile

 

export TMP=/tmp                                   #日志存放位置

export TMPDIR=$TMP

  

export ORACLE_HOSTNAME=Oracle                #主机名

export ORACLE_UNQNAME=cdb1                  #库名称

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/12.2.0.1/db_1

export ORACLE_SID=cdb1                     #库名称

  

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$PATH

  

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib  

export PATH=/usr/sbin:$PATH  

export PATH=$ORACLE_HOME/bin:$PATH  

   

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib  

export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

 

source /etc/profile

 

7.移动oracle二进制包至/u01目录下

此处假定Oracle的数据库已经下载并解压在当前目录!

mv database /u01/database

chown -R oracle:oinstall /u01

 

8.配置Oracle安装响应文件

vim /u01/database/response/db_install.rsp

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0 

oracle.install.option=INSTALL_DB_SWONLY                     //30行安装类型,只装数据库软件

UNIX_GROUP_NAME=oinstall                                              //35行主机名称(hostname查询)

INVENTORY_LOCATION=/u01/app/oracle/oraInventory  //42行INVENTORY目录(不填就是默认值)

ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/db_1   //46行oracle目录

ORACLE_BASE=/u01/app/oracle                                          //51行

oracle.install.db.InstallEdition=EE                                                 //63行oracle版本

oracle.install.db.OSDBA_GROUP=dba                                //80行

oracle.install.db.OSOPER_GROUP=oper                                      //86行 自定义安装,否,使用默认组件

oracle.install.db.OSBACKUPDBA_GROUP=dba                          //91行  

oracle.install.db.OSDGDBA_GROUP=dba                                   //96行

oracle.install.db.OSKMDBA_GROUP=dba                          //101行

oracle.install.db.OSRACDBA_GROUP=dba                        //106行

oracle.install.db.config.starterdb.type=GENERAL_PURPOSE         //180行数据库类型

oracle.install.db.config.starterdb.globalDBName=cdb1     //185行

oracle.install.db.config.starterdb.SID=cdb1                       //190行

oracle.install.db.config.starterdb.characterSet=AL32UTF8   //216行

oracle.install.db.config.starterdb.password.ALL=密码   //259行

SECURITY_UPDATES_VIA_MYORACLESUPPORT=false                     //384行

DECLINE_SECURITY_UPDATES=true     //398行//设置安全更新(貌似是有bug,这个一定要选true,否则会无限提醒邮件地址有问题,终止安装。PS:不管地址对不对)

 

9.开始安装 Oracle

su – oracle

cd /u01/database

./runInstaller -force -silent -responseFile /u01/database/response/db_install.rsp

 

10.执行安装后的脚本

exit

/u01/app/oracle/oraInventory/orainstRoot.sh 

/u01/app/oracle/product/12.2.0.1/db_1/root.sh

 

11.设置Hosts文件

vim /etc/hosts

ifconfig命令显示的eth0的inet的值          Oracle

 

12.静默配置监听

su – oracle

 

·如果需要更改监听应答文件配置配置:

vim /u01/database/response/netca.rsp

 

netca -silent -responsefile /u01/database/response/netca.rsp

lsnrctl start

lsnrctl status

 

·如果需要更改监听配置:

lsnrctlstop

vim/u01/app/oracle/product/12.2.0.1/db_1/network/admin/listener.ora

lsnrctlstart

 

13.静默建立数据库

vim /u01/database/response/dbca.rsp

responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0//21行不可更改

gdbName=cdb1                                  //32

sid=cdb1                                           //42

databaseConfigType=SI                      //52

policyManaged=false             //74

createServerPool=false            //88

force=false                    //127

createAsContainerDatabase=true   //163

numberOfPDBs=1                             //172

pdbName=cdb1pdb                            //182

useLocalUndoForPDBs=true        //192

templateName=/u01/app/oracle/product/12.2.0.1/db_1/assistants/dbca/templates/General_Purpose.dbc                                       //223

emExpressPort=5500                         //273

runCVUChecks=false             //284

omsPort=0                                        //313

dvConfiguration=false            //341

olsConfiguration=false            //391

datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/       //401

datafileDestination={ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/           //411

recoveryAreaDestination={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}    //421

storageType=FS                                                       //431

characterSet=AL32UTF8                                     //468字符集创建库之后不可更改

nationalCharacterSet=AL16UTF16                     //478

registerWithDirService=false               //488

listeners=LISTENER                                            //526

variables=DB_UNIQUE_NAME=cdb1,ORACLE_BASE=/u01/app/oracle,PDB_NAME=,DB_NAME=cdb1,ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/db_1,SID=cdb1           //546

initParams=undo_tablespace=UNDOTBS1,memory_target=796MB,processes=300,db_recovery_file_dest_size=2780MB,nls_language=AMERICAN,dispatchers=(PROTOCOL=TCP) (SERVICE=cdb1XDB),db_recovery_file_dest={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME},db_block_size=8192BYTES,diagnostic_dest={ORACLE_BASE},audit_file_dest={ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump,nls_territory=AMERICA,local_listener=LISTENER_CDB1,compatible=12.2.0,control_files=("{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl", "{ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}/control02.ctl"),db_name=cdb1,audit_trail=db,remote_login_passwordfile=EXCLUSIVE,open_cursors=300      //555

sampleSchema=false                //565

memoryPercentage=40                            //574

databaseType=MULTIPURPOSE                 //584

automaticMemoryManagement=true    //594

totalMemory=0                                        //604

dbca -silent -createDatabase  -responseFile  /u01/database/response/dbca.rsp  

 

查看oracle的状态:

ps -ef | grep ora_ | grep -v grep

lsnrctlstart

 

14.数据库操作

sqlplus / as sysdba                           // 登录数据库

select open_mode from v$database;  

select status from v$instance;        //查看数据库状态

alter user sys identified by oracle;      //改sys超级管理员密码

alter user system identified by oracle; //改system管理员密码

exit                                             // 退出数据库

sqlplus sys/oracle as sysdba        //使用sys超级管理员登录数据库

startup                                       // 启动数据库

select name from v$database;      //查看数据库

shutdown abort                          //关闭数据库

conn system/oracle                     //切换用户conn后面直接跟用户名和密码就可以

 

15.设置开机自启动oracle和监听器

su - oracle

vim /u01/app/oracle/product/12.2.0.1/db_1/bin/dbstart

将ORACLE_HOME_LISTNER=$1,修改为ORACLE_HOME_LISTNER=$ORACLE_HOME

vim /u01/app/oracle/product/12.2.0.1/db_1/bin/dbshut

将ORACLE_HOME_LISTNER=$1,修改为ORACLE_HOME_LISTNER=$ORACLE_HOME

vim /etc/oratab

cdb1:/u01/app/oracle/product/11.2.0/db_1:Y

vim /etc/rc.local

su - oracle -c 'dbstart'

su - oracle -c 'lsnrctl start'

chmod+x /etc/rc.local

16.为oracle数据库添加支持的版本链接

vim /u01/app/oracle/product/12.2.0.1/db_1/network/admin/sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8//设置oracle连接协议许可的最低版本

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8//设置oracle连接协议许可的最低版本

oerr ora 错误代码             //查看出错信息

 

17.后续问题

ORA-28000: the account is locked //原因,登入密码错误次数超过预定值

ALTER USER [username] ACCOUNT UNLOCK;

 

ORA-01017:invalid username/password:logon denied //原因,密码错误(可能是编码问题导致的!尤其是远程连接!!!!)

alter user <用户名> identified by <新密码>;

!现已发现编码问题导致的连接错误,在 Oracle SQL Developer 中不会出现,在其他第三方图形化的数据库管理软件中,有几率出现 !


 

18.linux下oracle方向键和退格键的乱码问题

使用readlinerlwrap工具,来解决乱码问题

 

//安装readline

wget ftp://ftp.gnu.org/gnu/readline/readline-7.0.tar.gz

tar -xvf readline-7.0.tar.gz

cd readline-7.0

./configure && make && make install

或者

yum install -yncures-devel readline-devel

 

//安装rlwrap

wget https://fossies.org/linux/privat/rlwrap-0.43.tar.gz

tar -xvf rlwrap-0.43.tar.gz

cd rlwrap-0.43

./configure && make && make install

 

//更改环境变量增加别名

vim /home/oracle/.bash_profile 

alias sqlplus='rlwrap sqlplus'

 

遇到问题:

rlwrap: errorwhile loading shared libraries: libreadline.so.7: cannot open shared objectfile: No such file or directory

 

解决方案:

find /usr -name libreadline.so.7 -print  //在/usr的范围下搜索缺少文件

cp /搜索到的路径 /usr/lib/libreadline.so.7

 

 

 

附录

完成oracle11g数据库的安装后,相关服务器会自动启用,但并不表示下次开机后oracle服务器仍然可用。下面将介绍oracle的基本服务组件,以及如何编写服务脚本来控制oracle数据库系统的自动运行。

根据上面的安装过程,oracle11g的数据库软件将安装在变量ORACLE_HOME所北定的位置。例如/opt/oracle/product/11.2.0/dbhome_1/,而各种服务器组件程序(也包括sqlplus命令)正是位于其中的bin子目录下。

Oracle11g数据库的基本服务组件如下所述:(注:oracle服务组件最好以oracle用户身份运行如:su - oracle)

lsnrctl:监听器程序,用来提供数据库访问,默认监听TCP 1521端口。

dbstart、dbshut:数据库控制程序,用来启动、停止数据库实例。

emctl:管理器控制工具,用来控制OEM平台的开启与关闭,OEM平台通过1158端口提供HTTPS访问,5520端口提供TCP访问。

为了方便执行oracle11g的服务组件程序,建议对所有用户的环境配置作进一步的优化调整、补充PATH路径、oracle终端类型等变量设置。除此以外,还应该修改/etc/oratab配置文件,以便运行dbstart时自动启用数据库实例。

 

$vim /etc/oratab

   cdb1:/u01/app/oracle/product/11.2.0/db_1:Y  //“N”改成“Y”

   这样就可以通过dbstart启动此实例,也可以通过dbshut关闭此实例了。

   $ dbshut /u01/app/oracle/product/12.2.0.1/db_1/

   ProcessingDatabase instance "hello": log file    /u01/app/oracle/product/12.2.0.1/db_1/shutdown.log

   此时所有oracle的进程关闭,监听器也停止。

   $dbstart /u01/app/oracle/product/12.2.0.1/db_1/

   Processing Database instance "hello": logfile     /u01/app/oracle/product/12.2.0.1/db_1/startup.log

   此时监听器工作,hello实例运行,再次查看监听器状态。

 

 


参考链接:

https://docs.oracle.com/en/database/

http://blog.51cto.com/12790274/2062955

https://www.jianshu.com/p/36a78274a00e

https://www.cnblogs.com/wuxie1989/p/5888595.html 

https://my.oschina.net/loverGDH/blog/214796

...........................................................(曾经查看过,但是现在找不到的文章)


注意:

以上文字从我写的DOCX文档复制过来后出现了一些问题,少了空格的问题尤为严重,现已更改大部分错误部分,如发现其他部分请评论说明。