我们在项目中可能会发生这样一种情况,需要将某一个外库导出来的dmp文件恢复到自己的库中,便于查看数据,这时候就有可能会出现需要建立多表空间的情况。这里有两种可能,一种是已知表空间名的情况,另一种就是连表空间名都完全不知道的,以上两种情况第一种毫不费力,第二种就只能完全靠笨办法,试着导入文件到自己的库中,根据导入报的错来确定表空间名(报错会有提示),不然没有创建需要的表空间导入会一直出错,数据无法导入进数据库。这确实是个大工程,但是如果确实也没人给你所有的表空间,那就只有靠这种笨办法来了。
批量创建表空间
1、先在数据库中创建一张表,需要一个字段来存放表空间名
e.g.
create table tablespace_name(name varchar2(10));
2、将所有表空间名放入一个文件中(如txt),插入到新建的表中
例如我这里是需要新建50个表空间,那就需要把所有的表空间名放在txt文件中,格式如下:

3、在Oracle连接工具(developer/Navicat等)中执行表空间创建语句
select 'create tablespace ' || name|| ' datafile ''D:\oracle\oradata\test' || name|| '.dbf'' size 100m autoextend on next 50m maxsize unlimited' from tablespace_name;
4、将执行的结果放进一个sql文件,登录到相应数据库用户执行sql文件
执行sql文件的命令:@sql文件所在位置


至此,批量的表空间已经被创建好啦!
有捷径的小伙伴欢迎分享!
当需要将外库的dmp文件导入Oracle数据库时,可能需要创建多个表空间。本文介绍了两种情况,一种是已知表空间名,另一种是未知表空间名。对于后者,提供了一种笨拙但有效的方法:通过创建临时表存储表空间名,然后从文本文件导入,生成并执行创建表空间的SQL语句,从而批量创建所需表空间。
2469

被折叠的 条评论
为什么被折叠?



