专用 Exadata 基础结构上的自治 AI 数据库中的 Oracle Database 特性

本文提供了有关在 Autonomous AI Database on Dedicated Exadata Infrastructure 中使用 Oracle AI Database 功能和选件的信息。

有关 Autonomous AI Database Serverless 部署中的等效信息,请参阅 Autonomous AI Database for Experienced Database Users

您可以通过 Oracle Database 19c 或 Oracle AI Database 26ai 预配自治 AI 数据库,具体取决于其父自治容器数据库 (Autonomous Container Database,ACD) 的数据库软件版本。例如,要使用 Oracle AI Database 26ai 创建自治 AI 数据库,您必须选择 Oracle 数据库软件版本为 26ai 的 ACD。有关这些数据库版本支持的数据库功能的完整列表,请参阅 Oracle Help Center 上的 Oracle Database 26aiOracle Database 19c

Autonomous AI Database 可为您配置和优化数据库。您无需执行管理操作来配置数据库。此服务中不提供仅用于数据库管理的 SQL 命令。同样,其他管理接口和实用程序(如 RMAN)不可用。

下面我们将讨论 Oracle 数据库在自治 AI 数据库中如何处理的一些关键特性:

  • 数据和临时表空间:自动配置数据库的默认数据和临时表空间。默认数据表空间的名称为 DATA。
  • 数据库字符集:数据库字符集为 Unicode AL32UTF8。
  • 存储的数据加密:存储的数据使用 AES256(高级加密标准 256 位密码密钥)算法进行加密。

    注意:

    2021 年 9 月之前创建的 Autonomous AI Database 默认使用 AES128 算法。
    如果需要,可以使用 ALTER TABLESPACE 命令更改表空间的加密算法。例如,要将 DATA 表空间的加密算法更改为 AES256,请输入:
    ALTER TABLESPACE data ENCRYPTION ONLINE USING 'AES256' REKEY;
  • 数据压缩:对于 Autonomous AI Transaction Processing 工作负载,默认情况下启用压缩。对于 Autonomous AI Lakehouse 工作负载,默认情况下会为所有表启用混合列压缩

    要启用或禁用压缩,或者使用 CREATE TABLEALTER TABLE 命令中的 table_compression 子句为表指定不同的压缩方法。

  • 数据库访问权限:您无权直接访问数据库节点或本地文件系统以及 SYSTEM 或 SYSAUX 表空间。
  • 并行执行:默认情况下,不会为 Autonomous AI Transaction Processing 工作负载启用并行执行(SQL 语句中的并行操作)。但是,对于 Autonomous AI Lakehouse 工作负载,默认情况下会启用并行执行,并且会根据系统中的 CPU 数量以及连接到数据库时使用的数据库服务来设置 SQL 语句的并行度。
    • 可以使用 parallel_clause 或使用提示来修改表或索引的并行度。例如,可以使用以下 SQL 命令在会话中禁用并行 DML:
      ALTER SESSION DISABLE PARALLEL DML;

      有关并行 DML 操作的更多信息,请参见 Oracle Database 19c VLDB and Partitioning GuideOracle Database 26ai VLDB and Partitioning Guide

    • 如果手动创建索引并指定 parallel_clause ,则并行属性将在创建索引后保留。在这种情况下,最终用户可以并行运行未知的 SQL 语句。将 parallel_clause 值更改为 NOPARALLEL,或将 PARALLEL 属性设置为 1 以指定串行执行:
       ALTER INDEX index_name NOPARALLEL;

      或者

       ALTER INDEX index_name PARALLEL 1; 

自治 AI 数据库的最新特性

Autonomous AI Database 包含最新的 Oracle Database 功能。

Autonomous AI Database 包含以下功能:

  • 根据应用工作负载的变化自动执行索引管理任务,例如创建、重建和删除索引。有关详细信息,请参阅 Oracle Database 19c Administrator’s GuideOracle Database 26ai Administrator’s Guide 中的 Managing Auto Indexes

  • 在传统 DML 工作负载运行时自动收集实时统计信息。由于 DBMS_STATS 作业之间的统计信息可能会过时,常规 DML 的联机统计信息收集可帮助优化程序生成更优化的计划。在线统计信息旨在减少优化程序被过时统计信息误导的可能性。可以通过 PL/SQL 程序包、数据字典视图和提示来管理和访问常规 DML 的统计信息。有关详细信息,请参阅 Oracle Database 19c SQL Tuning GuideOracle Database 26ai SQL Tuning Guide 中的 Real-Time Statistics

  • 更频繁地自动收集统计信息。高频率自动优化程序统计信息收集是对标准统计信息收集作业的补充。缺省情况下,每 15 分钟进行一次收集,这意味着统计数据的过时时间较少。有关详细信息,请参阅 Oracle Database 19c SQL Tuning GuideOracle Database 26ai SQL Tuning Guide 中的 Configuring High-Frequency Automatic Optimizer Statistics Collection

  • 隔离资源管理器终止的 SQL 语句的执行计划,以消耗 Oracle 数据库中的过多系统资源。可以使用 DBMS_SQLQ 程序包中的过程指定对 SQL 语句资源消耗的限制,从而为 SQL 语句配置隔离设置。当 SQL 语句超出其中的任何资源消耗限制时,将终止该语句并隔离执行计划。通过这种方式,数据库可以防止高资源 SQL 语句重复执行。有关详细信息,请参阅 Oracle Database 19c Administrator’s GuideOracle Database 26ai Administrator’s Guide 中的 Quarantine for Execution Plans for SQL Statements Consuming Excessive System Resources

  • 为 Internet of Things (IoT) 应用程序等应用程序优化高频率单行插入。请参阅《 Oracle Database 19c Performance Tuning Guide 》《 Oracle Database 26ai Performance Tuning Guide 》中的 Enabling High Performance Data Streaming With the Memoptimized Rowstore

ADMIN 用户和 SYS 用户

Oracle Autonomous AI Database on Dedicated Exadata Infrastructure 中,预定义的管理用户为 ADMIN。在 Oracle Database 中,预定义的管理用户为 SYS。虽然这两个用户在各自的数据库中具有相同的用途,但它们并不相同,并且不具有相同的权限集。

由于 Oracle Autonomous AI Database on Dedicated Exadata Infrastructure 强制实施安全控制并为您执行管理数据库任务,因此 ADMIN 用户没有 SYS 用户那样多的权限。下面是 ADMIN 用户具有但 Oracle Database 中的 SYS 用户具有的权限列表:

ALTER LOCKDOWN PROFILE
BACKUP ANY TABLE
BECOME USER
CREATE ANY JOB
CREATE ANY LIBRARY
CREATE LIBRARY
CREATE LOCKDOWN PROFILE
CREATE PLUGGABLE DATABASE
DEQUEUE ANY QUEUE
DROP LOCKDOWN PROFILE
EM EXPRESS CONNECT
ENQUEUE ANY QUEUE
EXPORT FULL DATABASE
FLASHBACK ANY TABLE
FLASHBACK ARCHIVE ADMINISTER
GRANT ANY PRIVILEGE
GRANT ANY ROLE
IMPORT FULL DATABASE
INHERIT ANY PRIVILEGES
LOGMINING
MANAGE ANY FILE GROUP
MANAGE ANY QUEUE
MANAGE FILE GROUP
USE ANY JOB RESOURCE
USE ANY SQL TRANSLATION PROFILE

带有 ANY 关键字(例如 SELECT ANY TABLECREATE ANY PROCEDURE)的所有系统权限都符合 COMMON_SCHEMA_ACCESS 锁定要求,并且 ADMIN 用户不能对公用用户方案使用它。

与本地部署 Oracle 数据库不同,本地部署的 ANY 关键字适用于除 SYS 以外的所有用户, ANY 权限仅适用于 Autonomous AI Database 中的非公用用户。

提示:

要查找公用用户的列表,可以作为 ADMIN 用户运行以下查询:
select username 
from dba_users 
where common ='YES' 
order by username;

提示:

要查看可与 ANY 关键字一起使用的权限列表,可以作为 ADMIN 用户运行以下查询:
select distinct(privilege)
from dba_sys_privs 
where grantee like 'ADMIN' and privilege like '%ANY%' 
order by privilege;

数据库初始化参数

Autonomous AI Database 可在预配数据库时自动配置数据库初始化参数。您无需设置任何初始化参数即可开始使用服务。但是,如果需要,可以修改一些参数。

可修改的初始化参数列表

注意:

单击以下列表中的初始化参数以了解有关该参数的更多信息。有关下面不可单击的参数,请参阅 Oracle Database 19c ReferenceOracle Database 26ai Reference 以了解更多信息。
ALLOW_ROWID_COLUMN_TYPE
APPROX_FOR_AGGREGATION
APPROX_FOR_COUNT_DISTINCT
APPROX_FOR_PERCENTILE
AWR_PDB_AUTOFLUSH_ENABLED
CONTAINER_DATA
CURRENT_SCHEMA (Session only by using ALTER SESSION)
CURSOR_SHARING
DB_BLOCK_CHECKING
DDL_LOCK_TIMEOUT
FIXED_DATE
GLOBAL_NAMES
HEAT_MAP
IGNORE_SESSION_SET_PARAM_ERRORS
INMEMORY_OPTIMIZED_ARITHMETIC (Allowed only with ALTER SYSTEM)
INMEMORY_QUERY (Allowed with ALTER SYSTEM and ALTER SESSION)
JOB_QUEUE_PROCESSES (You can only lower its value or bring it back to the original value)
LDAP_DIRECTORY_ACCESS
MAX_IDLE_TIME
NLS_CALENDAR
NLS_COMP
NLS_CURRENCY
NLS_DATE_FORMAT
NLS_DATE_LANGUAGE
NLS_DUAL_CURRENCY
NLS_ISO_CURRENCY
NLS_LANGUAGE
NLS_LENGTH_SEMANTICS
NLS_NCHAR_CONV_EXCP
NLS_NUMERIC_CHARACTERS
NLS_SORT
NLS_TERRITORY
NLS_TIME_FORMAT
NLS_TIME_TZ_FORMAT
NLS_TIMESTAMP_FORMAT
NLS_TIMESTAMP_TZ_FORMAT
OPEN_CURSORS (Allowed range of values are 1000 to 4000)
OPEN_LINKS (You must set SCOPE=SPFILE and restart the Autonomous Database after modifying this parameter)
OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES (Session only by using ALTER SESSION)
OPTIMIZER_IGNORE_HINTS
OPTIMIZER_IGNORE_PARALLEL_HINTS
OPTIMIZER_INMEMORY_AWARE (Allowed with ALTER SYSTEM and ALTER SESSION)
OPTIMIZER_MODE
PARALLEL_MIN_DEGREE
PARALLEL_DEGREE_LIMIT
PLSCOPE_SETTINGS
PLSQL_CCFLAGS
PLSQL_DEBUG
PLSQL_OPTIMIZE_LEVEL
PLSQL_WARNINGS
QUERY_REWRITE_INTEGRITY
RECYCLEBIN
RESULT_CACHE_MODE
SESSION_EXIT_ON_PACKAGE_STATE_ERROR
SQL_TRACE (Allowed only with ALTER SESSION)
STATISTICS_LEVEL (Session only by using ALTER SESSION)
SYSDATE_AT_DBTIMEZONE Select a Time Zone for SYSDATE on Autonomous AI Database
TIME_ZONE
UNDO_RETENTION (min=300 and max=86400)

SYSDATE_AT_DBTIMEZONE 在 Autonomous AI Database 上为 SYSDATE 选择时区

SYSDATE_AT_DBTIMEZONE 允许在会话中对调用 SYSDATESYSTIMESTAMP 时返回的日期和时间值进行特殊处理。

根据 SYSDATE_AT_DBTIMEZONE 的值,您可以看到基于默认 Autonomous AI Database 时区 (Coordinated Universal Time,UTC) 的日期和时间,或者基于在数据库中设置的时区。

属性 说明
参数类型 布尔
默认值 FALSE
可修改 ALTER SESSION, ALTER SYSTEM
值范围 TRUE | FALSE

默认 Autonomous AI Database 时区

默认的 Autonomous AI Database 时区为协调世界时 (UTC),默认情况下,对 SYSDATE 的调用和 SYSTIMESTAMP 返回日期和时间 (UTC)。

要更改数据库时区,可以运行以下语句。

此示例将数据库时区设置为 UTC-5

ALTER DATABASE SET TIME_ZONE='-05:00';

此示例设置美国东海岸的数据库时区:America/New_York,并在 DST 交换机处自动调整时间:

ALTER DATABASE SET TIME_ZONE='America/New_York';

注意:

您必须重新启动 Autonomous AI Database 实例才能使更改生效。

设置数据库时区后,默认情况下,SYSDATESYSTIMESTAMP 继续以 UTC 格式返回日期和时间(默认情况下,SYSDATE_AT_DBTIMEZONEFALSE)。如果在会话中将 SYSDATE_AT_DBTIMEZONE 设置为 TRUE,则 SYSDATESYSTIMESTAMP 将返回数据库时区。

有关将 SET TIME_ZONE 子句与 ALTER DATABASE 一起使用的更多信息,请参见 Oracle Database 19cOracle Database 26ai 中的设置数据库时区

在会话中使用 SYSDATE_AT_DBTIMEZONE

当会话中的 SYSDATE_AT_DBTIMEZONEFALSE 时,根据默认的 Autonomous AI Database 时区协调世界时 (UTC) 调用 SYSDATESYSTIMESTAMP 返回值。

SYSDATE_AT_DBTIMEZONE 在会话中为 TRUE 时,对 SYSDATESYSTIMESTAMP 的调用将根据数据库时区返回日期和时间。

注意:

SYSDATE_AT_DBTIMEZONE 设置为 TRUE 仅影响将 SYSDATESYSTIMESTAMP 用作应用程序 SQL 中的运算符(例如,在查询、DML 和 CTAS 操作中)。使用此参数时,建议客户机/会话时区与数据库时区匹配。

范例

以下示例根据 SYSDATE_AT_DBTIMEZONE 参数值返回两个不同时区的日期和时间:

SQL> SELECT DBTIMEZONE FROM DUAL;

DBTIMEZONE
_____________
-05:00

SQL> ALTER SESSION SET SYSDATE_AT_DBTIMEZONE=FALSE;

Session altered.

SQL> SELECT SYSTIMESTAMP FROM DUAL;

SYSTIMESTAMP
______________________________________
27-JAN-22 06.59.45.708082000 PM GMT

SQL> ALTER SESSION SET SYSDATE_AT_DBTIMEZONE=TRUE;

Session altered.

SQL> SELECT SYSTIMESTAMP FROM DUAL;

SYSTIMESTAMP
_________________________________________
27-JAN-22 02.14.47.578946000 PM -05:00 

注意:

在 Database Actions 的 SQL 工作表中执行 SYSDATESYSTIMESTAMP 查询时,返回的时间和日期值采用 UTC(当 SYSDATE_AT_DBTIMEZONE 参数设置为 TRUEFALSE 时)。要在执行 Database Actions 时获取数据库时区,请使用 TO_CHAR(),如下所示:

SQL> SELECT TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DD"T"HH24:MI:SS TZH":"TZM') FROM DUAL;

TO_CHAR(SYSTIMESTAMP,'YYYY-MM-DD"T"HH24:MI:SSTZH":"TZM')
___________________________________________________________
2022-01-27T14:15:00 -05:00