技术开发 频道

Oracle 数据库12c 16大新特性总结

  6. 临时undo

  每个Oracle数据库包含一组与系统相关的表空间,例如SYSTEM,SYSAUX,UNDO & TEMP,并且它们在Oracle数据库中每个都用于不同的目的。在Oracle 12c R1之前,undo记录是由临时表产生并存储在undo表空间中的,这更类似于一个通用或持久的表撤销记录。然而,由于在12c R1中引入了临时undo功能,那些临时undo记录现在就可以存储在临时表中,而不是存储在undo表空间中。临时undo的主要好处在于:由于信息不会写入undo日志,undo表空间的开销得以减少并且产生的undo数据会更少。而对于在会话级还是数据库级开启临时undo功能你是可以灵活选择的。

  启用临时undo功能

  要使用这一新功能,需要做以下设置:

  •兼容性参数必须设置为12.0.0或更高

  •启用 TEMP_UNDO_ENABLED 初始化参数

  •由于临时undo记录现在是存储在一个临时表空间中的,你需要有足够的空间来创建这一临时表空间

  •对于会话级,你可以使用:ALTER SYSTEM SET TEMP_UNDO_ENABLE=TRUE;

  查询临时undo信息

  以下所列的字典视图是用来查看或查询临时undo数据相关统计信息的:

  •V$TEMPUNDOSTAT

  •DBA_HIST_UNDOSTAT

  •V$UNDOSTAT

  要禁用此功能,你只需做以下设置:

SQL> ALTER SYSTEM|SESSION SET TEMP_UNDO_ENABLED=FALSE;

  7. 备份特定用户特权

  在11g R2中,引入了SYSASM特权来执行ASM的特定操作。同样地,在12c中引入了SYSBACKUP特权用来在 RMAN中执行备份和恢复命令。因此,你可以在数据库中创建一个本地用户并在不授予其SYSDBA权限的情况下,通过授予SYSBACKUP权限让其能够在RMAN中执行备份和恢复相关的任务。

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

  8. 如何在RMAN中执行SQL语句

  在12c中,你可以在不需要SQL前缀的情况下在RMAN中执行任何SQL和PL/SQL命令,即你可以从RMAN直接执行任何SQL和PL/SQL命令。如下便是在RMAN中执行SQL语句的示例:

RMAN> SELECT username,machine FROM v$session;
RMAN
> ALTER TABLESPACE users ADD DATAFILE SIZE 121m;

  9. RMAN中的表恢复和分区恢复

  Oracle数据库备份主要分为两类:逻辑和物理备份。每种备份类型都有其自身的优缺点。在之前的版本中,利用现有物理备份来恢复表或分区是不可行的。为了恢复特定对象,逻辑备份是必需的。对于12c R1,你可以在发生drop或truncate的情况下从RMAN备份将一个特定的表或分区恢复到某个时间点或SCN。

  当通过RMAN发起一个表或分区恢复时,大概流程是这样的:

  •确定要恢复表或分区所需的备份集

  •在恢复表或分区的过程中,一个辅助数据库会临时设置为某个时间点

  •利用数据泵将所需表或分区导出到一个dumpfile

  •你可以从源数据库导入表或分区(可选)

  •在恢复过程中进行重命名操作

  以下是一个通过RMAN对表进行时间点恢复的示例(确保你已经对稍早的数据库进行了完整备份):

RMAN> connect target "username/password as SYSBACKUP";
RMAN
> RECOVER TABLE username.tablename UNTIL TIME 'TIMESTAMP…'
AUXILIARY DESTINATION
'/u01/tablerecovery'
DATAPUMP DESTINATION
'/u01/dpump'
DUMP FILE 'tablename.dmp'
NOTABLEIMPORT
-- this option avoids importing the table automatically.(此选项避免自动导入表)
REMAP TABLE 'username.tablename': 'username.new_table_name'; -- can rename table with this option.(此选项可以对表重命名)

  重要提示:

  •确保对于辅助数据库在/u01文件系统下有足够的可用空间,同时对数据泵文件也有同样保证

  •必须要存在一份完整的数据库备份,或者至少是要有SYSTEM相关的表空间备份

  以下是在RMAN中应用表或分区恢复的限制和约束:

  •SYS用户表或分区无法恢复

  •存储于SYSAUX和SYSTEM表空间下的表和分区无法恢复

  •当REMAP选项用来恢复的表包含NOT NULL约束时,恢复此表是不可行的

0
相关文章