Oracle实际应用中,常需要修改Oracle数据库表的大小。下面简单介绍一种利用数据库的导出/导入功能来实现重新组织Oracle数据库表空间。
以一个简单例子为例,假定要将用户db_zgxt下的全部表从表空间A转换到表空间B,具体步骤(在Oracle 8.0.5 for NT环境)如下:
1、导出db_zgxt下的所有表(Dos控制台下)
系统提示输入用户名和口令,回答完毕,系统就开始将db_zgxt下的所有表都导出到一个叫Exp0316.dmp的文件中。
2、删除db_zgxt下的所有表(在SQL/PLUS中)可以采用批处理的方式删除掉db_zgxt下的所有表,生成批处理的语句如下:
3、采用导入参数 INDEXFILE导入db_zgxt用户下的所有表(Dos控制台下)
系统提示输入用户名和口令,回答完毕,系统就开始将文件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控制台下)

其中,参数INDEXES=N是指将数据导入数据库中时不加索引。IGNORE=Y是指在导入数据过程中,忽略表已经存在(table already exists)的错误。这样Oralce就将数据和一些约束条件导入到第3步创建的表中。
5、创建索引
在文本编辑器中重新打开在第3步中创建的db_zgxt.sql脚本文件,这次,将所有创建表(CREATE TABLE)的语句加上注释标志,然后将所有的创建索引(CREATE INDEX)语句去掉注释标志。在SQL/PLUS中再次运行该脚本文件。
至此,已经成功的完成了将db_zgxt用户下的全部Oracle数据库表从表空间A转换到表空间B的工作。
【编辑推荐】
有方便地查询和修改oracle数据库的工具吗??
建议使用SybaSetoad7.01,支持语法高亮,显示表提示,类似plsql。 2,能自己定制菜单,如选中all_tables,点击ctrl+d 可以执行“select * from all_tables”操作。 同理可以定制许多常用的功能。 3,左边功能导航增加了20-30项oracle常用的系统监控的功能,非常实用。 4,批量执行,带参数执行。 5,可以连接多种数据库,尤其是oracle可以支持oracle客户端和无客户端两种情况。 6,数据导出,可以导出成为(insert...)的模式,方便数据库脚本的提取。 7,操作习惯为了和toad,plsql尽量保持一致,可以选择toad模式和plsql模式。 8,拷贝粘贴,可以对数据库表的数据进行拷贝粘贴。 9,也支持查看执行计划(ctrl+E)。 10,支持像toad的快速输入方式如s*+空格,直接出现select * from,可以自行定制。 11,oracle下,可以通过select rowid,a.* from XXXtable a where 1=123对查询出的数据进行修改。 12,另外支持数据表,存储过程,数据管道(可以支持不同的数据库之间相同表结构的数据进行传输)等功能,表结构修改,增加索引主键等,修改保存存储过程。
在Oracle数据库中,如何增加表空间的大小?
表空间在初始建立的时候最好设置成自动扩展的,如果没有设置成扩展的,则有四种方法可以增加表空间的大小,其中增加数据文件是经常用的一种。四种方法如下:Meathod1:给表空间增加数据文件ALTER TABLESPACE App_data ADD DATAFILED:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\ SIZE 50M;Meathod2:新增数据文件,并且允许数据文件自动增长ALTER TABLESPACE app_data ADD DATAFILED:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\ SIZE 50MAUTOEXTEND ON NEXT 5M MAXSIZE 100M;Meathod3:允许已存在的数据文件自动增长ALTER DATABASE DATAFILE D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\ ON NEXT 5M MAXSIZE 100M;Meathod4:手工改变已存在数据文件的大小ALTER DATABASE DATAFILE D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\ 100M;
Oracle存储大量数据
增加表空间大小,表空间文件可以用多个ALTER TABLESPACE USER_FOUND_DATA ADD DATAFILE D:\data\USER_FOUND_DATA_ SIZE 1g AUTOEXTEND ON NEXT1g;ALTER TABLESPACE USER_FOUND_DATA ADD DATAFILE D:\data\USER_FOUND_DATA_ SIZE 1g AUTOEXTEND ON NEXT1g..........
发表评论