度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 2542|回复: 3
打印 上一主题 下一主题

[分享] Oracle的数据库管理及数据字典和动态视图

[复制链接]

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
跳转到指定楼层
楼主
发表于 2020-7-5 20:16:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数据库管理
dba:数据库管理员
主要职责:
  • 安装和升级Oracle数据库
  • 建库,表空间,表,视图,索引。。。
  • 制定并实施备份和恢复的计划
  • 数据库权限管理,调优和故障排除与恢复
  • 对于高级dba,要求能参与项目开发,会编写复杂sql语句,存储过程,触发器,规则,约束和包。


管理数据库的用户主要是sys和system,类似于sys是董事长system是总经理(干活的),区别主要是:
  • 最重要的区别,存储的数据的重要性不同

sys:所有Oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于Oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改。sys用户拥有dba,sysdba,sysoper角色或权限,是Oracle权限的最高用户。
system:用于存放一次的内部数据,如Oracle的一些特性或工具的管理信息。system用户拥有dba,sysdba的权限。

  • 其次的区别

sys用户必须以as sysdba或者as sysoper形式登录。不能以normal形式登录数据库。
system如果正常登录,它其实就是一个普通的dba用户,但如果以sysdba登录,其结果实际上是作为sys用户登录的,从登录信息中可以看出来。


dba权限的用户:
dba用户是指具有dba角色的数据库用户,特权用户可以执行启动实例,关闭实例等操作,而dba用户只有在启动数据库后才能执行各种管理工作。

数据字典和动态视图
user_tables
用于显示当前用户所拥有的的所有表。只返回用户所对应方案的所有的表
例如:select table_name from user_table;
all_tables
用于显示当前用户可以访问的所有表。不仅返回当前用户方案的所有的表,还返回当前用户可以访问的方案的表。
例如:select table_name from all_table;
dba_tables
用于显示所有方案拥有的所有的表。但是查询这种数据库视图,必须要求用户是dba角色或是有select any table权限。
例如:当用户system查询数据字典视图dba_table时,会返回system,sys,scott…方案对应的所有的表。

用户名、权限和角色
在建立用户时,Oracle会把用户的信息存放到数据字典中,当给用户授予权限或角色时,Oracle会将权限和角色的信息存放到数据字典。
通过查询dba_users可以显示所有数据库用户的详细信息;
通过查询数据字典视图dba_sys_privs,可以显示用户具有的系统权限;
通过查询数据字典视图dba_tab_privs,可以显示用户具有的对象权限;
通过查询数据字典dba_col_privs,可以显示用户具有的列权限;
通过查询数据库字典视图dba_role_privs,可以显示用户具有的角色。

例如:要查询scott具有的角色,可以查询dba_role_privs
select * from dba_role_privs where grantee='SCOTT';

角色和权限的关系:
角色是由一系列权限组成的。
把一个角色分配给一个用户,那么该用户就拥有了这个角色所包含的权限。
权限又分2种:对象权限和系统权限。

例如scott拥有CONNECT和RESOURCE角色。

如何查询一个角色包含的权限?
  • 一个角色包含的系统权限
    select * from dba_sys_privs where grantee='DBA'; --DBA是角色名,可以换成CONNECT等

    或者是:select * from role_sys_privs where role='DBA';
  • 一个角色包含的系统权限
    select * from dba_tab_privs where grantee='CONNECT';


Oracle究竟有多少种角色?
select * from dba_roles; --共有25中

如何查看一个用户具有什么角色?
select * from dba_role_privs where grantee='用户名';

--查询Oracle中所有的系统权限,一般是dba
select * from system_privilege_map order by name;
--查询Oracle中所有的对象权限,一般是dba
select disinct privilege from dba_tab_privs;
--查询Oracle中所有的角色,一般是dba
select * from dba_roles;
--查询数据库的表空间
select tablespace_name from dba_tablespaces;



显示当前用户所拥有的数据字典视图
select * from dict where comments like '%grant%';
显示当前数据库的全称
select * from global_name;

数据库字典视图主要查询Oracle的系统信息和关于数据库管理的信息。

动态性能视图:实际应用较少。
主要用于记录当前例程的活动信息,是实时的。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
沙发
发表于 2020-7-6 17:14:16 | 只看该作者
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
板凳
 楼主| 发表于 2020-7-6 23:24:26 | 只看该作者
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
地板
发表于 2020-7-7 16:46:05 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-4-28 18:58 , Processed in 0.130466 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表