记录在云服务器上安装配置Oracle的过程,以便忘记后回顾🤦♂️
系统及软件版本
- 腾讯云CentOS 7.6 64位 1核2G
- Oracle 11g
下载Oracle 11g
Oracle官方网站,我的机器安装的是CentOS7 64位系统,因此下载的Oracle版本也是64位的。然后将文件通过Xftp上传到 /db/
安装依赖包
-
安装之前,首先将yum源更改为aliyun源,这样下载速度快一些。
cd /etc mv yum.repos.d yum.repos.d.bak mkdir yum.repos.d wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum makecache
-
修改完成后,安装依赖包:
yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel
-
使用如下命令检查依赖包是否安装完整:
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel | grep "not installed"
-
发现 pdksh 没有安装,执行 yum -y install pdksh,发现CentOS 7 没有相关安装包可用,通过wget命令直接下载pdksh的rpm包,我下载到了/tmp/
wget -O /tmp/pdksh-5.2.14-37.el5_8.1.x86_64.rpm http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm
下载完成后,进入 /tmp/
cd /tmp rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm
再次检查依赖包是否安装完整
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel | grep "not installed"
添加oracle用户组和用户
-
执行命令:
groupadd oinstall groupadd dba groupadd asmadmin groupadd asmdba useradd -g oinstall -G dba,asmdba oracle -d /home/oracle
-
添加完成后,查看oracle用户
id oracle
初始化oracle用户的密码
passwd oracle
配置hostname(本地IP映射)
-
配置命令
vim /etc/hosts
127.0.0.1 centos-orcl
测试hostname
ping -c 3 centos-orcl
优化OS内核参数
-
kernel.shmmax 参数设置为物理内存的一半
vim /etc/sysctl.conf fs.aio-max-nr=1048576 fs.file-max=6815744 kernel.shmall=2097152 kernel.shmmni=4096 kernel.shmmax = 1073741824 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=1048586
使参数生效
sysctl -p
限制oracle用户的shell权限
-
编辑文件
vim /etc/security/limits.conf oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
vim /etc/pam.d/login session required /lib64/security/pam_limits.so session required pam_limits.so
vim /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
让环境变量立即生效
source /etc/profile
创建oracle安装目录
-
创建目录
mkdir -p /db/app/oracle/product/11.2.0 mkdir /db/app/oracle/oradata mkdir /db/app/oracle/inventory mkdir /db/app/oracle/fast_recovery_area chown -R oracle:oinstall /db/app/oracle chmod -R 775 /db/app/oracle
配置oracle用户环境变量
-
编辑文件
su - oracle vim .bash_profile umask 022 export ORACLE_HOSTNAME=centos-orcl export ORACLE_BASE=/db/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/ export ORACLE_SID=orcl export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH export LC_ALL="en_US" export LANG="en_US" export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK" export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
以上配置完成后,个人建议重启下系统
reboot
解压oracle压缩文件到/db
-
命令
cd /db/ unzip linux.x64_11gR2_database_1of2.zip -d /db unzip linux.x64_11gR2_database_2of2.zip -d /db
解压完成后
mkdir -p /db/etc/response/ cp /db/database/response/* /db/etc/response/ vim /db/etc/response/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY DECLINE_SECURITY_UPDATES=true UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oracle/inventory SELECTED_LANGUAGES=en,zh_CN ORACLE_HOSTNAME=centos-orcl ORACLE_HOME=/db/app/oracle/product/11.2.0 ORACLE_BASE=/db/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.isCustomInstall=true oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=dba
-
开始安装
su - oracle ./runInstaller -silent -ignorePrereq -responseFile /db/etc/response/db_install.rsp
安装期间可以使用tail命令监听oracle的安装日志,比如:
tail -f /db/app/oracle/inventory/logs/installActions2017-07-12_03-48-37PM.log
安装完成,提示
Successfully Setup Software
,回车即可。su root sh /db/app/oracle/inventory/orainstRoot.sh sh /db/app/oracle/product/11.2.0/root.sh
配置静默监听
-
配置命令
su - oracle netca /silent /responsefile /db/etc/response/netca.rsp
-
查看监听端口
netstat -tnulp | grep 1521
静默创建数据库
-
TOTALMEMORY
设置为总内存的80%vi /db/etc/response/dbca.rsp
GDBNAME = "orcl" SID = "orcl" SYSPASSWORD = "oracle" SYSTEMPASSWORD = "oracle" SYSMANPASSWORD = "oracle" DBSNMPPASSWORD = "oracle" DATAFILEDESTINATION =/db/app/oracle/oradata RECOVERYAREADESTINATION=/db/app/oracle/fast_recovery_area CHARACTERSET = "AL32UTF8" TOTALMEMORY = "1638"
-
执行静默建库
dbca -silent -responseFile /db/etc/response/dbca.rsp
-
查看oracle实例进程
ps -ef | grep ora_ | grep -v grep
-
查看监听状态
lsnrctl status
-
登录sqlplus,查看实例状态
sqlplus /nolog select * from v$version;
-
激活scott用户
alter user scott account unlock; alter user scott identified by tiger; select username,account_status from all_users;
-
创建用户并授权
create user lihtao identified by "232408" grant connect,resource to lihtao;
Navicat远程连接Oracle
-
开放1521端口
firewall-cmd --zone=public --add-port=1521/tcp --permanent firewall-cmd --reload
如果是服务器,则需要在安全组中配置相应的规则。
-
下载 instantclient-basic,解压压缩文件。
-
配置Navicat
设置Oracle开机启动
-
编辑文件
vi /db/app/oracle/product/11.2.0/bin/dbstart ORACLE_HOME_LISTNER=$ORACLE_HOME
vi /db/app/oracle/product/11.2.0/bin/dbshut ORACLE_HOME_LISTNER=$ORACLE_HOME
vi /etc/oratab orcl:/db/app/oracle/product/11.2.0:Y
vi /etc/rc.d/init.d/oracle #! /bin/bash # oracle: Start/Stop Oracle Database 11g R2 # # chkconfig: 345 90 10 # description: The Oracle Database is an Object-Relational Database Management System. # # processname: oracle . /etc/rc.d/init.d/functions LOCKFILE=/var/lock/subsys/oracle ORACLE_HOME=/db/app/oracle/product/11.2.0 ORACLE_USER=oracle case "$1" in 'start') if [ -f $LOCKFILE ]; then echo $0 already running. exit 1 fi echo -n $"Starting Oracle Database:" su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start" su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole" touch $LOCKFILE ;; 'stop') if [ ! -f $LOCKFILE ]; then echo $0 already stopping. exit 1 fi echo -n $"Stopping Oracle Database:" su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop" su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut" su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole" rm -f $LOCKFILE ;; 'restart') $0 stop $0 start ;; 'status') if [ -f $LOCKFILE ]; then echo $0 started. else echo $0 stopped. fi ;; *) echo "Usage: $0 [start|stop|status]" exit 1 esac exit 0
-
开机启动oracle
systemctl enable oracle
可能遇到的问题
-
交换空间
解决方法:创建交换空间
-
权限不足
为了防止oracle安装时没有文件或者文件夹的权限,建议通过
chown
命令更改/db
文件夹为oracle这个账号所有。chown -R oracle:oinstall /db/
参考:https://blog.csdn.net/Kenny1993/article/details/75038670
参考:https://blog.csdn.net/qq_35893120/article/details/80655645
参考:https://blog.csdn.net/sunhua2013/article/details/78396445