赞
踩
作者 | 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 23ai。Oracle 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 分钟左右的分享时间,就大概聊了聊,也可能是第一次参加,难免过于激动和紧张,很多干货没来得及讲,这里将分享本次演讲的脑图,感兴趣的朋友可以来看看。
微信公众号有压缩,可能不是很清晰,可在本公众号后台回复【23ai新特性】获取本图高清大图。
目前本地化 free 安装方式有三种,前面一篇文章已经详细介绍过了,这里就不在多说了。
- CREATE TABLE test.docs (doc_id INT,doc_text CLOB,doc_vector VECTOR);
- 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]');
- 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]');
- commit;
要允许创建向量索引,必须启用 SGA 中存储的名为 "vector pool "的新内存区域。
Vector Pool 是 SGA 中分配的内存,用于存储分层导航小世界 Hierarchical Navigable Small World(HNSW)矢量索引和所有相关元数据。它还用于加快反转平面文件(IVF)索引的创建速度,以及对带有 IVF 索引的基础表进行 DML 操作的速度。
- ALTER SYSTEM SET vector_memory_size=500M SCOPE=spfile;
- CREATE VECTOR INDEX test.vector_index_docvector ON test.docs (DOC_VECTOR)
- ORGANIZATION INMEMORY NEIGHBOR GRAPH;
要调整向量池的大小,请使用 initialization 参数。您可以动态修改此参数内容:
在 CDB 级别指定 矢量池的当前大小。如果存在当前,则减小参数值将失败 矢量用法。
在 PDB 级别指定 PDB 允许的最大矢量池使用量。允许减小参数值 即使当前向量使用量超过新配额。
您可以通过以下方式更改参数文件中的参数值:
通过编辑初始化参数文件。在大多数情况下,新值将在下次启动数据库实例时生效。
通过发出语句来更新服务器参数文件。ALTER SYSTEM SET ... SCOPE=SPFILE
通过发出语句来清除初始化参数值并将其设置回默认值。ALTER SYSTEM RESET
- export ORACLE_PDB_SID=FREEPDB1
- sqlplus / as sysdba
- select sysdate;
- alter session set container=freepdb1;
- set line 345 pages 345
- col name for a50
- select file#,status,name,bytes/1024/1024 MB from v$datafile;
- create user JiekeXu identified by Oracle23Ai default tablespace JiekeXu;
- grant connect,resource,unlimited tablespace to JiekeXu;
-
-
- --创建只读用户
- create user JiekeXu_sel identified by Oracle23Ai default tablespace users;
- grant connect to JiekeXu_sel;
- --创建表
- CREATE TABLE IF NOT EXISTS JiekeXu.Customers (ID NUMBER(10), Name VARCHAR2(100));
- insert into JiekeXu.Customers values(1,'jiekexu'),(2,'modb'),(3,'DBA');
- commit;
- drop table IF EXISTS JiekeXu.Customers;
- drop table IF EXISTS JiekeXu.Customers;
-
-
- --赋权 schema 级别
- 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。
示例:
- GRANT DB_DEVELOPER_ROLE TO test;
- SELECT GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE='TEST';
- REVOKE DB_DEVELOPER_ROLE FROM TEST;
查看 DB_DEVELOPER_ROLE 角色都有哪些权限。
- set serveroutput on format wrapped;
- DECLARE
- procedure printRolePrivileges(
- p_role in varchar2,
- p_spaces_to_indent in number) IS
- v_child_roles DBMS_SQL.VARCHAR2_TABLE;
- v_system_privs DBMS_SQL.VARCHAR2_TABLE;
- v_table_privs DBMS_SQL.VARCHAR2_TABLE;
- v_indent_spaces varchar2(2048);
- BEGIN
- -- Indentation for nested privileges via granted roles.
- for space in 1..p_spaces_to_indent LOOP
- v_indent_spaces := v_indent_spaces || ' ';
- end LOOP;
- -- Get the system privileges granted to p_role
- select PRIVILEGE bulk collect into v_system_privs
- from DBA_SYS_PRIVS
- where GRANTEE = p_role
- order by PRIVILEGE;
-
-
- -- Print the system privileges granted to p_role
- for privind in 1..v_system_privs.COUNT LOOP
- DBMS_OUTPUT.PUT_LINE(
- v_indent_spaces || 'System priv: ' || v_system_privs(privind));
- END LOOP;
-
-
- -- Get the object privileges granted to p_role
- select PRIVILEGE || ' ' || OWNER || '.' || TABLE_NAME
- bulk collect into v_table_privs
- from DBA_TAB_PRIVS
- where GRANTEE = p_role
- order by TABLE_NAME asc;
-
-
- -- Print the object privileges granted to p_role
- for tabprivind in 1..v_table_privs.COUNT LOOP
- DBMS_OUTPUT.PUT_LINE(
- v_indent_spaces || 'Object priv: ' || v_table_privs(tabprivind));
- END LOOP;
-
-
- -- get all roles granted to p_role
- select GRANTED_ROLE bulk collect into v_child_roles
- from DBA_ROLE_PRIVS
- where GRANTEE = p_role
- order by GRANTED_ROLE asc;
-
-
- -- Print all roles granted to p_role and handle child roles recursively.
- for roleind in 1..v_child_roles.COUNT LOOP
- -- Print child role
- DBMS_OUTPUT.PUT_LINE(
- v_indent_spaces || 'Role priv: ' || v_child_roles(roleind));
-
-
- -- Print privileges for the child role recursively. Pass 2 additional
- -- spaces to illustrate these privileges belong to a child role.
- printRolePrivileges(v_child_roles(roleind), p_spaces_to_indent + 2);
- END LOOP;
-
-
- EXCEPTION
- when OTHERS then
- DBMS_OUTPUT.PUT_LINE('Got exception: ' || SQLERRM );
-
-
- END printRolePrivileges;
-
-
- BEGIN
- printRolePrivileges('DB_DEVELOPER_ROLE', 0);
- END;
- /
-
-
- System priv: CREATE CUBE
- System priv: CREATE CUBE BUILD PROCESS
- System priv: CREATE CUBE DIMENSION
- System priv: CREATE DIMENSION
- System priv: CREATE DOMAIN
- System priv: CREATE JOB
- System priv: CREATE MINING MODEL
- System priv: CREATE MLE
- System priv: CREATE SESSION
- System priv: DEBUG CONNECT SESSION
- System priv: EXECUTE DYNAMIC MLE
- System priv: FORCE TRANSACTION
- System priv: ON COMMIT REFRESH
- Object priv: SELECT SYS.DBA_PENDING_TRANSACTIONS
- Object priv: EXECUTE SYS.DBMS_REDACT
- Object priv: EXECUTE SYS.DBMS_RLS
- Object priv: EXECUTE SYS.DBMS_TSDP_MANAGE
- Object priv: EXECUTE SYS.DBMS_TSDP_PROTECT
- Object priv: EXECUTE SYS.JAVASCRIPT
- Object priv: READ SYS.V_$PARAMETER
- Object priv: READ SYS.V_$STATNAME
- Role priv: CTXAPP
- System priv: CREATE SEQUENCE
- Object priv: EXECUTE CTXSYS.CTX_ANL
- Object priv: EXECUTE CTXSYS.CTX_DDL
- Object priv: EXECUTE CTXSYS.CTX_ENTITY
- Object priv: EXECUTE CTXSYS.CTX_OUTPUT
- Object priv: EXECUTE CTXSYS.CTX_THES
- Object priv: EXECUTE CTXSYS.CTX_ULEXER
- Object priv: INSERT CTXSYS.DR$DICTIONARY
- Object priv: DELETE CTXSYS.DR$DICTIONARY
- Object priv: SELECT CTXSYS.DR$DICTIONARY
- Object priv: UPDATE CTXSYS.DR$DICTIONARY
- Object priv: INSERT CTXSYS.DR$THS
- Object priv: INSERT CTXSYS.DR$THS_BT
- Object priv: INSERT CTXSYS.DR$THS_FPHRASE
- Object priv: UPDATE CTXSYS.DR$THS_PHRASE
- Object priv: INSERT CTXSYS.DR$THS_PHRASE
- Object priv: EXECUTE CTXSYS.DRIENTL
- Object priv: EXECUTE CTXSYS.DRITHSL
- Role priv: RESOURCE
- System priv: CREATE ANALYTIC VIEW
- System priv: CREATE ATTRIBUTE DIMENSION
- System priv: CREATE CLUSTER
- System priv: CREATE HIERARCHY
- System priv: CREATE INDEXTYPE
- System priv: CREATE MATERIALIZED VIEW
- System priv: CREATE OPERATOR
- System priv: CREATE PROCEDURE
- System priv: CREATE PROPERTY GRAPH
- System priv: CREATE SEQUENCE
- System priv: CREATE SYNONYM
- System priv: CREATE TABLE
- System priv: CREATE TRIGGER
- System priv: CREATE TYPE
- System priv: CREATE VIEW
- Role priv: SODA_APP
- Object priv: EXECUTE XDB.DBMS_SODA_ADMIN
- Object priv: EXECUTE XDB.DBMS_SODA_USER_ADMIN
- Object priv: READ XDB.JSON$USER_COLLECTION_METADATA
-
-
- PL/SQL procedure successfully completed.
SQL*Plus 新特性
本次也发现了 SQL*Plus 有几个新特性,比如 config、ping、oerr、set errordetails、show connection 等命令,也都非常的简洁,不过可能 free 版本和云上企业版有所差别,或者有 bug,当我在 SQL*Plus 中执行 oerr 命令时,命令结束后无法终止,各种办法都尝试了也不行,只能关闭 CRT 窗口,感觉有可能是 bug,具体特性我这里也不介绍了,上篇安装篇中有提及,感兴趣的可以去看看,或者直接阅读下面官方英文获得第一手资料。
- SQL*Plus CONFIG Command
- SQL*Plus OERR Command and Improved HELP Syntax
- SQL*Plus PING Command and Command Line Option
- SQL*Plus SET ERRORDETAILS Command
- SQL*Plus SHOW CONNECTION Command
- SQL*Plus ARGUMENT Command
- https://docs.oracle.com/en/database/oracle/oracle-database/23/sqpug/ping.html#GUID-60C4A1C5-535A-4C9B-88F7-DDE2C198FD6E
- SQL> SHOW CONNECTION
- SP2-0306: Invalid option.
- Help: https://docs.oracle.com/error-help/db/sp2-0306/
- Usage: SHOW CONN[ECTION] NETS[ERVICENAMES] [<net_service_name 1> <net_service_name 2> ..]
- SQL>
- SQL> SHOW CONNECTION NETS
- Local Net Naming configuration file: /opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.ora
- EXTPROC_CONNECTION_DATA
- FREE
- LISTENER_FREE
- FREEPDB1
- SQL>
- SQL> ping
- Ok (0.902 msec)
- SQL> ping freepdb1
- Local Net Naming configuration file: /opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.ora
- Attempting to contact: (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = FREEPDB1)))
- Ok (0.725 msec)
- SQL> CONFIG EXPORT TNS FILE
- Generating config store JSON for Local Net Naming configuration file /opt/oracle/product/23ai/dbhomeFree/network/admin/tnsnames.ora
- Config store JSON file generated successfully (/home/oracle/oraconfig.json)
-
-
-
-
- --Oracle 23ai 版本的 SQL*Plus 显示很多错误消息的帮助 URL。
- --这些链接提供了错误消息的完整描述以及应对方法。
- --URL 的显示由 ERRORDETAILS 设置控制,设定范围值为 OFF、ON 和 VERBOSE,其中 ON 为默认值。
- SQL> show errordetails
- errordetails ON
- SQL> set errordetails off
-
-
- SQL> set errordetails VERBOSE
-
-
- --当然也可以通过环境变量 ORA_SUPPRESS_ERROR_URL 来实现 ERRORDETAILS 的值设置,设置为ON或OFF。
- --只是这个 free 版本应该不生效,可能是云上企业版才行。
- export ORA_SUPPRESS_ERROR_URL=TRUE
-
-
- SQL> show errordetails
- errordetails OFF
- SQL>
- export ORA_SUPPRESS_ERROR_URL=FALSE
-
-
- SQL> show errordetails
- errordetails ON
-
-
- SQL> oerr ORA-00600
- Message: "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]"
- Help: https://docs.oracle.com/error-help/db/ora-00600/
- Cause: This is the generic internal error number for Oracle program
- exceptions. It indicates that a process has encountered a low-level,
- unexpected condition. The first argument is the internal message
- number. This argument and the database version number are critical in
- identifying the root cause and the potential impact to your system.
- SP2-0642: SQL*Plus internal error state 2590, context 45378:32768:0
- Help: https://docs.oracle.com/error-help/db/sp2-0642/
- Unable to proceed
-
-
- help 00600
- help ora 00600
- help ora-00600
废弃参数
SQL> SELECT name from v$parameter WHERE isdeprecated = 'TRUE' ORDER BY name; NAME -------------------------------------------------------------------------------- active_instance_count asm_preferred_read_failure_groups audit_file_dest audit_sys_operations audit_syslog_level audit_trail background_dump_dest buffer_pool_keep buffer_pool_recycle commit_write cursor_space_for_time db_block_buffers encrypt_new_tablespaces fast_start_io_target instance_groups lock_name_space optimizer_secure_view_merging parallel_adaptive_multi_user plsql_debug plsql_v2_compatibility pre_page_sga rdbms_server_dn resource_manager_cpu_allocation serial_reuse sql_trace txn_auto_rollback_high_priority_wait_target txn_auto_rollback_medium_priority_wait_target txn_auto_rollback_mode user_dump_dest 29 rows selected.
参考链接
- https://www.oracle.com/database/23ai/
- https://docs.oracle.com/en/database/oracle/oracle-database/23/xeinl/index.html
- https://docs.oracle.com/en/database/oracle/oracle-database/23/nfcoa/toc.htm
- https://docs.oracle.com/en/database/oracle/oracle-database/23/nfcoa/application_development.html#GUID-87019-4
全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~
一文搞懂 Oracle 统计信息
Oracle 主流版本不同架构下的静默安装指南
Oracle SQL 性能分析(SPA)原理与实战演练
Oracle 大数据量导出工具——sqluldr2 的安装与使用
在归档模式下直接 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
————————————————————————————
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。