我需要从表中列出 Oracle (19c) 数据库中的所有撤消表空间名称(无论它们是否被使用)ts$
。
下面的我的 SQL 语句提供了该信息,但它也列出了所有表空间类型(我不想要)。如果我改进语句以排除类型并仅返回 UNDO 表空间名称列表,DECODE 是要使用的核心 T 函数吗?
select name,
decode(ts.contents$, 0,(decode(bitand(ts.flags, 4503599627370512), 16, 'UNDO',4503599627370496, 'LOST WRITE PROTECTION','PERMANENT')), 1, 'TEMPORARY')
from ts$ ts ;
这个功能有更好的选择吗?(如案例)
看来您只需要
bitand(ts.flags, 4503599627370512)
= 16 的行。不需要解码/大小写。以下作品。也许有更好的方法来写这个。也许不应该使用解码。