第一章1.Oracle数据库从存储结构上分为物理存储结构和逻辑存储结构。2.Oracle在物理上主要由三种类型文件组成,分别是.*dbf控制文件*.ctl重做日志文件*.log3.数据文件是指存储数据库数据的文件,数据库中所有数据最终存在数据文件中。一个数据文件只对应一个数据库。而一个数据库通常包含多个数据文件。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用户:connectscott/tiger2.使用describe命令查看表结构describe可简写desc(descscott.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只读readonly和读写readwrite。2.Online在线当表空间为这个时候,才允许访问表空间中的数据。3.离线Offline,不允许访问该表空间中的数据。4.移动数据文件:(1)修改myspace表空间中的数据文件Myspace02.dbf步骤,修改Myspace空间状态为offline,altertablespacemyspaceoffline;(2)将磁盘中的myspace02.dbf文件移动到新的目录中,例如移动到f:\oraclefile中。(3)使用altertablespace语句,将myspace表空间中myspace02.dbf文件的原名称和路径修改为新名称和路径。AltertablespacemyspaceRenamedatafile‘e:\app\sdsd\dsds\ds.dbf’To‘f:\fdfd\fdf.dbf’(4)修改好myspace表空间为online。Altertablespacemyspaceonline;5.在创建永久性表空间时,需要使用datafile关键字指定其数据文件,如果是创建临时表空间,则应该使用tempfile关键字为其指定临时文件。6.表空间的状态属性主要有onlinereadonlyreadwrite7.数据文件的状态属性有onlineofflinedropoffline8.创建临时表空间需要使用temporary关键字,创建大文件表空间需要使用bigfile关键字,创建撤销表空间需要使用undo关键字。9.Oracle中用户默认的永久性表空间为users,默认临时表空间为temp10.Oracle中管理撤销表空间的方式有回退段撤销管理和自动撤销管理。11.将表空间状态切换为offline时候,可以指定切换参数normalimmediate和forrecover,不能变为temp12.在表空间space中没有存储任何数据,现在需要删除该表空间,并同时删除其对应的数据文件,可以使用droptablespacespaceincludingcontentsadddatafiles;13.将临时表空间temP设置为默认临时表空间的语句正确的是alterdatabasedefaulttemporarytablespacetemp;14.第五章1.创建表createtableperson(2.Idnumber(4),3.Namevarchar(8),4.Sexchar(2),5.Birthdaydate6.)为表添加emal列,altertablepersonaddemailvarchar2(20);Descperson;删除email列:Altertablepersondropcolumnemail;重命名表:altertablepersonrenametoperson01;移动表:altertabletablename1movetablespacetablespacename;15.按照约束用途,主要将表的完整性约束分为Notnull(定义列中不能出现null值)约束,unique约束(用于定义列中不能出现重复值),primarykey约束(既可以定义列中既不允许出现null值也不允许出现重复值),check约束和foreignkey约束16.如果要清除索引中的存储碎片,可以对索引进行合并或者重建。17.视图中的列并不都支持DML操作,通过数据字典user_updatable可以了解视图中哪些列是可以更新的。18.使用currval可以获取序列当前的值,使用nextval可以获取下一个值。19.存储数据123.45可以使用下number类型和number(5,2)20.如果定义某列定义了unique约束,则该列不允许出现重复值,该列允许出现多个Null值。21.为列定义一个check约束,希望该约束能对表中已存储的数据,以及以后向表中添加或者修改的数据都进行检查,则应该将该约束设置为如下enablevalidate状态22.如果创建一个序列,用于为表的主键列主键值,则创建序列式不用改指定cycle参数。23.如果创建序列时候指定其cache参数为10,当序列的当前值为5时,数据库忽然关闭,再次运行数据库后,序列将从11开始。第六章管理控制文件和日志文件1.备份控制文件有两种方式:备份为二进制文件、备份为脚本文件。2.备份二进制文件,实际上就是复制控制文件。3.数据库有两种日志模式:非归档日志模式和归档日志模式。在非归档模式下,如果发生日志切换,则日志文件中原有的内容将被新的内容覆盖。在归档日志模式下,如果发生日志切换时候,则oracle系统将日志文件通过复制保存到指定的地方,这个过程叫做“归档”,复制保存下来的日志文件叫“归档日志文件”。4.清空日志文件组,需要注意:日志文件组不能处于current状态,也就是不能清空数据库当前正在使用的日志文件组。5.当数据库中只有连个日志文件组时候,不能清空日志文件组;如果日志文件组正处于active状态,则说明该日志文件组尚未归档,此时如果想清空日志文件组,应该在清空语句中添加unarchived关键字。6.删除日志文件:该日志不能处于current状态,该日志文件所在的日志文件组必须还包含有其他的日志成员。7.修改运行模式:(1)使用shutdown命令关闭数据库,(2)使用startupmount命令启动数据库,修改数据库的运行模式。Alterdatabasearchivelog修改为归档模式;(3)使用爱alterdatabaseopen命令打开数据库8.使用altersystem语句修改参数值时候,可以使用scope选项,该选项有Momory,spfile和both3个可选值。9.日志文件组中的日志成员大小一致。10.当日志文件组处于current状态时候,无法清空日志文件组。11.切换日志文件组:altersystemswitch