WEB开发网
开发学院数据库Oracle Oracle数据库中如何改善表空间的管理 阅读

Oracle数据库中如何改善表空间的管理

 2007-05-06 12:06:02 来源:WEB开发网   
核心提示: 重命名一个表空间在数据仓库环境中(典型地,对于数据中心体系结构),Oracle数据库中如何改善表空间的管理(3),在数据库之间传输表空间是很常见的,但源数据库和目标数据库必须不存在拥有相同名称的表空间,Oracle 9i Database R2 引进了列重命名,现在 — 在最新

重命名一个表空间

在数据仓库环境中(典型地,对于数据中心体系结构),在数据库之间传输表空间是很常见的。但源数据库和目标数据库必须不存在拥有相同名称的表空间。如果存在两个拥有相同名称的表空间,则目标表空间中的段必须转移到一个不同的表空间中,然后重新创建这个表空间— 这个任务说起来容易做起来难。

Oracle Database 10g 提供了一个方便的解决方案:您可以用以下命令来简单地重命名一个现有的表空间(SYSTEM 和 SYSAUX 除外) — 无论是永久表空间还是临时表空间:

ALTER TABLESPACE <oldname> RENAME TO <newname>;

这个功能还将应用在存档过程中。假定您有一个按范围分区的表,用于记录销售历史数据,每个月的这个分区位于按这个月份命名的一个表空间中 — 例如,1 月份的分区命名为 JAN,并位于一个名称为 JAN 的表空间中。这样您就拥有了一个将信息保留 12 个月的策略。在 2004 年 1 月,您将能够存档 2003 年 1 月的数据。大致的操作流程类似于以下操作:

◆利用 ALTER TABLE EXCHANGE PARTITION 从分区 JAN 中创建一个独立的表 JAN03。

◆将表空间重命名为 JAN03。

◆为表空间 JAN03 创建一个可传输表空间集。

◆将表空间 JAN03 重新命名为 JAN。

◆将空的分区交换回表中。

第 1、2、4 和 5 步很简单,并且不会过度地消耗资源(如重做和撤消空间)。第 3 步只是拷贝文件并只为 JAN03 输出数据字典信息,这也是个非常轻松的过程。如果您需要恢复之前存档的分区,这个过程也非常简单,您只需要将相同的过程反过来就行了。

Oracle Database 10g 在处理这些重命名的方式上相当智能化。如果您重命名作为 UNDO 或默认临时表空间的表空间,这可能产生混淆。但数据库将自动调整必要的记录来反映这种变化。例如,将默认表空间的名称从 USERS 修改为 USER_DATA 将自动修改视图 DATABASE_PROPERTIES。在修改之前,查询:

select property_value from database_properties
where property_name = 'DEFAULT_PERMANENT_TABLESPACE';

返回 USERS。在运行下面的语句之后:

alter tablespace users rename to user_data;

上述查询返回 USER_DATA,因为所有对 USERS 的引用都被修改为到 USER_DATA。修改默认临时表空间的情况一样。甚至修改 UNDO 表空间的名称也将触发 SPFILE 中的变化,如下所示:

SQL> select value from v$spparameter
where name = 'undo_tablespace';
VALUE
--------
UNDOTBS1
SQL> alter tablespace undotbs1 rename to undotbs;
Tablespace altered.
SQL> select value from v$spparameter
where name = 'undo_tablespace';
VALUE
--------
UNDOTBS

结论

在最近的几个 Oracle 版本演变的过程中,对象处理得到了稳定的增强。Oracle8i 引进了表从一个表空间到另一个表空间的转移,Oracle 9i Database R2 引进了列重命名,现在 — 在最新的版本中 — 表空间自身的重命名成为可能。这些增强显著地减轻了数据库管理员的任务 — 特别是在数据仓库或数据中心环境中。

上一页  1 2 3 

Tags:Oracle 数据库 如何

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接