第一章
1.Oracle数据库从存储结构上分为物理存储结构和逻辑存储结构。
2.Oracle在物理上主要由三种类型文件组成,分别是.*dbf控制文件*.ctl重做日志文件*.log
3.数据文件是指存储数据库数据的文件,数据库中所有数据最终存在数据文件中。一个数据文件只对应一个数据库。而一个数据库通常包含多个数据文件。
4.控制文件是一个很小的二进制文件,用于描述和维护数据库的物理结构。(存放数据文件和日志文件),一旦受损,那么数据库无法工作。
5.重做日志文件是记录数据库所有修改信息的文件,简称日志文件。
6.数据库运行模式分为归档模式和非归档模式两种。
7.参数文件用于记录oracle数据库的基本参数信息,主要包括数据库名和数据文件所在路径等,参数文件分为文本参数文件和服务器参数文件。
8.逻辑存储结构,主要包括表空间,段,区和数据块。
9.注意:一个数据库由一个或者多个表空间组成,一个表空间由一个或者多个段组成,一个段由多个区组成,一个区由一个或者多个数据块组成。
10.表空间是最大的逻辑存储结构,与物理上的一个或多个数据文件相对应,每个数据库至少拥有一个表空间,表空间大小等于构成该表空间的所有数据文件大小和总和。
11.段一般是数据库终端用户将处理的最小存储单位。
12.区是磁盘空间分配的最小单位。
13.数据块是用来管理存储空间的最基本单位,也是最小的逻辑存储单位。
14.DBWn数据写入进程,是oracle中采用LRU最近最少使用算法,将数据缓冲区的数据写入数据文件的进程。
15.LGWR日志写入进程,是负责管理日志缓冲区的一个后台进程,用于将缓冲区中的日志数据写入磁盘的日志文件中。(将日志信息写入日志文件后台进程)
16.CKPT检查点或检验点进程。
17.ARCn归档进程。(归档模式下)
18.RECO恢复进程。
19.数据缓冲区用于存储从磁盘数据文件中读取的数据,供所有用户共享。
20.日志缓冲区用于存储数据库的修改操作信息。
21.如果一个服务器进程非正常终止,由oracle系统会使用POMN进程监控来释放所占用的资源。
22.段主要分为数据段、索引段,临时段和回退段
23.系统全局区包括
java池,数据缓冲区,日志缓冲区。
24.解析后的sql语句会缓存在sga的共享池区中。
25.数据文件:每一个Oracle数据库都要有一个或者多个物理的数据文件,这些数据文件里存储的就是Oracle数据库里的数据。表、索引等等其实都是数据库的逻辑结构,这些表、索引都被物理的存储在了数据文件里面。数据文件有三个特性:1、一个数据文件只能属于一个数据库。2、数据库中的数据文件可以被设置成自动的增长。(当数据库的空间用完的时候,数据库中的数据文件就会自动增长,比如原来1G的数据文件自动变成了2G的数据文件)3、一个或者多个数据文件就组成了数据库的一个逻辑单元叫做---表空间。数据文件里的数据,在需要的时候就会被读取到内容Oracle的缓冲区中,数据先存储在缓冲区,然后在一次都写入数据文件,这个过程有一个dbwn后台进程来控制。
26.控制文件:每一个数据库都拥有控制文件(它和数据文件一样重要),控制文件里记录的是对数据库物理结构的详细信息,例如它包括如下三个信息:1、数据库的名称2、数据文件的名字和存在位置,重做日志文件的名字和存储位置3、数据库创建的时间标识Oracle可以使用多重的控制文件,也就是说它可以同时维护多个完全一样的控制文件,这么做就是为了防止数据文件损坏而造成的数据库故障。比如
Oracle同时维护3个控制文件,当其中有1个控制文件出问题了,就比较好解决,把出问题的删了,在复制一份没有问题的就可以了。每当Oracle数据库的实例启动的时候,它就会通过控制文件来识别,要想执行数据库的一些操作,必须需要哪些数据文件和重做日志文件,以及这些数据文件
和重做日志文件都存在在什么位置。当数据库的物理构成发生改变的时候,比如新增加了一个数据文件或者重做日志文件,那么控制文件就会自动的更新来记录这些变化。另外在数据库恢复的时候也会用到控制文件。
27.重做日志文件:每个Oracle数据库都拥有一组文件,其中包括2个或者多个重做日志文件(其实也可以拥有多组,用途跟多个控制文件一样)。这组文件整体被称为数据库的重做日志,而重做日志又是由一条一条的重做记录组成的,所有也被称为重做记录。重做日志的主要作用就是记录所有的数据变化,当一个故障导致被修改过的数据没有从内存中永久的写到数据文件里,那么数据的变化是可以从重做日志中获得的,从而保证了对数据修改的不丢失。为了防止重做日志自身的问题导致故障,所以Oracle拥有多重重做日志功能,也就是可以同时保存多组完全相同的重做日志在不同的磁盘上。重做日志里的信息只是用于恢复由于系统或者介质故障所引起的数据没法写入数据文件的数据。比如突然断电导致数据库的关闭,那么内存中的数据就不能写入到数
据文件中,内存中的数据就会丢失。但当数据库重新启动时丢失的数据是可以被恢复的,可以从最近的重做日志中读取丢失信息然后应用到数据文件中,这样就把数
据库恢复到断电前的状态。
第三章使用sql
* plus工具
1.链接scott用户
: connect scott/tiger
2.使用describe命令查看表结构describe可简写desc
(desc scott.emp)
3.Save命令将缓冲区保存到文件,get命令读取文件内容到缓冲区,start命令读取并运行文件内容。
4.Edit命令编辑缓冲区内容或文件内容。Spool复制命令输出结果到文件中。
5.定义变量时候,可以使用define和accept,删除变量时候,可以用undefine命令。
6.Column命令格式化列效果,控制列显示格式,使用pagesize可以设置每一页大小,linesize设置一行数据容纳的字符数量。
7.使用ttitle和btitle命令,分别为报表设置页眉和页脚信息。
8.临时变量是指仅在某个sql语句中有效的变量,已定义变量是指明确定义,棋生命期至显示地删除,重新定义或者退出sql
* plus为止。
第四章管理表空间
1.表空间状态为在线online
离线offline只读read only和读写 read write。
2.Online在线当表空间为这个时候,才允许访问表空间中的数据。
3.离线Offline,不允许访问该表空间中的数据。
4.移动数据文件:
(1)修改myspace表空间中的数据文件Myspace02.dbf步骤,修改Myspace空间状态为offline,alter
tablespace myspace offline;
(2)将磁盘中的myspace02.dbf文件移动到新的目录中,例如移动到f:\oraclefile中。
(3)使用alter
tablespace 语句,将myspace 表空间中myspace02.dbf文件的原名称和路径修改为新名称和路径。
Alter tablespace myspace
Rename datafile ‘e:\app\sdsd\dsds\ds.dbf’
To
‘f:\fdfd\fdf.dbf’
(4)修改好myspace表空间为online。Alter
tablespace myspace online;
5.在创建永久性表空间时,需要使用datafile关键字指定其数据文件,如果是创建临时表空间,则应该使用tempfile关键字为其指定临时文件。
6.表空间的状态属性主要有online
read only read write
7.数据文件的状态属性有online
offline drop offline
8.创建临时表空间需要使用temporary关键字,创建大文件表空间需要使用bigfile关键字,创建撤销表空间需要使用undo关键字。
9.Oracle中用户默认的永久性表空间为users,默认临时表空间为temp
10.Oracle中管理撤销表空间的方式有回退段撤销管理和自动撤销管理。
11.将表空间状态切换为offline时候,可以指定切换参数normal
immediate和for recover,不能变为temp
12.在表空间space中没有存储任何数据,现在需要删除该表空间,并同时删除其对应的数据文件,可以使用drop
tablespace space including contents add
datafiles;
13.将临时表空间temP设置为默认临时表空间的语句正确的是alter
database default temporary tablespace temp;
14.
第五章
1.创建表create
table person(
2.Id
number(4),
3.Name
varchar(8),
4.Sex
char(2),
5.Birthday
date
6.)
为表添加emal列,alter table person add email
varchar2(20);
Desc person;
删除email列:Alter table person drop column email;
重命名表:alter table person
rename to person01;
移动表:alter table tablename1 move tablespace
tablespacename;
15.按照约束用途,主要将表的完整性约束分为Not
null(定义列中不能出现null值)约束
,unique约束(用于定义列中不能出现重复值),primary
key约束(既可以定义列中既不允许出现null值也不允许出现重复值),check约束和foreignkey约束
16.如果要清除索引中的存储碎片,可以对索引进行合并或者重建。
17.视图中的列并不都支持DML操作,通过数据字典user_updatable可以了解视图中哪些列是可以更新的。
18.使用currval可以获取序列当前的值,使用next
val可以获取下一个值。
19.存储数据123.45可以使用下number类型和number(5,2)
20.如果定义某列定义了unique约束,则该列不允许出现重复值,该列允许出现多个Null值。
21.为列定义一个check约束,希望该约束能对表中已存储的数据,以及以后向表中添加或者修改的数据都进行检查,则应该将该约束设置为如下enable
validate状态
22.如果创建一个序列,用于为表的主键列主键值,则创建序列式不用改指定
cycle参数。
23.如果创建序列时候指定其cache参数为10,当序列的当前值为5时,数据库忽然关闭,再次运行数据库后,序列将从
11开始。
第六章管理控制文件和日志文件
1.备份控制文件有两种方式:备份为二进制文件、备份为脚本文件。
2.备份二进制文件,实际上就是复制控制文件。
3.数据库有两种日志模式:非归档日志模式和归档日志模式。在非归档模式下,如果发生日志切换,则日志文件中原有的内容将被新的内容覆盖。在归档日志模式下,如果发生日志切换时候,则oracle系统将日志文件通过复制保存到指定的地方,这个过程叫做“归档”,复制保存下来的日志文件叫“归档日志文件”。
4.清空日志文件组,需要注意:日志文件组不能处于current状态,也就是不能清空数据库当前正在使用的日志文件组。
5.当数据库中只有连个日志文件组时候,不能清空日志文件组;如果日志文件组正处于active状态,则说明该日志文件组尚未归档,此时如果想清空日志文件组,应该在清空语句中添加unarchived关键字。
6.删除日志文件:该日志不能处于current状态,该日志文件所在的日志文件组必须还包含有其他的日志成员。
7.修改运行模式:(1)使用shutdown命令关闭数据库,(2)使用startup
mount命令启动数据库,修改数据库的运行模式。Alter
database archivelog修改为归档模式;(3)使用爱alter
database open命令打开数据库
8.使用alter
system语句修改参数值时候,可以使用scope选项,该选项有Momory,spfile 和both 3个可选值。
9.日志文件组中的日志成员大小一致。
10.当日志文件组处于current状态时候,无法清空日志文件组。
11.切换日志文件组:alter
system switch logfile;
12.删除日志文件组5中的日志文件
f:\oracle\log05.log,语句为:alter
group 5 drop logfile ‘文件路径名f:\oracle\log05.log’
13.修改系统中的参数值时候,只修改服务器参数文件中的设置,则scope选项的值应该为spfile。
第七章sql语言基础
1.sql语言分类:数据操纵语言dml,数据定义语言ddl,数据控制语言dcl
2.Set
timing on加环境变量。
3.Order
by
,对数据进行排序,可以强制一个查询结果按照升序或者降序进行排列。(结尾加上desc是降序,asc是升序)
4.Group
by,可以根据表中某一列或者某几列对表中的数据进行分组,多个列之间用逗号隔开。Having子句,与group
by一起连用,完成统计后可以用having进行进一步的筛选。And和or分隔。
5.Distinct关键字,用来限定检索结果中显示不重复的数据,对于重复值,只显示期中的一个。该关键字是select子句中列的列表前边使用。不指定此关键字,即默认使用all关键字,是默认显示所有列(包括重复的列)。
6.Having子句的作用是组的筛选条件。
7.例题:对bookstore用户的tyoe表进行事务操作
(1)使用insert为向该表添加一条记录,该记录为typeid值为4,然后设置一个保存点为save1,insert
into bookstore.type values(4,’生活百科’);
(2)Savepoint
save1;//创建录入事务,保存点已经创建
(3)插入数据insert
into bookstore.type values(5,’食谱’);
(4)使用rollback语句将事务回滚到保存点save1:rollback
to savepoint save1;
(5)使用commit提交整个事务。Commit;
8.如果需要在select子句中包括一个表的所有列,可以使用符号*
9.在DML语句中,insert
语句可以实现插入记录,update语句可以实现更新记录,delete语句和truncate语句可以实现删除记录。
10.Chr函数可以返回某个数值ascii值,ascii函数可以返回某个ascii值相应的十进制数。
第八章子查询与高级查询
1.where使用子查询,将子查询返回的结果作为外部的where条件,
2.子查询的seletct语句中,可以定义from子句,where子句,group
by子句和having子句。有些情况不能指定order
by子句。
3.使用in
操作符实现指定匹配查询,使用any 操作符实现任意匹配查询,使用all操作符实现全部匹配查询。
4.在关联子查询中,可以使用exists或者not
exists关键字。
5.常用的表链接类型有inner
join(内连接),outer join (外链接) cross join交叉链接。
6.集合运算符union实现了集合的并运算,集合运算符的intersect实现了对集合的交运算,集合运算符的Minulls则实现了减云算.
7.使用关键字进行子查询时候,exists关键字只注重子查询是否返回行,如果子查询返回一个或者多个行,那么返回真,否则返回假。
8.使用简单连接查询两个表,其中一个表有5行记录,一个表有28行记录,如果没使用where子句,则返回140行。(5*
28)
9.自然连接为具有相同名称的列字段进行记录匹配,不必指定任何同等连接条件。
第九章PL/SQL基础
1.主要了解编写程序
Set serveroutput on
Declare
i binary_integer:=1;--声明位置
begin
....
End;
2.pl/sql程序块中的赋值符号为
:=
3.在声明常量时候需要使用
constant关键字,并且必须为常量赋初始值。
4.使用游标,一般分为声明游标,打开游标,检索游标和关闭游标这几个步骤。
5.使用游标的
%rowcount 属性可以获得select语句当前检索到的行数。
6.授权:grant
create session,create table to xiaoqi with admin option
第十一章其他表类型
1.临时表的特点:只有在用户向表中添加数据时候,oracle才会为其分配存储空间,临时表分配的空间来自临时表空间,避免了与永久对象的数据争用存储空间。临时表中存储的数据是以事务或会话为基础的。
2.临时表的类别:事务级别临时表和会话级别临时表。
3.分区表,oracle数据库对表或者索引分区方法有5种:范围分区(range),散列分区(hash),列表分区(list),组合范围散列分区和组合范围列表分区。
4.创建外部表时候,可以在organization
external 子句中,通过location选项用来指定源数据文件:default
directory选项用来指定所使用的目录对象,该目录对象指向外部数据文件所在的目录。
5.创建临时表时候,如果指定on
commit delete rows子句,则表示创建的临时表是事务级别临时表。
6.在创建外部表时候,使用badfile子句指定记录错误数据的文件。
7.为分区表增加分区时,如果当前存在maxvalue或default值的分区,那么在增加分区时会出现错误,这时候,需要使用split
partition子句。