一、下载Oracle数据库
链接地址:https://www.oracle.com/cn/database/technologies/oracle-database-software-downloads.html#19c
下载Linux x86-64
的数据库
二、前期必要配置
2.1 禁用SElinux
[root@bgxt ~]# vim /etc/selinux/config
安装完成之后,需要使用命令shutdown -r now
来重启服务器才能生效
2.2 设置网络(选做)
手动配置IP地址,防止地址频繁更改
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
2.3 配置防火墙
方法一:关闭防火墙(不建议)
[root@localhost ~]# systemctl disable firewalld.service #关闭开机启动防火墙
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙
方法二:配置防火墙
[root@bgxt ~]# firewall-cmd --permanent --zone=public --add-port=1521/tcp
[root@bgxt ~]# firewall-cmd --list-ports # 查看所有端口号开发那的情况
1521/tcp
2.4 host配置
[root@localhost ~]# vi /etc/hosts
查看主机名称,使用命令
[root@bgxt ~]# hostname bgxt
2.5 网络配置
[root@bgxt ~]# cd /etc/sysconfig/network-scripts/
[root@bgxt network-scripts]# vim ifcfg-lo
追加HOSTNAME=healthmanager
2.6 内核配置
根据自身配置选择合适的内核参数,然后执行sysctl –p
命令使配置生效,配置参数不要加入中文,容易报错!Linux内核设置
4G:
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744 #设置最大打开文件数
fs.aio-max-nr = 1048576
kernel.shmall = 1048576 #共享内存的总量,8G内存设置:20971524k/1024/1024
kernel.shmmax = 2147483648#最大共享内存的段大小
kernel.shmmni = 4096 #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500 #可使用的IPv4端口范围
net.core.rmem_default = 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 10485768G:
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744 #设置最大打开文件数
fs.aio-max-nr = 1048576
kernel.shmall = 2097152 #共享内存的总量,8G内存设置:20971524k/1024/1024
kernel.shmmax = 4294967296 #最大共享内存的段大小
kernel.shmmni = 4096 #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500 #可使用的IPv4端口范围
net.core.rmem_default = 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 104857616G:
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744 #设置最大打开文件数
fs.aio-max-nr = 1048576
kernel.shmall = 4194304 #共享内存的总量,8G内存设置:2097152*4k/1024/1024
kernel.shmmax = 8564768768 #最大共享内存的段大小
kernel.shmmni = 4096 #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500 #可使用的IPv4端口范围
net.core.rmem_default = 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048576
2.7 登录认证
[root@localhost ~]# vi /etc/pam.d/loginvi
在最后一行追加session required /lib/security/pam_limits.so
2.8 进程会话配置
[root@localhost ~]# vi /etc/security/limits.conf
追加
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
2.9 修改版本
[root@localhost ~]# vi /etc/centos-release
将原来的注释掉,追加为Red Hat Enterprise Linux 6
2.10 VNC配置
详情查看VNC安装篇
三、数据库相关配置
3.1 用户配置
[root@localhost ~]# groupadd dba
[root@localhost ~]# groupadd oinstall
[root@localhost ~]# useradd oracle -g oinstall -G dba
[root@localhost ~]# passwd oracle
3.2 路径配置
[root@localhost ~]# mkdir -p /u01/app/oracle
[root@localhost ~]# cp /etc/skel/.bash_profile /u01/app/oracle
[root@localhost ~]# cp /etc/skel/.bashrc /u01/app/oracle
[root@localhost ~]# cp /etc/skel/.bash_logout /u01/app/oracle
[root@localhost ~]# mkdir -p /u01/app/oracle/product/11.2.0/db_1
[root@localhost ~]# chown -R oracle:oinstall /u01
[root@localhost ~]# chmod 755 -R /u01
3.3 环境变量配置
[root@localhost ~]# su - oracle
[oracle@bgxt ~]$ vim .bash_profile
在export PATH前追加
# 文件目录
export ORACLE_BASE=/u01/app/oracle
# 数据库目录
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID= <perfapp>
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_UNQNAME=$ORACLE_SID
注意:export ORACLE_SID= 中的perfapp替换成自己的数据库服务名
修改完以上操作
[oracle@bgxt ~]$ source .bash_profile
3.4 安装包检查
请浏览下面网页,根据下面各系统版本查看本系统安装ORACLE所需要的包
http://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm#BHCFACHG
检查命令格式:rpm -qa | grep 名字
以下包需检查:
binutils-2.23.52.0.1-55.el7.x86_64
compat-libcap1.x86_64 0:1.10-7.el7
gcc-c++-4.8.5-4.el7.x86_64
gcc-4.8.5-4.el7.x86_64
glibc-2.17-105.el7.x86_64
glibc-devel-2.17-105.el7.x86_64
ksh-20120801-22.el7_1.2.x86_64
libaio-0.3.109-13.el7.x86_64
libaio-devel-0.3.109-13.el7.x86_64
libgcc-4.8.5-4.el7.x86_64
libstdc++-4.8.5-4.el7.x86_64
libstdc++-devel-4.8.5-4.el7.x86_64
libXi-1.7.4-2.el7.x86_64
libXtst-1.2.2-2.1.el7.x86_64
make-3.82-21.el7.x86_64
sysstat-10.1.5-7.el7.x86_64
用yum安装完。(安装前请检查网络是否畅通)
yum install gcc -y
yum install glibc -y
yum install ksh -y
yum install libaio- -y
yum install elfutils-libelf -y
yum install compat-libcap -y
四、安装数据库
4.1上传压缩包
将步骤一的安装包通过相关软件上传到服务器上。
推荐免费上传工具:https://www.filezilla.cn/
4.2 解压缩安装包
[root@localhost ~]# unzip Linux-x86-64_1of2.zip
[root@localhost ~]# unzip Linux-x86-64_2of2.zip
[root@localhost ~]# mv database /u01/app
[root@localhost ~]# chown –R oracle:oinstall database/
4.3 安装
[root@localhost ~]# su oracle
[oracle@localhost ~]# cd /u01/app/database
[oracle@localhost ~]# ./runlnstaller
问题点1:如果使用
[oracle@localhost ~]# ./runlnstaller
运行时出现方框文字,在命令前加上LANG=en_US,最后的效果是[oracle@localhost ~]# LANG=en_US ./runlnstaller
问题点2:
使用vncserver安装窗口乱成一团,无法打开。在命令加上
-jreLoc /usr/lib/jvm/jre-1.8.0
,最后的效果是[oracle@localhost ~]# LANG=en_US ./runlnstaller -jreLoc /usr/lib/jvm/jre-1.8.0
4.3.1 安装步骤
1、是否将报错信息通过邮件的方式发送给Oracle。一版情况下去掉就可以了。
2、选择安装的方式。
3、安装数据库的类型。
4、设置字符集和超级管理员密码
5、执行用户组和Oracle安装的总目录
6、检查环境是否正常。
7、提示警告信息
关于Packages下出现的包问题:由于在3.4步骤中已经针对性的安装了一些包,在Oracle中无法查到版本所以会报错。不用在意。
解决完必要的错误后,勾选Igore All去忽略其他操作。
8、概要信息展示
9、安装出错解决
报错信息:error in invoking target 'agent nmhs' of makefile
解决办法:
su - oracle
vi $ORACLE_HOME/sysman/lib/ins_emagent.mk
找到这行信息
$(MK_EMAGENT_NMECTL)
修改成:
$(MK_EMAGENT_NMECTL) -lnnz11
10、设置初始化账户密码
11、执行命令
注意:切换到root用户
12、安装完成。
4.4 开启监听
[oracle@localhost ~]$ lsnrctl start #开启监听服务
4.5 登入数据库
[oracle@localhost ~]$ sqlplus / as sysdba #登入
4.6 配置SGA和PGA大小
PGA:PGA(程序缓存区)与SGA(系统全局区)类似,都是Oracle数据库系统为会话在服务器内存中分配的区域。
SGA:SGA系统全局区顾名思义,是对系统内的所有进程都是共享的。当多个用户同时连接到一个例程时,所有的用户进程、服务进程都可以共享使用这个SGA区
4.6.1 配置SGA大小
[oracle@localhost ~]$ sqlplus / as sysdba #登入
SQL> show parameter sga;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 2464M
sga_target big integer 0
SQL> alter system set sga_max_size=6144M scope=spfile;
System altered
SQL> alter system set sga_target=6144M scope=spfile;
System altered
SQL> shutdown immediate
SQL> startup
Total System Global Area 8017100800 bytes
Fixed Size 2181944 bytes
Variable Size 2483029192 bytes
Database Buffers 5502926848 bytes
Redo Buffers 28962816 bytes
ps:
sga_max_size = (服务器内存大小80%)50%
sga_target = = (服务器内存大小80%)50%
以下参数给的是服务器的16G。
4.6.1.1 ORACLE报错:ORA-00823
在执行两条alter语句后,可能会出现
SQL> startup
ORA-00823 Specified value of sga_target greater than sga_max_size
提示信息:sga_targe大于指定的sga_max_size
解决办法:
SQL> create pfile='/home/oracle/init0321.ora' from spfile;
File created.
SQL> !vi /home/oracle/init0321.ora
然后修改:
*.memory_target=1073741824
*.sga_max_size=805306368
*.sga_target=805306368
SQL> startup pfile='/home/oracle/init0321.ora';
SQL> create spfile from pfile='/home/oracle/init0321.ora';
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
4.6.1.2 ORACLE报错:ORA-00851
在执行两条alter语句后,可能会出现
SQL> startup
ORA-00844: Parameter not taking MEMORY_TARGET into account
ORA-00851: SGA_MAX_SIZE 1073741824 cannot be set to more than MEMORY_TARGET 872415232.
解决办法:
检查SGA_MAX_SIZE的参数是否合理,检查标准是SGA_MAX_SIZE<MEMORY_TARGET。
操作参考4.6.1.1的处理
4.6.2 配置PGA大小
[oracle@localhost ~]$ sqlplus / as sysdba #登入
SQL> show parameter pga; 查看当前pga大小
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 2464M
sga_target big integer 0
SQL> alter system set workarea_size_policy=auto scope=both; 修改workarea_size_policy为AUTO
System altered
SQL> show parameter workarea;
SQL> alter system set pga_aggregate_target=8G scope=both; 修改pga_aggregate_target为8G
System altered
SQL> show parameter pga
SQL> SELECT * FROM V$PGASTAT;
SQL> SELECT * FROM V$PGASTAT; 查看实际pga分配情况
pga为动态参数,不需要重启,修改完直接生效
4.6.3 查看SGE和AGE使用情况
select name,total,round(total-free,2) used, round(free,2) free,round((total-free)/total*100,2) pctused from
(select 'SGA' name,(select sum(value/1024/1024) from v$sga) total,
(select sum(bytes/1024/1024) from v$sgastat where name='free memory')free from dual)
union
select name,total,round(used,2)used,round(total-used,2)free,round(used/total*100,2)pctused from (
select 'PGA' name,(select value/1024/1024 total from v$pgastat where name='aggregate PGA target parameter')total,
(select value/1024/1024 used from v$pgastat where name='total PGA allocated')used from dual);
4.7 设置Oracle默认语言
在3.3章节中已经设置过Oralce语言,但似乎没有生效,可以采用以下办法修改配置。
检查是否生效:
$ sqlplus / as sysdba;
select userenv('language') from dual;
例如:AMERICAN_AMERICA.WE8MSWIN1252
AMERICAN_AMERICA.WE8MSWIN1252
是数据库默认语言,所以修改不成功。我们要修改成AMERICAN_AMERICA.ZHS16GBK
。具体操作步骤如下:
$ sqlplus / as sysdba;
select userenv('language') from dual;
例如:AMERICAN_AMERICA.WE8MSWIN1252
修改:
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter system enable restricted session; 关闭用户登录
SQL> alter system set job_queue_processes=0; 定时任务不执行
SQL> alter database open;
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 设置余元
SQL> shutdown immediate; 关闭数据库
SQL> startup 启动数据库
SQL> alter system disable restricted session; 打开用户登录
执行上面命令之后需要将所有的数据表和表中的数据删除掉,避免出现数据无法加载或数据库报错情况。
4.8 开启服务
SQL> startup
4.9 退出
SQL> exit
4.10 配置远连接
4.10.1 修改监听文件
[oracle@bgxt network]$ cd $ORACLE_HOME/network/admin
添加以下信息
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST=
(SID_DESC =
(SID_NAME= orcl)
(ORACLE_HONE = /u01/app/oracle/product/11.2.0/db_1)
(SID_NAME= orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.13)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
4.10.2 重启监听
[root@localhost ~]$ su oracle
[oracle@localhost ~]$ lsnrctl stop
[oracle@localhost ~]$ lsnrctl start
4.10.3 测试监听
[oracle@localhost ~]$ exit;
[root@localhost ~]$ cd /u01/app/oracle/product/11.2.0/network/admin/
[root@localhost ~]$ vi tnsnames.ora
修改信息:
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.13)(PORT = 1521))
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.13)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
)
)
调整如下:
测试
[oracle@bgxt admin]$ tnsping orcl
TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 11-SEP-2020 11:16:31
Copyright (c) 1997, 2009, Oracle. All rights reserved.
Used parameter files:
/u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.13)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))
OK (0 msec)
4.11开机自启动(选做)
https://blog.csdn.net/weixin_34405332/article/details/92458104https://www.cnblogs.com/bdp-data/p/13085001.html
五、问题汇总
错误代码:ORA-12162
问题:ORA-12162: TNS:net service name is incorrectly specified
原因:没有指定ORACLE_SID造成的
解决办法:
[oracle@localhost ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0/db_1
[oracle@localhost ~]$ echo $ORACLE_SID
[oracle@localhost ~]$ export ORACLE_SID=orcl
[oracle@localhost ~]$ echo $ORACLE_SID
orcl
错误代码:TNS-01106
问题:TNS-01106: Listener using listener name LISTENER has already been started
原因:没有发现能监听的进程
解决办法:
1、 /etc/hosts 文件中的 ip和主机名不一致
2、listener.ora 中监听主机非当前主机