数据库管理-第335期 23ai:安装变化和部分小版本新特性实战(20250610)
数据库管理-第335期 23ai:安装变化和部分小版本新特性实战(20240610)
作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database
PostgreSQL ACE Partner
10年数据库行业经验
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP,ITPUB认证专家
圈内拥有“总监”称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸
CSDN:胖头鱼的鱼缸(尹海文)
墨天轮:胖头鱼的鱼缸
ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭
上一期安装了Oracle Database 23ai测试版RAC,里面有一些部署过程中发生了一些变化,本期将做一些总结。本期也安装了一个单实例库,针对23.4-23.8的部分新增特性做一些探索。
1 23ai RAC安装
对照《数据库管理-第七十五期 手把手教你搭19c RAC(20230516)》,在不使用AFD(ASM Filter Driver)的情况下,对于ASM使用共享存储映射磁盘的属组权限可以使用asmadmin,开启AFD则需要asmdba。而在23ai中的ASM磁盘配置中,需要将共享存储映射磁盘的属组权限配置为asmdba,这其中的变化主要来自于$ORACLE_HOME/bin/oracle的权限变化:
19c:
23ai:
当然在使用OracleLinux 8.10之前我还尝试过9.6,但是由于操作系统版本太新,会发现ASM相关很多特性无法开启,因此使用了8.10。
2 新特性探索
首先看看两个对照数据库版本,均为在对应版本DB软件新装数据库的状态:23.4:
23.8:
Oracle DB 23.5新特性一览 Oracle DB 23.6新特性一览 Oracle DB 23.7新特性一览 Oracle DB 23.8新特性一览
2.1 compatible
23.4:23.8:
2.2 HNSW
在23.6之前的版本,在有向量数据类型的表上创建HNSW索引后,表是不能进行DML操作的,23.6开始则可以了,下面做一个简单测试。首先需要调整数据库参数(以下操作均在CDB中完成):alter system set vector_memory_size=200m scope=spfile;
shut immediate
startup
alter pluggable database all open;
然后创建表、数据和索引(以下操作均在PDB中完成)。
create user vector identified by vector;
grant connect,db_developer_role to vector;
alter user vector default tablespace users quota unlimited on users;
conn vector/vector@pdb1
create table vec_tab(id number, dataVec VECTOR(3));
insert into vec_tab values (1, TO_VECTOR('[1.1, 2.2, 3.3]'));
insert into vec_tab values (2, TO_VECTOR('[2.2, 3.3, 1.1]'));
insert into vec_tab values (3, TO_VECTOR('[3.3, 1.1, 2.2]'));
commit;
CREATE VECTOR INDEX vec_tab_hnsw_idx ON vec_tab (dataVec) ORGANIZATION INMEMORY NEIGHBOR GRAPH DISTANCE COSINE WITH TARGET ACCURACY 90 PARAMETERS (type HNSW);
然后通过下面语句进行insert和update操作:
insert into vec_tab values (4, TO_VECTOR('[2.2, 3.3, 4.4]'));
update vec_tab set dataVec=TO_VECTOR('[4.4, 2.2, 3.3]') where id=1;
23.4:
23.8:
2.3 表空间收缩
这是23.7引入的新特性,可以有效回收表空间的实际占用。通过下面语句在23.8进行测试,我们假设创建的表空间已经通过删除数据降低了实际占用:create smallfile tablespace stbs datafile size 1500m autoextend on next 500m maxsize 2g;
create table test (id number,name varchar2(20)) tablespace stbs;
insert into test values (1,'oracle');
insert into test values (2,'database');
insert into test values (3,'23ai');
commit;
- 分析表空间
set serveroutput on
execute dbms_space.shrink_tablespace('STBS', shrink_mode => DBMS_SPACE.TS_SHRINK_MODE_ANALYZE);
- 收缩表空间至最小可能得值
execute dbms_space.shrink_tablespace('STBS');
这里可以看到表空间已经收缩了。
-
收缩大文件表空间至指定大小
在最新的官方文档中,不止是小文件表空间可以收缩,大文件表空间也可以收缩。
create bigfile tablespace btbs datafile size1500m;
execute dbms_space.shrink_tablespace('BTBS', shrink_mode => DBMS_SPACE.TS_SHRINK_MODE_ANALYZE);
execute dbms_space.shrink_tablespace('BTBS', target_size => 210000000); --单位byte
3 其他说明
由于本次使用的23.8为刚刚申请的内测版本,与实际生产可用的版本是否还有区别暂时不得而知,待到可线下部署的企业版放出后,对一些细节会再进行一次梳理。总结
本期简述Oracle Database 23ai测试版部署中的一些发现,针对23ai小版本更新的部分新特性进行了实战演示。老规矩,知道写了些啥。