📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及GP 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
文章目录
- 前言
- 📣 1.23C概述
- 📣 2.环境准备
- 📣 3.环境配置
- ✨ 3.1 关闭防火墙
- ✨ 3.2 SELINUX关闭
- ✨ 3.3 avahi服务停止
- ✨ 3.4 host设置
- 📣 4.yum配置
- 📣 5.安装数据库
- 📣 6.数据库配置
- 📣 7.访问数据库
- 📣 8.新特性
前言
2023年4月3日, Oracle CloudWorld Tour –甲骨文宣布推出免费版 Oracle Database 23c,本博客介绍了23C的部署及新特性📣 1.23C概述
2023年4月3日, Oracle CloudWorld Tour –甲骨文宣布推出免费版 Oracle Database 23c。新的Oracle Database 23c 免费版 — 开发人员版本 满足了全球开发人员和组织日益增长的访问 Oracle Database 23c“ App Simple ”中最新特性的需求。开发人员现在可以使用创新的 Oracle 数据库特性,这些特性可以简化现代数据驱动应用程序的开发,让他们为计划中的下一个长期支持版本 Oracle 数据库 23c 版本做好准备。
Oracle Database 23c 免费版——开发人员版可 作为 Docker Image、VirtualBox VM 或 Linux RPM 安装文件下载,
无需用户帐户或登录。计划很快推出 Windows 版本
官方下载地址:
https://www.oracle.com/database/technologies/free-downloads.html
📣 2.环境准备
操作系统: Oracle Linux 8.7
数据库: Oracle Database 23c Free - Developer Release
安装包:
OracleLinux-R8-U7-x86_64-dvd.iso
oracle-database-free-23c-1.0-1.el8.x86_64.rpm
oracle-database-preinstall-23c-1.0-0.5.el8.x86_64
Oracle Linux官方网址:
https://yum.oracle.com/oracle-linux-isos.html
📣 3.环境配置
✨ 3.1 关闭防火墙
[root@OEL8 ~]# systemctl stop firewalld.service
[root@OEL8 ~]# systemctl disable firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@OEL8 ~]# systemctl status firewalld.service
✨ 3.2 SELINUX关闭
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
注:更改后记得重启服务器生效
[root@OEL8 ~]# /usr/sbin/sestatus
SELinux status: disabled
✨ 3.3 avahi服务停止
systemctl stop avahi-daemon.socket
systemctl stop avahi-daemon
systemctl disable avahi-daemon.socket
systemctl disable avahi-daemon
✨ 3.4 host设置
[root@OEL8 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
##新增ip与host的对应关系
192.168.6.66 OEL8
📣 4.yum配置
[root@OEL8 opt]# mount | grep sr0
/dev/sr0 on /run/media/root/OL-8-7-0-BaseOS-x86_64 type iso9660 (ro,nosuid,nodev,relatime,nojoliet,check=s,map=n,blocksize=2048,uid=0,gid=0,dmode=500,fmode=400,iocharset=utf8,uhelper=udisks2)
[root@OEL8 ~]# cd /etc/yum.repos.d
[root@OEL8 yum.repos.d]# vi server.repo
[AppStream]
name=Linux
enable=1
gpgcheck=0
baseurl=file:///run/media/root/OL-8-7-0-BaseOS-x86_64/AppStream
[BaseOS]
name=Linux
enable=1
gpgcheck=0
baseurl=file:///run/media/root/OL-8-7-0-BaseOS-x86_64/BaseOS
[root@OEL8 yum.repos.d]# yum repolist
[root@OEL8 yum.repos.d]# yum repolist
repo id repo name
AppStream Linux
BaseOS Linux
📣 5.安装数据库
1.上传安装包至 /opt目录下
[root@OEL8 ~]# cd /opt
[root@OEL8 opt]# ll
-rw-r--r-- 1 root root 1758776440 Apr 5 09:49 oracle-database-free-23c-1.0-1.el8.x86_64.rpm
-rw-r--r-- 1 root root 30688 Apr 5 09:49 oracle-database-preinstall-23c-1.0-0.5.el8.x86_64.rpm
2.安装预安装包
[root@OEL8 opt]# yum -y localinstall oracle-database-preinstall-23c*
3.安装数据库
[root@OEL8 opt]# yum -y localinstall oracle-database-free-23c*
📣 6.数据库配置
1.修改配置文件
[root@OEL8 ~]# vi /etc/sysconfig/oracle-free-23c.conf
#This is a configuration file to setup the Oracle Database.
#It is used when running '/etc/init.d/oracle-free-23c configure'.
# LISTENER PORT used Database listener, Leave empty for automatic port assignment
LISTENER_PORT=1521
# Character set of the database
CHARSET=AL32UTF8
# Database file directory
# If not specified, database files are stored under Oracle base/oradata
DBFILE_DEST=/app/oracle/oradata/
# DB Domain name
DB_DOMAIN=23cfree
# SKIP Validations, memory, space
SKIP_VALIDATIONS=false
2.创建目录、授权
[root@OEL8 ~]# mkdir -p /app/oracle/oradata/FREE
[root@OEL8 ~]# chmod 775 -R /app
[root@OEL8 ~]# chown oracle:oinstall -R /app
3.启动数据库
##此处设置密码为:Orace123456
[root@OEL8 ~]# /etc/init.d/oracle-free-23c configure
📣 7.访问数据库
1.查看数据状态
[root@OEL8 ~]# /etc/init.d/oracle-free-23c status
Status of the Oracle FREE 23c service:
LISTENER status: RUNNING
FREE Database status: RUNNING
2.环境变量设置
[oracle@OEL8 ~]$ vi .bash_profile
export ORACLE_SID=FREE
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/23c/dbhomeFree
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export CLASSPATH=$ORACLE_HOME/JRE:ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
[oracle@OEL8 ~]$ source .bash_profile
3.服务器登陆数据库
[oracle@OEL8 ~]$ sqlplus / as sysdba
4.远程登陆数据库
[oracle@OEL8 ~]$ sqlplus sys/Orace123456@192.168.6.66:1521/FREE.23cfree as sysdba
📣 8.新特性
(1) 不带FROM子句的SELECT查询
在Oracle 23c中,第一次实现了不带From子句的查询,也不需要dual
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
Session altered.
SQL> SELECT SYSDATE;
SYSDATE
-------------------
2023-04-05 11:27:55
(2) 单表支持4096列
Oracle 此前版本单表支持1000列。
在23c中,单表支持列数量扩展到4096列,启用这一个特性需要将兼容性参数设置为23.0.0,同时将 Max_columns设置为Extended。
SQL> show parameter MAX_COLUMNS;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
max_columns string STANDARD
SQL> alter system set MAX_COLUMNS=EXTENDED scope=spfile;
注:静态参数修改,需要重启数据库
SQL> shu immediate;
SQL> startup
SQL> show parameter MAX_COLUMNS;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
max_columns string EXTENDED
(3)SCHEMA级别的权限
在23c之前的版本,如果针对Schema对其他用户进行授权,需要通过系统权限或对象权限分别显式地授予,
这对数据库带来了额外的安全风险或复杂性。
在Oracle 23中,可以对Schema进行授权,简化了之前的权限操作,
grant select any table on SCHMEA GSMUSER to DIP;
(4)Boolean数据类型
在Oracle Database 23c中,布尔数据类型被支持
create table test(name varchar2(100),flag BOOLEAN);
INSERT INTO test VALUES('jeames',1);
INSERT INTO test VALUES('IT',True);
INSERT INTO test VALUES('hefei',1);
INSERT INTO test VALUES('abc',FALSE);
select name from test where flag;
SQL> select name from test where flag;
NAME
------------
jeames
IT
hefei
(5)基于别名的GROUP BY
在Oracle Database 23c中,现在支持基于别名、位置的GROUP BY,这大大简化了SQL文本和编写
select extract(year FROM hire_date) as hire_year,count(*)
from employees
group by hire_year
having hire_year>1985;
(6)DDL的 IF EXISTS判断
在Oracle Database 23c中,DDL支持通过 IF [NOT] EXISTS 判断,从而规避执行过程中的错误、异常和中断
创建表时指定:
CREATE TABLE IF NOT EXISTS Customers (ID NUMBER(10), Name VARCHAR2(100));
删除表时指定:
DROP TABLE IF EXISTS Customers;