我想用 session_per_user > 40 查询我拥有的所有数据库配置文件。我使用的测试数据如下:
select PROFILE, LIMIT from DBA_PROFILES where resource_name = 'SESSIONS_PER_USER;
Profile LIMIT
DEFAULT UNLIMITED
ORA_STIG_PROFILE DEFAULT
APP_USER 40
TEST2 2
TEST3 3
TEST4 11
TEST5 27
TEST6 33
TEST7 244
TEST8 45
TEST9 50
TEST10 111
TEST11 93
TEST12 39
TEST13 41
我从这个查询开始
select profile, limit from DBA_PROFILES where resource_name = 'SESSIONS_PER_USER' AND LIMIT >= 40;
这导致 ORA-01722: invalid number 因为您无法对字符串执行数学运算。
所以我尝试了这个:
select profile, LIMIT from (select PROFILE, LIMIT from DBA_PROFILES where resource_name = 'SESSIONS_PER_USER' AND LIMIT != 'UNLIMITED' AND PROFILE != 'DEFAULT' AND LIMIT != 'DEFAULT') WHERE LIMIT = 40;
即使第二个查询过滤了默认和无限制的查询,我仍然收到无效号码。
对于大多数事情,这个问题不会存在,因为该列将被限制为专门的数字或字符串,但是使用此数据库设置我显然无法更改任何内容,并且在生产系统上,默认值和无限制值在实践中使用.