12C SQL方面新特性小結
在Oracle 12c R1之前,一個欄位是無法以任何形式擁有多個索引的。或許有人會想知道為什麼通常一個欄位需要有多重索引,事實上需要多重索引的欄位或欄位集合是很多的。在12c R1中,只要索引型別的形式不同,一個欄位就可以包含在一個B-tree索引中,同樣也可以包含在Bitmap索引中。注意,只有一種型別的索引是在給定時間可用的。
翻頁查詢
之前版本中需要借用ROWNUM對查詢結果設定“標號”實現分頁查詢
12c中引入OFFSET 和 FETCH 實現快捷分頁方式
不可見欄位在之前的版本中,為了隱藏重要的資料欄位以避免在通用查詢中顯示,我們往往會建立一個檢視來隱藏所需資訊或應用某些安全條件。
在12c R1中,你可以在表中建立不可見欄位。當一個欄位定義為不可見時,這一欄位就不會出現在通用查詢中,除非在SQL語句或條件中有顯式的提及這一欄位,或是在表定義中有DESCRIBED。要新增或是修改一個不可見欄位是非常容易的,反之亦然。
當欄位定義為不可見時,在描述表結構時它們將不會顯示。然而,你可以通過在SQL*Plus提示符下進行以下設定來顯示不可見欄位的相關資訊:
SQL> SET COLINVISIBLE ON|OFF;
以上設定僅對DESCRIBE 命令有效。目前它還無法對不可見欄位上的SELECT 語句結果產生效果。
DDL日誌在之前的版本中沒有可選方法來對DDL操作進行日誌記錄。而在12c R1中,你現在可以將DDL操作寫入xml和日誌檔案中。這對於瞭解誰在什麼時間執行了create或drop命令是十分有用的。要開啟這一功能必須對ENABLE_DDL_LOGGING 初始引數加以配置。這一引數可以在資料庫或會話級加以設定。當此引數為啟用狀態,所有的DDL命令會記錄在$ORACLE_BASE/diag/rdbms/DBNAME/log|ddl 路徑下的xml和日誌檔案中。一個xml中包含DDL命令,IP地址,時間戳等資訊。這可以幫助確定在什麼時候對使用者或表進行了刪除亦或是一條DDL語句在何時觸發。
開啟DDL日誌功能
SQL> ALTER SYSTEM|SESSION SET ENABLE_DDL_LOGGING=TRUE;
以下的DDL語句可能會記錄在xml或日誌檔案中:
CREATE|ALTER|DROP|TRUNCATE TABLE
DROP USER
CREATE|ALTER|DROP PACKAGE|FUNCTION|VIEW|SYNONYM|SEQUENCE
截斷表CASCADE在之前的版本中,在子表引用一個主表以及子表存在記錄的情況下,是不提供截斷此主表操作的。而在12c中的帶有CASCADE操作的TRUNCATE TABLE可以截斷主表中的記錄,並自動對子表進行遞迴截斷,並作為DELETE ON CASCADE服從外來鍵引用。由於這是應用到所有子表的,所以對遞迴層級的數量是沒有CAP的,可以是孫子表或是重孫子表等等。
這一增強擯棄了要在截斷一個主表之前先截斷所有子表記錄的前提。新的CASCADE語句同樣也可以應用到表分割槽和子表分割槽等。
SQL> TRUNCATE TABLE CASCADE;
SQL> TRUNCATE TABLE PARTITION CASCADE;
如果對於子表的外來鍵沒有定義ON DELETE CASCADE 選項,便會丟擲一個ORA-14705錯誤
對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上返回格式化的記錄。
會話級序列在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。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3090/viewspace-1337202/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 12C新特性___In-Memory列式儲存的總結
- Oracle 12c新特性--ASMFD(ASM Filter Driver)特性OracleASMFilter
- Oracle 12C新特性-History命令Oracle
- Oracle 12C新特性In-MemoryOracle
- Oracle 12c 兩個新特性Oracle
- 12c RMAN新特性之Recover Table
- ORACLE 12C 優化器的一些新特性總結(二)Oracle優化
- ORACLE 12C 優化器的一些新特性總結(一)Oracle優化
- Oracle 12C新特性-RMAN恢復表Oracle
- Oracle 12c新特性---Rapid Home Provisioning (RHP)OracleAPI
- Oracle 12C新特性-資料泵新引數(LOGTIME)Oracle
- [20190718]12c rman新特性 表恢復.txt
- JDK 7 新特性小結(包含例項程式碼)JDK
- 【12c】12c RMAN新特性之recover table(表級別恢復)
- 23C新特性SQL防火牆 (SQL Firewall)SQL防火牆
- 12c新特性,線上move資料檔案
- 2024-05-10 ES6新特性小總結
- Oracle 12C新特性-資料泵新引數(VIEWS_AS_TABLES)OracleView
- Oracle 12c 新特性之臨時Undo--temp_undo_enabledOracle
- 12c DG新特性 - Active Data Guard Far Sync (Doc ID 2179719.1)
- lockdown profile 12c之後的許可權控制新特性
- 【DATAGUARD】Data Guard 12C 新特性:Far Sync Standby (Doc ID 2179719.1)
- 23c 新特性之SQL_transpilerSQL
- ABAP 740新的OPEN SQL增強特性SQL
- SQL?Server新特性SequenceNumber用法介紹YTZBSQLServer
- SQL Server 2008中Analysis Services的新特性——深入SQL Server 2008SQLServer
- ES6 新增特性小結
- html5新特性總結HTML
- ES6新特性總結
- React 16 新特性使用總結React
- JDK1.8新特性總結JDK
- css3新特性總結CSSS3
- 【10g SQL新特性】q-quote使用SQL
- Oracle 12C R2新特性-本地UNDO模式(LOCAL_UNDO_ENABLED)Oracle模式
- [20181026]12c Attribute Clustering特性.txt
- MySQL 8.0 在關聯式資料庫方面有這些新特性MySql資料庫
- Oracle 20c 新特性:SQL 巨集支援(SQL Macro)Scalar 和 Table 模式OracleSQLMac模式
- PHP 各個版本新特性總結PHP
- 【12c】12c RMAN新特性之通過網路遠端恢復資料庫(RESTORE/Recover from Service)資料庫REST