库被手工升级时,以上两个步骤需要被显式运行。然而,DBUA工具包含上面这两个变化。
4. 通过网络还原/恢复数据文件
12c R1中,另一个很大的增强是,你现在可以通过服务名(service name)在主备库之间还原或恢复数据文件,控制文件,spfile,表空间或整个库。在同步主备库时,这是非常有用的。
当在主备库之间发现一个很长的延迟时(gap),你不再需要复杂的前滚过程来填充主备库间的延迟了。RMAN能通过网络得到增量备份并且在物理备库上应用这些备份来恢复备库。像已经说过的,你能用服务名直接把需要的数据文件从备库拷贝到主库上,例如:主库上的一个数据文件或表空间丢了,或者没有从备份集还原数据文件等。
下列过程说明如何用新特点执行前滚来同步主备库:
物理备库端:
./rman target"username/password@standby_db_tns as SYSBACKUP"
RMAN> RECOVERDATABASE FROM SERVICE primary_db_tns USING COMPRESSED BACKUPSET;
上面的例子使用备库上的连接串primary_db_tns连接主库来执行一个增量备份,然后把这些增量备份传输到备库,并应用这些文件来同步备库。可是,你需要确信已经在备库端配置了 指向主库的连接串primary_db_tns。
下例中,我将通过从备库获取并恢复主库上丢失的数据文件来说明一个场景:
主库端:
./rman target"username/password@primary_db_tns as SYSBACKUP"
RMAN> RESTOREDATAFILE ‘+DG_DISKGROUP/DBANME/DATAFILE/filename’ FROM SERVICE standby_db_tns;
5. 数据泵增强
这部分主要介绍数据泵方面的增强。有很多有用的增强,例如:导出时将试图转化为表,导入时关闭日志等。
5.1. 关闭日志产生
数据泵导入被新引进的TRANSFORM选项支持在导入过程中不产生对象redo。当确定TRANSFORM选项的值为DISABLE_ARCHIVE_LOGGING时,整个导入过程中上下文中对象将不产生redo。当导入大表时,该特点会很大的减轻系统压力和产生的redo,从而减速导入进程。该特点可以应用到表和索引,下例说明了该特点:
$ ./impdp directory=dpump dumpfile=abcd.dmp logfile=abcd.logTRANSFORM=DISABLE_ARCHIVE_LOGGING:Y
5.2. 把视图转换为表
这是数据泵的另一个增强。利用VIEWS_AS_TABLES选项,你能把视图导出为一个表。下列例子描述了如何在导出期间将视图导出为一个表:
$ ./impdp directory=dpump dumpfile=abcd.dmp logfile=abcd.logTRANSFORM=DISABLE_ARCHIVE_LOGGING:Y
6. 实时进行ADDM分析
通过像AWR,ASH和ADDM等工具去分析过去和目前数据库健康状态是每个DBA生活的一部分。虽然每个工具能在各个层面来测量数据库的整体健康和性能,但当整个数据库没反应或”hang”时,每一个工具可以使用。
当你碰到数据库没反应或被hang住时,如果你已经配置了Oracle企业管理器12c云控制,你就能诊断严重的性能问题。这将会给你提供一个数据库中当前什么在发生的整体描述,也许也会给你提供一个解决问题的补救措施。
下面一步步的说明如何利用Oracle企业管理器云控制来分析数据库状态:
1) 在存取数据库主页上从Performance菜单选择EmergencyMonitoring选项,这将会显示hang分析表中排在最前面的阻塞会话。
2) 从Performance选择Real-TimeADDM选项来执行实时ADDM分析。
3) 收集性能数据后,点击Findings页来获取所有发现的交互总结。
7. 并行的收集多张表的统计信息
在先前的Oracle版本中,无论什么时候你运行DBMS_STATS过程来收集表,索引,模式或数据库级别的统计信息,Oracle都是一次收集一张表。如果表很大,那么推荐增加并行度。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');
?