oracle 体系结构复习

1.体系结构篇

1.物理结构:简述Oracle的物理结构包含哪些内容,针对每种物理文件介绍一种与其相关的数据字典或其它查看命令。

1.  数据文件data file  后缀为.dbf       数据字典: dba_data_filesv$datafile

2.日志文件(redo log file)  后缀为.rdo         V$logv$logfile

3. 归档文件:后缀为.ARC   ARCHIVE LOG LISTv$database

4.控制文件(control file )  后缀为.ctl    v$controlfile

5.配置文件(*.ora)

2.  日志文件的添加删除和修改,注意日志文件包括分组  (group)和成员(member)p109

例1ALTER DATABASE语句中使用ADD LOGFILE子句也可以创建重做日志组:

ALTER DATABASE   ADD LOGFILE ('log1c.rdo', 'log2c.rdo') SIZE 5000k;

【例2】在使用ALTER DATABASE语句创建重做日志组时,可以使用GROUP子句定义组编号:

ALTER DATABASE  ADD LOGFILE GROUP 10 ('log1a.rdo', 'log2a.rdo') SIZE 5000k;

【例3】ALTER DATABASE语句中使用ADD LOGFILE MEMBER关键字,可以向已存在的重做日志组中添加成员:

ALTER DATABASE ADD LOGFILE MEMBER 'log3a.rdo' TO GROUP 10;

例4删除编号为10的重做日志组:

SQL> ALTER DATABASE DROP LOGFILE GROUP 10

例5删除重做日志组log1a.rdo

SQL> ALTER DATABASE DROP LOGFILE MEMBER 'log1a.rdo';

3.逻辑结构:包含哪些内容及它们之间的关系。

表空间(tablespace) 段(segment) 区(extent)   4  数据库块(database block);  模式对象(表、视图、序列和同义词等)

表空间由表等schema对象组成,(分区表的一个区由一个段组成),段由区间组成,区间则由数据块组成。

解释补充:

1.表空间是Oracle中最大的逻辑存储结构,它与物理上的一个或多个数据文件相对应,每个Oracle数据库都至少拥有一个表空间,表空间的大小等于构成该表空间的所有数据文件大小的总和。

2.在安装Oracle时,Oracle数据库系统一般会自动创建一系列表空间(Oracle安装好后自带的表空间

sysaux  辅助系统表空间。用于减少系统表空间的负荷,提高系统的作业效率。该表空间由Oracle系统内部自动维护,一般不用于存储用户数据。

system  系统表空间,用于存储系统的数据字典、系统的管理信息和用户数据表等。

temp 临时表空间。用于存储临时的数据,例如存储排序时产生的临时数据。 临时表空间本身不是临时存在的,而是永久存在的,只是保存在临时表空间中的段是临时的。临时表空间的存在,可以减少临时段与存储在其他表空间中的永久段之间的磁盘I/O争用。

undo  撤消表空间。用于在自动撤消管理方式下存储撤消信息。在撤消表空间中,除了回退段以外,不能建立任何其他类型的段。所以,用户不可以在撤消表空间中创建任何数据库对象。

users   用户表空间。用于存储永久性用户对象和私有信息。

大文件表空间(Bigfile Tablespaces  Oracle 10g以上版本提供的一种新的表空间,它只能包含一个大文件,但文件大小可以达到4G数据块。

4.Oracle数据库段的类型

·数据段(Data Segment)  数据段是与数据库对象相对应,一般一个数据库对象对应一个数据段。  

·索引段(Index Segment)   每个索引都有一个索引段
·回滚段(Rollback Segment)  回滚段中的信息将在数据库恢复过程中使用到。
·临时段(Temporary Segment)  当执行SQL语句需要临时工作区时,Oracle 将创建临时段。执行完毕后,临时段的区间将被系统回收,以备需要时分配使用。

补充:数据库模式对象在逻辑上是以段来占据表空间的大小。 一个非分区表就是一个segment,分区表的一个分区是一个segment。段由区组成,组成段的区可以连续也可以不连续。

oracle数据库在逻辑上是由多个表间组成的

表空间中存储的对象叫段,比如数据段,索引段,和回退段。

段由区组成,区是磁盘分配的最基本单位。段的增大是通过增加区的个数来实现的。

每个区的大小是数据块大小的整数倍,区的大小可以不相同;

数据块是数据库中最小的I/O单位, 通过SHOW PARAMETER db_block_size显示其大小

5.表空间和数据文件及段的关系

表空间和数据文件是物理存储上的一对多的关系。

表空间和段是逻辑存储上的一对多的关系。

段不可以跨表空间,一个段只能属于一个表空间。

段不直接和数据文件有联系。一个段可以属于多个数据文件。

6.简介后台进程的名称和作用

DBWn(Database Writer,数据库写入)进程,是Oracle中采用LRU算法将数据缓冲区中的数据写入数据文件的进程。

LGWR(Log Writer,日志写入)进程,是负责管理日志缓冲区的一个后台进程,用于将日志缓冲区中的日志数据写入磁盘的日志文件中。

CKPT(Check Point,检查点或检验点)进程,一般在发生日志切换时自动产生,用于缩短实例恢复所需的时间。

SMON(System Monitor,系统监控)进程,用于数据库实例出现故障或系统崩溃时,通过将联机重做日志文件中的条目应用于数据文件,执行崩溃恢复。

PMON(Process Monitor,进程监控)进程,用于在用户进程出现故障时执行进程恢复操作,负责清理内存存储区和释放该进程所使用的资源。

ARCn(Archive Process,归档)进程,用于将写满的日志文件复制到归档日志文件中,防止日志文件组中的日志信息由于日志文件组的循环使用而被覆盖。

RECO(Recovery,恢复)进程存在于分布式数据库系统中,用于自动解决在分布式数据库中出现的事务故障。

7.内存结构:详述SGA的组成

系统全局区(System Global AreaSGA)是Oracle为系统分配的一组共享的内存结构,可以包含一个数据库实例的数据或控制信息。

1.数据缓冲区  •数据缓冲区用于存储从磁盘数据文件中读取的数据,供所有用户共享。由于系统读取内存的速度要比读取磁盘快得多,所以数据缓冲区的存在可以提高数据库的整体效率。

§2.日志缓冲区  •日志缓冲区用于存储数据库的修改操作信息。

§3.共享池  •共享池用于保存最近执行的SQL语句、PL/SQL程序的数据字典信息,它是对SQL语句和PL/SQL程序进行语法分析、编译和执行的内存区域。共享池主要包括如下两种子缓存。

库缓存(Library Cache)

数据字典缓存(Data Dictionary Cache)

§4.大型池  大型池,用于提供一个大的缓冲区供数据库的备份与恢复操作使用,它是SGA的可选区域。

§5Java   •Java池,用于在数据库中支持Java的运行。

8.1.几个端口和几个Oracle启动项

OracleServiceORCL。数据库服务,这个服务会自动地启动和停止数据库

OracleDBConsoleorclOracle数据库控制台服务

OracleOraDb11g_home1TNSListener。监听器服务,服务数据库需要远程访问时才需要。

OracleJobSchedulerORCLOracle作业调度进行,ORCLOracle例程标识

监听端口  1521-上机时需要注意打开和修改两个监听文件监听(listener.oratnsnames.ora

控制台:1158

9.表空间的创建  见笔记基本表空间,UNDO表空间、临时表空间、大文件表空间、创建一个表空间对应两个数据文件、段的管理、区的管理

1】创建大小为50M的表空间TEST,禁止自动扩展数据文件。

  create tablespace test1 logging

       datafile ‘c:\test101.dbf' size 5m reuse    autoextend off;

2】创建大小一个表空包含带两个数据文件,其中一个数据文件带有自动扩展功能,每次增加1000K一个数据文件自动扩展关闭。

 create  tablespace ts1   datafile 'd:\t1.dbf' size 5000k autoextend on   next 1000k,

        'd:\t2.dbf' size 5000k autoextend off;

3】创建表空间区管理为自动分配的表空间

   CREATE TABLESPACE OrclTBS01    DATAFILE 'C:\OrclTBS01.dbf' SIZE 1M,

'c:\OrclTBS02.dbf' size 1m   EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

4】在创建表空间OrclTBS02时,指定其区间为128KB,代码如下:

CREATE TABLESPACE OrclTBS02

    DATAFILE 'C:\o\OrclTBS02.dbf' SIZE 3M

    EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

表空间已创建。

 

v5】创建自动段管理方式的表空间MyTBS01

   CREATE TABLESPACE ts1

        DATAFILE 'C:\o\OrclTBS01.dbf' SIZE 3M

           EXTENT MANAGEMENT LOCAL AUTOALLOCATE

              SEGMENT SPACE MANAGEMENT AUTO;

6】创建手动段管理方式的表空间MyTBS01

SQL> CREATE TABLESPACE OrclTBS01

' SIZE 30M

    EXTENT MANAGEMENT LOCAL AUTOALLOCATE

    SEGMENT SPACE MANAGEMENT MANUAL;

 

8】创建临时表空间tmptbs,代码如下:

SQL>

CREATE TEMPORARY TABLESPACE    tmptbs

    TEMPFILE 'C:\o\tmptbs.dbf'

    SIZE 2M REUSE

    EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

表空间已创建。

注意:

临时表空间不能使用online offline 选项

10.三种增加表空间容量的办法


Meathod1:给表空间增加数据文件
ALTER TABLESPACE app_data ADD DATAFILE
'D:\1.DBF' SIZE 50M REUSE;
 
Meathod2:在创建表空间时,可以设置数据文件的自动扩展性。在为表空间增加新的数据文件时,也可以设置新数据文件的自动扩展性
ALTER TABLESPACE ADD DATAFILE
'D:\2.DBF' SIZE 50M
AUTOEXTEND ON NEXT 5M MAXSIZE 100M;
 
Meathod3:允许已存在的数据文件自动增长
ALTER DATABASE DATAFILE 'D:\4.DBF'
AUTOEXTEND ON NEXT 5M MAXSIZE 100M;
 
Meathod4:手工改变已存在数据文件的大小
Alter database orcl1 datafile 'c:\o\test2.dbf' resize  2m;

11.如何重命名数据文件

重命名表空间(system 和sysaux 除外) Alter tablespace test rename to mytest

【例】将表空间OrclTBS02中的数据文件改名。可以使用下面的语句: ALTER TABLESPACE mytest rename datafile 'c:\o\10.dbf' to  'c:\o\test0001.dbf‘

移动mytest表空间中数据文件test001.dbf的步骤如下。

(1)修改mytest表空间的状态为OFFLINE SQL> ALTER TABLESPACE test OFFLINE;

(2)将磁盘中的myspace02.dbf文件移动到新的目录中(物理上)  

(3)使用ALTER TABLESPACE语句,将mytest表空间中test001.dbf文件的原名称和路径修改为新名称和路径 (逻辑对应上)

(4)修改mytest表空间的状态为ONLINE,如下: SQL> ALTER TABLESPACE mytest ONLINE; 检查文件是否移动成功需要介质恢复 (核实) recover datafile 'd:\102.dbf'

 

  1. 移动mytest表空间中数据文件test001.dbf的步骤如下。
    • (1)修改mytest表空间的状态为OFFLINE
      • SQL> ALTER TABLESPACE test OFFLINE;
    • (2)将磁盘中的myspace02.dbf文件移动到新的目录中(物理上)

 (3)使用ALTER TABLESPACE语句,将mytest表空间中test001.dbf文件的原名称和路径修改为新名称和路径 (逻辑对应上)

    • (4)修改mytest表空间的状态为ONLINE,如下:
      • SQL> ALTER TABLESPACE mytest ONLINE;
    • 检查文件是否移动成功需要介质恢复 (核实)
      recover datafile 'd:\102.dbf'

【例1】将表空间OrclTBS01设置为脱机状态:

SQL> ALTER TABLESPACE OrclTBS01 OFFLINE;

【例2】将表空间OrclTBS01设置为联机状态:

SQL> ALTER TABLESPACE OrclTBS01 ONLINE;

【例3】将表空间OrclTBS01设置为只读表空间:

ALTER TABLESPACE ORCTB01 READ ONLY;

【例4】将表空间OrclTBS01设置为可读写状态:

ALTER TABLESPACE OrclTBS01 READ WRITE;

【例5】删除表空间OrclTBS01

DROP TABLESPACE OrclTBS01;

【例6】删除表空间的同时,删除包含的段和数据文件

DROP TABLESPACE OrclTBS03 INCLUDING CONTENTS AND DATAFILES;

  1. 将一个已经存在的表移动到另一个表空间

ALTER TABLE XS MOVE TABLESPACE USERS

  1. 利用CREATE TABLE命令为XSCJ数据库建立表XS_KC
  2. alter table <table_name>  logging | nologging;
  3. alter table <table_name> move tablespace <tablespace_name>
  4. 创建XS表中计算机专业学生的记录备份。

CREATE TABLE XS_JSJ AS SELECT * FROM XS_KC  WHERE CJ>80

【例11】(1) 在表XS中增加2列:JXJ(奖学金等级)DJSM(等级说明)

  

CREATE TABLE SCOTT.XS

(XH VARCHAR2(6) NOT NULL,

XM VARCHAR2(8) NOT NULL,

ZYM VARCHAR2(6),

XB VARCHAR2(2),

CSSJ DATE,

ZXF NUMBER(2),

PRIMARY KEY (XH))    //创建表

//增加列

ALTER TABLE SCOTT.XS    ADD ( JXJ NUMBER(1),  DJSM VARCHAR2(40) DEFAULT  '奖金1000');

!!!

ALTER TABLE [schema.] table_name

     ADD(列名字  列类型), 

     MODIFY (列名字 列类型)|(列名字  DEFAULT 默认值)        (column_constraint,…n)      

     [ DROP COLUMN  列名]

  1. 在表XS中修改名为DJSM的列的默认值。

Alter tablespace scott.xs modify (djsm default 奖金800元);

  1. 在表XS中删除名为JXJDJSM的列

Alter tablespace scott.xs drop  column jxj;

Alter tablespace scott.xs drop  column djsm;

[例13]例如要删除表XS

Drop table xs

 

猜你喜欢

转载自blog.csdn.net/mnhdxhcky/article/details/85195821