前言:
在墨天轮上看到关于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环境的安装文档如下:
通过阅读官方文档,对安装要求和安装流程有个整体的了解,确保自己的安装操作,不会出现方向性错误。
二、整体安装流程
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 | |
3 | Centos-vault-8.5.2111.repo | |
4 | 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 |
关于后台服务进程,更详细的说明,请参看:
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版,并进行了简单的测试。
在此感谢墨天轮的知识分享!
由于工作原因,直到今天才将以上安装和试用过程,整理成本篇文字。对于其中理解有误的地方,请各位老师和同学批评指正。
也希望能和各位墨友共同学习、共同成长。谢谢!