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

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

不想先前的版本,在Oracle12cR1中,数据文件的迁移或重命名不再要求一系列的步骤,例如:将表空间至于只读模式,然后数据文件逻辑等操作。在12cR1中,数据文件能通过SQL语句“ALTERDATABASE MOVE DATAFILE”很容易的在线完成。在移动数据文件的过程中,用户可以执行查询,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。增加或修改一个不可见列非常容易,反之亦然。

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内存的会话。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 16:48:35

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

Oracle12c 新特性之三——ASM&Grid

1.    自动存储管理(ASM)方面的增强 1.1.   Flex ASM 在典型的网格架构安装中,每个节点有自己的ASM实例运行并扮演该节点上数据库的存储容器的角色,对这种安装配置,存在单点失败的风险.例如,如果该节点上的ASM实例出现问题或失败,那么,运行在该节点上的数据库和实例都将会被影响.为了避免ASM实例的单点失败,Oracle12c 提供一个flex ASM特性.Flex ASM总体来说是个不同的概念和架构,其中,只需要几个ASM实例运行在簇中的一组服务器上,但一个节点上的ASM实

详解Tomcat 7的七大新特性和新增功能

Apache发布首个Tomcat 7版本已经发布了有一段时间了,Tomcat 7引入了许多新功能,并对现有功能进行了增强.很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们,或指出它们的不足,或提供代码示例.本文将明确描述Tomcat 7中七个最显著的特征和新增的功能,并对其作出评论,而不是仅仅列出新的功能.本文还提供了代码例子以方便你可以对其有更好的理解. 本文分为两个部分,分别是"Tomcat 7的新特性"和"Tomcat 7增强的功能". To

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

Atitit.编程语言新特性 通过类库框架模式增强 提升草案 v3 q27 1. 修改历史2 2. 适用语言::几乎所有编程语言.语言提升的三个渠道::语法,类库,框架,ide2 2.1. 单根继承 vs  多跟继承3 2.2. 默认参数3 2.3. 等号判断相等,儿不是equ3 2.4. 隐式类型,类型推导3 2.5. 匿名类型3 2.6. 初始化器  对象初始化器 与 集合初始化器 { }4 2.7. 委托4 2.8. 内置委托 Func / Action 4 2.9. 标准查询运算符 St

详解Tomcat 7的七大新特性和新增功能(1)

http://developer.51cto.com/art/201009/228537.htm http://tomcat.apache.org/tomcat-7.0-doc/index.html Apache发布首个Tomcat 7版本已经发布了有一段时间了,Tomcat 7引入了许多新功能,并对现有功能进行了增强.很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们,或指出它们的不足,或提供代码示例.本文将明确描述Tomcat 7中七个最显著的特征和新增的功能,并对其作出评论

RHEL7新特性及RHEL6功能对比

一.RHEL7新特性对比之安装 2012,发布rhel7(主要是64位系统) 1.RHEL7目前支持架构: ①64-bit AMD    ②64-bit Intel    ③IBM POWER    ④IBM System z    ⑤不再支持x86 32bit 2.RHEL7安装界面-->grub2,systemd ①全新的安装界面    ②一站式的安装配置    ③全新的kickstart结构    ④全新的分区工具 ⑤支持2TB以上硬盘作为系统引导盘    ⑥安装配置步骤较大变化 3.RH

Oracle12c 新特性:限制PGA使用内存的大小

我们都知道,在12c之前,对于PGA内存的管理是使用PGA_AGGREGATE_TARGET参数来控制的,但这个参数也只是一个参考值,Oracle实例只是尽量保证总的PGA使用量在这个值范围内,当会话使用的PGA内存超过这个限制时,Oracle也不能做出什么强制措施来限制使用内存的大小. 12.1.0.1版本中引入了新特性:使用PGA_AGGREGATE_LIMIT参数来限制Oracle实例PGA使用内存的上限.后台进程ckpt每三秒检查一次PGA使用的内存总量,如果超过限制就采取终止会话的方式

Oracle12C新特性——cdb与pdb

Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB).CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库.在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载.而实例与数据库不可

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

经过了长时间的开发测试,新版本PHP程序(PHP5.6正式版)终于发布了.新版本中加入了一些实用的新特性,也摒弃了一些冗余的功能.同时,也对部分原有功能进行了改进.下面就一起看看PHP 5.6正式版到底有何不同之处吧! 新版本在旧版基础上做出的改进 PHP 5.6中对旧版本PHP做出了不少改进.不过,大部分PHP5代码在新版本PHP中都是不需要修改也可以正常运行的. json_decode函数 根据JSON的规范,json_decode()函数会自动排除JSON文本中所有非小写变量(比如:tru

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

1.dba_user表的password(除了GLOBAL和EXTERNAL的密码)不再保存密码. 查询10g的dba_user表 SQL> select username,password from dba_users; USERNAME PASSWORD ------------------------- ------------------------------ SYS 4CCF4A082AD3F312 SYSTEM 34F99ED804364129 GP BA5BE92FE6F36B6