数据库管理335期 2024-06-10
数据库管理-第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:
这一变化可能是23ai想将多种ASM磁盘操作方式的部署方式统一,在23ai的安装过程中这个是我遇到的最大的问题。
当然在使用OracleLinux 8.10之前我还尝试过9.6,但是由于操作系统版本太新,会发现ASM相关很多特性无法开启,因此使用了8.10。
2 新特性探索
首先看看两个对照数据库版本,均为在对应版本DB软件新装数据库的状态:
23.4:
23.8:
前文可参考:
数据库管理-第225期 Oracle DB 23.5新特性一览(20240730)
数据库管理-第256期 Oracle DB 23.6新特性一览(20241031)
数据库管理-第287期 Oracle DB 23.7新特性一览(20250124)
数据库管理-第316期 Oracle DB 23.8新特性一览(20250417)
2.1 compatible
23.4:
23.8:
在23.7的新特性说明中,要使用23.6及以后的AI向量搜索相关的新功能与特性,则需要将数据库的兼容参数设置到23.6(后续不排除会有类似要求修改到更高的版本号上)。通过官方文档我们可以看到截止现在,使用不同DB软件版本新装数据库后compatible的默认值:
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:
在使用HNSW索引的情况下并可支撑DML操作是一个非常强大的功能。
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 size 1500m;
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小版本更新的部分新特性进行了实战演示。
老规矩,知道写了些啥。