系统目录是一些表和视图的集合,它们包含了关于数据库的信息。每个数据库都有系统目录,其中定义了数据库的结构,还有数据库所包含数据的信息。举例来说,用于数据库里所有表的数据目录语言(DDL)就保存在系统目录里。
在具体实现里,系统目录的内容会被划分为对象的逻辑组,以表的形式供数据库管理员(DBA)和其他数据库用户访问。
系统目录或者是在数据库创建时自动创建的,或是有DBA在数据库创建之后立即创建的。举例来说,在Oracle里,系统目录的所有者是一个名为SYS的用户,它对数据库具有完全的权限。在Microsoft SQL Server里, SQL服务程序的系统目录位于master数据库里。在MySQL里,系统目录位于mysql数据库里。
系统目录包含的内容有:
- 用户账户和默认设置;
- 权限和其他安全信息;
- 性能统计;
- 对象大小估计;
- 对象变化;
- 表结构和存储;
- 索引结构和存储;
- 数据库其他对象的信息,比如视图、异名、触发器和存储过程;
- 表约束和应用完整性信息;
- 用户会话;
- 审计信息;
- 内部数据库设置;
- 数据库文件的位置。
不同实现里的系统目录表格
产品
表格名称
内容
SQL Server
SYSUSERS
数据库用户
SYS.DATABASES
全部数据库片断
SYS.DATABASE_PERMISSIONS
全部数据库权限
SYS.DATABASE_FILES
全部数据库文件
SYSINDEXES
全部索引
SYSCONSTRAINTS
全部约束
SYS.TABLES
全部数据库表
SYS.VIEWS
全部数据库视图
Oracle
ALL_TABLES
用户访问的表
USER_TABLES
用户拥有的表
DBA_TABLES
数据库里全部表
DBA_SEGMENTS
片断存储
DBA_INDEXES
全部索引
DBA_USERS
数据库里的全部用户
DBA_ROLE_PRIVS
分配的角色
DBA_ROLES
数据库里的角色
DBA_SYS_PRIVS
分配的系统权限
DBA_FREE_SPACE
数据库剩余空间
V$DATABASE
数据库的创建
V$SESSION
当前会话
MySQL
COLUMNS_PRIV
字段权限
DB
数据库权限
FUNC
自定义函数的管理
HOST
与MySQL相关联的主机名称
TABLES_PRIV
表权限
USER
表关系
警告:不要手动修改系统目录中的表