返回顶部
首页 > 资讯 > 数据库 >Oracle 数据库12c新特性总结(四)
  • 431
分享到

Oracle 数据库12c新特性总结(四)

2024-04-02 19:04:59 431人浏览 薄情痞子
摘要

【TechTarget中国原创】本文是oracle数据库12c新特性的系列文章的第四篇,作者将重点介绍一些对开发者而言非常有用的新特性。相关阅读:Oracle 数据库12c新特性总结(一)、Oracl


【TechTarget中国原创】本文是oracle数据库12c新特性的系列文章的第四篇,作者将重点介绍一些对开发者而言非常有用的新特性。相关阅读:Oracle 数据库12c新特性总结(一)、Oracle 数据库12c新特性总结(二)、Oracle 数据库12c新特性总结(三)

第四部分包括:

  • 如何在子表包含数据的情况下截断一个主表
  • 限制Top-N查询结果的记录
  • sql*Plus的各种增强
  • 会话级序列
  • WITH语句的改善
  • 扩展数据类型

截断表CASCADE

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

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


SQL> TRUNCATE TABLE CASCADE; 
SQL> TRUNCATE TABLE PARTITioN CASCADE;


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

对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;


对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 语句结果产生效果。

会话级序列

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

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


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


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

WITH语句的改善

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


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


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

扩展数据类型

在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。



原文链接: Http://www.searchdatabase.com.cn/showcontent_75994.htm


您可能感兴趣的文档:

--结束END--

本文标题: Oracle 数据库12c新特性总结(四)

本文链接: https://lsjlt.com/news/46238.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle 数据库12c新特性总结(四)
    【TechTarget中国原创】本文是Oracle数据库12c新特性的系列文章的第四篇,作者将重点介绍一些对开发者而言非常有用的新特性。相关阅读:Oracle 数据库12c新特性总结(一)、Oracl...
    99+
    2024-04-02
  • Oracle 数据库12c新特性总结
    本篇内容介绍了“Oracle 数据库12c新特性总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1....
    99+
    2024-04-02
  • Oracle 数据库12c新特性总结(三)
    【TechTarget中国原创】本文是Oracle数据库12c新特性的系列文章的第三篇,作者将对集群,ASM以及RAC数据库新增和改进方面做一个广泛的介绍。相关阅读:Oracle 数据库12c新特性总...
    99+
    2024-04-02
  • Oracle 数据库12c新特性有哪些
    这篇文章将为大家详细讲解有关Oracle 数据库12c新特性有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  1. 在线重命名和重新定位活跃数据文件   不同于以...
    99+
    2024-04-02
  • Oracle数据库12c的新特性有哪些
    这篇“Oracle数据库12c的新特性有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2024-04-02
  • ORACLE 12C 优化器的一些新特性总结(二)
    Oracle 12c 数据库在优化器方面确实做出了很大进步。在 Oracle 12c 数据库众多特性中,自适应查询优化是较大的功能变化了。它使优化器能够对执行计划进行实时调整。当现有的统...
    99+
    2024-04-02
  • Oracle 11gASM新特性总结
    一.  ASM 快速镜像再同步(ASMFast Mirror Resync) 1.1 无ASM快速镜像再同步时 每当ASM 无法向分配给某个磁盘的区执行写入操作时,就会使该磁盘脱...
    99+
    2024-04-02
  • 12C数据库泵新特性是什么
    这篇文章主要讲解了“12C数据库泵新特性是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“12C数据库泵新特性是什么”吧!DISABLE_ARCHIVE_...
    99+
    2024-04-02
  • Oracle 12c RMAN新特性
    Oracle 12c RMAN新特性 SYSBACKUP This privilege allows a user to perform backup and recovery operations e...
    99+
    2024-04-02
  • 12C新特性___In-Memory列式存储的总结
    官方文档 https://docs.oracle.com/en/database/oracle/oracle-database/12.2/inmem/concepts-for-the-im-column-s...
    99+
    2024-04-02
  • Oracle 12C新特性In-Memory
    Oracle 12C 新特性 In-Memory In-Memory 是12C 开始,在 SGA 中新增加的内存区域,可以实现表数据按列存储; In-Memory 并没...
    99+
    2024-04-02
  • Oracle 12c 两个新特性
    1. ALTER DATABASE MOVE DATAFILE 可以在线迁移数据文件到新路径,system表空间也可以move。 SYS@czh29c > alter&nb...
    99+
    2024-04-02
  • Oracle 12c新特性之多线程数据库的示例分析
    这篇文章将为大家详细讲解有关Oracle 12c新特性之多线程数据库的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。有一个概念,叫多进程和多线程。在Unix/Li...
    99+
    2024-04-02
  • Oracle 12c新特性有哪些
    本篇内容介绍了“Oracle 12c新特性有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1. 自...
    99+
    2024-04-02
  • Oracle 12C新特性是什么
    这篇文章主要讲解了“Oracle 12C新特性是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle 12C新特性是什么”吧!在12c里,推出了H...
    99+
    2024-04-02
  • oracle 12c新特性之在线移动数据文件
    11g时是无法在线移动数据文件的,12c增强了移动数据文件的功能,不仅可以更改路径,还可以给数据文件改名。 oracle 12c在线移动或更名数据文件语法案例: alter database mo...
    99+
    2024-04-02
  • Oracle中的12C新特性-容器数据库概念-基本操作
    Oracle 中的12C新特性-容器数据库 ---12.1.0.2_GI_RAC_Create_CDB_Blog 三月份的时候杰哥跟我讲有时间部署 Oracle 12C-...
    99+
    2024-04-02
  • Oracle 12C新特性-RMAN恢复表
    Oracle 12C 新特性 -RMAN 恢复表 oracle 如何恢复单张表数据? 场景一:处理简单,恢复速度快 1 如果表被 delete 、 update 、 ...
    99+
    2024-04-02
  • ES613个新特性总结
    1. let const let 表示申明变量。const 表示申明常量。 常量定义了就不能改了。对象除外,因为对象指向的地址没变。const在申明是必须被赋值。两者都为块级作用域。...
    99+
    2024-04-02
  • PHP7新特性的总结
    这篇文章主要介绍“PHP7新特性的总结”,在日常操作中,相信很多人在PHP7新特性的总结问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP7新特性的总结”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!ph...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作