数据字典与动态性能视图:
数据字典提供了一些系统信息,静态信息
动态性能视图记载了例程启动后的相关信息,存储经常变化的信息
数据字典久记录了数据库的系统信息,只读表盒视图的集合。数据字典的所有者为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 确定数据文件所在的表空间
select table_space_name from dba_data_files where file_name = 'd:\表空间文件.dbf';
2 是表空间脱机
alter talbe_space 表空间名 offline;
3 使用命令移动数据文件到指定的目标位置
host move D:\test\表空间名.dbf c:\new\表空间名.dbf
4 移动数据文件,对数据文件逻辑修改
alter table_space 表空间名 rename datafile 'D:\test\表空间名.dbf' to 'c:\new\表空间名.dbf'
5 使表空间联机
alter table_space 表空间名 online;
表空间的各个状态 online ,offline,read only,read write;
undo 表空间 和临时表空间的创建,索引表空间(索引表空间,在海量数据的时候效率很明显),非标准块的表空间,慢慢研究