ITPub博客

首页 > 数据库 > Oracle > 12c新特性 Oracle数据版本12.2.0.1.0

12c新特性 Oracle数据版本12.2.0.1.0

原创 Oracle 作者:s相濡以沫y 时间:2018-12-07 09:41:23 0 删除 编辑

详细的内容在附件中,仅供参考 12C新特性.docx

12 c 新特性

Oracle数据版本12.2.0.1.0

 

 

1. 在线重命名和重新定位活跃数据文件

可以使用 ALTER DATABASE MOVE DATAFILE这样的SQL语句对数据文件进行在线重命名和移动

 

  2. 表分区或子分区的在线迁移

表分区或子分区可以在线或是离线迁移至一个不同的表空间。

当指定了 ONLINE语句,所有的DML操作可以在没有任何中断的情况下,在参与这一过程的分区或子分区上执行,还可维护表上任何本地或全局的索引

 

 

  3. 不可见字段

可以在表中创建不可见字段。

当一个字段定义为不可见时,这一字段就不会出现在通用查询中,除非在 SQL语句或条件中有显式的提及这一字段,或是在表定义中有DESCRIBED。

必须在 INSERT语句中显式提及不可见字段名以将不可见字段插入到数据库中。

虚拟字段和分区字段同样也可以定义为不可见类型。但临时表,外部表和集群表并不支持不可见字段

 

 

set colinvisible on

 

 

 

 

alter table emp modify(sal visible);

 

 

4. 相同字段上的多重索引

只要索引类型的形式不同,一个字段就可以包含在一个 B-tree索引中,同样也可以包含在Bitmap索引中

 

 

 

 

5. DDL日志

可以将 DDL操作写入xml和日志文件中

ALTER SYSTEM|SESSION SET ENABLE_DDL_LOGGING=TRUE;

 

 

D DL 操作会记录在 $ ORACLE_BASE/diag/rdbms/DBNAME/log/ddl 路径下

/u01/app/oracle/diag/rdbms/prod/PROD/log/ddl

 

 

 

 

6. 临时undo

临时 undo功能中,临时undo记录可以存储在一个临时表中,而无需再存储在undo表空间内。

这样做的主要好处在于:减少 undo表空间,由于信息不会被记录在redo日志中,所以减少了redo数据的生成。

你可以在会话级别或者数据库级别来启用临时 undo选项

show parameter undo;

select name,value from v$mystat natural join v$statname where name in('redo entries','redo size')

 

 

create global temporary table temp_objects as select * from dba_objects where 1=2;  

select name,value from v$mystat natural join v$statname where name in('redo entries','redo size');

 

 

insert into temp_objects select * from dba_objects;

select name,value from v$mystat natural join v$statname where name in('redo entries','redo size');

 

drop table temp_objects;

 

 

 

 

 

ALTER SYSTEM SET TEMP_UNDO_ENABLED=TRUE;

show parameter undo;

select name,value from v$mystat natural join v$statname where name in('redo entries','redo size');

 

 

create global temporary table temp_objects as select * from dba_objects where 1=2;  

select name,value from v$mystat natural join v$statname where name in('redo entries','redo size');

 

 

insert into temp_objects select * from dba_objects;

select name,value from v$mystat natural join v$statname where name in('redo entries','redo size');

 

 

 

 

 

 

 

 

 

 

 

 

 

7. 新的备份用户特权

12c中引入了SYSBACKUP特权用来在 RMAN中执行备份和恢复命令。

因此,你可以在数据库中创建一个本地用户并在不授予其 SYSDBA权限的情况下,通过授予SYSBACKUP权限让其能够在RMAN中执行备份和恢复相关的任务。

$ ./rman target "username/password as SYSBACKUP"

 

备份用户权限

 

grant sysbackup to wangkai;

 

 

rman target '"wangkai/oracle@prod as sysbackup"'

 

 

 

8. 可以在RMAN中执行SQL语句

可以在不需要 SQL前缀的情况下在RMAN中执行任何SQL和PL/SQL命令,即你可以从RMAN直接执行任何SQL和PL/SQL命令

 

 

 

9. RMAN中的表级别恢复

可以在发生 drop或truncate的情况下从RMAN备份将一个特定的表或分区恢复到某个时间点或SCN

 

 

drop table emp1 purge;

 

RMAN> recover table wk.emp1 until time "to_date('2018-11-06 14:00:00','yyyy-mm-dd hh24:mi:ss')"

2> auxiliary destination '/u01/app/backup/tmp'  

3> datapump destination '/u01/app/backup/tmp';

执行详情见 session.log.


select * from emp1;

 

 

10. PGA的大小限制问题

可以通过开启自动 PGA管理来对PGA设定硬性限制,这需要对PGA_AGGREGATE_LIMIT 参数进行设置

 

当超过了当前的 P GA 的限制, Oracle会自动终止/中止会话或进程以保持最合适的P GA 内存。

 

 

create or replace package demo_pkg

as

  type array is table of char(2000) index by binary_integer;

  g_data array;

end;

/

 

 

select a.name,to_char(b.value,'999,999,999')bytes,to_char(round(b.value/1024/1024,1),'99,999.9')mbytes

from v$statname a,v$mystat b

where a.statistic#=b.statistic#

and a.name like '%ga memory%';

 

 

 

 

 

begin

for i in 1..1000000

   loop

    demo_pkg.g_data(i):='x';

   end loop;

end;

/

 

 

 

 

 

 

11. 对表分区维护的增强

12c只需要使用一条单独的ALTER TABLE ADD PARTITION 命令就可以添加多个新分区

 

select TABLE_NAME,PARTITION_NAME,tablespace_name,PARTITION_POSITION,SEGMENT_CREATED from user_tab_partitions;

 

 

ALTER TABLE sales_history drop  PARTITION p 5 ;

ALTER TABLE sales_history ADD

partition p5 VALUES LESS THAN (TO_DATE('01-JAN-2003','dd-MON-yyyy')) tablespace study3,

partition p6 VALUES LESS THAN (TO_DATE('01-JAN-2004','dd-MON-yyyy')) tablespace study3;

 

 

select TABLE_NAME,PARTITION_NAME,tablespace_name,PARTITION_POSITION,SEGMENT_CREATED from user_tab_partitions;

 

 

 

12. 数据库升级改进

预升级脚本,预升级检查验证,此脚本还能以修复脚本的形式解决在升级过程前后出现的各种问题

并行升级功能

 

 

 

 

 

 

SQL> @/u01/app/oracle/product/12.1.0/db_1/rdbms/admin/preupgrd.sql


图形界面:

 

 

 

 

 

 

 

 

13. 通过网络恢复数据文件

可以在主数据库和备用数据库之间用一个服务名重新获得或恢复数据文件、控制文件、参数文件、表空间或整个数据库

场景 1,在物理备用数据库上:

. /rman target ‘“username/password@standby_db_tns as sysbackup”’

RMAN>recover database from service primary_db_tns using compressed backupset;

(以上示例使用备库数据库上定义的 pri mary_db_tns 连接字符串连接到主数据库,然后执行了一个增量备份,再将这些增量备份传输至备用数据库来进行同步。然而,需要确保已经对 pri mary_db_tns 进行了配置,即在备份数据库端将其指向主数据库。)

在以下示例中,我将演示一个场景通过从备用数据库获取数据文件来恢复主数据库上丢失的数据文件

场景 2,在主数据库上:

. /rman target ‘”username/password@primary_db_tns as sysbackup”’

R MAN>restore datafile ‘+DG_DISKGROUP/DBNAME/DATAFILE/filename’ from service standby_db _ tns;

 

自己实验:备库删掉几个数据文件,通过从主数据库获取数据文件来恢复备库丢失的数据文件。


 

14. 对Data Pump的增强

在导出时可以将视图转换为表,在导入时可以关闭日志记录

像表一样导出视图

 

views_as_tables 参数允许把视图当成表导出。表结构匹配试图列,视图查询结果对应表数据。

views_as tables =

[schema_name.]view_name[:table_name],...

例子:

conn scott/tiger@prod2

c reate view emp_v as select * from emp;

views_as_tables 参数导出视图。

$expdp scott/tiger views_as_tables=scott.emp_v directory=test_dir dumpfile=emp_v.dmp logfile=expdp_emp_v.log

 

expdp 默认会创建一个临时表来作为视图的拷贝,但不包含数据,只是会导出提供一个元数据源。此外,也可以确定一个结构合适的表来代替,但这也许只有在只读库上才有意义。

 

 

禁用日志选项( disable_archive_logging

impdp的t ransform 参数已经扩展为包括 disable_archive_logging 选项,默认值为 N ”,不会影响日志行为;将该选项设置为“ Y “,这将会使表和索引在导入前将日志属性设置为no logging ,从而减少导入期间相关日志的产生,导入后再将日志属性重置为 logging。

t ransform =  disable_archive_logging:Y:table

t ransform =  disable_archive_logging:Y:index

$ impdp wk/oracle directory=test_dir dumpfile=emp_v.dmp logfile=impdp_emp_v.log remap_schema=scott:wk transform= disable_archive_logging:Y

(如果数据库运行在 for ce logging 模式, disable_archive_logging 选项将没什么影响)

 

 

 

15. 实时自动数据诊断监视器 (ADDM) 分析

当数据库反应迟钝或是挂起状态时,而且你已经配置了 Oracle 企业管理器 12c的云控制,你就可以对严重的性能问题进行诊断。

这对于你了解当前数据库发生了什么状况有很大帮助,而且还能够对此问题给出解决方案

 

 

 

 

 

16. 同时在多个表上收集统计数据

12c R1中,你现在可以同时在多个表、分区以及子分区上收集统计数据。

在你开始使用它之前,你必须对数据库进行以下设置以开启此功能:

   SQL> ALTER SYSTEM SET RESOURCE_MANAGER_PLAN=’DEFAULT_MAIN’;

   SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=4;

   SQL> EXEC DBMS_STATS.SET_GLOBAL_PREFS(‘CONCURRENT’, ‘ALL’);

   SQL> EXEC DBMS_STATS.GATHER_SCHEMA_STATS(‘SCOTT’);

 

17. ASM的增强

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

Flex ASM

节点上的 ASM实例发生故障,则运行于此节点上的所有数据库和实例都会受到影响。

为了避免 ASM实例的单点故障,Oracle 12c提供了一个名为Flex ASM的功能。

Flex ASM是一个不同的概念和架构,只有很少数量的ASM实例需要运行在集群中的一些服务器上。

当某节点上的一个 ASM实例发生故障,Oracle集群就会在另一个不同的节点上自动启动替代ASM实例以加强可用性。

另外,这一设置还为运行在此节点上的实例提供了 ASM实例负载均衡能力。Flex ASM的另一个优势就是可以在单独节点上加以配置

 

ASM存储限制放宽

ASM支持511个ASM磁盘群组,而在11g R2中只支持63个。

11g R2中20 PB的磁盘大小,现在已经将这一数字提高到32 PB。

 

ASM均衡操作的优化

12c 中新的EXPLAIN WORK FOR 语句用于衡量一个给定ASM均衡操作所需的工作量,并在V$ASM_ESTIMATE动态视图中输入结果

使用此动态视图,你可以调整 POWER LIMIT 语句对重新平衡操作工作进行改善

 

ASM磁盘清理

在一个 ASM磁盘群组中,新的ASM磁盘清理操作分为正常或高冗余两个级别,它可以检验ASM磁盘群组中所有磁盘的逻辑数据破坏,

并且可以自动对逻辑破坏进行修复,如果检测到有逻辑数据破坏,就会使用 ASM镜像磁盘。

磁盘清理可以在磁盘群组,特定磁盘或是某个文件上执行,这样其影响可降到最小程度

 

ASM的活动会话历史(ASH)

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

 

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

Flex 集群

Oracle 12c 在集群安装时支持两类配置:传统标准集群和Flex集群。

在一个传统标准集群中,所有集群中的节点都彼此紧密地整合在一起,并通过私有网络进行互动,而且可以直接访问存储。

另一方面, Flex集群在Hub和Leaf节点结构间引入了两类节点。

分配在 Hub中的节点类似于传统标准集群,它们通过私有网络彼此互连在一起并对存储可以进行直接读写访问。

Leaf节点不同于Hub节点,它们不需要直接访问底层存储;相反的是,它们通过Hub节点对存储和数据进行访问

 

ASM磁盘群组中的OCR备份

对于 12c,OCR现在可以在ASM磁盘群组中得以备份。

这简化了通过所有节点对 OCR备份文件的访问。为了防止OCR的恢复,你不必担心OCR最新的备份是在哪个节点上。

可以从任何节点轻易识别存储在 ASM中的最新备份并能很容易地执行恢复

 

支持 IPv6协议

对于 12c,Oracle是支持IPv6网络协议配置的。

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

 

19. RAC数据库的增强

What-if命令评估

通过 srvctl使用新的What-if命令评估选项,现在可以确定运行此命令所造成的影响。

这一新添加到 srvctl的命令,可以在没有实际执行或是不对当前系统做任何改变的情况下模拟此命令。

这在想要对一个已存在的系统进行更改却对结果不确定的时候特别有用。

这样,此命令就会提供进行变更的效果。而 eval 选项也可以通过crsctl 命令来使用

 

srvctl的改进

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

 

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

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


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31562969/viewspace-2284463/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-11-20

  • 博文量
    11
  • 访问量
    3507