centos系统安装
本次安装的oracle版本为11gr2
oracle准备工作
检查硬盘分区
比如说我们要安装在根目录下,我要需要看根目下是否有足够的空间来存放,大概需要15G的空间。
查看swap分区:最少需要3g以上
关闭防火墙
systemctl stop firewalld
安装oracle 11gR2 依赖的组件包
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 pdksh numactl-devel glibc-headers
需要添加额外的两个rmp包,进行强制安装
https://pan.baidu.com/s/1UpJux1wsX4wJJRe352mKKg
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm --force --nodeps rpm -ivh compat-libstdc++-33-3.2.3-61.x86_64.rpm --force --nodeps
如果还缺少包可以参考下面的
Oracle11gR2在CentOS7.4上安装,缺少如下19个包
yum install -y gcc libaio glibc.i686 compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf-devel glibc-devel glibc-headers gcc-c++ libaio-devel libaio-devel.i686 libgcc.i686 libstdc++ libstdc++.i686 unixODBC unixODBC.i686 unixODBC-devel unixODBC-devel.i686 ksh
调整内核参数
部分参数,在Oracle安装过程中,可自动修复(使用root用户执行Oracle安装程序给出的修复脚本),但是有部分不能自动修复。
vim /etc/sysctl.conf
末尾添加
fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 536870912 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 fs.aio-max-nr = 1048576
使得参数生效
sysctl -p
修改配置文件
修改vim /etc/security/limits.conf
为了提高软件运行性能,需要对oracle用户设置限制。
linux对用户所使用的文件以及进程数都做了限制,我们需要修改下
在末尾添加如下设置
#oracle settings oracle soft nproc 16384 oracle hard nproc 16384 oracle soft nofile 65536 oracle hard nofile 65536
修改vi /etc/pam.d/login
#添加以下内容:
session required /lib/security/pam_limits.so session required pam_limits.so
修改vi /etc/profile
验证当前的ulimits,并启用。
#添加以下内容:
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
#修改vi /etc/csh.login
#添加以下内容:
if ( $USER == "oracle" ) then limit maxproc 16384 limit deors 65536 endif
创建oracle账号
groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle
设置密码
创建oracle的安装目录
需要把这些目录的权限交给oracle用户
mkdir -p /oracleData/oracle mkdir -p /oracleData/oralnventory mkdir -p /oracleData/software chown -R oracle:oinstall /oracleData/oracle chown -R oracle:oinstall /oracleData/software chown -R oracle:oinstall /oracleData/oralnventory
设置用户环境变量
切换到orace用户
#su oracle
在oracle目录下执行
$ vi .bash_profile
#添加以下内容:
ORACLE_SID=ORCL; export ORACLE_SID ORACLE_BASE=/oracleData/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin;
ORACLE_BASE下是admin和product
ORACLE_HOME下则是ORACLE的命令、连接库、安装助手、listener等等一系列的东东。
这只是ORACLE自己的定义习惯。ORACLE_HOME比ORACLE_BASE目录要更深一些。也就是说:ORACLE_HOME=$ORACLE_BASE/product/version
ORACLE_BASE是oracle的根目录,ORACLE_HOME是oracle产品的目录。
简单说,你如果装了2个版本的oracle,那么ORACLE_BASE可以是一个,但ORACLE_HOME是2个
全局数据库名用于区别分布式数据库各个不同机器上的实例。
SID用于区别同一台机器上的不同实例,
即一个用于外部区分。
一个用于内部区分。
配置生效
source .bash_profile su - oracle
加了”-“,是以login shell登陆的,所以会设置环境变量,如果不加,使用的还是切换前用户的环境变量
配置hosts文件
vim /etc/hosts
添加ip和主机名
安装oracle
把软件上传到创建的文件夹下,并按照1,2的顺序解压,就会有database目录
使用静默的方式安装
进入到database目录下
有三个文件
db_install.rsp:安装应答
dbca.rsp:创建数据库应答
netca.rsp:建立监听、本地服务名等网络设置的应答
修改response目录中的db_install.rsp文件的参数:
oracle.install.option=INSTALL_DB_SWONLY ORACLE_HOSTNAME=bushro UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/oracleData/oralnventory SELECTED_LANGUAGES=en,zh_CN ORACLE_HOME=/oracleData/oracle/product/11.2.0/db_1 ORACLE_BASE=/oracleData/oracle oracle.install.db.InstallEdition=EE oracle.install.db.isCustomInstall=false oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=oinstall 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.installExampleSchemas=false oracle.install.db.config.starterdb.enableSecuritySettings=true oracle.install.db.config.starterdb.password.ALL=oracle oracle.install.db.config.starterdb.control=DB_CONTROL oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false oracle.install.db.config.starterdb.automatedBackup.enable=false SECURITY_UPDATES_VIA_MYORACLESUPPORT=false DECLINE_SECURITY_UPDATES=true
进行安装
./runInstaller -silent -responseFile /oracleData/software/database/response/db_install.rsp -ignorePrereq
根据提示查看日志
tail -f /oracleData/oralnventory/logs/installActions2019-09-08_12-28-09AM.log • 1
出现这个说明安装成功
需要执行两个相关修改权限的脚本(要切换为root用户),执行完毕切换回oracle用户
进入oracleData/oracle/product/11.2.0/db_1/ 执行root.sh脚本
进入/oracleData/oralnventory 执行orainstRoot.sh脚本
配置静默监听
通过response文件运行netca, 生成sqlnet.ora和listener.ora文件, 位于$ORACLE_HOME/network/admin目录下
netca -silent -responsefile /oracleData/software/database/response/netca.rsp
报错
需要设置一个DISPLAY环境变量:设置为本机ip就好了
export DISPLAY=192.168.233.129:0.0
再次运行成功,就可以查看1521端口是否在监听
静默建库
修改response目录下的dbca.rsp文件:
SID=“ORCL” //149行SID
GDBNAME = “ORCL.bushro” //78行
dbca -silent -responseFile /oracleData/software/database/response/dbca.rsp
屏幕突然清屏,刚刚开始不知道是怎么回事以为出错了,百度了下说是要输入账号和密码,输入账号后需要按enter,然后输入密码按enter,需要等待。。。
一开始不知道创建了%1然后删除了,再次执行命令出错说SID已经存在
删除SID的方式
/oracleData/oracle/oradata 目录下的ORCL
/oracleData/oracle/admin 目录下的ORCL
用root用户以远程登录模式编辑etc/oratab,删除最后一 行: xxx:/xx/oracle:N ,保存 退出问题解决。
再次执行命令
启动oracle
sqlplus / as sysdba
又报错了
修改oracle用户目录下的.bash_profile把ORACLE_SID小写改成大写
重新加载 su - oracle
如果还不行的话试试这个方法
https://www.jianshu.com/p/3eec26c6ac43
手动注册监听
在/oracleData/oracle/product/11.2.0/db_1/network/admin/listener.ora下添加监听
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (SID_NAME = orcl) ) )
注:里面的orcl根据你安装的数据库实例名确定
基本操作
启动监听、关闭监听、查看监听状态
lsnrctl start lsnrctl stop lsnrctl status
- 数据库启动分为三个步骤:
SQL> startup nomount; //启动实例,不加载数据库
SQL> alter database mount; //加载数据库(挂起)
SQL> alter database open; //打开数据库
等同于 SQL> startup - 进入sqlplus,命令:
sqlplus /nolog - 管理员sysdba权限登陆oracle:
conn /as sysdba - 启动服务(实例):
startup
- 关闭服务(实例):
shutdown immediate
开机启动设置
在etc/init.d目录下创建,开机启动脚本
#!/bin/bash #desciption:Oracle 自动启动和关闭数据库实例和监听 #chkconfig:345 66 66 # #Set ORA_HOME TO to be equivalent to the $ORACLE_HOME #from which you wish to execute dbstart and dbshut; #设置你自己的 oracle 安装路径。 #Set ORA_OWNER to the user id of the owner of the #Oracle database in ORA_HOME. export ORA_BASE=/oracleData/oracle export ORA_HOME=/oracleData/oracle/product/11.2.0/db_1; export ORACLE_USER=oracle #判断 dbstart 文件 case $1 in start) su - "$ORACLE_USER"<<EOO lsnrctl start sqlplus /nolog<<EOS connect / as sysdba startup EOS emctl start dbconsole EOO touch /var/lock/subsys/$scriptname ;; stop) su - "$ORACLE_USER"<<EOO lsnrctl stop sqlplus /nolog<<EOS connect / as sysdba shutdown immediate EOS emctl stop dbconsole EOO rm -f /var/lock/subsys/scriptname ;; *) echo "Usage: $0 {start|stop}" ;; esac
在上面的这个脚步中,EOO或EOS一个分界符,这个分界符可以用你喜欢的任意字符代替。当Shell在执行脚步时,发现"<<"后,就把下个词当做分界符,而在分界符后面的内容都被当做输入,直到Shell再次发现此分界符时,才认为输入结束。也就是说分界符都是成对出现的。
修改脚本权限,让它变为可执行的
chmod 777 oracle
我们就可以使用简单的指令来启动oracle服务了
service oracle start service oracle stop