CentOS 7部署Oracle数据库

准备环境

材料的准备

Oracle 11g安装包:
百度云链接:https://pan.baidu.com/s/1eVnOtliqTCw0cyrIg7T8sA
提取码: 访问我的博客获取 https://if010.com/database/install_oracle.html

系统的准备

基本设置

# 关闭selinux
setenforce 0
sed -i '/SELINUX/{s/enforcing/disabled/}' /etc/selinux/config

# 关闭防火墙,禁止开机启动
systemctl disable firewalld.service
systemctl stop firewalld.service

安装图形化界面

# 安装X Window System和GNOME Desktop
yum groupinstall -y “X Window System” "GNOME Desktop"

# 启用图形化界面
startx

systemctl get-default,该命令查看当前是那种模式.
systemctl set-default graphical.target,开机启动图形界面.
systemctl set-default multi-user.target,开机启动字符界面模式.
reboot,重启系统之后才会生效哟~

工具、补丁、依赖安装

yum -y install 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*

yum -y update

swap分区

swap分区有两种方式,一种是新建磁盘分区作为swap分区,另一种是用文件作为Swap分区。这里使用的是后者,想用前者的可以参考–>这个链接<–

SWAP空间大小建议值:

物理内存大小(RAM) SWAP空间大小
2GB~8GB 2倍于RAM
8GB~32GB 1.5倍于RAM
32GB以上 32GB
# 创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)
dd if=/dev/zero of=/root/swapfile bs=1M count=8192

# 格式化为交换分区文件,建立swap的文件系统
mkswap /root/swapfile

# 启用交换分区文件
swapon /root/swapfile

# 使系统开机时自启用,在文件/etc/fstab中添加一行
/root/swapfile swap swap defaults 0 0

# 查看Swap分区大小
grep SwapTotal /proc/meminfo

修改系统内核参数

vim /etc/sysctl.conf
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 1048576
kernel.shmmax = 4294967295
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

内核参数的详解:
kernel.shmmax
查看linux服务器的位数:getconf LONG_BIT
32位linux系统:可取最大值为4GB(4294967296bytes)-1byte,即4294967295。建议值为多于内存的一半,所以如果是32为系统,一般可取值为4294967295。32位系统对SGA大小有限制,所以SGA肯定可以包含在单个共享内存段中。若物理内存大于4GB,也取4GB-1byte。

64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE即可,可以取物理内存-1byte。例如,如果为12GB物理内存,可取12x1024x1024x1024-1=12884901887,SGA肯定会包含在单个共享内存段中,而我这里是4G,所以是4x1024x1024x1024-1=4294967295。

kernel.shmall
查看系统默认的值:getconf PAGESIZE
默认是4096(字节4K一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB÷4KB=16777216KB÷4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求。

运行命令进行参数修改
/sbin/sysctl -p
检查参数是否生效
/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

设置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	pam_limits.so

vim /etc/pam.d/su
session required pam_limits.so

vim /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

创建用户和组

创建dba组

/usr/sbin/groupadd -g 200 dba

创建oinstall组

/usr/sbin/groupadd -g 201 oinstall

创建oracle用户

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

修改oracle用户密码

passwd oracle

创建安装目录并授权

创建目录/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

设置oracle用户环境变量

ORACLE_BASE,ORACLE_HOME,ORACLE_SID,NLS_LANG请根据实际情况进行设置。
ORACLE_SID唯一的标识一个实例,一般以数据库名加上实例号为命名规范,例如:有两个实例,数据库名称为suseora,实例1命名为suseora1,实例2命名为suseora2,依次类推,这里_数据库实例设置为orcl_。
NLS_LANG格式为区域_语言.字符集,字符集必须和数据库保持一致。

# 切换到oralce用户
su oralce

# 编辑用户环境变量
vim .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

# 执行变量环境生效命令
source .bash_profile

# 执行命令,确认环境变量
env

拷贝Oralce安装程序,并解压

远程拷贝

scp [email protected]:/data/Softwares/linux-oracle-11g/linux.x64_11gR2_database_1of2.zip /opt/oraadm/
scp [email protected]:/data/Softwares/linux-oracle-11g/linux.x64_11gR2_database_2of2.zip /opt/oraadm/

解压

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 /opt/oraadm/grid
chmod 770 -R /opt/oraadm/grid
chown oracle:dba -R /opt/oraadm/grid

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

搭建Xstart环境

yum install xorg-x11-xauth.x86_64
yum install xterm
yum install xclock

# 配置DISPLAY变量
vim /etc/profile
export DISPLAY=:0.0

安装Oracle数据库

使用oracle用户登录图形化界面,执行/opt/oraadm/database/runInstaller启动安装程序
图形化启动截图

取消配置安全更新
第一步骤截图

选择安装方式,选择“Install database software only”,单击“NEXT”。
第二步骤截图

指定安装类型,选择“Single instance database installation”
第三步骤截图

选择安装语言,这里我只选择了英文,如果想选中文的话可以在左侧栏寻找后添加
第四步骤截图

选择软件版本,选择“Enterprise Edition”,单击“Next”。
第五步骤截图

指定安装目录
Oracle Base中填写“/opt/oracle”,即oracle用户的环境变量ORACLEBASE。
SoftwareLocation中填写“/opt/oracle/product/11gR2/db”,即oracle用户的环境变量ORACLE_BASE。
第六步骤截图

这里默认即可,安装时的路径和组设置
第七步骤截图

设置操作系统用户组,Database Administrator Group 选择“dba”,Database Operator Group 选择“dba”,单击“Next”。
第八步骤截图

安装概要检查结果:对于shmall问题:点击fix and check again,打开新的终端按照步骤进行,然后点击OK,继续检查。
第九步骤截图

安装概要检查,检查没有问题,单击“Install”按钮进行安装。由于系统中已经存在更新的软件包,而对于semmni,在内核设置处已经设置,所以以下错误可以忽略。
第九步骤截图

确认没有问题之后可以点击“Finish”进行正式安装
第十步骤截图

安装中。。。。
第十一步骤截图

安装完成
第十二步骤截图

安装过程中会出现如下报错

报错一

解决方案:
切换回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

报错二

解决方案:
需要修改,/opt/oracle/product/11gR2/db/sysman/lib/ins_emagent.mk文件中的配置,将文件中的

$(SYSMANBIN)emdctl:
    $(MK_EMAGENT_NMECTL)

修改为

$(SYSMANBIN)emdctl:
    $(MK_EMAGENT_NMECTL) -lnnz11

报错三

解决方案:
根据提示执行脚本即可

配置Oracle监听器

使用oracle用户登录图形化界面,执行netca启动NETCA,选择“Listener configuration”。

因为没有端口,所以默认选择添加“Add”即可

默认的端口名称

选择TCP

选择端口范围1500-1600,这里默认使用1521

是否添加其他的监听端口,这里选“No”不添加

到这里就完成了,直接“Next”->"Finsh"即可

创建Oracle数据库

使用oracle用户登录图形化界面,执行dbca启动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.

connect role(连接角色)
临时用户,特指不需要建表的用户,通常只赋予他们connect role.
connect是使用oracle简单权限,这种权限只对其他用户的表有访问权限,包括select/insert/update和delete等。
拥有connect role 的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym)、回话(session)和其他数据的链(link)

resource role(资源角色)
更可靠和正式的数据库用户可以授予resource role。
resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。

dba role(数据库管理员角色)
dba role拥有所有的系统权限
包括无限制的空间限额和给其他用户授予各种权限的能力。system由dba用户拥有

语法:grant connect, resource to 用户名;
例子:grant connect, resource to test;
用户:创建用户必须为其指定表空间,如果没有显性指定默认表空间,则指定为users表空间;创建用户后,可以在用户上,创建表、存储过程等等其他数据库对象;
表:是数据记录的集合;

创建过程: 表空间—>用户—>表;
所属关系: 表空间 包含 用户 包含 表;

猜你喜欢

转载自blog.csdn.net/qq_32262243/article/details/127835117
今日推荐