日期:2014-05-16 浏览次数:20409 次
数据字典与动态性能视图:
?
?
数据字典提供了一些系统信息,静态信息
动态性能视图记载了例程启动后的相关信息,存储经常变化的信息
?
?
数据字典久记录了数据库的系统信息,只读表盒视图的集合。数据字典的所有者为sys的用户,用户只能在数据字典
进行查询,而其维护和修改由系统自动完成的。数据字典包括了字典基表和合数据字典视图。
基表存储了数据库的基本信息。数据字典视图时基于数据字典表所建立的视图。普通用户可查询
数据字典得到系统信息,主要有user_xxx,all_xxx,dba_xxx三种类型
select table_name from user_tables; 当前用户的创建所有表。
all_tables 显示当前用户可以访问的表(可能是拥有高级权限的人给的表权限)
dba_tables ?用户必须是dba角色或者拥有select any talbe系统权限
查出所有方案的表
?
用户名,权限和角色:
建立用户的时候,Oracle把用户的信息存放到数据字典里,给用户赋予权限或者角色的
时候,Oracle会将赋予权限和角色的信息放到数据字典
dba_user 显示当前数据库总共有多少用户
desc dba_users; 看到有一个username 字典
select username from dba_users;
?
dba_sys_privs ?用户所拥有的系统权限
dba_tab_privs ?用户拥有的对象权限
dba_col_privs ?用户具有的列权限
dba_role_privs ?用户所具有的角色
?
如dba_role_privs 数据库基表派生的视图
查询SCOTT的角色
select GRANTEEfrom dba_role_privs where GRANTEE='SCOTT';
一个用户可以拥可能有多种角色如sys有dba,sysoper,一个角色可能有多种权限
,权限分为对象权限和系统权限。
?
?
?
查询一个角色包括的权限,
a:一个角色有用的系统权限
select * from dba_sys_privs where grantee = 'CONNECT'; // 连接数据库的角色
也可以select * from role_sys_privs where role = 'CONNECT';
b:一个角色拥有的对象权限
select * from dba_tab_privs where grantee = 'DBA';// DBA 角色拥有的对象权限
?
?
?
Oracle 有多少角色,一般是dba
select * from dba_roles; Oracle 预定义角色
?
查询Oracle所有的对象权限,一般是dba
select distinct privilege from dba_tab_privs;
?
查询数据库的表空间
select table_space_name from dba_tablespaces;
?
一个用户具有什么角色
select * from dba_role_privs where grantee= 'SCOTT';
?
显示当前用户可以访问的所有数据字典视图
select * from dict where comments like '%grant%';
?
显示当前数据库全程
select * from global_name; global_name也是一个视图
?
?
?
?
查询Oracle中的系统权限,一般是dba
select * from system_privilege_map order by name;一共140 中左右
?
?
?
动态性能视图记载了例程启动后的相关信息,都是以v_$ 开始的
?
?
管理表空间和数据文件
?
表空间是数据库逻辑组成部分,物理上讲,数据库数据存放在数据文件中。
从逻辑上讲,数据库则是存放在表空间中,表空间由一个或者多个文件组成。
表空间可以自己创建,也可以使用默认的。
?
Oracle逻辑组成部分,表空间,段,区,块
表空间由段组成,段由区组成,区有好多块组成
表空间由数据文件组成,表空间从逻辑上组织数据库的数据。
数据库逻辑上是由一个或者多个表空间组成,通过表空间可以控制
数据库占用磁盘空间,dba还可以可以将不同数据类型部署到
不同的位置,这样有利于i/o性能,同时利于备份和恢复等管理操作。
(索引单纯建立一个表空间,触发器单独建立一个表空间)
?
?
建立表空间为了更好管理表 create tablespace 一般是dba执行,如果其他用户
要创建表空间,则必须要具有create table space的系统权限
?
create tablespace 表空间名字 datafile 'D:\test.dbf' size 20m uniform size 128k
注意size 分配表空间多少兆,nuiform size 区的大小
?
创建表制定表空间 ?create table xxx (...) tablespace 空间名称;
如果不制定空间则默认到system空
?
改变表空间状态(特权用户或dba)
1 使表空间脱机 alter tablespace 表空间名字 offline ;
2 使表空间联机 alter tablespace 表空间名字 online ;
?
只读表空间
alter tablespace 表空间名字 read only;
可读 ?read write;
显示表空间的所有表
select * from all_tables where tablespace_name = '表空间名';
查询scott的表emp的所在的表空间
select tablespace_name,table_name from user_tables where table_name = 'EMP';
system表空间的表scott不可以改变其状态
?
删除表空间
?
drop tablespace 表空间名字 including contents and datafiles ?级联删除表数据
?
扩展表空间,为其增加更多的表空间
1: 增加数据文件
alter tablespace 表空间名字 ?add datafile 'D:\other.dbf' size 20m
2: 增加数据文件的大小
alter tablespace 表空间名字 ? 'D:\表空间文件.dbf' resize 20m
3:设置文件的自动增长
alter table_space 表空间名字 'D:\表空间文件.dbf' aotuextend on next?
10m maxsize 500m
?
?
故障的处理
如果磁盘毁坏了,数据文件不能再使用,磁盘损坏可能是局部损坏,还想用可以用的数据如何办?
如果数据文件不在坏的磁道的话,可以迁移表空间。
?
需要将文件的副本移动到其他磁盘
?
1 确定数据文件所在的表空间