OracleDBA培训教程——从实践中学习Oracle数据库管理与维护学习笔记第0章Oracle的安装及相关配置1、SQL和SQL*Plus的语句是大小写无关的。2、卸载Oracle10g时,运行UniversalInstaller进行卸载,然后重新启动,再删除安装目录即可。3、可以更改控制台的默认端口号,如果是10g,就在C:\oracle\product\10.1.0\Db_1\install目录下的portlist.ini文件中更改。4、在10g以上的版本,出于安全的考虑,所有Oracle的默认用户包括scott用户都将被锁住。可以先用system或sys用户登录数据库,然后用如下命令解锁:alteruserscottidentifiedbytigeraccountunlock;5、如果scott用户中的某个对象出现问题,不需要重装Oracle系统,只需要通过运行scott.sql脚本来重建scott用户和它拥有的一切。10g版本使用如下命令:@C:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\scott.sql6、以sys账户,sysdba权限登录数据库的方法:connectsys/oracleassysdba7、通过v$controlfile数据字典,可以查看当前数据库控制文件所在的目录位置:select*fromv$controlfile;8、host命令可以在sqlplus中执行dos命令,如hostcopyC:\oracle\product\10.1.0\oradata\Moon\*.*c:\study\backup9、立即关闭数据库:shutdownimmediate打开数据库:startup第1章Oracle的体系结构1、Oracle数据库管理系统的体系结构:2、Oracle服务器由Oracle实例和Oracle数据库两大部分组成。3、Oracle实例是一种访问数据库的机制,它由内存结构和一些后台进程组成。4、内存结构也称为系统全局区(systemglobalarea,SGA)。SGA包含了以下几个内存结构:共享池(sharedpool)、数据库高速缓冲区(databasebuffercache)、重做日志缓冲区(redologbuffer)和其他的一些结构(如锁和统计数据)等。5、实例的后台进程有5个是必需的,分别是SMON、PMON、DBWR、LGWR和CKPT。6、Oracle数据库也称为物理(内存)结构,它为数据库信息提供了真正的物理存储,它由以下3类操作系统文件组成,控制文件(controlfile)、重做日志文件(redologfiles)和数据文件(datafiles)。7、Oracle执行SQL查询语句的步骤,分为三个阶段:编译、执行和提取数据。编译:在进行编译时,服务器进程会将SQL语句的正文放入共享池(sharedpool)的库高速缓存(librarycache)中并将完成以下处理。首先在共享池中搜索是否有相同的SQL语句(正文),如果没有就进行后续的处理。检查该SQL语句的语法是否正确。通过查看数据字典来检查表和列的定义。对所操作的对象加编译锁,以便在编译语句期间这些对象的定义不能被改变。检查所引用对象的用户权限。生成执行该SQL语句所需的优化的执行计划(执行步骤)。将SQL语句和执行计划装入共享的SQL区。以上的每一步操作都是在处理正确时才进行后续的处理。如果不正确,就返回错误。执行:Oracle服务器进程开始执行SQL语句是因为它已获得了执行SQL语句所需的全部资源和信息。提取数据:Oracle服务器进程选择所需的数据行,并在需要时将其排序,最后将结果返回给用户(进程)。8、SGA中的共享池(sharedpool)是由库高速缓存(librarycache)和数据字典高速缓存(datadictionarycache)两部分所组成。9、库高速缓存包含了共享SQL区和共享PL/SQL区两部分,它们分别存放SQL和PL/SQL语句以及相关的信息。引入库高速缓存(librarycache)的目的是共享SQL或PL/SQL代码。10、当Oracle在执行SQL语句时,服务器进程将把数据文件、表、索引、列、用户和其他的数据对象的定义和权限的信息放入数据字典高速缓存。如果在这之后,有进程(用户)需要同样的信息,如表和列的定义,那么所有的这些信息都将从数据字典高速缓存中获得。因为以上这些信息都以及存在于数据字典中,这也可能就是将该部分内存称为数据字典高速缓存的原因。11、与执行查询语句有所不同,Oracle在执行DML语句语句时只有编译(parse)和执行(execute)两个阶段。以下是Oracle执行UPDATE语句的步骤:如果数据和回滚数据不在数据库高速缓冲区中,则Oracle服务器进程将把它们从数据文件中读到数据库高速缓冲区中。Oracle服务器进程在要修改的数据行上加锁(行一级的锁)。Oracle服务器进程将数据的变换信息和回滚所需的信息都记录在重做日志缓冲区中。Oracle服务器进程将回滚所需的原始值和对数据所做的修改都写入数据库高速缓冲区(databasebuffercache)。之后在数据库高速缓冲区中所有的这些数据块都将被标为脏缓冲区,因此此时内外存的数据是不一致的。Oracle处理INSERT或DELETE语句的步骤与处理UPDATE语句的步骤大致相同。12、showparameter该命令用来显示出参数文件中可以设置的全部参数。13、showsga可以获得SGA的相关信息14、当在SQL*Plus中发了commit语句之后,Oracle的内部操作步骤如下:服务器进程将把提交的记录连同所产生的SCN(号码)一起写入重做日志缓冲区中。重做日志写进程(LGWR)将把重做日志缓冲区中一直到所提交的记录(包括该记录)的所有记录连续地写到重做日志文件中。在此之后,Oracle服务器就可以保证即使在系统崩溃的情况下所有提交的数据也可以得到恢复。Oracle通知用户(进程)提交已经完成。服务器进程将修改数据库高速缓冲区中的相关数据的状态并释放资源和打开锁等。此时可能这些数据并未被写到数据库文件中,这些数据缓冲区被标为脏缓冲区,因为相同数据在内外存中为不同的版本。数据库高速缓冲区中的数据是有DBWR写到数据文件中的。15、重做日志写进程(LGWR)要在下列情况下将重做日志缓冲区的记录(内存)顺序地写到重做日志文件(外存)中:当某个事物被提交时。当重做日志缓冲区中变化的记录超过1MB时。当重做日志缓冲区中所存的记录已超过缓冲区容量的1/3。在DBWR将数据库高速缓冲区中修改过的数据块写到数据文件之前。每3秒钟。16、数据库的典型操作就是大规模的输入/输出(I/O),因此为了提高Oracle系统的效率,一要减少I/O量,这可能是Oracle引入LGWR的原因之一;二要减少I/O次数,这可能是Oracle引入数据库写进程(DBWR/DBWn)的主要原因。17、在Oracle英文书中有些将“数据库写进程”用DBWR表示,也有些用DBWn表示,这是因为一个Oracle实例中可以启动多个数据库写进程,Oracle允许在一个实例上最多启动10个数据库写进程,它们分别是DBW0~DBW9。18、数据库写进程负责将数据库高速缓冲区中的脏缓冲区中的数据写到数据文件上。数据库写进程将在下列事件之一发生时把数据库高速缓冲区中的数据写到数据文件上:当脏缓冲区的数量超过了所设定的限额。当所设定的时间间隔已到。当有进程需要数据库高速缓冲区却找不到空闲的缓冲区时。当校验点发生时。当某个表被删除(drop)或被截断(truncate)时。当使用类似于altertablespaceusersbeginbackup的命令对某个表空间进行联机备份时。当某个临时表空间被设置为只脱机状态(offline)或正常状态(normal)时等。19、SMON、PMON、DBWR、LGWR和CKPT这5个后台进程是必需的,它们中的任何一个停止后实例都将自动关闭。在可选后台进程中,最重要的可能就是归档日志(ARCH/ARCn)进程。第2章数据库管理工具1、在一台计算机上创建两个数据库将会使系统效率大大降低。2、默认情况下,Oracle会自动地创建两个超级用户sys和system,它们也被称为数据库管理员用户,其中sys用户拥有数据库中数据字典,它的默认口令为change_on_install。在使用sys用户连接数据库时,应该使用SYSDBA或SYSOPER权限来连接,否则系统会报错。例如:connectsys/change_on_installassysdba其中system用户拥有由Oracle工具所使用的附加的内部表和视图,它的默认口令为manager。在使用system用户连接数据库时,可以不使用SYSDBA或SYSOPER权限来连接。第3章Oracle实例的管理1、在Oracle9i或之后的Oracle版本中共有两种不同类型的初始化参数文件,它们是:静态参数文件(PFILE),该文件为文本文件。动态参数文件(SPFILE),该文件为二进制文件。2、当Oracle收到STARTUP命令之后,其执行顺序如下:首先使用服务器上的spfileSID文件启动实例。如果没有找到spfileSID文件,就使用服务器上默认的SPFILE文件启动实例。如果没有找到默认的SPFILE文件,就使用服务器上默认的PFILE文件启动实例。如果没有找到initSID文件,就使用服务器上默认的PFILE文件启动实例。3、startupnomount当以非加载(NOMOUNT)方式启动数据库,这是一种特殊的状态,该状态只有在创建数据库时或重建控制文件期间使用。4、startupmount当以加载(MOUNT)方式启动数据库,这也是一种特殊状态,该状态在对数据库进行某些特殊的维护期间使用,如对系统表空间进行恢复,或修改数据库文件名,或移动数据文件。5、startupopen/startup当以开启(OPEN)方式启动数据库,这是数据库正常操作的状态。在该状态下,任何合法的用户都可以与数据库连接和执行正常的数据访问操作。6、可以使用alterdatabase命令将数据库从NOMOUNT状态转变为MOUNT状态,或从MOUNT状态转为OPEN状态。比如:alterdatabasemount;alterdatabaseopen;7、为了防止用户进程修改数据库中的数据,可以将数据库的状态设置为只读:alterdatabasereadonly;可以使用如下命令将数据库的状态置回为正常的状态:alterdatabasereadwrite;8、通过数据字典v$session来获得当前系统用户进程的SID(会话标示符)和SERIAL#(序列号)等信息:selectsid,serial#,username,typefromv$session;然后可以通过例如:altersystemkillsession‘7,19’;命令杀死这些用户进程。9、关闭数据库的4种方式:关闭方式ABORTIMMEDIATETRANSACTIONALNORMALSHUTDOWN允许新的链接NoNoNoNo等待到当前所有的会话结束NoNoNoYes等待到当前所有的事物(交易)结束NoNoYesYes强制型检查点和关闭文件NoYesYesYes10、commit提交命令rollback回滚命令11、在Oracle数据库中共有3种类型的常见诊断文件。它们是:报警文件(在UNIX系统上为altertSID.log,在NT系统上为SIDALRT.log)、后台进程追踪文件(backgroundtracefiles)和用户进程追踪文件(usertracefiles)。第4章数据字典和控制文件1、数据字典是由Oracle服务器创建和维护的一组只读的系统表。数据字典分为两大类:一种为基表,一种为数据字典视图。数