非管理员用户有没有办法检查Oracle实例的正常运行时间?即我没有sysdba权限。
非管理员用户有没有办法检查Oracle实例的正常运行时间?即我没有sysdba权限。
试试这个。它不需要管理员用户,虽然需要对 v_$instance
表有 SELECT
访问权限。
SELECT to_char(startup_time,'DD-MON-YYYY HH24:MI:SS') "DB Startup Time"
FROM sys.v_$instance;
或者,如果你假设PMON启动时间和数据库启动时间相同,你可以像这样获取运行时间:
SELECT to_char(logon_time,'DD/MM/YYYY HH24:MI:SS')
FROM v$session
WHERE sid=1;
你的问题指定了“非管理员用户”,所以恐怕答案可能是否定的。通常的机制需要从V$视图-V$INSTANCE或V$SESSION中进行选择。这两者默认情况下都不授予PUBLIC权限。
如果你友好地向数据库管理员提出请求,他们可能会准备授予你访问这些视图的权限,或者至少编写一个包装函数(或多个函数)来公开这些值。
SELECT host_name, instance_name,TO_CHAR(startup_time, 'DD-MM-YYYY HH24:MI:SS') startup_time, FLOOR(sysdate-startup_time) days FROM sys.v_$instance;
select * from ( select STARTUP_TIME FROM dba_hist_database_instance ORDER BY startup_time DESC) WHERE rownum <10;
PMON的sid并不总是等于1。因此最好使用以下查询:
SELECT t.LOGON_TIME FROM v$session t where upper(t.PROGRAM) like ('%PMON%')
它适用于Solaris和Linux Redhat上的11.2.0.4和12.1.0.2版本。