Oracle数据库对象持久性信息的宝库是Oracle的对象表(Obj表),这些表存储了关于数据库对象的信息,如表、索引、视图、序列、同义词等,通过查询这些表,可以获取到数据库对象的详细信息,如对象名称、所有者、创建时间、修改时间等,在数据库维护和管理过程中,这些信息对于诊断问题和优化性能非常有用。
以下是一些常用的Oracle对象表:
ALL_OBJECTS表存储了当前用户所拥有的所有数据库对象的信息,包括表、视图、索引、序列等。
DBA_OBJECTS表包含了数据库中所有对象的信息,不仅包括当前用户拥有的对象,还包括其他用户的对象。
ALL_INDEXES表记录了当前用户拥有的所有索引的详细信息,包括索引名称、所属表、索引类型等。
DBA_INDEXES表包含了数据库中所有索引的信息,可以用来查询所有用户的索引信息。
ALL_VIEWS表中记录了当前用户拥有的所有视图的详细信息,包括视图名称、所属者、视图定义等。
DBA_VIEWS表包含了数据库中所有视图的信息,可以查询所有用户的视图信息。
ALL_SEQUENCES表中包含了当前用户拥有的所有序列的详细信息,如序列名称、起始值、增量等。
DBA_SEQUENCES表记录了数据库中所有序列的信息,可以查询所有用户的序列信息。
ALL_SYNONYMS表中包含了当前用户拥有的所有同义词的详细信息,如同义词名称、基对象等。
DBA_SYNONYMS表记录了数据库中所有同义词的信息,可以查询所有用户的同义词信息。
要查询这些表,可以使用SQL*Plus或其他Oracle客户端工具,以下是一个查询示例,用于获取当前用户拥有的所有表的信息:
SELECT owner, table_name, creation_date, last_ddl_timeFROM all_objectsWHERE object_type = 'TABLE' AND owner = USER;
这个查询将返回一个结果集,其中包含当前用户拥有的所有表的名称、创建时间和最后修改时间,同样,可以针对其他类型的对象执行类似的查询。
除了查询对象表外,还可以使用Oracle提供的一些动态性能视图来获取有关数据库对象的性能信息,以下是一些常用的动态性能视图:
DBA_HIST_ACTIVE_SESSION_HISTORY存储了活动会话的历史记录,包括每个会话执行的SQL语句和执行时间等信息。
DBA_HIST_SQLTEXT_ALL包含所有SQL语句的文本和执行时间等信息,可用于跟踪SQL语句执行情况。
DBA_HIST_SQLTEXT_BY_OWNER按所有者分组的SQL语句文本和执行时间等信息,有助于分析不同所有者的SQL执行情况。
DBA_HIST_SQLTEXT_BY_INSTANCE按实例分组的SQL语句文本和执行时间等信息,可用于分析不同实例的SQL执行情况。
DBA_HIST_SQLTEXT_BY_OBJECT按对象分组的SQL语句文本和执行时间等信息,有助于了解不同对象的SQL执行情况。
DBA_HIST_SQLTEXT_BY_STATEMENT按SQL语句分组的SQL语句文本和执行时间等信息,可以查看不同SQL语句的执行情况。
DBA_HIST_SQLTEXT_WITHOUT_ARGUMENTS提供不包含参数的SQL语句文本和执行时间等信息,有助于简化分析。
DBA_HIST_TIME_STAT存储了SQL语句执行时间的统计信息,如平均执行时间、最差执行时间等,有助于性能优化。
DBA_HIST_ACTIVE_SESSION_HISTORY_BY_TOPIC按主题分组的活动会话历史记录,如锁等待、I/O等待等,有助于诊断性能问题。
DBA_HIST_ACTIVE_SESSION_HISTORY_TOP是按执行时间排序的活动会话历史记录的前N个记录,可用于查看执行时间较长的会话。
要查询这些动态性能视图,可以使用与查询对象表相同的方法,以下查询将返回当前用户最近执行的10个SQL语句及其执行时间:
SELECT sql_text, elapsed_timeFROM dba_hist_active_session_historyWHERE session_id = SYS_CONTEXT('USERENV', 'SESSIONID')ORDER BY start_time DESC FETCH FIRST 10 ROWS ONLY;
通过结合使用对象表和动态性能视图,可以全面了解数据库对象的运行状况,从而更好地进行数据库维护和管理。
如果您对Oracle数据库对象的信息存储和性能分析有任何疑问或需要进一步了解,请随时留言,我们会竭诚为您解答。感谢您的阅读,如有帮助请点赞、关注并留言,谢谢!