Oracle管理

来源:互联网 发布:java 线程池 统一管理 编辑:程序博客网 时间:2024/04/24 14:48

 

一、Oracle的组件结构:

 

为了深入到Oracle服务器内部,对Oracle服务器有更深刻的认识。先了解一下Oracle的组件结构。 回顾一下客户端是怎样和Oracle服务器进行交互的?Linstener把客户端的请求传给服务器,客户端和服务器会话就开始了。Oracle服务器是怎样执行客户端的请求的呢,因此也需要了解Oracle的组件结构。

1、SGA区:

System Grolbal Area:系统全局区,在计算机上Oracle专用的一大块物理内存,Oracle的所有操作(包括数据处理、管理等操作)都在该内存区域内进行,系统全局区由若干个具有独立功能的内存区域构成,包括:

(1)数据库高速缓存区(Database Buffer Cache):是存放Oracle系统最近最频繁操作的数据信息,提高数据的操作效率。

(2)共享池(Share Pool):主要的作用是检查被操作的对象是否存在,优化、编译和执行。一个SQL指令在整个过程中前4步最耗时,很多用户可能执行同一个操作,共享池就是把最近最频繁使用的SQLPL/SQL编译码保存在共享池中以提高效率。具体的说Oracle就是把最近最频繁执行的SQLPL/SQL指令的编译码信息和数据字典的信息保存在共享池中,数据字典信息指每个指令操作的数据的存放位置、类型、及大小信息。

(3)联机日志缓存区(Redo Log Buffer):存放数据库操作产生的日志信息,数据操作的日志信息物理写的时机分为事务提交、每个3秒强制物理写、日志缓存区被占用1/3没有进行物理写时强制写、日志文件切换时。

(4)大缓存区(Large Pool):主要是在数据库备份时存放大量的备份分析数据信息在共享服务器中存放客户的信息。

5Java池(Java Pool):主要是执行Java脚本的区域,Oracle内置Java虚拟机,可以执行Java脚本。

6)排序区(Sort Area):对数据操作必不可少,这时就要用到排序区。

2、数据库:

    Database,是Oracle存储数据的空间,包括数据文件、日志文件和控制文件初始化参数文件口令文件等。

(1) oracle的数据文件控制文件和日志文件在:D:/oracle/oradata/Myoracle/,数据文件用来存储数据,日志文件用来记录对Oracle所有的数据操作信息等,日志文件分为联机日志文件redo.log和归档日志文件,归档日志文件用备份时特别时热备份时使用的日志文件,联机日志文件有多个,用来记录日志信息,当第一个写满之后,写第二个,然后写第三个,然后在重新写第一个。这就是Oracle的非归档日志文件,归档日志文件就是对这3个日志文件进行备份Oracle自动完成归档。启动数据库时Oracle先打开控制文件,然后打开数据文件,再打开重作日志文件。

  也可以通过系统视图查看控制文件数据文件及日志文件如:

   desc v$controlfile;

   select status,name from v$controlfile;

   desc v$datafile;

   select file#,status,name from v$datafile;

2)参数文件在D:/oracle/ora92/database/SPFILEMYDB.ORA,参数文件并不是Oracle文件系统的重要组成部分,当数据库启动时,先根据参数文件找控制文件然后打开数据文件。

 

3、后台进程:background processess,实现SGA区和DB之间的信息传输和Orecle系统的维护和监视作用。包括

1)数据书写器进程:实现SGA区数据高速缓存区与数据库数据文件的数据传输。一个数据库实例有10个书写器,从09

2)日志书写器进程:实现SGA的日志缓存区与数据库的日志文件进行交互。

3)系统监视器进程:主要有3个作用:

     1)数据库崩溃还原:数据库崩溃还原中的还原是指如果操作过程中系统崩溃,如果有些事务没有提交,日志文件中存有操作的信息,但是数据没有写入磁盘,重启后会根据日志信息写入数据。

     2)释放临时空间:释放临时空间是指Oracle系统有存放临时数据的的临时空间,释放这样的空间。

     3)合并自由空间:合并自由空间简单的说就是减少碎片,排除碎片,提高性能。

4)进程监视器进程:主要作用是

     1)实现数据库崩溃的回滚:回滚就是撤消回滚的时间段。

     2)释放无用资源:就是客户进程与服务器资源建立连接分配的资源和关闭连接释放资源、

     3)联合磁盘空间:多次使用后的磁盘上会出现零散的空间,为了充分利用这些零散的空间,就要进行联合。

5)检查点进程:在启动数据库时先判断数据库是否正常,通过检查点来判断。检查点就是数据库文件包含一个整型递增的值,在数据文件头中包含。数据文件中包含不同的数据,有的数据操作频率高有的数据操作频率低,检查点的值也在改变,改变值也不同,如A文件的检查点的值是100B文件检查点的值也是100,当A文件修改1000次时检查点的值比如是110B文件修改10000次检查点的值比如是220,为了保证数据库的状态正常,要使检查点的值改为最大的,都设为220Oracle每隔30分钟就检查一次,如果关闭OracleOracle也会就该检查点的值,使数据库出现正常状态。

4、实例(Instance):一个Oracle实例是一个DBMSSGA+后台进程。

5Oracle服务即DBSOracle实例+DB

 

二、Oracle的存储结构

 

前言:我们了解了数据库的存储空间,那么如何有效的组织、管理这些存储空间,那么直接影响数据库存储数据量和数据操作的效率。Oracle通过有效的控制结构来实现这个目的。Oracle的存储结构包括:

1、表空间:一个Oracle数据库逻辑上被划分几个区域就是表空间。表空间是Oracle中最高的逻辑结构,表空间中存放必要的数据信息。一个表空间可以包含多个数据文件。Oracle数据库内包含

多种类型的数据,如果放在一起,一方面不利于管理,另一方面也可能互相影响,为了避免这样的情况出现,因此一个数据库要创建多个表空间。当一个数据库被创建时大致上有78个表空间,比如系统表空间(system表空间),系统的核心数据都存放在这个表空间中,除了系统表

系统视图的定义一般不定义业务数据。一个数据库至少有一个System表空间。一个Oracle数据库

常见的表空间如下:

1System表空间:存储系统信息,包括存储信息和权限信息。

2Users表空间:用户表空间,存放业务数据。

3Temp表空间:存放操作Oracle时存放的临时数据。

4Indx表空间:存放Oracle索引信息。

5UndoTBS:回滚表空间有效回滚段。

6Tools存放Oracle工具使用的信息。

7DRSys存储大对象信息如图片声音等。

8Example:案例表空间,存放Oracle案例。

2、常见的表空间的相关信息的查询:

常见表空间有v$tablespacedba_tablespacesuser_tablesapces

1查询user_tablespaces包含哪几个数据文件:

  select vd.name

  from v$datafile vd,v$tablespace vt

  where vd.ts#=vt.ts# and vt.name ='USERS';

2:查询USERS表空间的状态和类型:

  select status,contents

  from dba_tablespaces

  where tablespace_name='USERS';

3:查询dba_tablespaces系统视图的表空间的名称和类型信息:

  select tablespace_name,CONTENTS

  from dba_tablespaces;

4:查询SYSTEM表空间被使用的空间的大小:

  select vt.name,sum(vd.bytes)/1024/1024 size_MB,

  sum(vd.blocks)*8/1024 size_1

  from v$datafile vd,v$tablespace vt

  where vd.ts#=vt.ts# and vt.name='SYSTEM'

  group by vt.name;

3、段:段是指表空间为占存储空间的数据库对象分配的空间。即表空间分配给一个逻辑存储结构的空间,一个段不能跨越多个表空间,但是可以跨越多个数据文件。段分为三种:

1)表段:给表对象分配空间的逻辑存储结构。

2)索引段:给索引对象分配的空间的逻辑存储结构。

3)查询段信息:与段信息相关的两个系统视图是dba_segmentsuser_segment

1:查询SCOTT用户的dept表存在于哪个表空间里:

  select tablespace_name

  from dba_segments

  where owner='SCOTT'and segment_name='DEPT'

  and segment_type='TABLE';

2:统计SCOTT用户的emp表的空间的大小:

  select bytes/1024 size_kb

  from dba_segments

  where owner='SCOTT' and segment_name='EMP'

  and segment_type='TABLE';

4)回滚段:当修改数据库中数据时,回滚段存储修改前的原数据信息,包括原数据的存储地址和数据值信息回滚段的主要作用有:

     1)事务回滚:回滚段在同一时刻只能被一个事务使用。

     2)数据库恢复:数据库崩溃时可以还原和回滚,可以从回滚段中将数据找回还原,当数据库非法关闭时回滚段空间不释放。

     3)读一致性:在一个事务中数据不会发生变化,只有提交修改后才能查到更新的数据。

三、Oracle的安全性:

Oracle采用用户和口令即权限的方式管理安全性的如果某人想进入Oracle的数据库并进行某些操作的话必须是

Oracle的合法用户,并具有相关的操作权限,如DML操作。

1、创建新用户:

1)模式:用户所拥有的全部数据库对象的集合叫模式。

2)创建用户:创建用户时,应该指定他的对象存储的地方,即表空间,如果不指定表空间,那么该用户创建的其他的对象都存在于默认的表空间中,即System表空间,创建用户可采用GUI界面来实现,也可以采用标准的SQL语句来实现,下面我们就分这两种形式来创建用户。

1GUI界面创建用户:

 

 

  

2)使用SQL语句创建用户:

     create user mrlu           --create user 关键字,mrlu用户名

     identified by mrlu1                --idenfified by设置密码                           

     default tablespace users                  --default tablespace 设置默认的表空间

     temporary tablespace temp; -temporary tablespace 设置临时表空间

3)修改用户口令:执行这一个命令的的用户是该用户或DBA

 alter   user user_name identified by new_passworld

4)修改用户的表空间:执行这一个命令的的用户是DBA

  alter user user_name default|temporary tablespace new_tablespace

5)修改用户的锁定状态:

    alter user user_name account unlock|lock;

2、管理权限:用户对数据库执行的任何操作,都具有相应的权限才可以,Oracle为了能够更好的管理用户的权限,提供了两类权限,一是系统权限,二是对象权限。

1)系统权限:具有SQL语句或者对数据库系统执行操作的权限,系统权限的管理由DBA完成。

2)对象权限:针对于某个具体的数据库对象操作的权限,如select on scott.emp;

3Oracle常用的系统权限和对象权限介绍

alter any index 修改任意索引的权限

alter any role 修改任意角色的权限

alter any sequence 修改任意序列的权限

alter any snapshot 修改任意快照的权限

alter any table 修改任意表的权限

alter any trigger 修改任意触发器的权限

alter database 修改数据库的权限

alter procedure 修改拥有的存储过程权限

alter sequence 修改拥有的序列权限

alter session 修改数据库会话的权限

alter sytem 修改数据库服务器设置的权限

alter table 修改拥有的表权限

alter tablespace 修改表空间的权限

alter user 修改用户的权限

backup any table 备份任意表的权限

become user 切换用户状态的权限

commit any table 提交表的权限

create any cluster 为任意用户创建簇的权限

create any index 为任意用户创建索引的权限

create any procedure 为任意用户创建存储过程的权限

 

create any sequence 为任意用户创建序列的权限

create any snapshot 为任意用户创建快照的权限

create any synonym 为任意用户创建同义名的权限

create any table 为任意用户创建表的权限

create any trigger 为任意用户创建触发器的权限

create any view 为任意用户创建视图的权限

create cluster 为用户创建簇的权限

create database link 为用户创建的权限

create procedure 为用户创建存储过程的权限

create profile 创建资源限制简表的权限

create public database link 创建公共数据库链路的权限

create public synonym 创建公共同义名的权限

create role 创建角色的权限

create rollback segment 创建回滚段的权限

create session 创建会话的权限

create sequence 为用户创建序列的权限

create snapshot 为用户创建快照的权限

create synonym 为用户创建同义名的权限

create table 为用户创建表的权限

 

 

 

 

 

 

4、管理系统权限和对象权限:

1)使用GUI管理权限:

 

 

 

1)管理系统权限(使用SQL语句)

1grant xxxxx to username.

例如给新建的用户赋予创建表删除表和修改表结构的权限

  grant create table to user_name;

  grant alter any table to user_name;

  grant drop any table to user_name;

例:创建新用户,赋予创建表的权限,然后创建表。看看能否创建成功。(独立实现)

2)使用SQL语句撤消用户的系统权限:

   revoke xxxx from user_name

例:撤消用户创建表的权限。

3)赋予用户系统权限时可以带管理选项,也就是刚得到此权限的用户可以把该权限赋给其他的用

户,语法为:  grant xxxx to user_name with admin option;

2)管理对象权限(使用SQL语句)

  grant xxxx on object_name to user_name

原创粉丝点击