暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

Oracle Database 23c Free版在Centos 8上的安装及其部分新特性尝试

原创 拨开乌云见阳光 2023-04-19
1601

前言:

在墨天轮上看到关于Oracle Database 23c的有奖征文活动:

https://www.modb.pro/db/525525

于是激发了想要了解Oracle Database 23c的兴趣。

在看了相关的介绍后,了解到Oracle Database 23c Free 版目前有三种安装方式:

1、通过Docker容器化安装

2、将OVA文件导入到VirtualBox虚拟机中

3、rpm方式安装

由于Oracle数据库在生产环境中,一般是部署在裸金属或虚机上,而在我本机测试环境上,也是习惯将Oracle数据库部署在虚机上。

因此,就打算将这个Oracle Database 23c Free 版部署在虚机上,但是对于第2种安装方式,

要先安装VirtualBox虚拟软件,再下载超大的OVA文件,然后再将OVA文件导入到VirtualBox虚拟机中,感觉有些麻烦。

于是就想尝试能否将Oracle Database 23c Free 版,安装到我本子的VMWare虚拟机上呢,而且也不想用Oracle的操作系统OLE,而是用更常使用的CentOS。

按照以上想法,在当天晚上,真就尝试安装成功了。整个安装过程很顺利快捷,让人感觉到Oracle对用户更加友善了。

以下是分享的安装过程,希望我的分享能帮助到有类似想法的小伙伴,如果有所帮助,请给我点赞加油,谢谢。

一、安装前先看一下官方文档

https://docs.oracle.com/en/database/oracle/oracle-database/23/index.html

其中Linux环境的安装文档如下:

https://docs.oracle.com/en/database/oracle/oracle-database/23/xeinl/installation-guide.html#GUID-31891F22-B1FA-4489-A1C5-195E6B3D89C8

通过阅读官方文档,对安装要求和安装流程有个整体的了解,确保自己的安装操作,不会出现方向性错误。

二、整体安装流程

1、创建VMWare虚拟机

2、在虚拟机上安装CentOS 8

3、安装Oracle Database 23c Free版

三、安装前的准备

1、下载相关的安装介质

序号

软件包

下载地址

1

VMware-workstation-version.exe

https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html

2

CentOS-8.5.2111-x86_64-dvd1.iso

https://mirrors.aliyun.com/centos/8/isos/x86_64/

3

Centos-vault-8.5.2111.repo

https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

4

oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm

https://yum.oracle.com/repo/OracleLinux/OL8/developer/x86_64/getPackage/oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm

5

oracle-database-free-23c-1.0-1.el8.x86_64.rpm

https://www.oracle.com/database/technologies/free-downloads.html


2、在本机上安装虚拟机管理软件VMware Workstation

在本机(Windows7或10),双击VMware-workstation-version.exe文件,安装虚拟机管理软件VMware Workstation。

3、创建虚拟机

(1)Oracle Database 23c Free版的系统要求:

操作系统:

Oracle Linux 8 Distributions for x86-64

Red Hat Enterprise Linux 8 Distributions for x86-64

网络协议:

支持下列网络协议:

IPC

UDP

TCP/IP

TCP/IP with SSL

CPU:

Oracle 数据库免费版自动将自身限制为两个内核进行处理。

内存:

至少 1 GB 内存。建议使用 2 GB 内存

Oracle 数据库免费版的最大 RAM 量不能超过 2 GB,即使有更多可用内存空间。

SWAP交换空间

建议最小交换空间为 2 GB 或 RAM 大小的两倍,以较小者为准。

磁盘空间:

最少 10 GB。

Oracle 数据库免费安装使用大约 9 GB 磁盘空间。

Oracle 数据库免费版中的最大用户数据量不能超过 12 GB。如果用户数据最超过此限制,则系统将报错:ORA-12592


(2)根据以上要求创建虚拟机

打开VMware Workstation软件,创建“CenOS 8 64位”虚拟机,如下:

为虚拟机分配1CPU + 2GB内存即可,创建好的虚机配置情况如下:

4、安装CentOS

在以上创建好的虚机上,挂载CentOS-8.5.2111-x86_64-dvd1.iso,并最小化安装CentOS 8.5

完成CentOS安装,虚拟机重启,然后以root用户登录此虚拟机。

5、关闭防火

执行如下命令:

systemctl stop firewalld

systemctl disable firewalld

systemctl status firewalld


6、关闭SELinux

执行如下命令:

sed -i ‘s/^SELINUX=enforcing$/SELINUX=disabled/’ /etc/selinux/config

setenforce 0


7、设置yum源

cd  /etc/yum.repos.d/

mkdir bak

mv *.repo ./bak/

上传Centos-vault-8.5.2111.repo到当前目录

mv Centos-vault-8.5.2111.repo /etc/yum.repos.d/CentOS-Base.repo

yum makecache


四、预安装

1、上传oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm文件到CentOS虚拟机

2、以root用户,执行如下命令:

yum -y localinstall oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm

以上预安装过程,将自动安装所需的系统依赖包,并且自动设置oracle安装建议的最小内核参数值。如下: 

内核参数

参数值

file-max

6815744

semmsl

250

semmns

32000

semopm

100

semmni

128

shmmni

4096

shmall

1073741824

shmmax

4398046511104

panic_on_oops

1

rmem_default

262144

rmem_max

4194304

wmem_default

262144

wmem_max

1048576

aio-max-nr

1048576

ip_local_port_range

9000–65500

以上参数,可以查看/etc/sysctl.conf

五、安装

1、上传oracle-database-free-23c-1.0-1.el8.x86_64.rpm文件到CentOS虚拟机

2、以root用户,执行如下命令:

yum -y localinstall oracle-database-free-23c-1.0-1.el8.x86_64.rpm

以上安装命令执行成功后,显示如下:

从以上信息可知:

(1)Oracle home已经安装,也就是说oracle用户及ORACEL_HOME目录已经创建。

(2)可以根据需要修改配置/etc/sysconfig/oracle-free-23c.conf文件中的参数。

(3)此时只是完成了Oracle Database 23c Free版软件的安装,但是尚未创建数据库实例。

六、创建数据库服务实例

以root用户,执行如下命令:

/etc/init.d/oracle-free-23c configure

执行过程如下:

Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length,

contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].

Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:  此处输入数据库特权用户的登录口令

Confirm the password:再次输入登录口令

Configuring Oracle Listener.

Listener configuration succeeded.

Configuring Oracle Database FREE.

Enter SYS user password:

**********

Enter SYSTEM user password:

*************

Enter PDBADMIN User Password:

*********

Prepare for db operation

7% complete

Copying database files

29% complete

Creating and starting Oracle instance

30% complete

33% complete

36% complete

39% complete

43% complete

Completing Database Creation

47% complete

49% complete

50% complete

Creating Pluggable Databases

54% complete

71% complete

Executing Post Configuration Actions

93% complete

Running Custom Scripts

100% complete

Database creation complete. For details check the logfiles at:

/opt/oracle/cfgtoollogs/dbca/FREE.

Database Information:

Global Database Name:FREE

System Identifier(SID):FREE

Look at the log file “/opt/oracle/cfgtoollogs/dbca/FREE/FREE.log” for further details.

Connect to Oracle Database using one of the connect strings:

Pluggable database: centos85/FREEPDB1

Multitenant container database: centos85

以上执行过程大约7~8分钟。

通过以上执行显示的信息可知:

(1)全局数据库名(Global Database Name): FREE

(2)SID:FREE

(3)可插拔数据库:FREEPDB1

(4)多租户容器数据库:centos85(虚拟主机名)

七、设置oracle用户环境

以oracle用户登录CentOS虚拟机,执行如下操作:

$ vi ~/.bash_profile

加入如下内容:

export ORACLE_HOME=/opt/oracle/product/23c/dbhomeFree

export ORACLE_SID=FREE

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export PATH=$ORACLE_HOME/bin:$PATH


执行如下命令,使以上设置的环境变量生效:

$ source ~/.bash_profile


八、查看相关服务进程及数据库实例的主要信息

1、查看服务进程

ps -ef|grep db_

主要服务进程如下:

服务进程名

作用

db_aqpc_FREE

AQ Process Coordinator

db_cjq0_FREE

Job Queue Coordinator Process

db_ckpt_FREE

Checkpoint Process

db_cl00_FREE

Cleanup Worker Process

db_clmn_FREE

Cleanup Main Process

db_d000_FREE

Dispatcher Process

db_dbrm_FREE

Database Resource Manager Process

db_dbw0_FREE

Database Writer Process

db_dia0_FREE

db_dia1_FREE

Diagnostic Process

db_diag_FREE

Diagnostic Capture Process

db_gcr0_FREE

db_gcr1_FREE

Global Conflict Resolution Worker Process

db_gen0_FREE

db_gen2_FREE

General Task Execution Process

db_j000_FREE

db_j001_FREE

db_j002_FREE

db_j003_FREE

db_j004_FREE

db_j005_FREE

Job Queue Worker Process

db_lg00_FREE

db_lg01_FREE

Log Writer Worker

db_lgwr_FREE

Log Writer Process

db_lmhb_FREE

 

db_lreg_FREE

Listener Registration Process

db_m000_FREE

db_m002_FREE

db_m004_FREE

db_m005_FREE

db_m006_FREE

db_m007_FREE

db_m008_FREE

db_m009_FREE

Shared MMON Worker Process

db_mman_FREE

Memory Manager Process

db_mmnl_FREE

Manageability Monitor Lite Process

db_mmon_FREE

Manageability Monitor Process

db_ofsd_FREE

Oracle File Server Background Process

db_p000_FREE

Parallel Query Worker Process

db_pman_FREE

Process Manager

db_pmon_FREE

Process Monitor

db_psp0_FREE

Process Spawner Process

db_pxmn_FREE

Parallel Execution Monitor

db_q003_FREE

db_q004_FREE

AQ Server Class Process

db_qm02_FREE

AQ Master Class Process

db_rcbg_FREE

Result Cache Background Process

db_reco_FREE

Recoverer Process

db_s000_FREE

Shared Server Process

db_smco_FREE

Space Management Coordinator Process

db_smon_FREE

System Monitor Process

db_svcb_FREE

Service Background Process

db_tt00_FREE

db_tt01_FREE

db_tt02_FREE

Redo Transport Worker Process

db_vkrm_FREE

Virtual Scheduler for Resource Manager Process

db_vktm_FREE

Virtual Keeper of Time Process

db_vosd_FREE

 

db_w000_FREE

db_w001_FREE

db_w002_FREE

db_w003_FREE

db_w004_FREE

db_w005_FREE

db_w006_FREE

db_w007_FREE

Space Management Worker Process

关于后台服务进程,更详细的说明,请参看:

https://docs.oracle.com/en/database/oracle/oracle-database/23/refrn/background-processes.html#GUID-86184690-5531-405F-AA05-BB935F57B76D

2、查看监听状态

执行如下命令:

lsnrctl status

正常的监听服务状态,示例如下:

3、查看数据库实例的主要信息

(1)查看版本信息:

(2)查看数据库和实例以及容器数据库的信息

(3)查看SGA信息

九、登录数据库

1、通过sqlplus登录数据库

(1)本机登录

sqlplus / as sysdba

sqlplus system


(2)通过客户端的TNS远程登录

sqlplus system@FREE


(3)通过TNS描述串远程登录

sqlplus system@’(description=(address_list=(address=(protocol=tcp)(host=192.168.20.86)(port=1521)))(connect_data=(service_name=FREE)))’


(4)通过“Easy Connect”方式远程登录

连接容器数据库:sqlplus host[:port]

sqlplus system@192.168.20.85

连接可插拔数据库:sqlplus host[:port]/service_name

sqlplus system@192.168.20.85/FREEPDB1


2、通过PLSQL Developer登录数据库

(1)安装oracle客户端

oracle客户端安装包下载:https://www.oracle.com/cn/database/technologies/instant-client/downloads.html

(2)设置客户端的TNS配置文件

Oracle客户端的TNS配置文件tnsnames.ora,相关配置内容如下:

ora23c-free=

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.85)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = FREE)

)

)

ora23c-pdb=

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.20.85)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = FREEPDB1)

)

)


(3)安装PL/SQL Developer

安装包下载:https://www.allroundautomations.com/try-it-free/

(4)启动PL/SQL Developer,并登录数据库

十、创建测试用数据表

1、查看有哪些可插拔数据库

2、进入可插拔数据库

3、查看插拔数据库中有哪些表空间及其数据文件

4、在可插拔数据库中创建测试用户并授权

5、创建测试用户的表并插入数据

可参考脚本:$ORACLE_HOME/rdbms/admin/utlsampl.sql

以scott用户登录可插拔数据库:

sqlplus scott/tiger@192.168.20.86/FREEPDB1

执行如下命令,向表中插入数据:

十一、数据库的启停:

1、停止数据库服务

(1)关闭监听服务

lsnrctl stop

lsnrctl status

(2)关闭数据库服务实例

sqlplus / as sysdba

SQL> shutdown immediate


2、启动数据库服务

(1)启动监听服务

lsnrctl start

lsnrctl status

(2)启动数据库服务实例

sqlplus / as sysdba

SQL> startup


十二、了解Oracle Database 23c Free版的几个新特性

关于Oracle Database 23c Free版的新特性介绍,请详见:

https://docs.oracle.com/en/database/oracle/oracle-database/23/nfcoa/introduction.html

以下是对几个新特性的尝试了解:

1、数据库表或视图中允许的最大列数从 1000 增加到 4096

MAX_COLUMNS = { STANDARD | EXTENDED }

此参数值默认为STANDARD。

当此参数设置为STANDARD时,数据库表或视图中允许的最大列数为 1000。

当此参数设置为EXTENDED时,数据库表或视图中允许的最大列数为 4096。

设置此参数,要先确认兼容性参数compatible的值为23.0.0

设置此参数,要先确认兼容性参数compatible的值为23.0.0

然后设置此参数值为EXTENDED,重启数据库服务生效,如下:

在此之后,就可以创建多于1000列的表了!

2、不带FROM子句的SELECT查询

3、Boolean数据类型

在之前的Oracle版本中,Boolean 类型是不被支持的,在 Oracle Database 23c 中,Boolean 数据类型被支持。

同时还提供了一个新的函数 to_boolean(),作用是将字符串转换为布尔数据类型。演示如下:

4、DDL支持通过 IF [NOT] EXISTS 判断

在之前的版本中,如果创建一个已经存在的表,则会报错: ORA-00955: name is already used by an existing object ;

如果删除一个不存在的表,则会报错: ORA-00942: table or view does not exist。

在Oracle 23c 支持 CREATE TABLE IF NOT EXIST 以及 DROP TABLE IF EXIST 语句,从而避免执行过程中的报错。例如:

5、INSERT 语句时可以一次插入多条记录

6、表值构造函数

7、基于别名的分组查询

以下分别演示了不用此功能和使用此功能的SQL写法,可以看到此功能大大简化了SQL的编写:

8、关联更新表数据

可以关联其他的表,来更新当前表中的数据,示例如下:

9、SCHEMA 级别的权限

10、开发员角色

Oracle 23c新增了一个开发员角色,此角色包含了大部份开发人员所需要的权限,使用如下命令进行授权:

以dev_user用户登录数据,可以查看到其所具有的权限,如下所示:

11、在数据库中执行JavaScript

(1)在数据库中执行 JavaScript,需要如下授权:

grant  EXECUTE ON JAVASCRIPT  to user_name;

(2)如果要使用DBMS_MLE动态执行JavaScript脚本,还需要如下授权:

grant  EXECUTE DYNAMIC MLE  to user_name;

(3)创建JavaScript函数及调用执行演示如下:

后记:

在4月10日在墨天轮上看到了“Oracle Database 23c Free”的消息,

在当天晚上,在本地VMWare虚拟机的Centos 8环境中,成功的安装了Oracle Database 23c Free版,并进行了简单的测试。

在此感谢墨天轮的知识分享!

由于工作原因,直到今天才将以上安装和试用过程,整理成本篇文字。对于其中理解有误的地方,请各位老师和同学批评指正。

也希望能和各位墨友共同学习、共同成长。谢谢!

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论