Oracle 12c新特性有哪些

62次阅读
没有评论

共计 5992 个字符,预计需要花费 15 分钟才能阅读完成。

本篇内容介绍了“Oracle 12c 新特性有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1. 自动存储管理 (ASM) 中的增强

Flex ASM

在一个典型的网格基础架构安装环境中,每个节点都运行自身的 ASM 实例,并将其作为运行于此节点上数据库的存储容器。但这种设置会存在相应的单点故障危险。例如,如果此节点上的 ASM 实例发生故障,则运行于此节点上的所有数据库和实例都会受到影响。为了避免 ASM 实例的单点故障,Oracle 12c 提供了一个名为 Flex ASM 的功能。Flex ASM 是一个不同的概念和架构,只有很少数量的 ASM 实例需要运行在集群中的一些服务器上。当某节点上的一个 ASM 实例发生故障,Oracle 集群就会在另一个不同的节点上自动启动替代 ASM 实例以加强可用性。另外,这一设置还为运行在此节点上的实例提供了 ASM 实例负载均衡能力。Flex ASM 的另一个优势就是可以在单独节点上加以配置。

当选择 Flex Cluster 选项作为集群安装环境的第一部分时,鉴于 Flex Cluster 的要求,Flex ASM 配置就会被自动选择。传统集群同样也适用于 Flex ASM。当你决定使用 Flex ASM 时,你必须保证所需的网络是可用的。你可以选择 Flex ASM 存储选项作为集群安装环境的一部分,或是使用 ASMCA 在一个标准集群环境下启用 Flex ASM。

以下命令显示了当前的 ASM 模式:

$ ./asmcmd showclustermode
$ ./srvctl config asm

或是连接到 ASM 实例并查询 INSTANCE_TYPE 参数。如果输出值为 ASMPROX,那么,就说明 Flex ASM 已经配置好了。

ASM 存储限制放宽

ASM 存储硬性限额在最大 ASM 磁盘群组和磁盘大小上已经大幅提升。在 12c R1 中,ASM 支持 511 个 ASM 磁盘群组,而在 11g R2 中只支持 63 个。同样,相比起在 11g R2 中 20 PB 的磁盘大小,现在已经将这一数字提高到 32 PB。

对 ASM 均衡操作的优化

12c 中新的 EXPLAIN WORK FOR 语句用于衡量一个给定 ASM 均衡操作所需的工作量,并在 V$ASM_ESTIMATE 动态视图中输入结果。使用此动态视图,你可以调整 POWER LIMIT 语句对重新平衡操作工作进行改善。例如,如果你想衡量添加一个新 ASM 磁盘所需的工作量,在实际执行手动均衡操作之前,你可以使用以下命令:

SQL  EXPLAIN WORK FOR ALTER DISKGROUP DG_DATA ADD DISK data_005;
SQL  SELECT est_work FROM V$ASM_ESTIMATE;
SQL  EXPLAIN WORK SET STATEMENT_ID= ADD_DISK  FOR ALTER DISKGROUP DG_DATA AD DISK data_005;
SQL  SELECT est_work FROM V$ASM_ESTIMATE WHERE STATEMENT_ID =  ADD_DISK’;

你可以根据从动态视图中获取的输出来调整 POWER 的限制以改善均衡操作。

ASM 磁盘清理

在一个 ASM 磁盘群组中,新的 ASM 磁盘清理操作分为正常或高冗余两个级别,它可以检验 ASM 磁盘群组中所有磁盘的逻辑数据破坏,并且可以自动对逻辑破坏进行修复,如果检测到有逻辑数据破坏,就会使用 ASM 镜像磁盘。磁盘清理可以在磁盘群组,特定磁盘或是某个文件上执行,这样其影响可降到最小程度。以下演示了磁盘清理场景:

SQL  ALTER DISKGROUP dg_data SCRUB POWER LOW:HIGH:AUTO:MAX;
SQL  ALTER DISKGROUP dg_data SCRUB FILE  +DG_DATA/MYDB/DATAFILE/filename.xxxx.xxxx
REPAIR POWER AUTO;

ASM 的活动会话历史(ASH)

V$ACTIVE_SESSION_HISOTRY 动态视图现在还可以提供 ASM 实例的活动会话抽样。然而,诊断包的使用是受到许可限制的。

2. 网格 (Grid) 基础架构的增强

Flex 集群

Oracle 12c 在集群安装时支持两类配置:传统标准集群和 Flex 集群。在一个传统标准集群中,所有集群中的节点都彼此紧密地整合在一起,并通过私有网络进行互动,而且可以直接访问存储。另一方面,Flex 集群在 Hub 和 Leaf 节点结构间引入了两类节点。分配在 Hub 中的节点类似于传统标准集群,它们通过私有网络彼此互连在一起并对存储可以进行直接读写访问。而 Leaf 节点不同于 Hub 节点,它们不需要直接访问底层存储; 相反的是,它们通过 Hub 节点对存储和数据进行访问。

你可以配置多达 64 个 Hub 节点,而 Leaf 节点则可以更多。在 Oracle Flex 集群中,无需配置 Leaf 节点就可以拥有 Hub 节点,而如果没有 Hub 节点的话,Leaf 节点是不会存在的。对于一个单独 Hub 节点,你可以配置多个 Leaf 节点。在 Oracle Flex 集群中,只有 Hub 节点会直接访问 OCR 和 Voting 磁盘。当你规划大规模的集群环境时,这将是一个非常不错的功能。这一系列设置会大大降低互连拥堵,并为传统标准集群提供空间以扩大集群。

部署 Flex 集群的两种途径:

1. 在配置一个全新集群的时候部署

2. 升级一个标准集群模式到 Flex 集群

如果你正在配置一个全新的集群,你需要在步骤 3 中选择集群配置的类型,选择配置一个 Flex 集群选项,然后你需要在步骤 6 中对 Hub 和 Leaf 节点进行分类。对于每个节点,选择相应角色是 Hub 或是 Leaf,而虚拟主机名也是可选的。

将一个标准集群模式转换为 Flex 集群模式需要以下步骤:

1. 用以下命令获取集群的当前状态:

$ ./crsctl get cluster mode status

2. 以 root 用户执行以下命令:

$ ./crsctl set cluster mode flex
$ ./crsctl stop crs
$ ./crsctl start crs –wait

3. 根据设计改变节点角色:

$ ./crsctl get node role config
$ ./crsctl set node role hub|leaf
$ ./crsctl stop crs
$ ./crsctl start crs -wait

注意:

? 你无法从 Flex 恢复回标准集群模式

? 改变集群节点模式需要集群栈停止

? 确保以一个固定的 VIP 配置 GNS

ASM 磁盘群组中的 OCR 备份

对于 12c,OCR 现在可以在 ASM 磁盘群组中得以备份。这简化了通过所有节点对 OCR 备份文件的访问。为了防止 OCR 的恢复,你不必担心 OCR 最新的备份是在哪个节点上。可以从任何节点轻易识别存储在 ASM 中的最新备份并能很容易地执行恢复。

以下演示了如何将 ASM 磁盘群组设置为 OCR 备份位置:

$ ./ocrconfig -backuploc +DG_OCR

支持 IPv6 协议

对于 12c,Oracle 是支持 IPv6 网络协议配置的。你现在可以在 IPv4 或 IPv6 上配置共有或私有网络接口,尽管如此,你需要确保在所有集群中的节点上使用相同的 IP 协议。

3. RAC 数据库的增强

What-if 命令评估

通过 srvctl 使用新的 What-if 命令评估选项,现在可以确定运行此命令所造成的影响。这一新添加到 srvctl 的命令,可以在没有实际执行或是不对当前系统做任何改变的情况下模拟此命令。这在想要对一个已存在的系统进行更改却对结果不确定的时候特别有用。这样,此命令就会提供进行变更的效果。而–eval 选项也可以通过 crsctl 命令来使用。

例如,如果你想要知道停止一个特定数据库会发生什么,那么你就可以使用以下示例:

$ ./srvctl stop database –d MYDB –eval
$ ./crsctl eval modify resource -attr“value”

srvctl 的改进

对于 srvctl 命令还有一些新增功能。以下演示了如何用这些新增功能停止或启动集群上的数据库或实例资源。

srvctl start database|instance –startoption NOMOUNT|MOUNT|OPEN
srvctl stop database|instance –stopoption NOMOUNT|MOUNT|OPEN

4. 截断表 CASCADE

在之前的版本中,在子表引用一个主表以及子表存在记录的情况下,是不提供截断此主表操作的。而在 12c 中的带有 CASCADE 操作的 TRUNCATE TABLE 可以截断主表中的记录,并自动对子表进行递归截断,并作为 DELETE ON CASCADE 服从外键引用。由于这是应用到所有子表的,所以对递归层级的数量是没有 CAP 的,可以是孙子表或是重孙子表等等。

这一增强摈弃了要在截断一个主表之前先截断所有子表记录的前提。新的 CASCADE 语句同样也可以应用到表分区和子表分区等。

SQL  TRUNCATE TABLE CASCADE;
SQL  TRUNCATE TABLE PARTITION CASCADE;

如果对于子表的外键没有定义 ON DELETE CASCADE 选项,便会抛出一个 ORA-14705 错误。

5. 对 Top- N 查询结果限制记录

在之前的版本中有多种间接手段来对顶部或底部记录获取 Top- N 查询结果。而在 12c 中,通过新的 FETCH FIRST|NEXT|PERCENT 语句简化了这一过程并使其变得更为直接。为了从 EMP 表检索排名前 10 的工资记录,可以用以下新的 SQL 语句:

SQL  SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 ROWS ONLY;

以下示例获取排名前 N 的所有相似的记录。例如,如果第十行的工资值是 5000,并且还有其他员工的工资符合排名前 N 的标准,那么它们也同样会由 WITH TIES 语句获取。

SQL  SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 ROWS ONLY WITH TIES;

以下示例限制从 EMP 表中获取排名前 10% 的记录:

SQL  SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
FETCH FIRST 10 PERCENT ROWS ONLY;

以下示例忽略前 5 条记录并会显示表的下 5 条记录:

SQL  SELECT eno,ename,sal FROM emp ORDER BY SAL DESC
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;

所有这些限制同样可以很好的应用于 PL/SQL 块。

BEGIN
SELECT sal BULK COLLECT INTO sal_v FROM EMP
FETCH FIRST 100 ROWS ONLY;
END;

6. 对 SQL*Plus 的各种增强

SQL*Plus 的隐式结果:12c 中,在没有实际绑定某个 RefCursor 的情况下,SQL*Plus 从一个 PL/SQL 块的一个隐式游标返回结果。这一新的 dbms_sql.return_result 过程将会对 PL/SQL 块中由 SELECT 语句查询所指定的结果加以返回并进行格式化。以下代码对此用法进行了描述:

SQL  CREATE PROCEDURE mp1
res1 sys_refcursor;
BEGIN
open res1 for SELECT eno,ename,sal FROM emp;
dbms_sql.return_result(res1);
END;
SQL  execute mp1;

当此过程得以执行,会在 SQL*Plus 上返回格式化的记录。

显示不可见字段:在本系列文章的第一部分,我已经对不可见字段的新特性做了相关阐述。当字段定义为不可见时,在描述表结构时它们将不会显示。然而,你可以通过在 SQL*Plus 提示符下进行以下设置来显示不可见字段的相关信息:

SQL  SET COLINVISIBLE ON|OFF

以上设置仅对 DESCRIBE 命令有效。目前它还无法对不可见字段上的 SELECT 语句结果产生效果。

7. 会话级序列

在 12c 中现在可以创建新的会话级数据库序列来支持会话级序列值。这些序列的类型在有会话级的全局临时表上最为适用。

会话级序列会产生一个独特范围的值,这些值是限制在此会话内的,而非超越此会话。一旦会话终止,会话序列的状态也会消失。以下示例解释了创建一个会话级序列:

SQL  CREATE SEQUENCE my_seq START WITH 1 INCREMENT BY 1 SESSION;
SQL  ALTER SEQUENCE my_seq GLOBAL|SESSION;

对于会话级序列,CACHE, NOCACHE, ORDER 或 NOORDER 语句会予以忽略。

8. WITH 语句的改善

在 12c 中,你可以用 SQL 更快的运行 PL/SQL 函数或过程,这些是由 SQL 语句的 WITH 语句加以定义和声明的。以下示例演示了如何在 WITH 语句中定义和声明一个过程或函数:

WITH
PROCEDURE|FUNCTION test1 (…)
BEGIN
END;
SELECT FROM table_name;
/

尽管你不能在 PL/SQL 单元直接使用 WITH 语句,但其可以在 PL/SQL 单元中通过一个动态 SQL 加以引用。

9. 扩展数据类型

在 12c 中,与早期版本相比,诸如 VARCHAR2, NAVARCHAR2 以及 RAW 这些数据类型的大小会从 4K 以及 2K 字节扩展至 32K 字节。只要可能,扩展字符的大小会降低对 LOB 数据类型的使用。为了启用扩展字符大小,你必须将 MAX_STRING_SIZE 的初始数据库参数设置为 EXTENDED。

要使用扩展字符类型需要执行以下过程:

1. 关闭数据库

2. 以升级模式重启数据库

3. 更改参数: ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED;

4. 执行 utl32k.sql as sysdba : SQL @?/rdbms/admin/utl32k.sql

5. 关闭数据库

6. 以读写模式重启数据库

对比 LOB 数据类型,在 ASSM 表空间管理中,扩展数据类型的字段以 SecureFiles LOB 加以存储,而在非 ASSM 表空间管理中,它们则是以 BasciFiles LOB 进行存储的。

注意:一旦更改,你就不能再将设置改回 STANDARD。

“Oracle 12c 新特性有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-19发表,共计5992字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)