下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Oracle数据库基础数据库是我们安装完产品后建立的,可以在同一台主机上存在8i,9i,10g,11g等多个数据库产品,一套产品可以建立多个数据库,每个数据库是独立的。每个数据库都有自己的全套相关文件,有各自的控制文件、数据文件、重做日志文件、参数文件、归档文件、口令文件等等。其中控制文件、数据文件、重做日志文件、跟踪文件及警告日志(tracefiles,alertfiles)届于数据库文件;参数文件(parameterfile)口令文件(passwordfile)是非数据库文件我们的表存储在数据库中数据库不能直接读取我们通过实例(instance)来访问数据库数据库实例实例由内存和后台进程组
2、成实例是访问数据库的方法初始化参数控制实例的行为一个实例只能连接一个数据库启动实例不需要数据库产品安装好有初始化参数文件就可以启动实例与是否存在数据库无关实例内存分为SGA和PGASGA是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。PGA包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SG辰相反,PGA是只被一个进程使用的区域,PGA在创建进程时分配,在终止进程时回收.后台进程是实例和数据库的联系纽带分为核心进程和非核心进程当前后台
3、进程的查看SQL>selectname,descriptionfromv$bgprocesswherepaddr<>'00'NAMEDESCRIPTIONPMONprocesscleanupDIAGdiagnosibilityprocessPSP0processspawner0LMONglobalenqueueservicemonitorLMD0globalenqueueservicedaemon0LMS0globalcacheserviceprocess0LMS1globalcacheserviceprocess1MMANMemoryManagerDBW0d
4、bwriterprocess0ARC0ArchivalProcess0ARC1ArchivalProcess1NAMEDESCRIPTIONLGWRRedoetc.LCK0LockProcess0CKPTcheckpointSMONSystemMonitorProcessRECOdistributedrecoveryCJQ0JobQueueCoordinatorQMNCAQCoordinatorMMONManageabilityMonitorProcessMMNLManageabilityMonitorProcess220rowsselected.也可以在操作系统下查看oracledb-rac
5、1db01$ps-ef|grepora_oracle85881007:53?00:00:00ora_j001_gfdb1oracle108161004:58?00:00:08ora_j000_gfdb1oracle1699810Apr18?00:00:00ora_pmon_gfdb1oracle1701710Apr18?00:00:00ora_diag_gfdb1oracle1703010Apr18?00:00:00ora_psp0_gfdb1oracle1704210Apr18?00:00:00ora_lmon_gfdb1oracle1705710Apr18?00:00:00ora_lmd0
6、_gfdb1oracle1706710Apr18?00:00:00ora_lms0_gfdb1oracle1707710Apr18?00:00:00ora_lms1_gfdb1oracle1708110Apr18?00:00:00ora_mman_gfdb1oracle1708310Apr18?00:00:00ora_dbw0_gfdb1oracle1708510Apr18?00:00:00ora_lgwr_gfdb1oracle1708710Apr18?00:00:00ora_ckpt_gfdb1oracle1708910Apr18?00:00:03ora_smon_gfdb1oracle1
7、709110Apr18?00:00:00ora_reco_gfdb1oracle1709310Apr18?00:00:06ora_cjq0_gfdb1oracle1709510Apr18?00:00:02ora_mmon_gfdb1oracle1709710Apr18?00:00:00ora_mmnl_gfdb1oracle1709910Apr18?00:00:00ora_d000_gfdb1oracle1710110Apr18?00:00:00ora_s000_gfdb1oracle1714210Apr18?00:00:01ora_lck0_gfdb1oracle175177593007:5
8、5pts/200:00:00grepora_oracle2618210Apr18?00:00:00ora_arc0_gfdb1oracle2618410Apr18?00:00:00ora_arc1_gfdb1oracle2652310Apr18?00:00:00ora_qmnc_gfdb1oracle2715610Apr18?00:00:00ora_q000_gfdb1oracle2717210Apr18?00:00:00ora_q001_gfdb1oracle293081005:53?00:00:00ora_q002_gfdb1oracle308781007:42?oracle3188210
9、07:26?00:00:00ora_q004_gfdb100:00:00ora_q003_gfdb1核心进程,必须存在,有一个终止,所有数据库进程全部终止非核心进程完成数据库的额外功能归档调度作业Databasewriter(DBWn)数据库写进程将数据库的变化写入到文件最多20个DBW0-DBW9DBWa-DBWj应该和cpu的个数对应由参数DB_WRITER_PROCESSES因为dbwr是哪里来面效据写回到哪里,所以可以多个进程一起工作。Logwriter(LGWR)日志写进程将日志缓冲写入到磁盘的日志文件只有一个,因为日志写是顺序写,所以一个就可以了,因为是顺序写所以也不能为多个。Ch
10、eckpoint(CKPT)检查点进程存盘点触发dbwn,写脏数据块更新数据文件头,更新控制文件Systemmonitor(SMON)系统监测进程实例崩溃时进行自动恢复活除作废的排序临时段Processmonitor(PMON)进程监测进程活除死进程重新启动部分进程监听的自动注册我们连接到数据库其实是连接到实例这个过程叫建立一个会话实验1:数据库的最高帐号sys的操作系统认证模式该实验的目的是进入数据库的最高帐号sys.掌握操作系统认证的两个条件.操作系统认证,因为数据库是在OS上的软件能进入ORACL旅号,就可以进入到数据库的最高帐号。Conn/assysdbaShowuser无论数据库处丁
11、何种状态,sys用户总可以进入到数据库因为sys是外部操作系统认证的操作系统认证的两条件。一、操作系统的用户要届丁dba组;二、和数据库问的连接是安全的。实验2:数据库的最高帐号sys的密码文件认证模式该实验的目的是使用密码文件的认证方式进入到最高sys帐号,如何建立和维护密码文件.在远程,或者操作系统认证不可以使用的情况下,请使用密码文件来认证sys用户在unix下密码文件路径/oracle_home/dbs密码文件名称orapw+sidsid为实例名称,查看实例名称selectinstance_namefromv$instance;select'orapw'|instanc
12、e_namefromv$instance;密码文件必须存在,即使你以操作系统认证,因为参数remote_login_passwordfile默认的值是要使用密码文件的,除非你将remote_login_passwordfile的值改为none,这样就禁止了密码文件的使用,你想进入至isys用户必须使用操作系统认证模式。密码文件丢失必须重新建立Orapwd为oracle的命令,用丁建立密码文件,命令的格式如下Orapwdfile=-.Password=.密码文件中含有sys用户的密码建立密码文件的步骤确定实例的名称确定密码文件的路径和名称停止数据库,删除老的密码文件在操作系统下运行orapwdf
13、ile=/dbocfs/gfdb/orapwgfdb1password=manager1其中gfdbl为实例的名称,managerl为密码,是sys用户的密码连接的sysConnsys/maanger1assysdba显示为连接的空闲实例,因为数据库还没有启动。但这并没有证明你使用了密码文件.SQL>connsys/addasassysdbaConnected.SQL>connasfdsf/adafassysdbaConnected.SQL>conn/assysdbaConnected.SQL>connsys/manager1assysoperConnected.SQL
14、>connsys/adsssdassysoperERROR:ORA-01031:权限不足原因很简单,因为操作系统认证的优先级高丁密码文件.所以你只要写assysdba就可以进入,但sysoper不能使用操作系统来认证,它只能使用密码文件认证,上面的实验证明managerl是正确的密码.启动数据库startup建立密码文件要重新启动数据库,因为内存中保留有原来的密码.初始化参数remote_login_passwordfile=none则数据库设置为禁止使用密码文件,只能使用操作系彖认松录到最高的老大用户.即使你以密码认证连接到数据库,也不能启动和停止数据库,报权限不足.实验3:数据库的两
15、种初始化参数文件该实验的目的是认识参数文件,两类参数文件的相互转换.如何修改参数.初始化参数文件是描述实例的行为的文件,文件大小很小.初始化参数文件在unix操作系统中存在丁oracle_home/dbs目录下.纯文本参数文件,修改参数的时候直接编辑文件,再保存就可以了.Initsid.ora二进制参数文件,必须存在丁服务器端.使用命令来修改.spfilesid.oraserverparameterfile纯文本参数文件和二进制参数文件的差别1。修改参数的方式不同2。优先级不同3。是否动态存储修改的参数4。存在的位置不同纯文本可以存在丁客户端二进制文件一定存在丁server端5。rman可以备
16、份二进制参数文件,不能备份纯文本参数文件.验证现在数据库使用的参数文件类型,我们一定要知道我们使用的是什么类型的参数文件,涉及到我们如何修改参数的手段.selectdistinctISSPECIFIEDfromv$spparameter;如果含有true就是使用二进制参数文件如果只有false就是使用的纯文本参数文件SQL>selectdistinctisspecifiedfromv$spparameter;ISSPECIFIEDTRUEFALSE因为上面的选择有true,所以这个数据库使用的是二进制参数文件.我们修改参数要使用命令而不是编辑文件,千万不要编辑二进制参数文件,你编辑以后会
17、报ora-00600的错误.SQL>selectisspecified,count(*)fromv$spparametergroupbyisspecified;ISSPECCOUNT(*)TRUE31FALSE232上面的查询表示有31个参数存在于二进制参数文件,213个参数为默认值.两类参数文件的相互转换Createpfilefromspfile;Createspfilefrompfile;上面的命令在连接的sys就可以使用,而不必启动数据库.当我们转换不了的时候,请将数据库停止,再转换,再重新启动数据库,再验证.参数文件的优先级Spfilesid.oraSpfile.oraInits
18、id.oraSQL>colvaluefora40SQL>selectname,valuefromv$spparameterwhereisspecified='TRUE'NAMEVALUEprocessessessionssga_targetcontrol_filescontrol_filescontrol_filesdb_block_sizecompatiblelog_archive_dest_14004451610612736/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctl/dbocfs/gfdb/contr
19、ol03.ctl819210.2.0.3.0LOCATION=/dbocfs/archivedbfilemultiblockreadcount16cluster_databasetrueNAMEVALUEclusterdatabaseinstances2threadthreadinstance_numberinstance_numberundo_managementundo_tablespaceundo_tablespaceremote_login_passwordfiledb_domaindispatchers2112AUTOUNDOTBS2UNDOTBS1exclusive(PROTOCO
20、L=TCP)(SERVICE=gfdbXDB)NAMEVALUEremote_listenerjob_queue_processesbackground_dump_destuser_dump_destcore_dump_destaudit_file_destdb_nameopen_cursorspga_aggregate_targetLISTENERS_GFDB10/home/oracle/app/oracle/admin/gfdb/bdump/home/oracle/app/oracle/admin/gfdb/udump/home/oracle/app/oracle/admin/gfdb/c
21、dump/home/oracle/app/oracle/admin/gfdb/adumpgfdb30095944704031rowsselected.我们修改参数有三个选项SQL>showparameterpga_aggregate_targetNAMETYPEVALUEpga_aggregate_targetbiginteger915MSQL>altersystemsetpga_aggregate_target=950mscope=memory;只修改内存的值,不改变参数文件的设置,下回再次启动数据库时值还是老的,能修改的前提是该参数可以动态修改,如果是静态参数只能使用下面的方法
22、.Systemaltered.SQL>altersystemsetpga_aggregate_target=950mscope=spfile;只修改二进制文件,而不修&内存,静态参数只能先改文件再重新启动数据库Systemaltered.SQL>altersystemsetpga_aggregate_target=950mscope=both;同时修改二进制文件和内存,该参数必须是可以动态修改的Systemaltered.SQL>altersystemsetpga_aggregate_target=950m;如果没有指明修改城里,默认为参数文件和内存同时修改,默认就是
23、both.Systemaltered.我们可以从参数文件中删除一个参数,当然你也可以先转化为纯文本再转化为二进制参数文件.altersystemresettrace_enabledscope=spfilesid='*'selectname,valuefromv$spparameterwhereISSPECIFIED='TRUE'orderby1;验证一下,果然少了一行,下回启动后该参数就按默认值来处理.二进制参数文件在修改的时候有的时候会报错误,我们可以先该文本文件后再建立二进制参数文件.我估计是bug,我们原谅它了,但确实对我们的学习造成一定的困惑.如果你认为
24、参数配置的没有问题,但就是不让修改,那就先改纯文本,再变为二进制.总的来说二进制的参数文件好丁纯文本,你到底选择哪种类型的参数文件都没有关系.实验4:启动数据库的三个台阶nomount,mount,open该实验的目的是细化启动数据库的三个步骤,彻底的明白还要等到学习完冷备份之后.启动数据库到nomount状态的条件如下.有环境变量.存在正确的密码文件和参数文件有足够的内存参数文件中描述的路径必须存在数据库产品软件安装正确connsys/sysassysdbaShutdownabort;Startupnomount;selectinstance_name,statusfromv$instanc
25、e;启动数据库到第一个台阶nomount状态做了如下的工作读参数文件分配内存启动后台进程初始化部分v$视图将数据库带到mount状态selectvaluefromv$spparameterwherename='control_files'Alterdatabasemount;Mount数据库的过程是读参数文件中描述的控制文件,校验控制文件的正确性,将控制文件的内容读入到内存,mount是挂接的意思,是操作系统中的概念.一旦mount之后,就是将一个没有意义的实例和一个数据库发生了联系.因为实例是空壳.没有任何数据库和该实例发生关系,我们可以理解为实例是水泵,放到哪个水塘里就会抽
26、取哪里的数据,实例是通用的.mount的意思是将一个通用的水泵放入到指定的水塘.mount是读控制文件,控制文件中有数据文件和日志文件的信息.selectinstance_name,statusfromv$instance;打开数据库Alterdatabaseopen;读控制文件中描述的数据文件验证数据文件的一致性,如果不一致,使用日志文件将数据库文件恢复到一致的状态.数据库open后,普通用户才可以访问数据库用户的表才为可见只读方式open数据库Alterdatabaseopenreadonly;selectOPEN_MODEfromv$database;默认的open方式为readwrit
27、e想改readonly为readwrite必须重新启动数据库我们现在回想一下数据库启动的三个台阶,我们先读的是参数文件,参数文件可以有我们来编写.读完参数文件后乂读了控制文件,控制文件描述了数据文件和日志文件的信息,如果控制文件丢失可以重新建立,最后是读数据文件.数据文件里才存放了我们的数据.数据库将启动分为三个台阶,目的是我们可以准确的知道哪里有问题,迅速的排除.有点象老鼠拖木钎,大头在后面.由最开始的一个1k的参数文件,最后到几个t的大型数据库.当我们只打startup而不加任何参数的时候.默认是至Uopen,等于startupopen;SQL>startupORACLEinstan
28、cestarted.TotalSystemGlobalArea167772160bytesFixedSize1247900bytesVariableSize75498852bytesDatabaseBuffers88080384bytesRedoBuffers2945024bytesDatabasemounted.Databaseopened.我们从屏幕显示的结果可以活楚的看出,有三个台阶.还有一个命令是startupforce强制启动数据库,等丁强制停止数据库再启动数据库.实验5:停止数据库的四种模式该实验的目的是区分不同的停止数据库的方式.四种停止数据库的方式各不相同,用丁不同的情况,一般
29、我们采用shutdownimmediate方式停止数据库,下面是每种停止数据库方式的差别.ShutdownNORMALShutdownTRANSACTIONALShutdownIMMEDIATEShutdownabortShutdownNORMAL新的会话不接受等待非活动的会话结束等待事务结束产生检查点停止数据库ShutdownTRANSACTIONAL新的会话不接受不等待非活动的会话结束等待事务结束产生检查点停止数据库Shutdownimmediate新的会话不接受不等待非活动的会话结束不等事务物结束产生检查点停止数据库Shutdownabort新的会话不接受不等待非活动的会话结束不等待事务
30、结束不产生检查点停止数据库一致性shutdown,产生检测点ShutdownNORMALShutdownTRANSACTIONALShutdownIMMEDIATE数据库再次启动的时候不要恢复不一致性shutdown,不产生检测点ShutdownabortStartupforceInstance崩溃(停电)数据库再次启动的时候需要恢复,自动的,透明的实验6:查找你想要的数据字典该实验的目的是了解什么是数据字典,字典的来源和如何查找到我们关心的数据字典.数据字典是oracle的核心分为两大类存在丁system表空间$结尾的基本表Dba_.,all_-.,user_视图存在丁内存中X$.的虚表V$
31、的动态性能视图数据字典是哪里来的呢?是我们建立数据库的时候运行脚本建立的.%oracle_home%rdbmsadmincatalog.sql;脚本当中含有建立数据字典的语句而$的字典是数据库在启动实例的时候初始化的.数据字典的使用数据库自己使用字典获取信息数据库自动维护我们查看字典来获得数据库的有关信息基本表,是字典得基本表,在建立system表空间的时候建立的.selecttable_name,ownerfromdba_tableswheretable_namelike'%$'andowner='SYS'视图,是在建立数据库以后运行catalog.sql;脚
32、本建立的.查看哪些字典中含有TABLED键字,一定要大写.selecttable_namefromdictwheretable_namelike'%TABLE%'查看哪些孚典中含有VIEW夫键孚,一定要大写.selecttable_namefromdictwheretable_namelike'%VIEW%'查看哪些字项中的一列含有FILE#这一列,一定要大写.selecttable_namefromdict_COLUMNSWHERECOLUMN_NAME='FILE#'查看所有的乂$和v$的表的信息.SELECT*FROMV$FIXED_TAB
33、LE;三大类视图,*代表可以替换为某个单词Dba*AllUser我们拿tables说明上面得含义.其中user_tables是查看当前用户所拥有的表.all_tables是查看当前用户可以访问的.dba_tables是查看当前整个数据库拥"1的表,但是你得有权限,如果没有权限会报没有这个表控制文件控制文件是二进制文件(不会超过100m一般是几m大小)控制文件记录了数据库的结构和行为在mount时候读在数据库open时一直使用丢失需要恢复相关字典SQL>Select*fromv$controlfile;STATUSNAMEIS_BLOCK_SIZEFILE_SIZE_BLKS/d
34、bocfs/gfdb/control01.ctlNO16384932/dbocfs/gfdb/control02.ctlNO16384932/dbocfs/gfdb/control03.ctlNO16384932selectCONTROLFILE_SEQUENCE#fromv$database;selectTYPE,RECORD_SIZE,RECORDS_TOTAL,RECORDS_USEDfromV$CONTROLFILE_RECORD_SECTION;selectvaluefromV$spparameterwherename='control_files'控制文件的位置在参
35、数文件中描述-control_files='file1,'file2'多个控仙文件是镜像的关系最多八个,最少一个实验7:减少控制文件的个数该实验的目的是初步认识如何修改参数文件,如何减少控制文件.减少控制文件,实验的目的,有一个控制文件损坏,我们要将损坏的控制文件剔除。修改参数文件,并验证停止数据库启动数据库验证,查看v$controlfileSQL>select*fromv$controlfile;验证现在内存中的控制文件个数STATUSNAMEIS_BLOCK_SIZEFILE_SIZE_BLKS/dbocfs/gfdb/control01.ctlNO1638
36、4932/dbocfs/gfdb/control02.ctlNO16384932/dbocfs/gfdb/control03.ctlNO16384932SQL>altersystemsetcontrol_files='/dbocfs/gfdb/control01.ctl','/dbocfs/gfdb/control02.ctl'scope=spfile;Systemaltered.验证参数文件已经被修改SQL>selectvaluefromv$spparameterwherename='control_files'VALUE/dboc
37、fs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctl验证内存中的值没有被修改,因为control_files是静态参数,想要改变必须重新启动数据库。SQL>select*fromv$controlfile;STATUSNAMEIS_BLOCK_SIZEFILE_SIZE_BLKS/dbocfs/gfdb/control01.ctlNO-16384932/dbocfs/gfdb/control02.ctlNO16384932/dbocfs/gfdb/control03.ctlNO16384932SQL>startupforceORACLEin
38、stancestarted.1262044bytes687869476bytes905969664bytes15511552bytesTotalSystemGlobalArea1610612736bytesFixedSizeVariableSizeDatabaseBuffersRedoBuffersDatabasemounted.Databaseopened.SQL>select*fromv$controlfile;验证内存被修改了VALUE/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctlSQL>selectvaluefrom
39、v$spparameterwherename='control_files'验证参数文件中的值和内存中的值相同VALUE/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctl如果你在启动的时候看到ora-00205错误,说明你修改的参数不正确,可能是路径写的不对或者在路径前面多写了空格,请重新修改为正确的值再重新启动数据库。实验8:增加控制文件的个数实验的目的是增加控制文件的个数,1到8个,保护控制文件。认识控制文件的一致性.什么是控制文件的版本.控制文件的结构.增加控制文件修改参数文件停止数据库复制控制文件启动数据库验证,查看
40、v$controlfile选项'/dbocfs/gfdb/control02.ctl',修改二进制的初始化参数文件中的control_filesSQL>altersystemsetcontrol_files='/dbocfs/gfdb/control01.ctl','/dbocfs/gfdb/control03.ctl'scope=spfile;Systemaltered.SQL>selectvaluefromv$spparameterwherename='control_files'验证参数文件已经被修改VALUE/
41、dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctl/dbocfs/gfdb/control03.ctlSQL>select*fromv$controlfile;验证现在内存中的控制文件个数STATUSNAMEISBLOCKSIZEFILESIZEBLKS/dbocfs/gfdb/control01.ctlNO16384932/dbocfs/gfdb/control02.ctlNO16384932重新启动数据库,使修改的参数起作用SQL>startupforce;ORACLEinstancestarted.TotalSystemGl
42、obalArea1610612736bytes1262044bytes687869476bytes905969664bytes15511552bytesfileFixedSizeVariableSizeDatabaseBuffersRedoBuffersversion9178inconsistentwithfileORA-00214:controlfile'/dbocfs/gfdb/control01.ctl''/dbocfs/gfdb/control03.ctl'version9164因为CONTROL03.CT刚才脱离了数据库,没有参加修改,CONTROL0
43、1.CTLCONTROL02.CTE经变化了,二CONTROL03.CTL有变化,所以时间戳不正确了。SQL>hostcp/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control03.ctl使用操作系统的命令将老的控制文件覆盖SQL>alterdatabaseopen;alterdatabaseopen*ERRORatline1:ORA-01507:databasenotmounted因为我们处于数据库的nomount状态,想要open不能跨越mount台阶,所以必须先mount数据库。SQL>alterdatabasemount;启动至U
44、mount状态Databasealtered.SQL>alterdatabaseopen;启动到open状态Databasealtered.SQL>selectvaluefromv$spparameterwherename='control_files'验证参数文件中control_files选项的值VALUE/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctl/dbocfs/gfdb/control03.ctlSQL>select*fromv$controlfile;验证现在内存中的控制文件个数SQL>
45、;select*fromv$controlfile;STATUSNAMEIS_BLOCK_SIZEFILE_SIZE_BLKS/dbocfs/gfdb/control01.ctlNO16384932/dbocfs/gfdb/control02.ctlNO16384932/dbocfs/gfdb/control03.ctlNO16384932日志文件日志文件是二进制文件它记录了数据文件的变化Select*fromv$logfile;查看日志文件的位置等信息SQL>Select*fromv$logfile;GROUP#STATUSTYPEMEMBERIS1 STALEONLINE/dbocf
46、s/gfdb/redo01.logNO2 ONLINE/dbocfs/gfdb/redo02.logNO3 ONLINE/dbocfs/gfdb/redo03.logNOONLINE/dbocfs/gfdb/redo04.logNO日志文件是物理存在的文件它的组织模式是组组是逻辑的组织方式每个实例至少要两个组Select*fromv$log;Select*fromv$log_history;查看日志组的信息SQL>Select*fromv$log;GROUP#THREAD#SEQUENCE#BYTESMEMBERSARCSTATUSFIRST_CHANGE#FIRST_TIMESQL&g
47、t;selectto_char(FIRST_TIME,'yyyy/mm/dd')to_char(FIRST_TIME,'yyyy/mm/dd');day,count(*)fromv$log_historygroupby11329524288001YESINACTIVE1.2381E+1316-APR-1221330524288001NOCURRENT1.2381E+1316-APR-12327552428801YESINACTIVE1.2381E+1316-APR-1242765242881NOCURRENT1.2381E+1316-APR-12DAYCOUNT
48、(*)2012/03/2792012/03/2992012/04/05102012/04/09102012/03/3192012/04/0392012/04/11102012/03/261132012/04/0192012/03/2892012/04/029DAYCOUNT(*)2012/04/0892012/04/1372012/04/1532012/04/1642012/03/3092012/04/04112012/04/0692012/04/1442012/04/07102012/04/10102012/04/121022rowsselected.该语句可以查看每天产生日志的多少,估计我
49、们应用的日志量,可以估计归档的大小。组和组问是平等的关系实例同一时刻只能向一个组写入日志一个组写满后,写下一个组这个过程叫切换(switch)自动切换:日志写满oracle会写下一个组手工切换:altersystemswitchlogfile;日志组的切换要产生检查点(checkpoint)检查点有增量检查和完全检查两种完全检查1. 一致性shutdown数据库的时候。Altersystemcheckpoint;结果为:所有的脏数据块都写入数据文件,改写文件的头除了完全检查点以外的所有其它检查点都是增量检查点,增量检查是查找检查点列表,将某一个时间点做标记,该时间点前的脏块写入到数据文件,增量
50、检查不一定马上执行,根据我们脏的块多少来决定,这就出现了检查点滞后的情况。参数log_checkpoints_to_alert决定是否将检查点的信息写入报警日志。默认为假,不写日志。我们可以将这个参数改为真,可以看到检查点的信息。日志的部分信息如下BeginninglogswitchcheckpointuptoRBA0x14b.2.10,SCN:12380769291235Thread1advancedtologsequence331Currentlog#1seq#331mem#0:/dbocfs/gfdb/redo01.logSystemchangenumber(SCN),数据库的更改号码,
51、如果你不懂SCNM绝对不懂数据库,这句话一点都不夸张,因为数据库中的一切运转都离开不了SCNSCN的地位在数据库中就向我们生活中的时间一样,你觉察不到,但乂处处离不开。SC昭在于数据块的块头,文件头,也可以建立特殊的表,使SCN#在于表的行头,SC的在内存中,它是维护数据库的运行基本保证。备份和恢复更是根据SCN来决定我们要重做那些操作和交易。SCNB勺发生机制在不同版本会不同,我们也不用去关心,我们可以理解为数据库的一切进程操作都要有一个时间的标志,这就是SCNselect,update,delete,insert数据库的一切操作都有SCN数据库内的任何操作都产生SCNSCN小的就是先操作的
52、,SCN大的就是后操作的,数据库使用SCM维护因果关系。我们可以将SCNS解为数据库的内部时间。SCN勺最大值为SQL>selectto_number('ffffffffffff','xxxxxxxxxxxxxxxxxxxxxxxxxxxx')fromdual;TO_NUMBER('FFFFFFFFFFFF','XXXXXXXXXXXXXXXXXXXXXXXXXXXX')2.8147E+14为什么最大值是'ffffffffffff'呢?SQL>altersystemdumpdatafile1block2
53、;Systemaltered.我们随便将一个数据文件的块转存到udump的跟踪文件.Startdumpdatablockstsn:0file#:1minblk2maxblk2buffertsn:0rdba:0x00400002(1/2)frmt:0x02chkval:0x2851type:0x1d=KTFBBitmappedFileSpaceHeaderHexdumpofblock:st=0,typ_found=1我们看到了吧.最大就是12位的十六进制数值.数据文件头会保存一个特殊的SCNSTOPSC曲录在数据文件头上。当数据库处在打开状态时,STOPSCNi设成最大值0xffff.fffff
54、fff。在数据库正常关闭过程中,stopscn被设置成当前系统的最大SCN值。在数据库打开过程中,Oracle会比较各文件的STOPSCNfficheckpointSCN,如果值不一致,表明数据库先前没有正常关闭,需要做恢复。查看数据库当前scnselectcurrent_scnfromV$database;(10g才有)selectdbms_flashback.get_system_change_number()fromdual;(9i以后才有)检查点的SCN检查点是一个特殊的SCN小于该号码的块都已经存盘了,数据库的恢复只需要恢复该SCN#码以后的操作就可以了。SCW码和物理的时间有对照表
55、。SMON_SCN_TIMEselect*fromSMON_SCN_TIME;这个表在每个版本的结果会不同,9I的信息较少,10G的信息更多一些。selectname,checkpoint_change#fromv$datafile;NAMECHECKPOINT_CHANGE#/dbocfs/gfdb/system01.dbf12380769470672/dbocfs/gfdb/undotbs01.dbf12380769470672/dbocfs/gfdb/sysaux01.dbf12380769470672/dbocfs/gfdb/undotbs02.dbf12380769470672/db
56、ocfs/gfdb/users01.dbf12380769470672/dbocfs/gfdb/STRMADMIN01.dbf123807694706726rowsselected.日志记录的范围colfirst_change#format999999999999999SQL>selectGROUP#,sequence#,STATUS,FIRST_CHANGE#,to_char(FIRST_TIME,'yyyy/mm/dd:hh24:mi:ss')timefromV$log;GROUP#SEQUENCE#STATUSFIRST_CHANGE#TIME1 331CURREN
57、T123807692912352012/04/16:14:42:552 330INACTIVE123807692860552012/04/16:13:57:353 75INACTIVE123807692033162012/04/16:08:00:544 76CURRENT123807692860592012/04/16:13:57:3675号日志记录了12380769203316到12380769286059之间的数据库变化。76号日志记录了12380769286059到123807692860556之间的数据库变化330号日志记录了12380769286055到12380769291235之
58、间的数据库变化331号日志记录了12380769291235到最后的SCN问的数据库变化。实验9:日志文件管理和nologging的实现该实验的目的是验证我们学习的日志文件的原理,管理维护日志文件.如何减少日志的产生.增加组查看当前日志文件的路径Selectmemberfromv$logfile;增加组alterdatabaseaddlogfilegroup5'/dbocfs/gfdb/redo05.log'size50m;如果不指定组号,数据库自动分配组号验证Select*fromv$log;Select*fromv$logfile;组内的日志文件叫做成员同组内的成员是镜像关系,大小相等使用成员的目的是安全一个组内有一个成员可以使用,该组就可用一般要把不同的成员放在不同的盘上一个组内成员的最大成员数由控制文件决定。增加成员到现有的组alterdatabaseaddlogfilemembei7d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保育保教评估指南
- 小龙虾产业介绍
- 青少年运动训练
- 太阳风暴科普讲解
- 涂料企业安全管理介绍
- 无痛人工流产科普
- 数字化种植导板
- 建设工程代建协议书
- 担保协议书模板
- 2025-2026学年安徽省马鞍山市初三历史上册期中考试试卷及答案
- 社区眼科知识培训课件
- 2025贵州黔南州荔波县面向社会招聘城市社区工作者7人考试参考试题及答案解析
- 银行从业资格2025年法律法规模考训练冲刺试卷(含答案)
- 2025年宁夏中考英语试卷附答案
- 2025年教育系统学校中层后备干部选拔考试题(含答案)
- 塑料吹瓶生产工艺技术指导手册
- 第11课西汉建立和“文景之治”课件-七年级历史上册新教材
- 2025年成考英语试卷及答案
- 2025年专升本计算机基础模拟试题及答案(操作系统深度解析)
- 2025年上海市大数据中心工作人员公开招聘考试参考题库及答案解析
- 容貌焦虑讲解课件
评论
0/150
提交评论