更改Oracle数据库表的表空间

我的狗狗在那

我的狗狗在那

2016-02-19 21:15

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的更改Oracle数据库表的表空间,希望大家看完后能赶快学习起来。

  在Oracle数据库管理系统中,创建库表(table)时要分配一个表空间(tablespace),如果未指定表空间,则使用系统用户确省的表空间。

  在Oracle实际应用中,我们可能会遇到这样的问题。处于性能或者其他方面的考虑,需要改变某个表或者是某个用户的所有表的表空间。通常的做法就是首先将表删除,然后重新建表,在新建表时将表空间指定到我们需要改变的表空间。如果该用户已经保存了大量数据,这种办法就就显得不是很方便,因为有大量数据需要提前备份出来。下面介绍一种利用数据库的导出/导入功能来实现重新组织数据库表空间的方法。

  下面是一个简单的例子,假定要将用户oa下的全部表从表空间A转换到表空间B,具体步骤(在Oracle 9i for linux环境)如下:

  1.1. 导出db_zgxt下的所有表(Dos控制台下) 导出db_zgxt下的所有表(Dos控制台下)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中)

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

可以采用批处理的方式删除掉db_zgxt下的所有表,生成批处理的语句如下:
--其中set head off将表头信息去掉
SET HEAD OFF
SPOOL c:drop_tables.sql
select 'drop table '||table_name||';' from user_tables;
spool off;
@c:drop_tables.sql;
sql @drop_tables.sql

  3. 采用导入参数 INDEXFILE导入oa用户下的所有表(Dos控制台下)
把建表和索引的语句导出到文件,其中建表语句是加注释的,并没有实际导入

  IMP oa/password@paramount_server FULL=Y FILE=d:10_27_oa.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:10_27_oa.dmp IGNORE=Y LOG=d:altertablespace.LOG

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  其中,参数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 9i)上实际操作后修改成此文。如果侵犯到谁的版权,请与我联系。

展开更多 50%)
分享

猜你喜欢

更改Oracle数据库表的表空间

编程语言 网络编程
更改Oracle数据库表的表空间

Oracle数据库手工扩大表空间

编程语言 网络编程
Oracle数据库手工扩大表空间

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

查询Oracle数据库表空间和数据文件方法

编程语言 网络编程
查询Oracle数据库表空间和数据文件方法

Oracle的数据库表与视图

编程语言 网络编程
Oracle的数据库表与视图

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Oracle数据库删除两表中相同数据的方法

电脑网络
Oracle数据库删除两表中相同数据的方法

如何确定Oracle数据库表中重复的记录

编程语言 网络编程
如何确定Oracle数据库表中重复的记录

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

从问题入手帮你解决Oracle杀死死锁进程

从问题入手帮你解决Oracle杀死死锁进程

蒙娜丽莎的微笑,恬静之中又带有些忧伤.

蒙娜丽莎的微笑,恬静之中又带有些忧伤.
下拉加载更多内容 ↓