获取表空间定义

本文提供了一个Oracle数据库的SQL脚本示例,该脚本通过复杂的条件判断来决定是创建新的表空间还是向现有表空间添加数据文件。脚本涵盖了表空间名称、数据文件路径及大小等配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SELECT CASE
         WHEN (SELECT MIN(1)
                 FROM sys.dba_data_files
                WHERE tablespace_name = ddf.tablespace_name
                  AND file_id < ddf.file_id) = 1 THEN
          'ALTER  TABLESPACE  ' || d.tablespace_name || ' ADD DATAFILE '''
         ELSE
          'CREATE TABLESPACE  ' || d.tablespace_name || ' DATAFILE '''
       END || REPLACE(REPLACE(ddf.file_name,
                              substr(ddf.file_name,
instr(ddf.file_name,
                                           '/',
                                           -1) + 1),
lower(d.tablespace_name)) || lpad((SELECT COUNT(1) + 1
FROM sys.dba_data_files                           WHERE tablespace_name = ddf.tablespace_name                                                                   AND file_id < ddf.file_id), 2, '0') || '.dbf',
' /u01/oracle/oradata/appserv',
'+DATA_GAS') || '''' || '  SIZE ' || to_char(greatest((ddf.bytes / 1024 / 1024)+10,11),
      '999999') || 'M   ' || CASE
         WHEN (SELECT MIN(1)
                 FROM sys.dba_data_files
                WHERE tablespace_name = ddf.tablespace_name
                  AND file_id < ddf.file_id) = 1 THEN
          ';'
         ELSE
          ' EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO ;'        END
  FROM sys.dba_tablespaces d,
       sys.sm$ts_avail     a,
       sys.sm$ts_free      f,
       sys.dba_data_files  ddf
 WHERE d.tablespace_name = a.tablespace_name
   AND f.tablespace_name(+) = d.tablespace_name
   AND ddf.tablespace_name = d.tablespace_name
   AND d.tablespace_name NOT IN ('SYSTEM',
                                 'SYSAUX',
                                 'UNDOTBS1',
                                 'TEMP',
                                 'USERS',
                                 'PSTEMP')
 ORDER BY ddf.file_id;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值