最近有个小模块,是在灾备机之间拷贝备份数据,同时把相关的数据表也拷贝到目标系统上。
这里涉及到一个问题:Oracle表空间达到上限之后怎么处理?
一般来说,将表空间设置为自增,不限制最大容量可以满足大部分需求。但是,即便是表空间不设置上限,数据文件的大小也是会有最大值的,这是因为Oracle 数据文件最多可以包含 4194303 个 Oracle 数据块,通常数据块大小为8KB,也就是说,文件尺寸的最大值一般是32GB。
表空间达到这个理论上的容量上限之后,最好的处理办法应该是追加数据文件吧,语句如下:
ALTER TABLESPACE DATA_TEST_TS ADD DATAFILE 'D:\..\YOUR_DATA_FILE_PATH.dbf' SIZE 50m AUTOEXTEND ON NEXT 50M MAXSIZE 32767m
如何快速生成大量的测试数据呢?比如需要1TB的测试数据,该怎么处理?
我觉得按下面的步骤会稍微快一些:
1.创建表并循环插入数据,使得这张表大概占用1GB的空间。
2.exp命令导出表结构和数据。
3.imp命令重复多次导入第二步的***.dmp文件。
在第三步之前可以先将原表重命名,避免表名冲突。不知道向原表追加导入是不是可行,也不知道会不会使导入时间变长,没有尝试过。。。
具体实现是这样的:
先创建表空间并追加N个数据文件,随后创建一张大小1GB左右的表(这个时间比较长),然后导出这个表,最后用一个循环修改原表名并导入。导入1GB的数据要比使用