Oracle(六)管理

数据字典与动态性能视图:

 

 

数据字典提供了一些系统信息,静态信息

动态性能视图记载了例程启动后的相关信息,存储经常变化的信息

 

 

数据字典久记录了数据库的系统信息,只读表盒视图的集合。数据字典的所有者为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 表空间 和临时表空间的创建,索引表空间(索引表空间,在海量数据的时候效率很明显),非标准块的表空间,慢慢研究

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(oracle)