福州阿拉丁|厦门阿拉丁|设为首页|收藏本站
打印

如何修改Oracle数据库表的大小

如何修改Oracle数据库表的大小

  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中再次运行该脚本文件。

TOP

Knight81

world of warcraft goldIf you're planning to make a Death Knight on your favorite server, wow goldand you're an altoholic (I myself am guilty on both counts), you've probably already thought about your delimma, buy wow gold and Bornakk drove home the point today: There are still no plans to make extra character slot for WoTLK. cheap wow goldJust like the problem you may have had deciding what characters to delete to make your Draenei or Blood Elf, you'll have to make the same decision again.

buy wow gold I suppose it's understandable. world of warcraft goldI'm sure it would be a rather large jump in server storage space needed to give everyone a massive amount of extra characters. Still, wow goldIt's going to be tough for a lot of people to delete or transfer a character so they can play their new Death Knight with their friends, I imagine.

TOP