一、下载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 ~]# hostnamebgxt



2.5 网络配置

[root@bgxt ~]# cd /etc/sysconfig/network-scripts/
[root@bgxt network-scripts]# vim ifcfg-lo



追加HOSTNAME=healthmanager

2.6 内核配置

根据自身配置选择合适的内核参数,然后执行sysctl –p命令使配置生效,配置参数不要加入中文,容易报错!Linux内核设置


centos7连接xshell5 centos7连接oracle数据库_mysql


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内存设置:2097152
4k/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开机自启动(选做)

五、问题汇总

错误代码: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 中监听主机非当前主机