临时存储上的表空间

And*_*tto 7 oracle etl

出于某些情况下的性能原因,例如 Amazon EC2,您可以访问更快、更便宜的存储设备,该设备在重新启动时会丢失所有数据,因此它被称为“临时”。

这个问题是关于在 Oracle 数据库的安装中利用这种类型的存储。其中分解为:

  1. 有什么方法可以将表空间的数据文件保存在临时存储上,并让 Oracle 在启动时创建这些文件(并可能运行一些脚本来创建/填充一些表),并且在它们丢失时可以正常工作。
  2. 对备份有什么影响(应该没有临时数据的备份)。
  3. 对表格和其上的其他对象的任何其他可能的考虑

    • 可能的优化:例如禁用日志记录。
    • 重启丢失了什么(数据或数据+元数据)

TEMP 表空间是此优化的完美候选者,实际上对于 MS SQLServer 的等效项,网络上有用于执行此操作的方法。

让我们考虑一个数据仓库,作为参考用例,它有一个重复性作业,将许多 GB 的数据(来自 CSV 或数据泵)导入到暂存模式“STG”中,随后的 ETL 过程将结果保存在生产模式中。

这种工作负载将受益于对暂存模式的非常快速的读写访问,轻松容忍其数据的波动性。

小智 2

Oracle 不会在临时文件中记录检查点信息。因此,对于临时文件:

  1. 即使临时文件丢失,Oracle 也能够启动。您将在更改日志中收到一条消息,并且您应该重新创建临时文件。

  2. 没有对临时文件进行备份,因此可以安全地丢失它

  3. 如果临时文件驻留在临时存储上,则无需对临时文件的任何存储参数进行欺骗。

关于物理数据结构不是临时文件,将它们放在临时存储中是不安全的。即使您禁用了日志记录,Oracle 也会跟踪数据文件中的更改。禁用日志记录只会影响数据库的可恢复性、重做和整体性能。不允许您将数据文件放在临时存储上。打开缺少数据库的数据库(数据库不关心其数据的重要性)将会引发问题。

ORA-01116: error in opening database file %s
ORA-27041: unable to open file
ORA-01157: cannot identify/lock data file %s - see DBWR trace file
ORA-01119: error in creating database file '%s'
Run Code Online (Sandbox Code Playgroud)

并且您必须手动处理该问题。因此,必须避免将临时存储与普通数据文件一起使用。