ORACLE 18.3 新特性一览表
新特性一览表
1、暗影丢失写保护
优势
暗影写丢失保护对于写丢失提供快速诊断和响应,使用暗影写丢失保护可以最小化数据丢失和修复数据库的修复时间,在不要求有DG的情况下,可以选择对数据库,表空间或数据文件激活暗影丢失写保护(换句话说,在没有DG的情况下,激活开启暗影丢失写保护,可最小化数据丢失和修复数据库的修复时间,更好保护数据库)
管理
数据块丢失写出现情形:
1、I/O子系统确认写入完成,但是实际写并未发生
2、前一个数据块镜像覆盖了当前的数据块镜像
暗影丢失写保护针对上述情形,可再次保护丢失写的表空间或者某个数据文件
1、创建shadow tablespace
CREATE BIGFILE TABLESPACE shadow_lwpl DATAFILE '/marvin/shadow_lwpl1.dbf' SIZE 10M LOST WRITE PROTECTION;
2、Shadow Lost Write保护激活
2.1、针对数据库级别
Non-CDB 或者 CDB级别:
ALTER DATABASE ENABLE LOST WRITE PROTECTION;
PDB级别:
ALTER PLUGGABLE DATABASE ENABLE LOST WRITE PROTECTION;
2.2、针对表空间或者数据文件级别
表空间激活Shadow丢失写保护,用户需具备alter tablespace权限
ALTER TABLESPACE tbsu1 ENABLE LOST WRITE PROTECTION;
数据文件激活Shadow丢失写保护(NonCDB 或者 CDB 级别),用户需具备alter database权限
ALTER DATABASE DATAFILE 'dfile1.df' ENABLE LOST WRITE PROTECTION;
数据文件激活Shadow丢失写保护(PDB级别),用户需具备alter pluggable database权限
ALTER PLUGGABLE DATABASE DATAFILE 'dfile2.df' ENABLE LOST WRITE PROTECTION;
3、禁用Shadow 丢失写保护
对应 ENABLE 命令修改为 DISABLE
ALTER PLUGGABLE DATABASE DISABLE LOST WRITE PROTECTION;
ALTER TABLESPACE tbsu1 DISABLE LOST WRITE PROTECTION;
ALTER PLUGGABLE DATABASE DATAFILE 'dfile1.df' DISABLE LOST WRITE PROTECTION;
4、移除或关闭Shadow丢失写保护
ALTER PLUGGABLE DATABASE REMOVE LOST WRITE PROTECTION;
ALTER PLUGGABLE DATABASE DATAFILE 'dfile1.df' SUSPEND LOST WRITE PROTECTION;
5、删除Shadow 表空间
DROP TABLESPACE shadow_lwpl;
或者
DROP TABLESPACE shadow_lwpl INCLUDING CONTENTS;
2、ORACLE密码文件变更
优势
ORACLE之前默认密码文件位于ORACLE_HOME,现变更到ORACLE_BASE,这样做的好处是可以变更ORACLE_HOME到read-only模式,只读Oracle_HOME可防止在Oracle主目录ORACLE_HOME中创建和修改文件。 只读Oracle_HOME可用作软件映像,以简化跨多个数据库服务器的软件修补和大规模部署。
该选项选择在ORACLE 数据库软件安装过过程中,Section “Configuring Read-Only Oracle Homes”
自我感觉这个新特性传统服务器有点鸡肋,对于云大规模打补丁或者部署看起来很有用,但是官档中我没找到类似多个数据库服务器软件修改以及大规模部署的文档
3、私有临时表
优势
私有临时表存储在内存中,基于会话隔离,只针对创建该私有临时表的会话可见(私有可见、统计信息不共享、数据隔离但只能私有更改),之前版本是全局临时表,全局可见、统计信息共享、数据隔离但可全局更改
全、私临时表对比:
| 特征 | 全局 | 私有 |
|---|---|---|
| 命令规则 | 用户自主命令 | 必须以ORA$PTT_为前缀 |
| 表可见性 | 全局所有会话可见 | 只创建该表的私有会话可见 |
| 数据隔离性 | 数据隔离 | 数据隔离 |
| 数据更改性 | 全局所有会话可更改 | 只创建该表的私有会话可更改 |
| 统计信息 | 全局共享 | 私有、不共享 |
| 表定义存储位置 | 磁盘DISK | 内存 |
| 表数据存储 | 用户默认的临时表空间(可指定tablespace) | 用户默认表空间(可指定tablespace) |
| 类型 | Transaction-specific (ON COMMIT DELETE ROWS) or session-specific (ON COMMIT PRESERVE ROWS) |
Transaction-specific (ON COMMIT DROP DEFINITION) or session-specific (ON COMMIT PRESERVE DEFINITION) |
语法:
CREATE PRIVATE TEMPORARY TABLE ORA$PTT_sales_ptt_transaction
(time_id DATE,
amount_sold NUMBER(10,2))
ON COMMIT DROP DEFINITION;
CREATE PRIVATE TEMPORARY TABLE ORA$PTT_sales_ptt_session
(time_id DATE,
amount_sold NUMBER(10,2))
ON COMMIT PRESERVE DEFINITION;
Example:
基于会话窗口1:
SQL> CREATE PRIVATE TEMPORARY TABLE ORA$PTT_test
2 ( id number,
3 name varchar2(10))
4 ON COMMIT PRESERVE DEFINITION;
SQL> declare
2 i number;
3 begin
4 for i in 1..10000 loop
5 insert into ORA$PTT_test values (i,'dd');
6 end loop;
7 commit;
8 end;
9 /
PL/SQL procedure successfully completed.
SQL> select count(*) from ORA$PTT_test;
COUNT(*)
----------
10000
基于会话窗口2:
SQL> conn marvin/marvin@ccdba
Connected.
SQL> select count(*) from ORA$PTT_test;
select count(*) from ORA$PTT_test
*
ERROR at line 1:
ORA-00942: table or view does not exist
在会话窗口1未关闭的情况下,同一个用户连接会话窗口2查询该表,发现该表根本不存在,说明该满足私有临时表描述的私有性.
4、内联外部表
内联外部表使外部表的运行时定义成为SQL语句的一部分,而无需将外部表创建为数据字典中的持久对象
语法
SELECT * FROM EXTERNAL (
(time_id DATE NOT NULL,
prod_id INTEGER NOT NULL,
quantity_sold NUMBER(10,2),
amount_sold NUMBER(10,2))
TYPE ORACLE_LOADER
DEFAULT DIRECTORY data_dir1
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY '|')
LOCATION ('sales_9.csv') REJECT LIMIT UNLIMITED) sales_external;
即使先前没有名为sales_external表,该查询还是会读外部数据以及返回结果
5、并行队列超时
您可以通过设置PQ_TIMEOUT_ACTION资源管理器指令来指定对超时并行SQL语句执行的操作
6、会话中Cancel SQL语句
在会话中可以使用alter system cancel 代替之前的终止(kill)会话 结束高频次异常的SQL语句,当Cancel 事务语句时,这个语句将执行回滚
语法:
SID – Session ID
SERIAL – Session serial number
INST_ID – Instance ID
SQL_ID – SQL ID of the SQL statement
ALTER SYSTEM CANCEL SQL 'SID, SERIAL, @INST_ID, SQL_ID';
如果@INST_ID未指定,则当前会话的Instance ID将被使用
如果SQL_ID未被指定,则在指定会话中当前运行的SQL将被Cancel
7、可扩展序列
可扩展序列被使用提高RAC数据库数据登录操作的性能,通过在CREATE SEQUENCE或ALTER SEQUENCE语句中指定SCALE子句,可以使序列获得健壮的扩展性
语法:
CREATE | ALTER SEQUENCE [ schema. ]sequence
[ { INCREMENT BY | START WITH } integer
| { MAXVALUE integer | NOMAXVALUE }
| { MINVALUE integer | NOMINVALUE }
| { CYCLE | NOCYCLE }
| { CACHE integer | NOCACHE }
| { ORDER | NOORDER }
| { SCALE {EXTEND | NOEXTEND} | NOSCALE}
]
当 SCALE 语句被指定时, 一个 6 位数的数字被指定作为序列的前缀,末尾是正常的序列数字,两者联合成为新的序列
scalable sequence number =
6 digit scalable sequence offset number
||
normal sequence number
在这里, 6 位数字前缀是如何生成的呢?正是由 实例号 和 会话号 生成的:
6 digit scalable sequence offset number = 3 digit instance offset number || 3 digit session offset number.
The 3 digit instance offset number is generated as [(instance id % 100) + 100]. The 3 digit session offset number is generated as [session id % 1000].
惜分飞:http://www.xifenfei.com/2018/01/scalable-sequences.html
https://yq.aliyun.com/articles/487609
8、重置序列
可以在ALTER SEQUENCE语句中使用新的RESTART子句将序列号重置为特定值
9、DBCA 静默安装指令
- - Creating a copy of a multitenant container database (CDB)
A copy of a CDB can be created using the -createDuplicateDB command.
See "createDuplicateDB".
- Creating a copy of an Oracle RAC database
A copy of an Oracle RAC database can be created using the -createDuplicateDB command option -databaseConfigType with the value of RAC or RACONENODE.
See "createDuplicateDB".
- Creating a standby database from an existing database
A standby database can be created from an existing database using the -createDuplicateDB command option -createAsStandby.
See "createDuplicateDB".
- Verifying hardware and software prerequisites before creating a database
Hardware and software prerequisites for creating a database can be verified by executing the -executePrereqscommand on the system where the database needs to be created.
See "executePrereqs".
- Creating a copy of a database template
A copy of a database template can be created using the -createTemplateFromTemplate command.
See "createTemplateFromTemplate".
- Creating a copy of a pluggable database (PDB)
A copy of a PDB can be created using the -createPluggableDatabase command option -createPDBFrom with the value of PDB.
See "createPluggableDatabase".
10、Read-Only Oracle Home
设置 $ORACLE_HOME 为只读,则变化文件将创建于 $ORACLE_BASE, 这是为了标准化、分发共享、滚动升级等提供便利;
11、物理备库功能加强
1、数据库nologging已得到扩展,可为Active Data Guard环境中的使用提供更好的支持,而不会显着增加重做日志生成的数量。 引入了以下两种新的nologging模式作为现有nologging(archivelog + force logging)模式NOLOGGING的替代方案
换句话说:
alter database archivelog;
ALTER DATABASE FORCE LOGGING;
原有的nologging 模式替代方案,在18c 可提供三种选择:
alter database archivelog;
ALTER DATABASE FORCE LOGGING;
或者
ALTER DATABASE SET STANDBY NOLOGGING FOR DATA AVAILABILITY;
或者
ALTER DATABASE SET STANDBY NOLOGGING FOR LOAD PERFORMANCE;
2、FORCE LOGGING模式会导致性能下降,如果数据库在NOARCHIVELOG模式下运行,那么将数据库置于FORCE LOGGING模式通常没有任何好处。在NOARCHIVELOG模式下无法进行介质恢复,因此如果将其与FORCE LOGGING结合使用,结果可能会导致性能下降而几乎没有任何好处。
从Oracle Database 18c开始,引入了以下两个新的nologging子句,它们可以执行非日志记录操作,并使Active Data Guard备用数据库接收所有数据,,纠正备库因Nologging而导致的坏块问题,从而防止FORCE生成大型重做日志导致性能下降记录模式:
ALTER DATABASE SET STANDBY NOLOGGING FOR DATA AVAILABILITY;
ALTER DATABASE SET STANDBY NOLOGGING FOR LOAD PERFORMANCE;
12、其他新特性
The Memoptimized Rowstore
The Memoptimized Rowstore enables fast lookup of data for the tables that are mainly queried based on primary key columns. This feature is particularly useful for the applications such as Internet of Things (IoT).
See “Improving Query Performance with the Memoptimized Rowstore“.
Cloning a multitenant pluggable database (PDB) with Oracle Automatic Storage Management (Oracle ASM)
Oracle ASM can be used to create a clone of a PDB.
Proxy resident connection pooling
Proxy resident connection pooling provides improved high availability, security, and performance for database clients. Proxy resident connection pooling uses the Proxy Resident Connection Pool that can be configured using Oracle Connection Manager in Traffic Director Mode.
Integration of Microsoft Active Directory Services with Oracle Database
The Oracle Database can connect directly to Microsoft Active Directory and authenticate and authorize users. This provides a simpler, less complex option than the full featured integration with Oracle Enterprise User Security (EUS) and an Oracle Directory Service.
See “About Centralized User and Privilege Management“.
版权声明:本文为博主原创文章,未经博主允许不得转载。



