在墨天轮上看到关于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对用户更加友善了。
以下是分享的安装过程,希望我的分享能帮助到有类似想法的小伙伴,如果有所帮助,请给我点赞加油,谢谢。
其中linux环境的安装文档如下:
通过阅读官方文档,对安装要求和安装流程有个整体的了解,确保自己的安装操作,不会出现方向性错误。
1、创建vmware虚拟机
2、在虚拟机上安装centos 8
3、安装oracle database 23c free版
1、下载相关的安装介质
序号 | 软件包 | 下载地址 |
1 | vmware-workstation-version.exe | |
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 |
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用户登录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 连接可插拔数据库:sqlplus host[:port]/service_name sqlplus |
2、通过plsql developer登录数据库
(1)安装oracle客户端
oracle客户端安装包下载:
(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
安装包下载:
(4)启动pl/sql developer,并登录数据库
1、查看有哪些可插拔数据库
2、进入可插拔数据库
3、查看插拔数据库中有哪些表空间及其数据文件
4、在可插拔数据库中创建测试用户并授权
5、创建测试用户的表并插入数据
可参考脚本:$oracle_home/rdbms/admin/utlsampl.sql
以scott用户登录可插拔数据库:
sqlplus
执行如下命令,向表中插入数据:
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版的新特性介绍,请详见:
以下是对几个新特性的尝试了解:
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版,并进行了简单的测试。
在此感谢墨天轮的知识分享!
由于工作原因,直到今天才将以上安装和试用过程,整理成本篇文字。对于其中理解有误的地方,请各位老师和同学批评指正。
也希望能和各位墨友共同学习、共同成长。谢谢!