当前位置:   article > 正文

聊聊 Oracle 23 ai 新特性、相关更改和停用功能

oracle 23ai

478c969f4122637dbe418257ff7fe984.gif

作者 | JiekeXu

来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)

如需转载请联系授权 | (个人微信 ID:JiekeXu_DBA)

大家好,我是 JiekeXu,江湖人称“强哥”,荣获 Oracle ACE 称号,墨天轮 MVP,墨天轮年度“墨力之星”,拥有 Oracle 11g OCP/OCM 认证,MySQL 5.7/8.0 OCP 认证以及 PCA、PCTA、OBCA、OGCA、KCP 等众多国产数据库认证证书,今天和大家一起来聊聊 Oracle 23 ai 新特性、相关更改和停用功能,欢迎点击最上方蓝字“JiekeXu DBA之路”关注我的微信公众号,然后点击右上方三个点“设为星标”顶,更多干货文章才能第一时间推送,谢谢!

前  言

北京时间 2024年 5 月 3 日凌晨,Oracle Database 23c 更名为 Oracle Database 23aiOracle Database 23ai 是 Oracle Database 的下一个长期支持版本,它包括300 多项新功能,重点关注人工智能(AI)和开发人员的工作效率。人工智能矢量搜索等功能使您能够利用新一代人工智能模型来生成和存储文档、图像、声音等矢量;对它们进行索引并快速查找相似性,同时利用 Oracle 数据库的现有分析功能。这与已经广泛使用的机器学习算法集相结合,使您能够快速创建复杂的人工智能应用。Oracle Database 23ai 还使用人工智能来优化许多关键数据库功能,以便对时间安排和资源成本做出更准确的估计。

现在,以开发人员为重点的新功能使构建使用JSON或关系开发方法或两者交替使用的下一代应用变得更加简单。新的微服务和消息传递功能改进了Oracle数据库对这一关键设计方法的广泛支持。如果您由于法规或性能要求而需要对数据库进行分发或分片,Oracle Database 23ai 添加了新的 RAFT 协议支持,使其比以往更加轻松。

Oracle Database 23ai 还对 SQL 和 PL/SQL 进行了重大改进,引入了新的数据类型和语言增强功能,以创建新的或改进现有的 OLTP 或分析应用程序。Oracle 数据库被广泛认为是业界最安全的数据库,SQL Firewall 等许多新功能使您能够准确控制针对数据库执行的 SQL。

为了帮助 DBA,Oracle Database 23ai 进一步完善了许多关键管理任务,降低了复杂性,提高了性能,并引入了新功能来简化任务,如回收表空间中的可用空间。Oracle 数据库还在基础架构层面(采用 True Cache 等技术)和 SQL 层面增加了新的性能改进,确保某些语句的执行速度提高数倍。

正  文

5 月 10 日晚,应墨天轮相邀,第一次参加“墨天轮数据库沙龙-Oracle 23c to 23ai 专题直播活动”,也是第一次与 Roger、总监、姚老师三位大佬同台参与直播活动,更是我个人在公共平台的第一次露脸,这里参与讨论 Oracle 23ai 相关的技术话题,主要介绍新特性能与开发者体验上的更新、AI相关功能、Oracle 产品路线等话题展开分享,我也参与了本次分享,主题有如下四点:

  • Oracle 23ai 新特性技术解读

  • Oracle 23ai 新特性应用实践

  • Oracle 23ai 新特性总结展望

  • Oracle 23ai 有哪些AI相关的功能或特性

由于时间的关系,我这里只有 20 分钟左右的分享时间,就大概聊了聊,也可能是第一次参加,难免过于激动和紧张,很多干货没来得及讲,这里将分享本次演讲的脑图,感兴趣的朋友可以来看看。

b0f79da13634eb4659ef9d4a75828be7.png

微信公众号有压缩,可能不是很清晰,可在本公众号后台回复【23ai新特性】获取本图高清大图。

目前本地化 free 安装方式有三种,前面一篇文章已经详细介绍过了,这里就不在多说了。

fb91108fff88ea0ff8ddc0a84b4181ee.png

Ai 向量新特性演示

  1. CREATE TABLE test.docs (doc_id INT,doc_text CLOB,doc_vector VECTOR);
  2. INSERT INTO test.docs VALUES (1,'Here is a simple example:Insert Vectors in a Database Table Using the INSERT Statement.', '[0,2,2,0,0]');
  3. INSERT INTO test.docs VALUES (1,'Here is a simple example:Insert Vectors in a Database Table Using the INSERT Statement 2.', '[1,1,1,0,0]');
  4. commit;

要允许创建向量索引,必须启用 SGA 中存储的名为 "vector pool "的新内存区域。

868a28417bb8af71fbcc4be3a07161a9.png

Vector Pool 是 SGA 中分配的内存,用于存储分层导航小世界 Hierarchical Navigable Small World(HNSW)矢量索引和所有相关元数据。它还用于加快反转平面文件(IVF)索引的创建速度,以及对带有 IVF 索引的基础表进行 DML 操作的速度。

  1. ALTER SYSTEM SET vector_memory_size=500M SCOPE=spfile;
  2. CREATE VECTOR INDEX test.vector_index_docvector ON test.docs (DOC_VECTOR)
  3. ORGANIZATION INMEMORY NEIGHBOR GRAPH;

要调整向量池的大小,请使用 initialization 参数。您可以动态修改此参数内容:

  • 在 CDB 级别指定 矢量池的当前大小。如果存在当前,则减小参数值将失败 矢量用法。

  • 在 PDB 级别指定 PDB 允许的最大矢量池使用量。允许减小参数值 即使当前向量使用量超过新配额。

您可以通过以下方式更改参数文件中的参数值:

  • 通过编辑初始化参数文件。在大多数情况下,新值将在下次启动数据库实例时生效。

  • 通过发出语句来更新服务器参数文件。ALTER SYSTEM SET ... SCOPE=SPFILE

  • 通过发出语句来清除初始化参数值并将其设置回默认值。ALTER SYSTEM RESET

向量索引是一类专门的索引数据结构,用于高效地存储和搜索高维向量数据。向量索引组织向量数据的方式是将相似项(相似性由两个向量之间的距离来定义)分组在一起,从而使搜索过程极其高效。与传统数据库索引不同,向量索引通常用于大型数据集,以执行近似相似性搜索,并根据应用需求在查询准确性和查询性能之间进行权衡。

这一功能可为人工智能驱动的应用提供高效的相似性搜索和更快的查询性能。此外,向量索引的可扩展性和对高维数据的支持提高了分析洞察力,并能带来明智的决策和商业竞争优势。

schema 级别新特性演示

  1. export ORACLE_PDB_SID=FREEPDB1
  2. sqlplus / as sysdba
  3. select sysdate;
  4. alter session set container=freepdb1;
  5. set line 345 pages 345
  6. col name for a50
  7. select file#,status,name,bytes/1024/1024 MB from v$datafile;
  8. create user JiekeXu identified by Oracle23Ai default tablespace JiekeXu;
  9. grant connect,resource,unlimited tablespace to JiekeXu;
  10. --创建只读用户
  11. create user JiekeXu_sel identified by Oracle23Ai default tablespace users;
  12. grant connect to JiekeXu_sel;
  13. --创建表
  14. CREATE TABLE IF NOT EXISTS JiekeXu.Customers (ID NUMBER(10), Name VARCHAR2(100));
  15. insert into JiekeXu.Customers values(1,'jiekexu'),(2,'modb'),(3,'DBA');
  16. commit;
  17. drop table IF EXISTS JiekeXu.Customers;
  18. drop table IF EXISTS JiekeXu.Customers;
  19. --赋权 schema 级别
  20. grant select any table on schema JIEKEXU to JIEKEXU_SEL;

开发者角色

DB_DEVELOPER_ROLE 角色提供了应用程序开发人员所需的大部分系统权限、对象权限、预定义角色、PL/SQL 包权限和跟踪权限。

应用程序开发人员需要大量这些权限来设计、开发和部署应用程序。Oracle 建议授予应用程序开发人员 DB_DEVELOPER_ROLE 角色,而不是单独授予这些权限或授予用户 DBA 角色。授予应用程序用户 DB_DEVELOPER_ROLE 角色不仅符合最小权限原则并确保开发环境的更高安全性,而且还便于管理应用程序用户的角色授予和撤销。DB_DEVELOPER_ROLE 角色可在 CDB 或 PDB 中使用。请勿修改 DB_DEVELOPER_ROLE。

示例:

  1. GRANT DB_DEVELOPER_ROLE TO test;
  2. SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE='TEST';
  3. REVOKE DB_DEVELOPER_ROLE FROM TEST;

查看 DB_DEVELOPER_ROLE 角色都有哪些权限。

  1. set serveroutput on format wrapped;
  2. DECLARE
  3. procedure printRolePrivileges(
  4. p_role in varchar2,
  5. p_spaces_to_indent in number) IS
  6. v_child_roles DBMS_SQL.VARCHAR2_TABLE;
  7. v_system_privs DBMS_SQL.VARCHAR2_TABLE;
  8. v_table_privs DBMS_SQL.VARCHAR2_TABLE;
  9. v_indent_spaces varchar2(2048);
  10. BEGIN
  11. -- Indentation for nested privileges via granted roles.
  12. for space in 1..p_spaces_to_indent LOOP
  13. v_indent_spaces := v_indent_spaces || ' ';
  14. end LOOP;
  15. -- Get the system privileges granted to p_role
  16. select PRIVILEGE bulk collect into v_system_privs
  17. from DBA_SYS_PRIVS
  18. where GRANTEE = p_role
  19. order by PRIVILEGE;
  20. -- Print the system privileges granted to p_role
  21. for privind in 1..v_system_privs.COUNT LOOP
  22. DBMS_OUTPUT.PUT_LINE(
  23. v_indent_spaces || 'System priv: ' || v_system_privs(privind));
  24. END LOOP;
  25. -- Get the object privileges granted to p_role
  26. select PRIVILEGE || ' ' || OWNER || '.' || TABLE_NAME
  27. bulk collect into v_table_privs
  28. from DBA_TAB_PRIVS
  29. where GRANTEE = p_role
  30. order by TABLE_NAME asc;
  31. -- Print the object privileges granted to p_role
  32. for tabprivind in 1..v_table_privs.COUNT LOOP
  33. DBMS_OUTPUT.PUT_LINE(
  34. v_indent_spaces || 'Object priv: ' || v_table_privs(tabprivind));
  35. END LOOP;
  36. -- get all roles granted to p_role
  37. select GRANTED_ROLE bulk collect into v_child_roles
  38. from DBA_ROLE_PRIVS
  39. where GRANTEE = p_role
  40. order by GRANTED_ROLE asc;
  41. -- Print all roles granted to p_role and handle child roles recursively.
  42. for roleind in 1..v_child_roles.COUNT LOOP
  43. -- Print child role
  44. DBMS_OUTPUT.PUT_LINE(
  45. v_indent_spaces || 'Role priv: ' || v_child_roles(roleind));
  46. -- Print privileges for the child role recursively. Pass 2 additional
  47. -- spaces to illustrate these privileges belong to a child role.
  48. printRolePrivileges(v_child_roles(roleind), p_spaces_to_indent + 2);
  49. END LOOP;
  50. EXCEPTION
  51. when OTHERS then
  52. DBMS_OUTPUT.PUT_LINE('Got exception: ' || SQLERRM );
  53. END printRolePrivileges;
  54. BEGIN
  55. printRolePrivileges('DB_DEVELOPER_ROLE', 0);
  56. END;
  57. /
  58. System priv: CREATE CUBE
  59. System priv: CREATE CUBE BUILD PROCESS
  60. System priv: CREATE CUBE DIMENSION
  61. System priv: CREATE DIMENSION
  62. System priv: CREATE DOMAIN
  63. System priv: CREATE JOB
  64. System priv: CREATE MINING MODEL
  65. System priv: CREATE MLE
  66. System priv: CREATE SESSION
  67. System priv: DEBUG CONNECT SESSION
  68. System priv: EXECUTE DYNAMIC MLE
  69. System priv: FORCE TRANSACTION
  70. System priv: ON COMMIT REFRESH
  71. Object priv: SELECT SYS.DBA_PENDING_TRANSACTIONS
  72. Object priv: EXECUTE SYS.DBMS_REDACT
  73. Object priv: EXECUTE SYS.DBMS_RLS
  74. Object priv: EXECUTE SYS.DBMS_TSDP_MANAGE
  75. Object priv: EXECUTE SYS.DBMS_TSDP_PROTECT
  76. Object priv: EXECUTE SYS.JAVASCRIPT
  77. Object priv: READ SYS.V_$PARAMETER
  78. Object priv: READ SYS.V_$STATNAME
  79. Role priv: CTXAPP
  80. System priv: CREATE SEQUENCE
  81. Object priv: EXECUTE CTXSYS.CTX_ANL
  82. Object priv: EXECUTE CTXSYS.CTX_DDL
  83. Object priv: EXECUTE CTXSYS.CTX_ENTITY
  84. Object priv: EXECUTE CTXSYS.CTX_OUTPUT
  85. Object priv: EXECUTE CTXSYS.CTX_THES
  86. Object priv: EXECUTE CTXSYS.CTX_ULEXER
  87. Object priv: INSERT CTXSYS.DR$DICTIONARY
  88. Object priv: DELETE CTXSYS.DR$DICTIONARY
  89. Object priv: SELECT CTXSYS.DR$DICTIONARY
  90. Object priv: UPDATE CTXSYS.DR$DICTIONARY
  91. Object priv: INSERT CTXSYS.DR$THS
  92. Object priv: INSERT CTXSYS.DR$THS_BT
  93. Object priv: INSERT CTXSYS.DR$THS_FPHRASE
  94. Object priv: UPDATE CTXSYS.DR$THS_PHRASE
  95. Object priv: INSERT CTXSYS.DR$THS_PHRASE
  96. Object priv: EXECUTE CTXSYS.DRIENTL
  97. Object priv: EXECUTE CTXSYS.DRITHSL
  98. Role priv: RESOURCE
  99. System priv: CREATE ANALYTIC VIEW
  100. System priv: CREATE ATTRIBUTE DIMENSION
  101. System priv: CREATE CLUSTER
  102. System priv: CREATE HIERARCHY
  103. System priv: CREATE INDEXTYPE
  104. System priv: CREATE MATERIALIZED VIEW
  105. System priv: CREATE OPERATOR
  106. System priv: CREATE PROCEDURE
  107. System priv: CREATE PROPERTY GRAPH
  108. System priv: CREATE SEQUENCE
  109. System priv: CREATE SYNONYM
  110. System priv: CREATE TABLE
  111. System priv: CREATE TRIGGER
  112. System priv: CREATE TYPE
  113. System priv: CREATE VIEW
  114. Role priv: SODA_APP
  115. Object priv: EXECUTE XDB.DBMS_SODA_ADMIN
  116. Object priv: EXECUTE XDB.DBMS_SODA_USER_ADMIN
  117. Object priv: READ XDB.JSON$USER_COLLECTION_METADATA
  118. PL/SQL procedure successfully completed.

SQL*Plus 新特性

本次也发现了 SQL*Plus 有几个新特性,比如 config、ping、oerr、set errordetails、show connection 等命令,也都非常的简洁,不过可能 free 版本和云上企业版有所差别,或者有 bug,当我在 SQL*Plus 中执行 oerr 命令时,命令结束后无法终止,各种办法都尝试了也不行,只能关闭 CRT 窗口,感觉有可能是 bug,具体特性我这里也不介绍了,上篇安装篇中有提及,感兴趣的可以去看看,或者直接阅读下面官方英文获得第一手资料。

  1. SQL*Plus CONFIG Command
  2. SQL*Plus OERR Command and Improved HELP Syntax
  3. SQL*Plus PING Command and Command Line Option
  4. SQL*Plus SET ERRORDETAILS Command
  5. SQL*Plus SHOW CONNECTION Command
  6. SQL*Plus ARGUMENT Command
  7. https://docs.oracle.com/en/database/oracle/oracle-database/23/sqpug/ping.html#GUID-60C4A1C5-535A-4C9B-88F7-DDE2C198FD6E
  1. SQL> SHOW CONNECTION
  2. SP2-0306: Invalid option.
  3. Help: https://docs.oracle.com/error-help/db/sp2-0306/
  4. Usage: SHOW CONN[ECTION] NETS[ERVICENAMES] [<net_service_name 1> <net_service_name 2> ..]
  5. SQL>
  6. SQL> SHOW CONNECTION NETS
  7. Local Net Naming configuration file: /opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.ora
  8. EXTPROC_CONNECTION_DATA
  9. FREE
  10. LISTENER_FREE
  11. FREEPDB1
  12. SQL>
  13. SQL> ping
  14. Ok (0.902 msec)
  15. SQL> ping freepdb1
  16. Local Net Naming configuration file: /opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.ora
  17. Attempting to contact: (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = FREEPDB1)))
  18. Ok (0.725 msec)
  19. SQL> CONFIG EXPORT TNS FILE
  20. Generating config store JSON for Local Net Naming configuration file /opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.ora
  21. Config store JSON file generated successfully (/home/oracle/oraconfig.json)
  22. --Oracle 23ai 版本的 SQL*Plus 显示很多错误消息的帮助 URL。
  23. --这些链接提供了错误消息的完整描述以及应对方法。
  24. --URL 的显示由 ERRORDETAILS 设置控制,设定范围值为 OFF、ON 和 VERBOSE,其中 ON 为默认值。
  25. SQL> show errordetails
  26. errordetails ON
  27. SQL> set errordetails off
  28. SQL> set errordetails VERBOSE
  29. --当然也可以通过环境变量 ORA_SUPPRESS_ERROR_URL 来实现 ERRORDETAILS 的值设置,设置为ON或OFF。
  30. --只是这个 free 版本应该不生效,可能是云上企业版才行。
  31. export ORA_SUPPRESS_ERROR_URL=TRUE
  32. SQL> show errordetails
  33. errordetails OFF
  34. SQL>
  35. export ORA_SUPPRESS_ERROR_URL=FALSE
  36. SQL> show errordetails
  37. errordetails ON
  38. SQL> oerr ORA-00600
  39. Message: "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]"
  40. Help: https://docs.oracle.com/error-help/db/ora-00600/
  41. Cause: This is the generic internal error number for Oracle program
  42. exceptions. It indicates that a process has encountered a low-level,
  43. unexpected condition. The first argument is the internal message
  44. number. This argument and the database version number are critical in
  45. identifying the root cause and the potential impact to your system.
  46. SP2-0642: SQL*Plus internal error state 2590, context 45378:32768:0
  47. Help: https://docs.oracle.com/error-help/db/sp2-0642/
  48. Unable to proceed
  49. help 00600
  50. help ora 00600
  51. help ora-00600


废弃参数

  1. SQL> SELECT name from v$parameter WHERE isdeprecated = 'TRUE' ORDER BY name;
  2. NAME
  3. --------------------------------------------------------------------------------
  4. active_instance_count
  5. asm_preferred_read_failure_groups
  6. audit_file_dest
  7. audit_sys_operations
  8. audit_syslog_level
  9. audit_trail
  10. background_dump_dest
  11. buffer_pool_keep
  12. buffer_pool_recycle
  13. commit_write
  14. cursor_space_for_time
  15. db_block_buffers
  16. encrypt_new_tablespaces
  17. fast_start_io_target
  18. instance_groups
  19. lock_name_space
  20. optimizer_secure_view_merging
  21. parallel_adaptive_multi_user
  22. plsql_debug
  23. plsql_v2_compatibility
  24. pre_page_sga
  25. rdbms_server_dn
  26. resource_manager_cpu_allocation
  27. serial_reuse
  28. sql_trace
  29. txn_auto_rollback_high_priority_wait_target
  30. txn_auto_rollback_medium_priority_wait_target
  31. txn_auto_rollback_mode
  32. user_dump_dest
  33. 29 rows selected.

d2db42e584150c726037a96a6a2a0564.png

40c84cb4451153f65746bb4408a63efe.png

参考链接

  1. https://www.oracle.com/database/23ai/
  2. https://docs.oracle.com/en/database/oracle/oracle-database/23/xeinl/index.html
  3. https://docs.oracle.com/en/database/oracle/oracle-database/23/nfcoa/toc.htm
  4. https://docs.oracle.com/en/database/oracle/oracle-database/23/nfcoa/application_development.html#GUID-87019-4

全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

0ab2e35ac4df081f6812a26ee016d516.gif

分享几个数据库备份脚本

一文搞懂 Oracle 统计信息
 
 

我的 Oracle ACE 心路历程

MOP 系列|MOP 三种主流数据库索引简介

Oracle 主流版本不同架构下的静默安装指南
 
 

关机重启导致 ASM 磁盘丢失数据库无法启动

Oracle SQL 性能分析(SPA)原理与实战演练
 
 

Oracle 11g 升级到 19c 需要关注的几个问题

Windows 10 环境下 MySQL 8.0.33 安装指南

SQL 大全(四)|数据库迁移升级时常用 SQL 语句

OGG|使用 OGG19c 迁移 Oracle11g 到 19C(第二版)

Oracle 大数据量导出工具——sqluldr2 的安装与使用

从国产数据库调研报告中你都能了解哪些信息及我的总结建议

使用数据泵利用 rowid 分片导出导入 lob 大表及最佳实践

在归档模式下直接 rm dbf 数据文件并重启数据库还有救吗?

欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
————————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
————————————————————————————

df86a0f6bde62705f9d18110d3762fa1.jpeg

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/935217
推荐阅读
相关标签
  

闽ICP备14008679号