CentOS7安装Oracle数据库的全流程

一、准备工作

1、下载Oracle的安装介质
Oracle 11g R2 Linux版本有两个压缩文件包,都需下载安装才会完整。
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip
下载地址:网盘分享
链接:https://pan.baidu.com/s/1Y9hwNvlm5JIDMNLa0P_csQ
提取码:mhms
链接:https://pan.baidu.com/s/1QXQHy_FYRh2KmbpfQpXMng
提取码:gae2
2、检查设置服务器内核安装环境
(1)检查操作系统补丁包
(1)以root用户登录系统。
(2)使用uname -r命令查看kernel版本
(3)在root账号下执行如下脚本命令

for dep_rpm in elfutils-devel unixODBC* unixODBC.i686 unixODBC-devel.i686 binutils.x86_64 compat-libcap1.x86_64 compat-libstdc++-33.i686 compat-libstdc++-33.x86_64 gcc.x86_64 gcc-c++.x86_64 glibc.i686 glibc.x86_64 glibc-devel.i686 glibc-devel.x86_64 ksh libaio.i686 libaio.x86_64 libaio-devel.i686 libaio-devel.x86_64 libgcc.i686 libgcc.x86_64 libstdc++.i686 libstdc++.x86_64 libstdc++-devel.i686 libstdc++-devel.x86_64 libXi.i686 libXi.x86_64 libXtst.i686 libXtst.x86_64 make.x86_64 sysstat.x86_64 vim epel-release lrzsz unzip xorg*;do yum install $dep_rpm -y;done

(2)修改内核参数
(1)通过修改文件/etc/sysctl.conf,增加要修改的内核参数值

fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 524288
kernel.shmmax = 2147483647
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
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304

查看linux服务器的位数:getconf LONG_BIT
内核参数的详解:
(1)kernel.shmmax
32位linux系统:可取最大值为4GB(4294967296bytes)-1byte,即4294967295。建议值为多于内存的一半,所以如果是32为系统,一般可取值为4294967295。32位系统对SGA大小有限制,所以SGA肯定可以包含在单个共享内存段中。若物理内存大于4GB,也取4GB-1byte。
64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE即可,可以取物理内存-1byte。例如,如果为12GB物理内存,可取12_1024_1024*1024-1=12884901887,SGA肯定会包含在单个共享内存段中。
(2)kernel.shmall
查看系统默认的值-----------getconf PAGESIZE
默认是4096(字节 4K
一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB /4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求。
(2)运行命令进行参数修改。

/sbin/sysctl -p

(3)检查参数是否生效

# /sbin/sysctl -a | grep sem
# /sbin/sysctl -a | grep shm
# /sbin/sysctl -a | grep file-max
# /sbin/sysctl -a | grep aio-max-nr
# /sbin/sysctl -a | grep net.ipv4.ip_local
# /sbin/sysctl -a | grep rmem
# /sbin/sysctl -a | grep wmem

3、设置oracle用户的shell限制
(1)以root用户登录。
步骤 2 修改文件/etc/security/limits.conf,追加以下内容(如果不存在)。

oracle  soft    nproc   2047
oracle  hard    nproc   16384
oracle   soft    nofile  1024
oracle   hard    nofile  65536

(2)修改文件/etc/pam.d/login,追加以下内容。

session  required   pam_limits.so

(3)修改文件/etc/pam.d/su,追加以下内容。

session required pam_limits.so

(4)修改文件/etc/profile,追加以下内容。

if [ $USER = "oracle" ]; then 
   if [ $SHELL = "/bin/ksh" ]; then 
       ulimit -u 16384 
       ulimit -n 65536 
   else 
       ulimit -u 16384 -n 65536 
   fi 
fi

4、检查SWAP空间大小
(1)以root用户登录。
(2)检查物理内存大小。

# grep MemTotal /proc/meminfo

1881276 KB【物理内存过于小?】
(3)检查SWAP空间大小。

# grep SwapTotal /proc/meminfo

4063228 KB
SWAP空间大小建议值如图所示。
在这里插入图片描述
5、创建用户和组
(1)以root用户登录。
(2)创建dba组,先检查dba组是否存在和/或组id是否一致。

扫描二维码关注公众号,回复: 14437069 查看本文章
#grep dba /ect/group

无输出则表示dba组不存在。如果dba组已存在,但组id不一样,则使用以下命令删除dba组。

# /usr/sbin/groupdel dba

创建dba组。

#/usr/sbin/groupadd -g 200 dba

(3)创建oinstall组。
先检查oinstall组是否存在和/或组id是否一致。

#grep oinstall /etc/group

无输出则表示oinstall组不存在。如果oinstall组已存在,但组id不一致,则使用以下命令删除oinstall组。

#/usr/sbin/groupdel oinstall

创建oinstall组。

#/usr/sbin/groupadd -g 201 oinstall

(4)创建oracle用户。
检查oracle用户是否存在和/或用户id是否一致。

#grep oracle /etc/passwd

无输出则表示Oracle用户不存在。如果Oracle用户已存在,但用户id不一致,则使用以下命令删除Oracle用户。

# /usr/sbin/userdel -rf oracle

创建oracle用户。

#/usr/sbin/useradd -u 300 -g oinstall -G dba -d /home/oracle -s /bin/bash -m oracle 

修改oracle用户密码。

passwd oracle

6、创建安装目录并授权
(1)以root用户登录。
(2)赋予目录正确的权限。
对文件系统/opt/oracle赋权。

# mkdir /opt/oracle;chown -R oracle:oinstall /opt/oracle
# chmod -R 775 /opt/oracle

对文件系统/opt/oraadm赋权。

# mkdir /opt/oraadm ;chown -R oracle:dba /opt/oraadm
# chmod -R 770 /opt/oraadm

创建目录/usr/local/bin并赋权。
检查/usr/local/bin目录是否存在,如不存在则需创建该目录,并赋予755权限。

#mkdir /usr/local/bin
#chmod 755 /usr/local/bin
#ll /usr/local |grep bin

赋权/tmp目录权限。
检查/tmp是否具有1777权限,如不具备则赋予/tmp目录1777权限。

#chmod 1777 /tmp
#ll / |grep tmp

7、设置oracle用户环境变量
(1)以oracle用户登录操作系统。
(2)编辑环境变量文件。
注意:
ORACLE_BASE,ORACLE_HOME,ORACLE_SID,NLS_LANG请根据实际情况进行设置。
ORACLE_SID唯一的标识一个实例,一般以数据库名加上实例号为命名规范,例如:有两个实例,数据库名称为suseora,实例1命名为suseora1,实例2命名为suseora2,依次类推,这里_数据库实例设置为orcl_。
NLS_LANG格式为区域_语言.字符集,字符集必须和数据库保持一致。

cd /home/oracle/.bash_profile
$ vi .bash_profile


export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/11gR2/db
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib
export LD_LIBRARY_PATH
SHLIB_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/rdbms/lib
export SHLIB_PATH
# Set shell search paths:
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH:/usr/local/bin
# CLASSPATH must include the following JRE locations:
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

(3)执行source .bash_profile命令,使环境变量生效。
(4)执行env命令,确认环境变量。
8、拷贝安装文件并创建安装目录
(1)以root用户登录。
(2)将oracle安装文件以二进制的方式拷贝至节点1的“/opt/oraadm”中,如下所示。如果没有oraadm则创建并授权777权限。
注:从服务器下载文件到本地某路径:scp [email protected] /home/mysql/MySQL-server-5.6.27-1.rhel5.x86_64.rpm C:下载软件
将本地某文件上传至服务器:scp C:下载软件jdk-8u144-linux-x64.tar.gz [email protected] /home/mysql
(3)解压缩安装文件,并赋予权限。
安装unzip命令

yum install -y unzip zip

更改oracle介质zip为777权限

# cd /opt/oraadm
# unzip /opt/oraadm/linux.x64_11gR2_database_1of2.zip
# unzip /opt/oraadm/linux.x64_11gR2_database_2of2.zip
# chmod 770 -R /opt/oraadm/database
# chown oracle:dba -R /opt/oraadm/database
# mkdir grid
# chmod 770 -R /opt/oraadm/grid
# chown oracle:dba -R /opt/oraadm/grid

(4)创建Inventory目录
创建目录/opt/oraInventory,并使oracle:oinstall为其所有者。
以root用户登录,创建目录/opt/oraInventory。

# mkdir /opt/oraInventory

使oracle:oinstall为该目录所有者。

# chown oracle:oinstall /opt/oraInventory
# chmod 770 /opt/oraInventory

9、搭建Xstart环境
(1)首先保证linux服务器已安装“xorg-x11-xauth”软件包,否则会报错:“已拒绝X11转移申请”。
如果没有安装图形界面,则需要先安装图形化安装包。
切换为root账号,配置Display

 [root@vlxcndcz01bpmth ~]#yum install xorg-x11-xauth.x86_64
 [root@vlxcndcz01bpmth ~]#yum install xterm
 [root@vlxcndcz01bpmth ~]#yum install xclock


 方式一:
 [root@vlxcndcz01bpmth ~]#export DISPLAY=172.20.10.3:0.0(本地IP而不是服务器IP):0.0
 方式二:
 #编辑/etc/profile文件,添加内容:export DISPLAY=:0.0
[root@vlxcndcz01bpmth ~]# vi /etc/profile
[root@vlxcndcz01bpmth~]# cat /etc/profile
#省略……
export DISPLAY=172.20.10.3:0.0

(2)配置xmanager
确保主机名配置一致否则,会报INS-06101错误
[INS-06101] IP address of localhost could not be determined
在这里插入图片描述
(3)打开xstart配置连接主机IP以及配置命令,点击运行/usr/bin/xterm -ls -display $DISPLAY
在这里插入图片描述
报错:DISPLAY not set. Please set the DISPLAY and try again.
解决:切换到root下,执行export DISPLAY=172.20.10.3:0.0,再执行xhost +,再切换到oracle
su oracle
/opt/oraadm/database/runInstaller
在这里插入图片描述
取消配置安全更新
在这里插入图片描述
不勾选“I wish to receive security updates via My Oracle Support”,选择“Next”。
在这里插入图片描述
取消安全更新,单击“Yes”。
选择安装方式,选择“Install database software only”,单击“NEXT”。
在这里插入图片描述
指定安装类型,选择“Single instance database installation”
在这里插入图片描述
选择安装语言
在这里插入图片描述
选择软件版本,选择“Enterprise Edition”,单击“Next”。
在这里插入图片描述
指定安装目录,在Oracle Base中填写“/opt/oracle”,即oracle用户的环境变量O R A C L E B A S E 。 在 S o f t w a r e L o c a t i o n 中 填 写 “ / o p t / o r a c l e / p r o d u c t / 11 g R 2 / d b ” , 即 o r a c l e 用 户 的 环 境 变 量 ORACLE_BASE。 在Software Location中填写“/opt/oracle/product/11gR2/db”,即oracle用户的环境变量ORACLE
BASE。在SoftwareLocation中填写“/opt/oracle/product/11gR2/db”,即oracle用户的环境变量ORACLE_HOME。
在这里插入图片描述
在这里插入图片描述
设置操作系统用户组,Database Administrator Group 选择“dba”,Database Operator Group 选择“dba”,单击“Next”。

在这里插入图片描述
安装概要检查,检查没有问题,单击“Install”按钮进行安装。由于系统中已经存在更新的软件包,以下错误可以忽略。
在这里插入图片描述
安装概要检查结果:
在这里插入图片描述
1、对于shmall问题:点击fix and check again,打开新的终端按照步骤进行,然后点击OK,继续检查。
在这里插入图片描述
2、对于semmni,在内核设置处已经设置,忽略;packages安装包也可忽略。
3、architecture—
在这里插入图片描述
oracle的安装版本不正确,本系统需要安装linux64位的
5、安装过程中会出现如下报错,解决方案如下。
错误1---------
在这里插入图片描述

解决方案===
切换回oracle用户,修改
/opt/oracle/product/11gR2/db/ctx/lib/ins_ctx.mk文件中的配置
ctxhx: $(CTXHXOBJ)
$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) 修改为
ctxhx: $(CTXHXOBJ)
-static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/stdc.a
错误2---------
在这里插入图片描述
解决方案===
需要修改,/opt/oracle/product/11gR2/db/sysman/lib/ins_emagent.mk文件中的配置,将文件中的
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL) 修改为
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL) -lnnz11

继续:打开终端以root用户执行以下命令,执行的时候出现一些简单问题,直接点击enter即可
在这里插入图片描述
安装成功,如下提示
在这里插入图片描述
最后检查安装错误,cat /opt/oracle/product/11gR2/db/install/make.log

二、配置ORACLE监听器

配置数据库连接字符串:协议,地址,端口等
(1)启动NETCA。
用oracle用户登录节点1启动NETCA。选择“Cluster configuration”。
在这里插入图片描述在这里插入图片描述
默认的端口名称
在这里插入图片描述
选择TCP
在这里插入图片描述
选择端口范围1500-1600
在这里插入图片描述
提示端口被占用?
勾选Automatic Maintenance Tasks界面中的“Enable automatic maintenance tasks”。
解决方案修改.bash_profile中的ORACLE_HOSTNAME为hostname
在这里插入图片描述

三、创建oracle数据库

使用操作系统oracle用户调用DBCA进行安装
(1)以oracle用户登录节点1。
(2)启动DBCA安装界面。
在这里插入图片描述
注意:只有 su - oracle才能启用oracle环境,而非su oracle
su oracle只切换用户,而非环境变量,环境变量仍然是root的,不会执行oracle主目录中的profile脚本。
上述报错解决-------export DISPLAY=172.20.10.3:0.0
输入dbca后无反应=======在Xstart中调用终端而非Xshell中。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
填写数据库名
在这里插入图片描述
在这里插入图片描述
接下来都是默认设置,图片略过
DBCA运行完毕,数据库建立,完成数据库创建操作。
在这里插入图片描述
登录数据库进行验证。
数据库实例启动后,登录数据库确认数据库状态。
在这里插入图片描述

四、oracle创建其他用户

oracle的权限分为系统权限和对象权限。系统权限可以让用户执行特定的指令,比如创建用户create table创建表,grant any privilege为用户赋予任何系统权限。对象权限指的是用户可以对各个对象进行操作,delete允许用户删除表或视图的行,select允许用户从表或视图、序列(sequences)与快照(snapshots)查询信息。
每个oracle用户都有一个名字和口令,并拥有一些由其创建的表、视图和其他资源。oracle角色(role)就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型)。用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。一个用户也可以直接给其他用户授权。
一、创建用户
oracle内部有两个建好的用户:system和sys。用户可直接登录到system用户以创建其他用户,因为system具有创建别 的用户的 权限。 在安装oracle时,用户或系统管理员首先可以为自己建立一个用户。
语法[创建用户]: create user 用户名 identified by 口令[即密码];
例子: create user test identified by test;
语法[更改用户]: alter user 用户名 identified by 口令[改变的口令];
例子: alter user test identified by 123456;
二、删除用户
语法:drop user 用户名;
例子:drop user test;
若用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字cascade,可删除用户所有的对象,然后再删除用户。
语法: drop user 用户名 cascade;
例子: drop user test cascade;
三、授权角色
oracle为兼容以前版本,提供三种标准角色(role):connect/resource和dba.
(1)讲解三种标准角色:
1》. connect role(连接角色)
–临时用户,特指不需要建表的用户,通常只赋予他们connect role.
–connect是使用oracle简单权限,这种权限只对其他用户的表有访问权限,包括select/insert/update和delete等。
–拥有connect role 的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym)、回话(session)和其他 数据的链(link)
2》. resource role(资源角色)
–更可靠和正式的数据库用户可以授予resource role。
–resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。
3》. dba role(数据库管理员角色)
–dba role拥有所有的系统权限
–包括无限制的空间限额和给其他用户授予各种权限的能力。system由dba用户拥有
(2)授权命令
语法: grant connect, resource to 用户名;
例子: grant connect, resource to test;
用户:创建用户必须为其指定表空间,如果没有显性指定默认表空间,则指定为users表空间;创建用户后,可以在用户上,创建表、存储过程等等其他数据库对象;
表:是数据记录的集合;
创建过程: 表空间—>用户—>表;
所属关系: 表空间 包含 用户 包含 表;

五、管理工具sql developer进行连接

附:
如果本机安装有Oracle数据库,用PLSQL Dev 连接数据库自然没有什么问题,但是如果本机没有安装oracle 客户端,要连接非本地机的oracle DB,那么一种方法就是在本地也安装Oracle,或者安装类似oracle develop 10g开发套件,这些安装方法比较麻烦,安装下来占用磁盘空间和系统资源,特别是oracle数据库启动的时候大量占用系统服务和资源,不是理想的方法。
安装使用过PLSQL Dev都知道,要连接数据库,必须配置TNS(Transparence Network Substrate),而直接安装PLSQL Dev 之后,本机是没有Oracle HOME的注册表项,连网络连接配置项都没有,PLSQL Dev 就是一个文本编辑器而已。
PLSQL Dev 连接远程oracle的一个有效解决方法使使用OCI。ORACLE调用接口(Oracle Call Interface简称OCI)提供了一组可对ORACLE数据库进行存取的接口函数,通过在第三代程序设计语言中进行调用可达到存取ORACLE数据库的目的。本文介绍PLSQL Dev如何使用OCI的实例连接远程数据库的方法。
1、windows安装sql developer并连接centos的oracle
(1)安装
下载地址:
链接:https://pan.baidu.com/s/1ojXGysHDCpf80EXussa5EA
提取码:5ddp
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)连接设置
1、下载轻量级免安装的客户端:
链接:https://pan.baidu.com/s/10Id7JzTGJ3L4YTVPXct2Pg
提取码:1zrm
解压到C:下载软件instantclient_12_2
拷贝服务端目录“/opt/oracle/product/11gR2/db/network/admin/tnsnames.ora”到客户端的“nstantclient-basic-nt-11.2.0.3.0NETWORKADMIN“目录,该目录没有的话需要创建。
修改tnsnames.ora的内容

# tnsnames.ora Network Configuration File: /opt/oracle/product/11gR2/db/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.114)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

2、开启oracle监听器
su - oracle
lsnrctl ------查看监听器
status ------状态
start ------打开监听
报错1:
listener does not currently konw of service requested in connect descriptor(监听程序当前无法识别连接描述符中请求的服务)
*检查tnsnames.ora的内容;
*检查oracle是否启动:
sqlplus /nolog;
conn as sysdba;
select status from v$instance;—查看视图,查看当前实例的状态。
若没有启动,则startup;进行启动。不要使用startup nomount启动,连接时会报错。
在这里插入图片描述

2、centos上安装sql developer并连接该服务器的oracle
(1)下载
(2)连接设置

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

猜你喜欢

转载自blog.csdn.net/m0_67394360/article/details/126098896
今日推荐