前言:此处主要描述为何选19c;
以前主要使用oracle11c,后来12c以后,与11c差异较大,主要是由于oracle从12c开始引入了容器(PDB和CDB)、租户的概念。
粗浅的来看,就是创建用户命名必须C##开头,其他变化属于正常迭代优化。
另外oracle在12c以后改变了版本策略,现在都叫18c\19c\20c,一年一个版本,19c其实也属于12c的一个小版本。
Oracle 19c 相当于 12.2.0.3 版本,是 Oracle 12c 的最终版,是一个长期维护版本。所以这一版本中,不会有太多的新特性,更重要的是稳定性的增强,使得用户能够更多的迁移到12c这个主流版本中。
所以现在如果上生产,19c是最好的选择。
一、下载安装包
需要下载安装包:
oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
oracle-database-ee-19c-1.0-1.x86_64.rpm
另外,由于我使用的系统版本是redhat8.4,发现如果系统未注册,yum将无法从服务器下载依赖包。需要提前注册系统,并且修改yum镜像地址。我使用的是阿里地址:
阿里巴巴源地址阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
几乎所有系统需要的yum源都能找到,你可以根据你的系统选择。
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
二、rpm安装
使用命令安装软件,oracle安装要求硬盘空间足够,如果硬盘不够奖安装不成功。
##移动到rpm安装包目录
yum -y localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
yum -y localinstall oracle-database-ee-19c-1.0-1.x86_64.rpm
配置环境变量
vi /home/oracle/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ];
then
. ~/.bashrc
fi
# User specific environment and startup programs
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
#配置数据库实例名
export ORACLE_SID=ORCLCDB
配置建库脚本
vi /etc/init.d/oracledb_ORCLCDB-19c
#修改配置脚本
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export ORACLE_VERSION=19c
#此处是数据库实例名,应与前述配置一致
export ORACLE_SID=ORCLCDB
export TEMPLATE_NAME=General_Purpose.dbc
#此处是数据库字符集,根据自己情况配置。中国一般使用ZHS16GBK。不过我使用的默认字符集AL32UTF8。虽然占用空间变大,但是兼容更多语言。
export CHARSET=AL32UTF8
export PDB_NAME=ORCLPDB1
export LISTENER_NAME=LISTENER
export NUMBER_OF_PDBS=1
#是否创建CDB数据库,cdb数据库指容器数据库,是12c以后才有的特定,可以选择false。直接创建pdb数据库,如此用法将与11c一致。此处我本来就是为了学习新版本,所以选默认方式。
export CREATE_AS_CDB=true
三、创建实例,启动应用
创建数据库,执行如下命令
cd /etc/init.d/ ./oracledb_ORCLCDB-19c configure
执行完以后,需要使用sys修改密码。
切换oracle用户,使用 sqlplus / as sysdba 登录系统,如果发现中文显示???,需要在系统参数中配置字符集。
vi ~/.bash_profile
#增加如下配置
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
#由于本机修改后,字符集不生效,我将环境变量写入了全局配置中。
vi /etc/profile
#新增
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
重新登录sqlplus后,发现中文正常了。
四、配置自启动
为防止系统重启后,数据库不能使用,现设置开机自启动。
vi /etc/oratab
#修改N变为Y
ORCLCDB:/opt/oracle/product/19c/dbhome_1:Y
#新增启动脚本
vim /usr/bin/oracle.sh
#内容如下
#! /bin/bash
/opt/oracle/product/19c/dbhome_1/bin/lsnrctl start
/opt/oracle/product/19c/dbhome_1/bin/dbstart /opt/oracle/product/19c/dbhome_1
#创建oracle服务
chmod 777 /usr/bin/oracle.sh
#新增服务配置
vi /etc/systemd/system/oracle19c.service
#内容如下
[Unit]
Description=Oracle19c
After=syslog.target
network.target
[Service]
LimitMEMLOCK=infinity
LimitNOFILE=65535
Type=oneshot
RemainAfterExit=yes
User=oracle
Environment="ORACLE_HOME=/opt/oracle/product/19c/dbhome_1"
ExecStart=/usr/bin/oracle.sh
[Install]
WantedBy=multi-user.target
#设置开机自启动
systemctl enable oracle19c
五、修改dba密码,使用数据库
使用sqlplus登录窗口,修改密码
#使用sqlplus登录系统 sqlplus / as sysdba #执行如下语句修改dba密码 alter user sys identified by "密码"; alter user system identified by "密码";
使用远程客户端链接oracle。
直接登录dba,将可以进行数据库操作。
此处我创建一个新用户,作为示例。
服务器上创建目录/var/data/oracle/datafile
在plsql中以sysdba权限登录sys用户。
#创建数据表空间
CREATE TABLESPACE TBS_OUTMAN_DATA LOGGING DATAFILE '/var/data/oracle/datafile/TBS_OUTMAN_DATA.DBF' SIZE 1G AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL;
#创建索引表空间
CREATE TABLESPACE TBS_OUTMAN_INDEX LOGGING DATAFILE '/var/data/oracle/datafile/TBS_OUTMAN_INDEX.DBF' SIZE 500M AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL;
#创建临时表空间
CREATE TEMPORARY TABLESPACE TBS_OUTMAN_TEMP TEMPFILE '/var/data/oracle/datafile/TBS_OUTMAN_TEMP.DBF' SIZE 100M AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL;
#创建用户
CREATE USER "C##OUTMAN" IDENTIFIED BY "密码" DEFAULT TABLESPACE TBS_OUTMAN_DATA TEMPORARY TABLESPACE TBS_OUTMAN_TEMP; GRANT DBA,CONNECT,RESOURCE TO "C##OUTMAN";
退出sys用户,登录C##OUTMAN用户。测试相关功能正常