在Oracle数据库管理系统中,创建库表(table)时要分配一个表空间(tablespace),如果未指定表空间,则使用系统用户确省的表空间。
在Oracle实际应用中,我们可能会遇到这样的问题。处于性能或者其他方面的考虑,需要改变某个表或者是某个用户的所有表的表空间。通常的做法就是首先将表删除,然后重新建表,在新建表时将表空间指定到我们需要改变的表空间。如果该用户已经保存了大量数据,这种办法就显得不是很方便,因为有大量数据需要提前备份出来。下面介绍一种利用数据库的导出/导入功能来实现重新组织数据库表空间的方法。
下面是一个简单的例子,假定要将用户oa下的全部表从表空间A转换到表空间B,具体步骤(在Oracle 9i for linux环境)如下:
1. 导出db_zgxt下的所有表(Dos控制台下)
EXP oa/password@pararmount_server FILE=d:\10_27_oa.dmp LOG=d:\10_27_oa.LOG
2. 删除oa下的所有表(在SQL/PLUS中)
2.1可以采用批处理的方式删除掉db_zgxt下的所有表,生成批处理的语句如下:
--其中set head off将表头信息去掉。
SET HEAD OFF
SPOOL c:\drop_tables.sql
select 'drop table '||table_name||';' from user_tables;
spool off;
2.2执行删除表的操作
sql >@drop_tables.sql
3. 建表和索引的语句导出到文件
采用导入参数 INDEXFILE导入oa用户下的所有表(Dos控制台下)把建表和索引的语句导出到文件,其中建表语句是加注释的,并没有实际导入。
IMP oa/password@paramount_server FULL=Y FILE=d:\220oa_expdata.dmp INDEXFILE=d:\altertablespace_table_index.SQL LOG=d:\altertablespace.LOG
其中,指定参数INDEXFILE后,系统就将创建表和索引的语句写到一个文件,这里是altertablespace_table_index.SQL 中。该文件中包含了所有创建索引(CREATE INDEX)语句和创建表(CREATETABLE)语句,但是这里所有创建表的语句均加了注释标志。
在任何文本编辑器中打开并编辑该文件,去掉所有创建表语句的注释标志,将所有的表空间名称由A替换为B,同时对所有的创建索引语句加上注释标志。
这些工作作完成以后,在SQL/PLUS中运行该脚本文件,这些表就被创建,其表空间由A变为B。采用导入参数INDEXES=N 和IGNORE=Y将db_zgxt用户的表数据导入库中(Dos控制台下)。
4. 采用导入参数INDEXES=N 和IGNORE=Y将oa用户的表数据导入库中(Dos控制台下)
IMP oa/password@paramount_server FULL=Y INDEXES=N FILE=d:\ 220oa_expdata.dmp IGNORE=Y LOG=d:\altertablespace.LOG
其中,参数INDEXES=N是指将数据导入数据库中时不加索引。IGNORE=Y是指在导入数据过程中,忽略表已经存在(table already exists)的错误。这样Oralce就将数据和一些约束条件导入到第3步创建的表中。
5. 创建索引
在文本编辑器中重新打开在第3步中创建的altertablespace_table_index.SQL 脚本文件,这次,将所有创建表(CREATE TABLE)的语句加上注释标志,然后将所有的创建索引(CREATE INDEX)语句去掉注释标志。在SQL/PLUS中再次运行该脚本文件。
至此,我们就成功完成了将oa用户下的全部表从表空间A转换到表空间B的工作。当然你可以只导入一部分表。
分享到:
相关推荐
Oracle数据库DBA(Database Administrator)管理手册是数据库管理员学习和参考的重要资料,1-3章通常涵盖了Oracle数据库的基础知识和核心管理概念。以下是对这些章节的详细解释: 1. **Oracle数据库简介** - ...
Oracle数据库中有很多内置的系统表,这些表对于数据库管理来说非常重要。例如,`v$database`用于查看数据库的状态,`v$datafile`用于查看数据文件的相关信息等。 **连接数据库的常用命令格式** 连接Oracle数据库有...
1. **表空间(Tablespace)**:表空间是Oracle数据库中的逻辑存储单元,用于组织和管理数据文件。一个数据库可以包含多个表空间,而每个表空间由一个或多个数据文件组成。 - **系统表空间(System Tablespace)**:默认...
本文将详细介绍如何在Oracle数据库中实践更改表空间,特别是对于正在运行的系统,如何通过数据库的导入/导出功能来实现这一过程。 首先,传统的表空间更改方法包括两种常见方式。一种是针对少量表的移动,可以使用`...
"Oracle数据库-改变表空间数据文件的位置" 本文将详细介绍如何在Oracle数据库中改变表空间数据文件的位置。 在开始之前,我们需要了解Oracle数据库中的表空间和数据文件的概念。表空间是Oracle数据库中用于存储...
Oracle数据库DBA(Database Administrator)管理手册7-8版本涵盖了Oracle数据库系统在7到8i版本间的管理和维护知识。作为数据库管理员,理解并掌握这些内容至关重要,因为它们涉及到数据库的性能优化、安全性、备份...
- 表空间:是Oracle数据库中最大的逻辑存储单位,用户创建的所有对象(如表、索引等)都会存储在表空间中。表空间分为系统表空间和非系统表空间。系统表空间通常包含SYSTEM(用于管理系统信息)、SYSAUX(存储数据库...
#### 三、Oracle数据库克隆方法介绍 根据不同的应用场景和技术背景,Oracle数据库克隆主要有以下几种方式: 1. **RMAN(Recovery Manager)克隆**: - RMAN是Oracle提供的一种强大工具,主要用于数据库备份、恢复...
### 使用orabbix-1.2.3监控Oracle数据库与表空间 #### 一、概述 在IT运维领域,对数据库的健康状态进行实时监控是非常重要的。Oracle作为一款广泛使用的数据库管理系统,其性能和稳定性对于企业的业务运行至关重要...
这份手册可能是对Oracle数据库系统从第5章到第7章内容的详细阐述,鉴于原1-8章可能存在压缩问题,这里着重对5-7章的关键知识点进行梳理。 首先,Oracle数据库是世界上最广泛使用的商业关系型数据库管理系统之一,...
1. 表空间管理:表空间是数据库中存储数据的逻辑单位,可以包含一个或多个数据文件。 2. 用户管理:通过创建用户并分配权限,控制不同用户对数据库的访问和操作。 3. 数据库备份与恢复:Oracle提供RMAN(恢复管理器...
### Oracle数据库管理员快速入门知识点梳理 #### 一、绪论 - **关于本指南** - 本指南旨在为Oracle数据库管理员提供一个快速入门的路径,帮助他们掌握基础的管理和维护技能。 - **本指南未涉及内容** - 本指南不...
### Oracle数据库扩展表空间知识点详解 #### 一、Oracle数据库表空间管理概述 在Oracle数据库中,表空间是逻辑存储单元,它将物理文件映射到数据库中的逻辑结构上。表空间由一个或多个数据文件组成,每个数据文件...
本章主要讲解了如何管理和操作Oracle数据库中的表空间,包括创建、设置状态、重命名、数据文件管理、临时表空间、大文件表空间、非标准数据块表空间、撤销表空间以及与之相关的数据字典。 首先,基础表空间在Oracle...
Oracle 12c 数据库基础教程 - ADO.NET 数据访问技术...OracleConnection 类用于定义打开或连接数据库的字符串,连接超时时间、当前数据库或连接打开后要使用的数据库名称、连接状态、IDbConnection 接口的主要方法等。
1. **Oracle数据库核心概念** - **数据库实例与数据库**:Oracle数据库实例是内存结构和后台进程的集合,用于处理数据库的请求,而数据库是实际存储数据的物理结构。 - **表空间与数据文件**:表空间是存储数据库...
在Oracle数据库管理中,创建表空间和用户是基础但至关重要的操作,这直接影响到数据库的性能、安全性和数据管理效率。以下将详细解析如何在Oracle数据库中创建表空间和用户,以及这一过程中涉及的关键概念和步骤。 ...
ORACLE数据库表空间转换器 获取oracle表空间名,然后进行修改进行转换
本文将详细介绍Oracle数据库中表的管理要点,包括表的基本概念、设计原则、创建、修改、删除以及相关的数据字典视图。 首先,表是Oracle数据库中用于存储数据的基本单位,它由行和列组成。在创建表时,需要为每个列...