1.体系结构篇
1.物理结构:简述Oracle的物理结构包含哪些内容,针对每种物理文件介绍一种与其相关的数据字典或其它查看命令。
1. 数据文件(data file) 后缀为.dbf 数据字典: dba_data_files和v$datafile
2.日志文件(redo log file) 后缀为.rdo V$log和v$logfile
3. 归档文件:后缀为.ARC ARCHIVE LOG LIST和v$database
4.控制文件(control file ) 后缀为.ctl v$controlfile
5.配置文件(*.ora)
2. 日志文件的添加删除和修改,注意日志文件包括分组 (group)和成员(member)p109
【例1】在ALTER 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.逻辑结构:包含哪些内容及它们之间的关系。
1 表空间(tablespace) 2 段(segment) 3 区(extent) 4 数据库块(database block); 5 模式对象(表、视图、序列和同义词等)
•表空间由表等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 Area,SGA)是Oracle为系统分配的一组共享的内存结构,可以包含一个数据库实例的数据或控制信息。
1.数据缓冲区 •数据缓冲区用于存储从磁盘数据文件中读取的数据,供所有用户共享。由于系统读取内存的速度要比读取磁盘快得多,所以数据缓冲区的存在可以提高数据库的整体效率。
§2.日志缓冲区 •日志缓冲区用于存储数据库的修改操作信息。
§3.共享池 •共享池用于保存最近执行的SQL语句、PL/SQL程序的数据字典信息,它是对SQL语句和PL/SQL程序进行语法分析、编译和执行的内存区域。共享池主要包括如下两种子缓存。
–库缓存(Library Cache)
–数据字典缓存(Data Dictionary Cache)
§4.大型池 大型池,用于提供一个大的缓冲区供数据库的备份与恢复操作使用,它是SGA的可选区域。
§5.Java池 •Java池,用于在数据库中支持Java的运行。
8.1.几个端口和几个Oracle启动项
OracleServiceORCL。数据库服务,这个服务会自动地启动和停止数据库。
OracleDBConsoleorcl。Oracle数据库控制台服务
OracleOraDb11g_home1TNSListener。监听器服务,服务数据库需要远程访问时才需要。
OracleJobSchedulerORCL。Oracle作业调度进行,ORCL是Oracle例程标识。
监听端口 1521-•上机时需要注意打开和修改两个监听文件监听(listener.ora和tnsnames.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;
表空间已创建。
v【例5】创建自动段管理方式的表空间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'
- 移动mytest表空间中数据文件test001.dbf的步骤如下。
- (1)修改mytest表空间的状态为OFFLINE
- SQL> ALTER TABLESPACE test OFFLINE;
- (2)将磁盘中的myspace02.dbf文件移动到新的目录中(物理上)
- (1)修改mytest表空间的状态为OFFLINE
(3)使用ALTER TABLESPACE语句,将mytest表空间中test001.dbf文件的原名称和路径修改为新名称和路径 (逻辑对应上)
-
- (4)修改mytest表空间的状态为ONLINE,如下:
- SQL> ALTER TABLESPACE mytest ONLINE;
- 检查文件是否移动成功需要介质恢复 (核实)
recover datafile 'd:\102.dbf'
- (4)修改mytest表空间的状态为ONLINE,如下:
【例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;
- 将一个已经存在的表移动到另一个表空间
ALTER TABLE XS MOVE TABLESPACE USERS
- 利用CREATE TABLE命令为XSCJ数据库建立表XS_KC
- alter table <table_name> logging | nologging;
- alter table <table_name> move tablespace <tablespace_name>
- 创建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 列名]
- 在表XS中修改名为DJSM的列的默认值。
Alter tablespace scott.xs modify (djsm default ‘奖金800元’);
- 在表XS中删除名为JXJ和DJSM的列
Alter tablespace scott.xs drop column jxj;
Alter tablespace scott.xs drop column djsm;
[例13]例如要删除表XS
Drop table xs