Perl + oracle dba

时间:2013-01-14 18:37:13

标签: oracle perl database-administration

我是perl的新手并试图列出昨天创建的所有oracle架构表,即(sysdate - 1)

尝试通过perl脚本实现上述目标,并针对oracle数据库运行。

问: 1.使用perl脚本列出所有最近创建的oracle表 2.结果中的列(Schema,table_name,created datetime) 3.仅在创建任何新表时提供输出,而不通过调度程序发送电子邮件

e.g。

select schema, table_name, created
from dba_objects
where created = sysdate - 1
and object_type = 'TABLE';

1 个答案:

答案 0 :(得分:0)

根据定义,Oracle中的date包括日期组件和秒级时间。即使您的会话NLS_DATE_FORMAT仅指定您要显示日期组件,时间仍然存在。时间几乎肯定会导致您的查询不返回任何行。 sysdate - 1正好在24小时前返回。因此,如果今天是2013年1月14日13:41:35,sysdate - 1将于2013年1月13日13:41:35返回。您的查询将只返回在第二秒创建的表。

trunc(sysdate)今天午夜返回,trunc(sysdate - 1)昨天午夜返回。所以,很可能,你想要像

这样的东西
SELECT owner, object_name
  FROM dba_objects
 WHERE created >= trunc(sysdate - 1)
   AND created < trunc(sysdate)
   AND object_type = 'TABLE'

由于dba_objects没有列schematable_name,我假设您的意思是ownerobject_name