在Oracle实际应用中,我们可能会遇到这样的问题。处于性能或者其他方面的考虑,需要改变某个表或者是某个用户的所有表的表空间。通常的做法就是首先将表删除,然后重新建表,在新建表时将表空间指定到我们需要改变的表空间。如果该用户已经保存了大量数据,这种办法就就显得不是很方便,因为有大量数据需要提前备份出来。下面介绍一种利用数据库的导出/导入功能来实现重新组织数据库表空间的方法。
下面是一个简单的例子,假定要将用户db_zgxt下的全部表从表空间A转换到表空间B,具体步骤(在Oracle 8.0.5 for NT环境)如下:
1. 导出db_zgxt下的所有表(Dos控制台下)
EXP80 OWNER=db_zgxt FILE=Exp0326.DMP LOG=Exp0326.LOG
系统提示输入用户名和口令,回答完毕,系统就开始将db_zgxt下的所有表都导出到一个叫Exp0316.dmp的文件中。
2. 删除db_zgxt下的所有表(在SQL/PLUS中)
可以采用批处理的方式删除掉db_zgxt下的所有表,生成批处理的语句如下:
select 'drop table '||user_tables||’;' from user_tables;
3. 采用导入参数 INDEXFILE导入db_zgxt用户下的所有表(Dos控制台下)
IMP80 FULL=Y FILE=Exp0326.DMP INDEXFILE=db_zgxt.SQL LOG=Imp0326_1.LOG
系统提示输入用户名和口令,回答完毕,系统就开始将文件Exp0326.dmp导入到db_zgxt用户下。
其中,指定参数INDEXFILE后,系统就将创建表和索引的语句写到一个文件,这里是db_zgxt.sql中。该文件中包含了所有创建索引(CREATE INDEX)语句和创建表(CREATETABLE)语句,但是这里所有创建表的语句均加了注释标志。在任何文本编辑器中打开并编辑该文件,去掉所有创建表语句的注释标志,将所有的表空间名称由A替换为B,同时对所有的创建索引语句加上注释标志。这些工作作完以后,在SQL/PLUS中运行该脚本文件,这些表就被创建,其表空间由A变为B。
4. 采用导入参数INDEXES=N 和IGNORE=Y将db_zgxt用户的表数据导入库中(Dos控制台下)
IMP80 FULL=Y INDEXES=N FILE=Exp0326.DMP IGNORE=Y LOG=Imp0326_2.LOG
其中,参数INDEXES=N是指将数据导入数据库中时不加索引。IGNORE=Y是指在导入数据过程中,忽略表已经存在(table already exists)的错误。这样Oralce就将数据和一些约束条件导入到第3步创建的表中。
5. 创建索引
在文本编辑器中重新打开在第3步中创建的db_zgxt.sql脚本文件,这次,将所有创建表(CREATE TABLE)的语句加上注释标志,然后将所有的创建索引(CREATE INDEX)语句去掉注释标志。在SQL/PLUS中再次运行该脚本文件。
至此,我们就成功完成了将db_zgxt用户下的全部表从表空间A转换到表空间B的工作。在实际工作中,可能不是将整个一个用户的所有表都转换,也可能只需要转换其中的一部分表,这种情况只需要在导出和导入时加上表的限制条件就可以了,关于如何加上导出/导入表限制条件详细步骤请参看Oralce帮助,这里不在详述。
分享到:
相关推荐
本文将详细介绍如何在Oracle数据库中实践更改表空间,特别是对于正在运行的系统,如何通过数据库的导入/导出功能来实现这一过程。 首先,传统的表空间更改方法包括两种常见方式。一种是针对少量表的移动,可以使用`...
ORACLE数据库表空间转换器 获取oracle表空间名,然后进行修改进行转换
1. **数据文件**(Data Files):数据文件是Oracle数据库存储实际数据的地方,包含了表、索引、视图等对象的数据。每个表空间由一个或多个数据文件组成,每个数据文件中包含一系列的数据块,这是Oracle数据存储的...
### Oracle数据库扩展表空间知识点详解 #### 一、Oracle数据库表空间管理概述 在Oracle数据库中,表空间是逻辑存储单元,它将物理文件映射到数据库中的逻辑结构上。表空间由一个或多个数据文件组成,每个数据文件...
在Oracle数据库管理中,创建表空间和用户是基础但至关重要的操作,这直接影响到数据库的性能、安全性和数据管理效率。以下将详细解析如何在Oracle数据库中创建表空间和用户,以及这一过程中涉及的关键概念和步骤。 ...
Oracle数据库管理是数据库管理员(DBA)日常工作中不可或缺的一部分,涉及到用户管理、系统参数配置、表空间操作等多个方面。在Oracle环境中,以下是一些关键的知识点: 1. **用户管理**: - `ALTER USER`语句用于...
文档《oracle数据库从入门到精通.pdf》详细地介绍了Oracle数据库的基础知识和高级操作,使得学习者能够从基础的表空间创建到存储过程的编写,以及游标的应用等高级特性有深入理解和掌握。 首先,文档指出了创建表...
"Oracle数据库-改变表空间数据文件的位置" 本文将详细介绍如何在Oracle数据库中改变表空间数据文件的位置。 在开始之前,我们需要了解Oracle数据库中的表空间和数据文件的概念。表空间是Oracle数据库中用于存储...
- **表空间**: 包含一个或多个段,是Oracle数据库中最大的逻辑存储单元。 - **数据库**: 由一个或多个表空间组成,是所有数据的集合。 - **物理结构**: - **数据文件**: 存储表空间数据的实际文件。 - **重做...
Oracle数据库是一种广泛应用于企业和组织的大型关系型数据库管理系统,它提供了高效的数据存储、管理和查询功能。在Oracle数据库课程中,学生们通常会被要求掌握一系列基础知识,包括数据库的逻辑存储结构、服务端口...
### Oracle数据库表空间移植详解 在企业级应用中,Oracle数据库因其卓越的性能和稳定性而被广泛采用。在数据管理的复杂操作中,**表空间移植**是一项关键技能,尤其对于那些需要在不同数据库间高效迁移大量数据的...
4. **Oracle数据库管理**:这部分内容可能涵盖数据库实例管理、表空间和数据文件的管理、用户和权限管理、备份与恢复策略、性能监控与调优。还会涉及数据库的安全性、故障排查和问题诊断。 5. **Oracle高级特性**:...
Oracle 数据库存储管理是数据库管理员的核心任务之一,涉及到数据文件管理、控制文件操作、重做日志文件和表空间操作等方面。 一、数据文件管理 数据文件是 Oracle 数据库的物理存储单元,用于存储数据库中的数据...
首先,关于Oracle数据库对象管理,主要包括创建和修改表结构、管理索引、维护表分区、创建和管理视图及序列等操作。创建表(CREATE TABLE)是数据库管理中最基础的操作,涉及到数据类型、存储参数和数据块管理等特性...
Oracle数据库是全球知名的数据库管理系统,由甲骨文公司开发,以其高效能、高扩展性和安全性著称。Oracle数据库系统能够支持多种硬件平台和操作系统,具备良好的兼容性和迁移性。随着XMLDB的加入,Oracle数据库...
Oracle数据库系统工程师培训课程主要针对的是对Oracle数据库有深入学习需求的专业人士,旨在提升其在数据库设计、管理、优化及故障排除等方面的能力。Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其强大的功能和稳定性使其在企业级应用中占据了重要地位。本操作手册将深入探讨Oracle数据库的核心概念、安装配置、管理维护以及SQL查询等多个方面,帮助...
7. **表空间(Tablespaces)**:表空间是Oracle数据库逻辑存储的单位,可以包含一个或多个数据文件。用户创建的对象(如表、索引)都位于某个表空间中。 8. **段(Segments)**:段是由一个或多个extent(扩展)...
DBA的职责广泛,包括理解Oracle数据库的体系结构、安装和升级数据库管理系统、控制数据库的启动和关闭、管理数据库用户、权限、存储空间以及执行数据库的备份和恢复操作。 Oracle数据库的体系结构主要由物理结构、...
Oracle数据库的维护工作涉及安装、启动与关闭、表空间管理、用户管理、数据库备份与恢复等多个方面,这些操作对于保证数据库的稳定运行和数据安全至关重要。 首先,Oracle数据库的启动和关闭是日常维护的基本操作。...