自动延伸和尺寸的详细信息可以在DBA_DATA_FILES
表中找到。如果表空间不是BIGFILE
表,则表空间可以具有多个具有不同大小和属性的文件。
的一个简单的创建脚本(在11g中)不采取最特殊的功能考虑在内(所以请检查你的表空间的详细信息,如压缩和加密,并将它们添加相应的脚本。看到完整的CREATE TABLESPACE
参考here)的一个例子 - 并且一如既往地彻底地测试。不包括UNDO
和TEMP
表空间:
SELECT 'CREATE '
|| DECODE (ts.bigfile, 'YES', 'BIGFILE ') --assuming smallfile is the default table space
|| 'TABLESPACE "'
|| ts.tablespace_name
|| '" DATAFILE' --assuming OMF (Oracle-Managed File names) is used
|| CHR (13)
|| CHR (10)
|| LISTAGG (
' SIZE '
|| df.bytes
|| DECODE (
df.autoextensible,
'YES', CHR (13)
|| CHR (10)
|| ' AUTOEXTEND ON NEXT '
|| df.increment_by * ts.block_size
|| ' MAXSIZE '
|| CASE
WHEN maxbytes < POWER (1024, 3) * 2
THEN
TO_CHAR (maxbytes)
ELSE
TO_CHAR (
FLOOR (maxbytes/POWER (1024, 2)))
|| 'M'
END),
',' || CHR (13) || CHR (10))
WITHIN GROUP (ORDER BY df.file_id)
|| CHR (13)
|| CHR (10)
|| ' '
|| ts.logging
|| ' '
|| ts.status
|| ' BLOCKSIZE '
|| ts.block_size
ddl
FROM dba_tablespaces ts
INNER JOIN
dba_data_files df
ON ts.tablespace_name = df.tablespace_name
WHERE ts.contents = 'PERMANENT' --excludes UNDO and TEMP
GROUP BY ts.tablespace_name,
ts.bigfile,
ts.logging,
ts.status,
ts.block_size
ORDER BY ts.tablespace_name;
如果你在一个表空间中多个数据文件中考虑将其更改为一个BIGFILE
表空间。