centos7安装oracle12c

2021-05-18  本文已影响0人  bobokaka

服务器系统为centos7.9 64位,物理内存大小为16GB,如果物理内存不一致的,请手动调整相关细节配置。

Oracle数据库的安装比较麻烦,但一般分为以下几个步骤:

下载
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

image.png
image.png
image.png
image.png
更新系统包。
# yum update -y

安装下载Oracle12C所需软件包

 yum install -y binutils.x86_64 compat-libcap1.x86_64 gcc.x86_64 gcc-c++.x86_64 glibc.i686 glibc.x86_64 glibc-devel.i686 glibc-devel.x86_64 ksh compat-libstdc++-33 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 zip unzip  sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686

为Oracle创建一个用户组,名字是Oracle,并对该用户设置登录密码。

# groupadd oinstall
# groupadd dba
-g 设置的是用户的主用户组,记录在/etc/passwd中。
-G 设置的是用户附加组版,记录在/etc/group中。
这样做的意义在于:
1,当"usermod -g"切换到一个临时组,然后再切换回来的时候,不会把临时组的信息“遗留”在该用户设置中。
2,权限更加明细,在11g安装中的一步,就会提示sysdba和sysoper的区别,放在不同的组,可以有效的提高安全性。
新创建一个oracle用户,这初始属于oinstall组,且同时让他也属于dba组。
# useradd -g oinstall -G dba oracle
# passwd oracle
www.163.com
image.png

修改host

vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 oracle12c
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 oracle12c
#外网ip
192.168.8.103 oracle12c
#不知道什么作用
192.168.159.129 oracle12c

将以下内容添加到/etc/sysctl.conf中。

vim /etc/sysctl.conf
 #禁用包过滤功能
net.ipv4.ip_forward = 0
#启用源路由核查功能
net.ipv4.conf.default.rp_filter = 1
#禁用所有IP源路由
net.ipv4.conf.default.accept_source_route = 0
#使用sysrq组合键是了解系统目前运行情况,为安全起见设为0关闭
kernel.sysrq = 0
#控制core文件的文件名是否添加pid作为扩展
kernel.core_uses_pid = 1
#开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理
net.ipv4.tcp_syncookies = 1

 net.ipv4.tcp_max_syn_backlog = 65536
 net.core.netdev_max_backlog =  32768
 net.core.somaxconn = 32768
#每个消息队列的大小(单位:字节)限制
kernel.msgmnb = 65536
#整个系统最大消息队列数量限制
kernel.msgmax = 65536
#单个共享内存段的大小(单位:字节)限制,计算公式16G*1024*1024*1024-1(字节)
kernel.shmmax =  17179869183
#所有内存大小(单位:页,1页 = 4Kb),计算公式(16G*1024*1024-1)/4KB (页)
kernel.shmall = 4194303
#系统范围内共享内存段的最大数量。该参数的默认值是 4096.此值也是在系统中可以启动的Oracle实例的最大数量,通常不需要更改,因为显然在生产环境下,一个服务器上同时启动的实例个数达不到这个数量.
kernel.shmmni = 4096
#250       SEMMSL    max semaphores per array     信号集容纳最大信号数量   
#32000     SEMMNS    max semaphores system wide   所有信号的最大数量
#32        SEMOPM    max ops per semop call       调用单个信号集中最大信号数量
#128       SEMMNI    max number of arrays         信号集的最大值
kernel.sem = 250 32000 100 128
#timewait的数量,默认是180000
net.ipv4.tcp_max_tw_buckets = 6000
#开启有选择的应答
net.ipv4.tcp_sack = 1
#支持更大的TCP窗口. 如果TCP窗口最大超过65535(64K), 必须设置该数值为1
net.ipv4.tcp_window_scaling = 1
#TCP读buffer
net.ipv4.tcp_rmem = 4096 131072 1048576
#TCP写buffer
net.ipv4.tcp_wmem = 4096 131072 1048576
#为TCP socket预留用于发送缓冲的内存默认值(单位:字节)
net.core.wmem_default = 8388608
#为TCP socket预留用于发送缓冲的内存最大值(单位:字节)
net.core.wmem_max = 16777216
#为TCP socket预留用于接收缓冲的内存默认值(单位:字节)
net.core.rmem_default = 8388608
#为TCP socket预留用于接收缓冲的内存最大值(单位:字节)
net.core.rmem_max = 16777216
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog = 262144
#web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值
net.core.somaxconn = 65500
#系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)
net.ipv4.tcp_max_orphans = 3276800
#记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128
net.ipv4.tcp_max_syn_backlog = 262144
#时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉
net.ipv4.tcp_timestamps = 0
#为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量
net.ipv4.tcp_synack_retries = 2
#在内核放弃建立连接之前发送SYN包的数量
net.ipv4.tcp_syn_retries = 2
# net.ipv4.tcp_tw_len = 1
#开启TCP连接中time_wait sockets的快速回收
net.ipv4.tcp_tw_recycle = 1
#开启TCP连接复用功能,允许将time_wait sockets重新用于新的TCP连接(主要针对time_wait连接)
net.ipv4.tcp_tw_reuse = 1
#1st低于此值,TCP没有内存压力,2nd进入内存压力阶段,3rdTCP拒绝分配socket(单位:内存页)
net.ipv4.tcp_mem = 94500000 915000000 927000000
#如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。
net.ipv4.tcp_fin_timeout = 30
#表示当keepalive起用的时候,TCP发送keepalive消息的频度(单位:秒)
net.ipv4.tcp_keepalive_time = 120
#对外连接端口范围
net.ipv4.ip_local_port_range = 9000 65000
#表示文件句柄的最大数量
fs.file-max = 6815744
fs.aio-max-nr = 1048576

打开该文件使用的指令是vim /etc/sysctl.conf。vim的基本使用方法在文末会有介绍。

接下来是使配置立即生效。

/sbin/sysctl -p
/sbin/sysctl -a

将以下内容添加到/etc/security/limits.conf 中。该内容是最Oracle用户的一些限制。
vim /etc/security/limits.conf

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

修改用户登录库文件

vim /etc/pam.d/login
在文件末尾添加下面2行内容
session required /lib64/security/pam_limits.so
session required pam_limits.so

解压Oracle到/stage目录中,如果没有的话可以自动创建。

unzip linuxx64_12201_database.zip -d /data/ttwis/ttwis_program/stage/

创建一些其他目录,分配权限。

mkdir -p /data/ttwis/ttwis_program/oracle/u01/app/oracle/product/12.2.0
mkdir -p /data/ttwis/ttwis_program/oracle/u01/app/oracle/oradata
mkdir -p  /data/ttwis/ttwis_program/oracle/u01/app/oracle/inventory
mkdir -p  /data/ttwis/ttwis_program/oracle/u01/app/oracle/fast_recovery_area::
mkdir -p /data/ttwis/ttwis_program/oracle/u01
mkdir -p /data/ttwis/ttwis_program/oracle/u02

chown -R oracle:oinstall /data/ttwis/ttwis_program/oracle/u01
chown -R oracle:oinstall /data/ttwis/ttwis_program/oracle/u02
chmod -R 775 /data/ttwis/ttwis_program/oracle/u01
chmod -R 775 /data/ttwis/ttwis_program/oracle/u02

配置Oracle用户环境变量

vim  .bash_profile
# .bash_profile
# Get the aliases and functions
export PATH
TMPDIR=$TMP;
export TMPDIR
ORACLE_BASE=/data/ttwis/ttwis_program/oracle/u01/app/oracle;
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1;
export ORACLE_HOME
ORACLE_SID=orcl;
export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH;
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib64;
export LD_LIBRARY_PATH
export NLS_LANG=AMERICAN_AMERICA.UTF8
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH NLS_LANG

export NLS_LANG=AMERICAN_AMERICA.UTF8
export LANG=en_US.UTF-8

source .bash_profile

NETWORKING=yes
HOSTNAME=oracle12c

修改用户登录环境变量
vim .profile

export PATH
TMPDIR=$TMP;
export TMPDIR
ORACLE_BASE=/data/ttwis/ttwis_program/oracle/u01/app/oracle;
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1;
export ORACLE_HOME
ORACLE_SID=orcl;
export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH;
export PATH

使修改的文件生效

source .profile

安装Oracle
环境配置
添加防火墙(不需要做,因为防火墙已经被永久关闭了)

 firewall-cmd –zone=public –add-port=1521/tcp –add-port=5500/tcp –add-port=5520/tcp –add-port=3938/tcp –permanent

配置/etc/profile

vim /etc/profile

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


export JAVA_HOME=/data/ttwis/ttwis_program/java8
export JRE_HOME=/data/ttwis/ttwis_program/java8/jre
export NGINX_HOME=/usr/local/nginx/sbin
export MYSQL_HOME=/data/ttwis/ttwis_program/mysql-5.7.30
export MONGODB_HOME=/data/ttwis/ttwis_program/mongodb
export ORACLE_BASE=/data/ttwis/ttwis_program/oracle/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib64
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib:$NGINX_HOME:$MYSQL_HOME/lib:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$NGINX_HOME:$MYSQL_HOME/bin:$MONGODB_HOME/bin:$ORACLE_HOME/bin
source /etc/profile

安装Oracle数据库。在这里最好重启一下电脑。使用Oracle用户登录。在终端输入

cd /data/ttwis/ttwis_program/stage/database/
./runInstaller
image.png
image.png

1、第一步用来配置更新以及技术支持的,把勾去掉直接下一步就行


image.png

2、配置安装选项,这三个选项分别表示:①创建并配置一个新数据库,适用于新安装数据库的用户;②只安装数据库软件,适用于已有Oracle数据库数据用于数据迁移的;③升级已有数据库,适用于将老数据库升级成新数据库的用户。毫无疑问这里选择第一个选项。


image.png

3、第三步配置桌面版还是服务器版,桌面版是最小化配置,这里选择服务器版的配置。


image.png

4、第四步分布式网格配置,这里选择单实例服务器配置,如果要配置分布式服务的话可以参考安装文档,里面有详细的分布式服务安装过程。


image.png

5、选择高级安装


image.png

6、第七步选择数据库版本,这里选择企业版


image.png

7、选择安装路径,这个已经在环境变量里配置过了


image.png

8、这个Inventory Directory目录用于记录Oracle的清单信息的,清单信息中包括Oracle的安装路径等信息。这里也默认路径即可。

image.png

9、创建数据库的类型:
通用/事务处理:专为一般用途或交互较多的应用程序而设计。
数据仓库:对数据存储应用程序进行优化。
这里选择通用的就行。


image.png

10、配置数据库名,和Oracle服务ID号
注意数据库名一定要记住,以后进行程序开发会用到这个数据库名


image.png

11、这里需要配置一下字符集,将字符集设置成UTF-8,其他的不用修改(如果有特殊需求可以参考文档来配置)。


image.png

下面默认即可:


image.png

12、配置数据存储的(数据文件存储位置),默认的位置就是自己想存放的位置

image.png

13、配置数据备份


image.png

设置管理工具

14、配置账号密码,这里我将所有的默认用户统一使用相同的密码(如果密码太简单可能会报错,需要大小写数字都包含,需要精心设计一个密码)。
Ttwis8852


image.png

15、这一步用于配置数据库用户组的,只要安装前的配置工作完成了,这一步可以直接使用默认的。


image.png

16、这一步会检测交换分区大小、内核参数以及依赖包是否安装。只要前面准备工作都完成了,下面的错误可以直接忽略(比如它要求的软件包,我们的版本实际上比它要求的还高,所以这里的报错没必要理会它)。


image.png
17、对前面所有配置的一个总结,我们可以直接点击完成
image.png

18、安心的等待安装成功


image.png
image.png
/data/ttwis/ttwis_program/oracle/u01/app/oraInventory/orainstRoot.sh
/data/ttwis/ttwis_program/oracle/u01/app/oracle/product/12.2.0/dbhome_1/root.sh
image.png

第一行配置完成。


image.png
image.png

新建文件夹:


image.png
再次运行:
/data/ttwis/ttwis_program/oracle/u01/app/oracle/product/12.2.0/dbhome_1/root.sh
image.png image.png

配置完成


image.png

等待,安装成功!

查看端口

netstat -nupl (UDP类型的端口)
netstat -ntpl (TCP类型的端口)

orclpdb
登录指令

sqlplus sys/dwh as sysdba;

查看oracle版本

select * from v$version;
image.png

启动数据库

startup
image.png
show con_name;
image.png

查看CDB$ROOT下所有的pdbs

select  name , open_mode from v$pdbs;
image.png
select con_id, dbid, guid, name , open_mode from v$pdbs;
--v$pdbs为PDB信息视图,此处用了安装的时候的默认的可拔插的数据库ORCLPDB
image.png
 alter session set container=ORCLPDB;  --切换到ORCLPDB容器
alter session set container=LIVING_TJ;
alter session set container=LIVING_XIANJD;
image.png

关闭pdb

alter pluggable database orclpdb close;
alter pluggable database orclpdb open;
alter pluggable database LIVING_TJ open;
alter pluggable database LIVING_XIANJD open;

切换回CDB$ROOT

alter session set container=cdb$root;

打开SQL plus并且进行连接

sqlplus /nolog

使用超级管理员登录

CONN sys/change_on_install AS SYSDBA ;

创建c##ttwis 用户

CREATE USER c##ttwis IDENTIFIED BY Ttwis2098;

为用户授权

GRANT CONNECT,RESOURCE,UNLIMITED TABLESPACE TO c##ttwis CONTAINER=ALL ;

设置用户使用的表空间

image.png

启动数据库

startup

--创建表空间

create tablespace LIVING_TJ datafile '/data/ttwis/ttwis_program/oracle/u01/app/oracle/oradata/orcl/orclpdb/LIVING_TJ.dbf' size 1024m autoextend on next 100m;

datafile 表对应的·数据文件
size表空间初始大小
autoextend on 自动增长,表空间满后,自动增长
next 一次自动增长的大小


image.png

创建数据库

dbca

查看Oracle 12c的版本
select * from vversion; 通过ALTER SESSION SET CONTAINER 指定其他容器 select con_id,dbid,NAME,OPEN_MODE from vpdbs;
将LIVING_XIANJD open:
alter pluggable database LIVING_XIANJD open;
alter pluggable database LIVING_TJ open;
alter session set container=LIVING_TJ;
查看当前使用容器
select sys_context ('USERENV', 'CON_NAME') from dual;
创建用户
create user LIVING_XIANJD identified by Ttwis8852;
create user LIVING_TJ identified by Ttwis8852;
赋予所有权
grant dba to LIVING_XIANJD ;
grant dba to LIVING_TJ ;

DROP USER c##ttwis CASCADE
DROP TABLESPACE ttwis;
drop user ttwis cascade;

DROP TABLESPACE ttwis INCLUDING CONTENTS AND DATAFILES;

数据库重启:

先关闭
sqlplus sys/ as sysdba;
我们关闭CDB:
SQL>shutdown immediate
SQL>exit
image.png
lsnrctl stop
lsnrctl start
image.png
sqlplus sys/ as sysdba;
SQL>startup
image.png

Oracle 12C连接的坑
/data/ttwis/ttwis_program/oracle/u01/app/oracle/product/12.2.0/dbhome_1/network/admin/sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

重设密码即可


image.png
上一篇下一篇

猜你喜欢

热点阅读