Autonomous Database on Dedicated Exadata Infrastructure 中的 Oracle Database 功能
本文提供有关在 Autonomous Database on Dedicated Exadata Infrastructure 中使用 Oracle Database 功能和选项的信息。
有关 Autonomous Database Serverless 部署中的等效信息,请参阅 Autonomous Database for Experienced Database Users 。
您可以使用 Oracle Database 19c 或 Oracle Database 23ai 预配 an Autonomous Database ,具体取决于其父自治容器数据库 (Autonomous Container Database,ACD) 的数据库软件版本。例如,要使用 Oracle Database 23ai 创建 an Autonomous Database ,您必须选择 Oracle 数据库软件版本为 23ai 的 ACD。有关这些数据库版本支持的数据库功能的完整列表,请参阅 Oracle Help Center 上的 Oracle Database 23ai 或 Oracle Database 19c 。
Autonomous Database 可为您配置和优化数据库。无需执行管理操作来配置数据库。此服务中不提供仅用于数据库管理的 SQL 命令。同样,其他管理接口和实用程序(如 RMAN
)也不可用。
让我们来讨论如何在 an Autonomous Database 中处理 Oracle 数据库的一些主要功能:
- 数据和临时表空间:自动配置数据库的默认数据和临时表空间。默认数据表空间的名称为 DATA。
- 数据库字符集:数据库字符集为 Unicode AL32UTF8。
- 存储的数据加密:存储的数据使用 AES256(高级加密标准 256 位密码密钥)算法进行加密。
注意:
2021 年 9 月之前创建的 Autonomous Database 默认使用 AES128 算法。如果需要,可以使用ALTER TABLESPACE
命令更改表空间的加密算法。例如,要将 DATA 表空间的加密算法更改为 AES256,请输入:ALTER TABLESPACE data ENCRYPTION ONLINE USING 'AES256' REKEY;
- 数据压缩:对于自治事务处理工作负载,默认情况下不启用压缩。对于 Autonomous Data Warehouse 工作负载,默认情况下会为所有表启用混合列压缩。
要启用或禁用压缩,或者使用
CREATE TABLE
或ALTER TABLE
命令中的table_compression
子句为表指定不同的压缩方法。 - 数据库访问权限:您无权直接访问数据库节点或本地文件系统以及 SYSTEM 或 SYSAUX 表空间。
- 并行执行:默认情况下,不会为 Autonomous Transaction Processing(自治事务处理)工作负载启用并行执行(SQL 语句中的并行)。但是,对于 Autonomous Data Warehouse 工作负载,默认情况下会启用并行执行,SQL 语句的并行度是根据系统中的 CPU 数量以及连接到数据库时使用的数据库服务设置的。
- 可以使用
parallel_clause
或使用提示来修改表或索引的并行度。例如,可以使用以下 SQL 命令在会话中禁用并行 DML:ALTER SESSION DISABLE PARALLEL DML;
有关并行 DML 操作的更多信息,请参见 Oracle Database 19c VLDB and Partitioning Guide 或 Oracle Database 23ai VLDB and Partitioning Guide。
- 如果手动创建索引并指定 parallel_clause ,则并行属性将在创建索引后保留。在这种情况下,最终用户可以并行运行未知的 SQL 语句。将 parallel_clause 值更改为 NOPARALLEL,或将 PARALLEL 属性设置为 1 以指定串行执行:
ALTER INDEX index_name NOPARALLEL;
或者
ALTER INDEX index_name PARALLEL 1;
- 可以使用
最新 Autonomous Database 功能
Autonomous Database 包含最新的 Oracle Database 功能。
Autonomous Database 包含以下功能:
-
根据应用程序工作负载的变化自动执行索引管理任务,例如创建、重建和删除索引。有关详细信息,请参阅 Oracle Database 19c Administrator’s Guide 中的 Managing Auto Indexes 或 Oracle Database 23ai Administrator’s Guide 。
-
在运行常规 DML 工作负载时自动收集实时统计信息。由于统计信息可能会在
DBMS_STATS
作业之间过时,因此为传统 DML 收集联机统计信息有助于优化程序生成更理想的计划。联机统计信息旨在减少优化程序被过时统计信息误导的可能性。您可以通过 PL/SQL 程序包、数据字典视图和提示来管理和访问传统 DML 的统计信息。有关详细信息,请参阅 Oracle Database 19c SQL Tuning Guide 或 Oracle Database 23ai SQL Tuning Guide 中的 Real-Time Statistics 。 -
更频繁地自动收集统计信息。高频自动优化程序统计信息收集是对标准统计信息收集作业的补充。缺省情况下,收集每 15 分钟进行一次,这意味着统计信息的过时时间较少。有关详细信息,请参阅 Oracle Database 19c SQL Tuning Guide 或 Oracle Database 23ai SQL Tuning Guide 中的 Configuring High-Frequency Automatic Optimizer Statistics Collection 。
-
资源管理器因使用 Oracle 数据库中的过多系统资源而终止的 SQL 语句的隔离执行计划。可以使用
DBMS_SQLQ
程序包中的过程指定对其资源消耗的限制,从而为 SQL 语句配置隔离设置。当 SQL 语句超出任何这些资源使用限制时,它将终止并隔离执行计划。通过这种方式,数据库可以防止高资源 SQL 语句重复执行。有关详细信息,请参阅 Oracle Database 19c Administrator’s Guide 或 Oracle Database 23ai 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 23ai Performance Tuning Guide 中的 Enabling High Performance Data Streaming With the Memoptimized Rowstore 。
ADMIN 用户和 SYS 用户
在 Oracle Autonomous Database on Dedicated Exadata Infrastructure 中,预定义的管理用户是 ADMIN。在 Oracle Database 中,预定义的管理用户是 SYS。虽然这两个用户在各自的数据库中具有相同的用途,但它们不相同并且没有相同的权限集。
由于 Oracle Autonomous 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 TABLE
、CREATE ANY PROCEDURE
)的所有系统权限都符合 COMMON_SCHEMA_ACCESS
锁定要求,并且 ADMIN 用户不能对公用用户方案使用它。
与 Oracle 内部部署数据库不同,其中 ANY 关键字适用于除 SYS 以外的所有用户, ANY 权限仅适用于 Autonomous 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 Database 可在预配数据库时自动配置数据库初始化参数。您无需设置任何初始化参数即可开始使用服务。但是,如果需要,可以修改某些参数。
可修改的初始化参数列表
注意:
单击以下列表中的初始化参数可了解有关该参数的更多信息。有关以下不可单击的参数,请参阅 Oracle Database 19c Reference 或 Oracle Database 23ai 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 Database
TIME_ZONE
UNDO_RETENTION (min=300 and max=86400)
SYSDATE_AT_DBTIMEZONE 在 Autonomous Database 上为 SYSDATE 选择时区
SYSDATE_AT_DBTIMEZONE
允许在会话中对调用 SYSDATE
和 SYSTIMESTAMP
时返回的日期和时间值进行特殊处理。
根据 SYSDATE_AT_DBTIMEZONE
的值,您可以根据默认的 Autonomous Database 时区、协调世界时 (Coordinated Universal Time,UTC) 或在数据库中设置的时区来查看日期和时间。
属性 | 说明 |
---|---|
参数类型 | 布尔 |
默认值 | FALSE |
可修改 | ALTER SESSION , ALTER SYSTEM |
值范围 | TRUE | FALSE |
默认 Autonomous Database 时区
默认 Autonomous Database 时区为协调世界时 (Coordinated Universal Time,UTC),默认情况下,对 SYSDATE
和 SYSTIMESTAMP
的调用将以 UTC 格式返回日期和时间。
要更改数据库时区,可以运行以下语句。此示例将数据库时区设置为 UTC-5
。
ALTER DATABASE SET TIME_ZONE='-05:00';
注意:
必须重新启动 Autonomous Database 实例才能使更改生效。设置数据库时区后,默认情况下,SYSDATE
和 SYSTIMESTAMP
继续以 UTC 格式返回日期和时间(默认情况下,SYSDATE_AT_DBTIMEZONE
为 FALSE
)。如果在会话中将 SYSDATE_AT_DBTIMEZONE
设置为 TRUE
,则 SYSDATE
和 SYSTIMESTAMP
将返回数据库时区。
有关将 SET TIME_ZONE
子句与 ALTER DATABASE
一起使用的更多信息,请参见 Setting the Database Time Zone in Oracle Database 19c 或 Setting the Database Time Zone in Oracle Database 23ai 。
在会话中使用 SYSDATE_AT_DBTIMEZONE
当会话中的 SYSDATE_AT_DBTIMEZONE
为 FALSE
时,对 SYSDATE
和 SYSTIMESTAMP
的调用将根据默认的 Autonomous Database 时区 (Coordinated Universal Time,UTC) 返回值。
当 SYSDATE_AT_DBTIMEZONE
在会话中为 TRUE
时,对 SYSDATE
或 SYSTIMESTAMP
的调用将根据数据库时区返回日期和时间。
注意:
将SYSDATE_AT_DBTIMEZONE
设置为 TRUE
仅影响将 SYSDATE
和 SYSTIMESTAMP
用作应用程序 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 工作表中执行 SYSDATE
或 SYSTIMESTAMP
查询时,返回的时间和日期值采用 UTC(当 SYSDATE_AT_DBTIMEZONE
参数设置为 TRUE
或 FALSE
时)。要在执行 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