我对元查询充满热情,我指的是回答关于数据的问题的查询,而不是使用数据回答。< / p>
在我得到许多合理的批评之前,我确实意识到元查询的方法并不理想,例如,如{1}所述。不过,我相信他们确实有自己的位置。 (以至于我创建了一个支持SQL Server,Oracle和MySql的参数化元查询的WinForms用户控件,并且我在Simple-Talk上发布的here中广泛描述了此QueryPicker的设计和使用。 COM。) 我使用元查询的动机: 当然还有其他(更好的?)方法来获取元信息 - 用于给定的数据库类型。特别是SQL Server提供SQL Server Management Studio。 Oracle和MySql工具似乎没有提供相同的用途。 (我自由地承认,我用我的SQL-Server-leaning-view of the universe做出了这个主张。:-)即使他们这样做了,他们也会有所不同 - 我想要跨数据库类型的统一方法 EM> 哪些SQL Server,Oracle或MySql元查询您认为有用? 这个第一个视图总结了我的集合到目前为止数据库类型(并且正如我所说,对SQL Server的重点加权)。 我自己开发了一些这些元查询,但很多来自社区论坛。第二个视图在适当的位置逐项列出了源URL。
所以,最后,问题是:
摘要矩阵
Query SQL Server Oracle MySql
DB Version yes yes yes
Databases with properties yes yes
Databases with space usage yes
National Language Support yes
Procedures and functions yes yes
Primary keys yes yes
Primary to foreign keys yes
Session Information/brief yes
Session Information/details yes
Session SET options yes
Users and Roles yes
Currently running statements yes
Constraints yes
Indexes yes
Column info/brief yes yes yes
Column info/details yes yes yes
Object level details yes
Rows and space used yes
Row/column counts yes
Non-empty tables yes yes yes
Show table schema yes yes
Seed/max values yes
按数据库类型引用
SQL Server
System Category
-----------------
DB Version
Databases with properties http://www.mssqltips.com/tip.asp?tip=1033
Databases with space usage http://www.sqlservercentral.com/Forums/Topic261080-5-1.aspx
Procedures and functions
Primary keys http://databases.aspfaq.com/schema-tutorials/schema-how-do-i-show-all-the-primary-keys-in-a-database.html
Primary to foreign keys http://www.sqlservercentral.com/scripts/Miscellaneous/61481/
Session Information/brief http://www.sqlservercentral.com/blogs/glennberry/archive/2009/12/28/how-to-get-a-count-of-sql-connections-by-ip-address.aspx
Session Information/details http://www.mssqltips.com/tip.asp?tip=1817
Session SET options
Users and Roles http://www.sqlservercentral.com/scripts/users/69379/
Currently running statements http://www.sqlservercentral.com/articles/DMV/64425/
Constraints
Indexes http://www.sqlservercentral.com/scripts/Index+Management/63932/
Column Category
-----------------
Column info/brief
Column info/details
Table Category
-----------------
Object level details
Rows and space used http://www.mssqltips.com/tip.asp?tip=1177
Row/column counts
Non-empty tables
DDL Category
-----------------
Show table schema http://www.sqlservercentral.com/scripts/Create+DDL+sql+statements/65863/
Data Category
-----------------
Seed/max values
的Oracle
System Category
-----------------
DB Version
National Language Support
Column Category
-----------------
Column info/brief
Column info/details
Table Category
-----------------
Non-empty tables
DDL Category
-----------------
Show table schema
MySQL的
System Category
-----------------
DB Version
Databases
Procedures and functions
Primary keys http://databases.aspfaq.com/schema-tutorials/schema-how-do-i-show-all-the-primary-keys-in-a-database.html
Column Category
-----------------
Column info/brief
Column info/details
DDL Category
-----------------
Show table schema
答案 0 :(得分:1)
我在SQL Server上经常使用其中一些,包括但不限于:
系统特定的:
答案 1 :(得分:1)
Oracle SQL Developer有一组包含这些类别的内置报告。我扩展了其中一个类别。
About Your Database
All Objects
Application Express
ASH and AWR
Database Administration
All Tables
Cursors
Database Parameters
Locks
Memory
Sessions
Storage
Top SQL
Users
Waits and Events
Data Dictionary
Jobs
PLSQL
Security
Streams
Table
XML
这些是一些实际的报告名称,
Tables without Indexes
Tables without Primary Keys
Tables with Unindexed Foreign Keys
Largest Average Row Length
Most Rows
Unusable Indexes
还有更多报道可供使用。
答案 2 :(得分:0)
在Oracle上,最有用的是关于正在运行的会话上的等待的v$session
上的那个,这意味着,当时正在进行的会话是什么(从光盘读取,等待锁定,......)< / p>
答案 3 :(得分:0)
Oracle有大量的元数据视图,可能是我查询最多的是DBA_OBJECTS,可以查询各种不同的对象类型。可以从其他视图获得相同的信息和更多信息(例如,有关表的更多信息可以在DBA_TABLES中找到)。
可以在here找到对Oracle数据字典的概述。
答案 4 :(得分:0)
关于在互联网上使用一套固定脚本的担忧是“这不是你所知道的,而是你所知道的并非如此,或者不再如此。”人们需要确保在提升脚本时它的版本是否合适。例如,从10.1或10.2开始的Oracle可以将列设置为UNUSED。它仍然显示在DBA_TAB_COLUMNS中,但它不再存在了。
最好理解数据字典中的内容 - 特别是在Oracle中,数据库参考(V $,DBA_ *)的内容以及PL / SQL包和类型参考,因为越来越多的功能朝着这个方向发展(例如DBMS_STATS包取代ANALYZE语句)
Oracle中一些更深奥但有用的内容:
DICT --
数据字典中每个表\视图的名称和简要说明。
DBA_TAB_MODIFICATIONS --
自上次分析以来,哪些表具有多少插入/更新/删除流量。
V$OBJECT_USAGE --
一起使用时, ALTER INDEX ... MONITORING USAGE
显示自启用监视以来哪些索引未在SQL语句中使用。 (用于支持外键或唯一约束的索引可能不会出现,但可能已被“使用”了。)
V$SESSION_LONGOPS --
哪些SQL语句正在运行“长时间运行”操作,例如完整扫描,排序和合并,以及Oracle在完成之前认为它将持续多长时间。
DBA_HISTOGRAMS --
您的数据存在什么偏差
DBA_OBJECTS --
它有一切
DBA_SOURCE (by line)/ DBA_TRIGGERS (by block)--
系统中的所有可执行代码。
答案 5 :(得分:0)
msorens,
我完全同意你的看法。了解数据和架构有助于您更好地编码,更好地避免错误,识别特殊情况并分析需求。
您可以查看我的其他帖子:
Compare two schemas and update the old schema with the new columns of new schema
我的架构比较脚本是有关Oracle目录视图的信息。不幸的是它并不完整,但这是另一天的任务。 ; - )
马修