Oracle12c功能增强 新特性之管理功能的增强

时间:2022-09-08 09:51:15

1.    数据文件在线重命名和迁移

不想先前的版本号。在Oracle12cR1中,数据文件的迁移或重命名不再要求一系列的步骤,比如:将表空间至于仅仅读模式,然后数据文件逻辑等操作。在12cR1中。数据文件能通过SQL语句“ALTERDATABASE MOVE DATAFILE”非常easy的在线完毕。在移动数据文件的过程中,用户能够运行查询,DML和DDL任务。另外,数据文件能在存储间迁移,比如:从非ASM到ASM,反之亦然。

1.1.   重命名数据文件:

SQL> ALTER DATABASE MOVE DATAFILE '/u01/data/users01.dbf'TO '/u01/data/users_02.dbf';

1.2.   从非ASM存储迁移数据文件到ASM:

SQL> ALTER DATABASE MOVE DATAFILE'/u01/data/users_01.dbf' TO '+DG_DATA';

数据文件从一个ASM磁盘组迁移到还有一个:

SQL> ALTER DATABASE MOVE DATAFILE'+DG_DATA/users_01.dbf ' TO '+DG_DATA_02';

1.3.   假设数据文件在新位置也存在,则覆盖同名的数据文件:

SQL> ALTER DATABASE MOVE DATAFILE'/u01/data/users_01.dbf' TO '/u02/data_new/users_01.dbf' REUSE;

1.4.   数据文件复制到新位置,旧位置保留旧的拷贝:

SQL> ALTER DATABASE MOVE DATAFILE'/u00/data/users_01.dbf' TO '/u00/data_new/users_01.dbf' KEEP;

通过查询动态视图v$session_longops,你能够监控数据文件移动的进程。

另外,你也能够參考数据库的alert.log。由于,Oracle会把正在进行的操作的具体信息写入该日志中。

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

在Oracle12c中,把表分区或子分区迁移到一个不同表空间的操作不再要求一个复杂过程。类似之前版本号中在线迁移一个非分区表。表分区或子分区能够在线或离线迁移到一个不同的表空间中。

当确定ONLINE子句时,全部在和该迁移过程相关的分区或子分区上的DML操作不会被打断。相反,假设分区或子分区被离线迁移,全部的DML操作都不会被同意。

以下是相关样例:

SQL> ALTER TABLE table_name  MOVE PARTITION|SUBPARTITIONpartition_name  TO tablespacetablespace_name;

SQL> ALTER TABLE table_name  MOVE PARTITION|SUBPARTITIONpartition_name  TO tablespacetablespace_name UPDATE INDEXES ONLINE;

第一个样例是把表分区或子分区离线迁移到一个新表空间上。

第二个样例是在线迁移表分区或子分区,而且同一时候维护表上的本地和全局索引。另外,当确定ONLINE子句时,DML操作不会被打断。

注意:

1)  UPDATEINDEXES子句将避免表上的本地和全局索引变得不可用。

2)  表在线迁移的限制在这里也相同使用。

3)  在迁移过程中将会加锁,这或许会导致性能减少,而且会产生大量的redo。这样看分区或子分区的大小。

3.    不可见列

Oracle 11g R1中, Oracle在不可见索引和虚拟列方面引进了几个增强。

对这些特性进一步发展,Oracle12cR1中引进了不看见列的概念。还记得,在先前的版本号中,为了在一个普通查询中隐藏一些重要的数据列,我们经常创建一个视图,以此来隐藏必要的信息或应用一些安全条件。

12c R1中,在表中能够建一个不可见的列。当列被定义为不可见时,在普通查询中这个列不会出现,除非该列在SQL语句或条件中被显式的參考。或者在表定义中被DESCRIBED。

添加或改动一个不可见列很easy。反之亦然。

SQL> CREATE TABLE emp (eno number(6), ename namevarchar2(40), sal number(9) INVISIBLE);

SQL> ALTER TABLE emp MODIFY (sal visible);

为了把数据插入不可见列,你必须显式的參考它。

一个虚拟列或分区列也能被定义为不可见列。

但是,暂时表。外部表和簇表不支持不可见列。

4.    同样列上建多个索引

Oracle 12c前。在同样列或同样一组列上不能够创建多个索引。

比如:假设你在列(a)或列(a,b)上有一个索引,你就不能依照同样顺序在同一列或同一组列上创建还有一个索引。

12c中。在同一个列或同一组列上你能够建立多个索引,仅仅要索引类型不同就能够。但是,在不论什么时刻,仅仅能有一种索引是可用的或可见的。为了測试不可见索引,你须要设置參数optimizer_use_use_invisible_indexes=true,以下是一个样例:

SQL> CREATEINDEX emp_ind1 ON EMP(ENO,ENAME);

SQL> CREATEBITMAP INDEX emp_ind2 ON EMP(ENO,ENAME) INVISIBLE;

5.    DDL日志

先前的版本号中。没有记录DDL操作的命令选项。12cR1中,你能把DDL操作记录到xml和日志文件中。

这在想知道什么时候,是谁运行了删除和创建命令时会很实用。为了打开该特性。必须配置初始化參数ENABLE_DDL_LOGGING,该參数能在数据库和会话级别设置。

当该參数被启用时,全部的DDL命令被记录在$ORACLE_BASE/diag/rdbms/DBNAME/log|ddl下的xml和日志文件中。

每一个xml文件包括像DDL命令,IP地址。时间戳等信息。这有助于鉴定何时删除了用户或表。或DDL语句何时被触发。

5.1.   为了启用DDL日志:

SQL> ALTERSYSTEM|SESSION SET ENABLE_DDL_LOGGING=TRUE;

5.2.   下列DDL语句有可能在xml和日志文件中被记录:

1)  CREATE|ALTER|DROP|TRUNCATETABLE

2)  DROPUSER

3)  CREATE|ALTER|DROPPACKAGE|FUNCTION|VIEW|SYNONYM|SEQUENCE

6.    暂时Undo

每一个Oracle数据库包括一套系统相关的表空间,比如:SYSTEM, SYSAUX, UNDO & TEMP,在Oracle数据库中每一个表空间其不同的作用。Oracle12cR1之前,暂时表产生的undo记录被存储在undo表空间中。和普通或永久表的undo记录非常类似。但是,在12cR1中。暂时undo记录如今能被存储在暂时表中而不是存储在undo表空间中。

处包括:降低了undo表空间的占用及降低了redo数据这个特性的好的产生,由于这些信息不会被记录在redo日志中。你能够在会话或数据库级别启用暂时undo选项。

6.1.   启用暂时undo

为了使用该新特性,须要做例如以下设置

1)  Compatibility參数必须被设置为12.0.0或更高。

2)  开启TEMP_UNDO_ENABLED初始化參数。

3)  因为如今暂时undo记录存储在暂时表空间,你须要保证暂时表空间有足够的空间。

4)  你能用该命令在会话级别开启暂时undo特性:ALTERSESSION SET TEMP_UNDO_ENABLE=TRUE;

6.2.   查询暂时undo信息

以下被列出的字典视图被用来浏览或查询关于暂时undo数据的统计信息:

1)  V$TEMPUNDOSTAT

2)  DBA_HIST_UNDOSTAT

3)  V$UNDOSTAT

6.3.   为了关闭该特性,你仅仅须要做下面设置:

SQL> ALTER SYSTEM|SESSION SET TEMP_UNDO_ENABLED=FALSE;

7.    备份确定的用户权限

在11g R2中,SYSASM权限被引进来运行ASM特定的操作。类似的,在12c中,也引进了运行备份和恢复的特定操作的权限SYSBACKUP,以便在RMAN中运行备份和恢复操作。所以,你能够在数据库中创建一个本地用户,然后不须要SYSDBA权限。而仅仅需授予SYSBACKUP权限来在RMAN中运行备份和恢复任务。

$ ./rman target "username/password asSYSBACKUP"

8.    怎样在RMAN中运行SQL语句

12c中。在RMAN中你能够不须要带SQL前缀来运行不论什么SQL和PL/SQL命令,你能够在RMAN中直接运行不论什么SQL和PL/SQL命令。在RMAN中怎样来运行SQL语句呢?

RMAN> SELECT username,machine FROM v$session;

RMAN> ALTER TABLESPACE users ADD DATAFILE SIZE 500m;

9.    RMAN中恢复表和分区

Oracle数据库备份主要分为两类:逻辑和物理。每种备份类型有自己的优缺点。

在先前的版本号。用现有的物理备份恢复一个表或分区不合适,为了恢复一个特定的对象,你必须有逻辑备份。12cR1中。在意外删除或截断发生后,你能从RMAN备份把一个特定表或分区恢复到一个时间点或SCN。

9.1.   当開始通过RMAN去恢复一个表或分区时,需运行例如以下操作:

1)  准备恢复表或分区须要的备份集。

2)  在恢复表或分区的过程中,须要暂时配置一个辅助数据库到某个时间点。

3)  须要的表或分区须要用数据泵导出成dumpfile。

4)  可选地,你能把表或分区导入源库。

5)  恢复时能够重命名。

9.2.   通过RMAN对一张表进行时间点恢复的样例(确信你已有较早的全库备份):

RMAN> connect target"username/password as SYSBACKUP";

RMAN> RECOVER TABLE username.tablenameUNTIL TIME 'TIMESTAMP…'

AUXILIARYDESTINATION '/u01/tablerecovery'

DATAPUMPDESTINATION '/u01/dpump'

DUMPFILE 'tablename.dmp'

NOTABLEIMPORT    --该选项避免表被自己主动导入。

REMAPTABLE 'username.tablename': 'username.new_table_name';    --用该选项能够重命名表。

9.3.   注意:

1)  确信在/u01文件系统下有足够的空暇可用空间来保存辅助数据库和数据泵文件。

2)  全数据库备份必须存在,或至少SYSTEM相关的表空间存在。

下列的限制适用RMAN恢复表或分区:

1)  SYS用户表或分区不能恢复。

2)  存储在SYSAUX和SYSTEM表空间的表或分区不能恢复。

3)  不能使用REMAP选项来恢复一个包括NOT NULL约束的一个表。

10.  限制PGA大小

Oracle12c R1之前,没有选项能够限制和控制PGA的大小。尽管你能把PGA_AGGREGATE_TARGET设置为某个确定值。Oracle还是能够基于负载和需求动态的添加或降低PGA的大小。12c中。能够通过启用PGA自己主动管理来给PGA设置一个硬限制。启用PGA自己主动管理要求设置PGA_AGGREGATE_LIMIT參数。所以,你如今能通过设置这个新參数来设置PGA的硬限制。以避免过度使用PGA:

SQL>ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=2G;

SQL>ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=0; --disables the hard limit

注意:

当超过当前的PGA限制时。Oracle将自己主动终止持有最多不能保持的PGA内存的会话。

Oracle12c功能增强 新特性之管理功能的增强的更多相关文章

  1. Atitit 数据融合merge功能v3新特性.docx

    Atitit 数据融合merge功能v3新特性.docx 1.1. 版本历史1 1.2. 生成sql结果1 1.3. 使用范例1 1.4. 核心代码1 1.1. 版本历史 V2增加了replace部分 ...

  2. Atitit.编程语言新特性 通过类库框架模式增强 提升草案 v3 q27

    Atitit.编程语言新特性 通过类库框架模式增强 提升草案 v3 q27 1. 修改历史2 2. 适用语言::几乎所有编程语言.语言提升的三个渠道::语法,类库,框架,ide2 2.1. 单根继承  ...

  3. PHP5各个版本的新功能和新特性总结

    因为 PHP 那“集百家之长”的蛋疼语法,加上社区氛围不好,很多人对新版本,新特征并无兴趣.本文将会介绍自 PHP5.2 起,直至 PHP5.6 中增加的新特征 本文目录:PHP5.2 以前:auto ...

  4. PHP5各个版本的新功能和新特性总结(转载 http://www.jb51.net/article/48150.htm)

    本文目录:PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束PHP5.2:JSON 支持PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredo ...

  5. PHP 5.6正式发布:新特性、及功能改进介绍

    经过了长时间的开发测试,新版本PHP程序(PHP5.6正式版)终于发布了.新版本中加入了一些实用的新特性,也摒弃了一些冗余的功能.同时,也对部分原有功能进行了改进.下面就一起看看PHP 5.6正式版到 ...

  6. Oracle12c中性能优化增强新特性之数据库智能闪存

    智能闪存功能最初在XD中引入.从Oracle11.2.0.2开始,除了用于XD存储,还可用于任何闪盘.Oracle12c中,不需卷管理器就可以使用闪盘. 1.  简介 智能闪存在solaris和lin ...

  7. SQL Server 2008新特性——策略管理

    策略管理是SQL Server 2008中的一个新特性,用于管理数据库实例.数据库以及数据库对象的各种属性.策略管理在SSMS的对象资源管理器数据库实例下的“管理”节点下,如图: 从图中可以看到,策略 ...

  8. 11g新特性-dba_users安全性的一些增强

    1.dba_user表的password(除了GLOBAL和EXTERNAL的密码)不再保存密码. 查询10g的dba_user表 SQL> select username,password f ...

  9. Oracle12c中性能优化&功能增强新特性之重大突破——内存列存储新特性

    内存列存储(IM column store) 是Oracle12.1.0.2版本的主要特点.该特点允许列,表,分区和物化视图在内存中以列格式存储,而不是通常的行格式.数据存在内存中的好处显而易见,而列 ...

随机推荐

  1. C语言输入输出整数

    scanf("%llu", &x); printf("%llu\n", x); scanf("%u", &x); print ...

  2. CSS中的相对定位和绝对定位

    1.元素的position属性的值默认为static 就是没有定位,元素出现在正常的文档流中,,这个时候你给这个元素设置的left,right,bottom,top这些偏移属性都是没有效果的, 使用相 ...

  3. redis基础-前篇

    设置键值 #设置值 set key value #获取值 get key 设置自增 #自增1 incr num #指定增长跨度 incrby num 10 设置自减 #自增1 decr num #指定 ...

  4. 使用FileResult返回浏览器文件及乱码问题解决

    一.向客户端发送文件方法 Asp.Net 中返回文件方法 public void TxtFile(string filename) { //html文件 string path = @"E: ...

  5. sscanf,sscanf_s及其相关使用方法

    #include<stdio.h> 定义函数 int sscanf (const char *str,const char * format,........); 函数说明   sscan ...

  6. C标签之forEach

    <c:forEach>标签用于通用数据循环,它有下面属性 属 性 描 述 是否必须 缺省值 items 进行循环的项目 否 无 begin 開始条件 否 0 end 结束条件 否 集合中的 ...

  7. listview设置条目点击的时候不变色(让状态选择器不起作用)

    未设置前的效果如下图: 很明显,“酷狗音乐”那个条目被点击的时候,条目背景变为蓝色,怎么去掉这个颜色呢? java代码可以这么写: listView.setSelector(new ColorDraw ...

  8. Appium总结

    运行case前,最好在case前加入等待,以免activity还未关闭,就开始定位或其他操作(如果case总报错,则考虑此问题): swipe效果: Thread.sleep(2000);       ...

  9. MPSOC之7——开发流程uramdisk

    用petalinux的预编译目录里有rootfs文件,选择rootfs.tar.gz作为初始输入. 1.原始文件-->uramdisk 1.1 解压原始rootfs.tar.gz,得到若干文件 ...

  10. 2018年1月 常用的linux命令

    项目中经常用到的Linux命令 (注意:linux命令要小写哦!) (1).ls 显示当前目录下的文件 (2).vi     vim 进入编辑器,可以选择你要编辑的文档,一般我们将项目打包成jar包来 ...