版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、!) O数据库基础20XX年XX月多年的企业咨询豉问经验.经过实战验证可以落地机行的卓越管理方案,值得您下载拥有Oracle 数据库基础数据库是我们安装完产品后建立的,可以在同一台主机上存在8i,9i,10g,11g 等多个数据库产品, 一套产品可以建立多个数据库, 每个数据库是独立的。 每个数据库都有自己的全套相关文件,有各自的控制文件、数据文件、重做日志文件、参数文件、归档文件、口令文件等等。其中控制文件、数据文件、重做日志文件、跟踪文件及警告日志( tracefiles,alertfiles )属于数据库文件;参数文件( parameterfile )口令文件( passwordfile
2、 )是非数据库文件我们的表存储在数据库中数据库不能直接读取我们通过实例( instance) 来访问数据库数据库实例实例由内存和后台进程组成实例是访问数据库的方法初始化参数控制实例的行为一个实例只能连接一个数据库启动实例不需要数据库产品安装好有初始化参数文件就可以启动实例与是否存在数据库无关实例内存分为SGA和PGASGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle 服务器所驻留的计算机的实际内 存中得以分配,如果实际内存不够再往虚拟内存中写。PGA : 包含单个服务器进程或单个后台进程的数据和控制信息, 与几个进程共
3、享的SGA正相反,PGA是只被一个进程使用的区域,PGA在创建进程时分配,在终止进程时回收.后台进程是实例和数据库的联系纽带分为核心进程和非核心进程当前后台进程的查看SQL>selectname,descriptionfromv$bgprocesswherepaddr<>'00'NAMEDESCRIPTIONPMONprocesscleanupDIAGdiagnosibilityprocessPSP0processspawner0LMONglobalenqueueservicemonitorLMD0globalenqueueservicedaemon0LMS0
4、globalcacheserviceprocess0LMS1globalcacheserviceprocess1MMANMemoryManagerDBW0dbwriterprocess0ARC0ArchivalProcess0ARC1ArchivalProcess1NAMEDESCRIPTIONLGWRRedoetc.LCK0LockProcess0CKPTcheckpointSMONSystemMonitorProcessRECOdistributedrecoveryCJQ0JobQueueCoordinatorQMNCAQCoordinatorMMONManageabilityMonito
5、rProcessMMNLManageabilityMonitorProcess2 20rowsselected.也可以在操作系统下查看oracledb-rac1db01$ps-ef|grepora_ oracle85881007:53?00:00:00ora_j001_gfdb1 oracle108161004:58?00:00:08ora_j000_gfdb1 oracle1699810Apr18?00:00:00ora_pmon_gfdb1 oracle1701710Apr18?00:00:00ora_diag_gfdb1 oracle1703010Apr18?00:00:00ora_ps
6、p0_gfdb1 oracle1704210Apr18?00:00:00ora_lmon_gfdb1 oracle1705710Apr18?00:00:00ora_lmd0_gfdb1oracle1707710Apr18?00:00:00ora_lms1_gfdb1 oracle1708110Apr18?00:00:00ora_mman_gfdb1 oracle1708310Apr18?00:00:00ora_dbw0_gfdb1 oracle1708510Apr18?00:00:00ora_lgwr_gfdb1 oracle1708710Apr18?00:00:00ora_ckpt_gfdb
7、1 oracle1708910Apr18?00:00:03ora_smon_gfdb1 oracle1709110Apr18?00:00:00ora_reco_gfdb1 oracle1709310Apr18?00:00:06ora_cjq0_gfdb1oracle1709510Apr18?00:00:02ora_mmon_gfdb1 oracle1709710Apr18?00:00:00ora_mmnl_gfdb1 oracle1709910Apr18?00:00:00ora_d000_gfdb1 oracle1710110Apr18?00:00:00ora_s000_gfdb1 oracl
8、e1714210Apr18?00:00:01ora_lck0_gfdb1 oracle175177593007:55pts/200:00:00grepora_ oracle2618210Apr18?00:00:00ora_arc0_gfdb1 oracle2618410Apr18?00:00:00ora_arc1_gfdb1oracle2652310Apr18?00:00:00ora_qmnc_gfdb1 oracle2715610Apr18?00:00:00ora_q000_gfdb1 oracle2717210Apr18?00:00:00ora_q001_gfdb1 oracle29308
9、1005:53?00:00:00ora_q002_gfdb1 oracle308781007:42?00:00:00ora_q004_gfdb1oracle318821007:26?00:00:00ora_q003_gfdb1核心进程,必须存在,有一个终止,所有数据库进程全部终止非核心进程完成数据库的额外功能归档调度作业Databasewriter(DBWn)数据库写进程将数据库的变化写入到文件最多20个DBW0-DBW9DBWa-DBWj应该和cpu的个数对应由参数 DB_WRITER_PROCESSES描述因为dbwr是哪里来的数据写回到哪里,所以可以多个进程一起工作。Logwriter(
10、LGWR)日志写进程将日志缓冲写入到磁盘的日志文件只有一个,因为日志写是顺序写,所以一个就可以了,因为是顺序写所以也不能为多个。Checkpoint(CKPT)检查点进程存盘点触发dbwn ,写脏数据块更新数据文件头,更新控制文件Systemmonitor(SMON)系统监测进程 实例崩溃时进行自动恢复消除作废的排序临时段Processmonitor(PMON)进程监测进程消除死进程重新启动部分进程监听的自动注册我们连接到数据库其实是连接到实例这个过程叫建立一个会话实验1 :数据库的最高帐号sys的操作系统认证模式该实验的目的是进入数据库的最高帐号sys.掌握操作系统认证的两个条件.操作系统认
11、证,因为数据库是在 OS上的软件能进入ORACLE帐号,就可以进入 到数据库的最高帐号。Conn/assysdbaShowuser无论数据库处于何种状态,sys用户总可以进入到数据库因为sys是外部操作系统认证的操作系统认证的两条件。一、操作系统的用户要属于dba组;二、和数据库问的连接是安全的。实验2 :数据库的最高帐号sys的密码文件认证模式该实验的目的是使用密码文件的认证方式进入到最高sys帐号,如何建立和维护密码文件.在远程,或者操作系统认证不可以使用的情况下,请使用密码文件来认证sys用户 在unix下密码文件路径/oracle_home/dbs密码文件名称orapw+sidsid
12、为实例名称,查看实例名称selectinstance_namefromv$instance;select'orapw'|instance_namefromv$instance;密码文件必须存在,即使你以操作系统认证, 因为参数remote_login_passwordfile 默认的值是要使用密码文件的, 除非你将 remote_login_passwordfile 的值改为 none,这样就禁止了密码文件的使用,你想进入到 sys 用户必须使用操作系统认证模式。密码文件丢失必须重新建立Orapwd 为 oracle 的命令,用于建立密码文件,命令的格式如下Orapwdfile
13、=.Password=密码文件中含有sys 用户的密码建立密码文件的步骤1 .确定实例的名称2 .确定密码文件的路径和名称3 .停止数据库,删除老的密码文件4 .在操作系统下运行orapwdfile=/dbocfs/gfdb/orapwgfdb1password=manager1其中 gfdb1为实例的名称, manager1 为密码,是sys 用户的密码5 .连接的sysConnsys/maanger1assysdba显示为连接的空闲实例,因为数据库还没有启动。但这并没有证明你使用了密码文件.SQL>connsys/addasassysdba Connected.SQL>conn
14、asfdsf/adafassysdbaConnected.SQL>conn/assysdbaConnected.SQL>connsys/manager1assysoperConnected.SQL>connsys/adsssdassysoperERROR:ORA-01031:权限不足原因很简单,因为操作系统认证的优先级高于密码文件.所以你只要写assysdba 就可以进入,但sysoper不能使用操作系统来认证,它只能使用密码文件认证,上 面的实验证明managed是正确的密码.6 .启动数据库startup建立密码文件要重新启动数据库,因为内存中保留有原来的密码.初始化参数
15、remote_login_passwordfile=none则数据库设置为禁止使用密码文件,只能使用操作系统认证登录到最高的老大用户.即使你以密码认证连接到数 据库,也不能启动和停止数据库,报权限不足.实验3:数据库的两种初始化参数文件该实验的目的是认识参数文件,两类参数文件的相互转换.如何修改参数.初始化参数文件是描述实例的行为的文件,文件大小很小.初始化参数文件在unix操作系统中存在于oracle_home/dbs 目录下.纯文本参数文件修改参数的时候直接编辑文件,再保存就可以了 .Initsid.ora二进制参数文件,必须存在于服务器端.使用命令来修改.spfilesid.oraser
16、verparameterfile纯文本参数文件和二进制参数文件的差别1。修改参数的方式不同2。优先级不同3。是否动态存储修改的参数4。存在的位置不同纯文本可以存在于客户端二进制文件一定存在于server端5.rman可以备份二进制参数文件,不能备份纯文本参数文件.验证现在数据库使用的参数文件类型,我们一定要知道我们使用的是什么类型的参数文件,涉及到我们如何修改参数的手段.selectdistinctISSPECIFIEDfromv$spparameter;如果含有true就是使用二进制参数文件如果只有false就是使用的纯文本参数文件SQL>selectdistinctisspecifi
17、edfromv$spparameter;ISSPECIFIEDTRUEFALSE因为上面的选择有true,所以这个数据库使用的是二进制参数文件.我们修改参数要使用命令而不是编辑文件,千万不要编辑二进制参数文件,你编辑以后会报ora-00600 的错误.SQL>selectisspecified,count(*)fromv$spparametergroupbyisspecified;ISSPECCOUNT(*)TRUE31FALSE232上面的查询表示有31个参数存在于二进制参数文件,213个参数为默认值.两类参数文件的相互转换Createpfilefromspfile;Createspf
18、ilefrompfile;上面的命令在连接的sys就可以使用,而不必启动数据库.当我们转换不了的时候请将数据库停止,再转换两重新启动数据库,再验证.参数文件的优先级Spfilesid.oraSpfile.oraInitsid.oraSQL>colvaluefora40SQL>selectname,valuefromv$spparameterwhereisspecified='TRUE'NAMEVALUEprocesses400sessions445sga_target1610612736control_files/dbocfs/gfdb/control01.ctlc
19、ontrol_files/dbocfs/gfdb/control02.ctlcontrol_files/dbocfs/gfdb/control03.ctldb_block_size8192patible10.2.0.3.0log_archive_dest_1LOCATION=/dbocfs/archivedb_file_multiblock_read_count16cluster_databasetrueNAMEVALUE cluster_database_instances2thread2thread1instance_number1instance_number2undo_manageme
20、ntAUTOundo_tablespaceUNDOTBS2undo_tablespaceUNDOTBS1 remote_login_passwordfileexclusive db_domaindispatchers(PROTOCOL=TCP)(SERVICE=gfdbXDB) NAMEVALUE remote_listenerLISTENERS_GFDBjob_queue_processes10 background_dump_dest/home/oracle/app/oracle/admin/gfdb/bdump user_dump_dest/home/oracle/app/oracle/
21、admin/gfdb/udumpcore_dump_dest/home/oracle/app/oracle/admin/gfdb/cdumpaudit_file_dest/home/oracle/app/oracle/admin/gfdb/adumpdb_namegfdbopen_cursors300pga_aggregate_target95944704031rowsselected.我们修改参数有三个选项SQL>showparameterpga_aggregate_targetNAMETYPEVALUE pga_aggregate_targetbiginteger915MSQL>
22、;altersystemsetpga_aggregate_target=950mscope=memory;只修改内存的值,不改变参数文件的设置,下回再次启动数据库时值还是老的,能修改的前提是该参数可以动态修改,如果是静态参数只能使用下面的方法.Systemaltered.SQL>altersystemsetpga_aggregate_target=950mscope=spfile;只修改二进制文件,而不修改内存,静态参数只能先改文件再重新启动数据库.Systemaltered.SQL>altersystemsetpga_aggregate_target=950mscope=both
23、;同时修改二进制文件和内存,该参数必须是可以动态修改的.Systemaltered.SQL>altersystemsetpga_aggregate_target=950m;如果没有指明修改哪里,默认为参数文件和内存同时修改,默认就是both.Systemaltered.我们可以从参数文件中删除一个参数,当然你也可以先转化为纯文本再转化为二 进制参数文件. altersystemresettrace_enabledscope=spfilesid='*'selectname,valuefromv$spparameterwhereISSPECIFIED='TRUE
24、9;orderby1;验证一下,果然少了一行,下回启动后该参数就按默认值来处理.二进制参数文件在修改的时候有的时候会报错误,我们可以先该文本文件后再建立二进制参数文件.我估计是bug,我们原谅它了,但确实对我们的学习造成一定 的困惑.如果你认为参数配置的没有问题,但就是不让修改,那就先改纯文本,再变 为二进制.总的来说二进制的参数文件好于纯文本,你到底选择哪种类型的参数文 件都没有关系.实验4:启动数据库的三个台阶nomount,mount,open该实验的目的是细化启动数据库的三个步骤,彻底的明白还要等到学习完冷备份之后.启动数据库到nomount状态的条件如下.有环境变量.存在正确的密码文
25、件和参数文件有足够的内存参数文件中描述的路径必须存在数据库产品软件安装正确connsys/sysassysdba Shutdownabort;Startup nomount;selectinstance_name,statusfromv$instance;启动数据库到第一个台阶nomount状态做了如下的工作.1 .读参数文件2 .分配内存3 .启动后台进程4 .初始化部分v$视图将数据库带到mount状态selectvaluefromv$spparameterwherename='control_files'Alterdatabasemount;Mount数据库的过程是读参数
26、文件中描述的控制文件,校验控制文件的正确性, 将控制文件的内容读入到内存,mount是挂接的意思,是操作系统中的概念.一旦 mount之后,就是将一个没有意义的实例和一个数据库发生了联系.因为实例是 空壳.没有任何数据库和该实例发生关系,我们可以理解为实例是水泵,放到哪个 水塘里就会抽取哪里的数据,实例是通用的.mount的意思是将一个通用的水泵 放入到指定的水塘.mount是读控制文件,控制文件中有数据文件和日志文件的 信息.selectinstance_name,statusfromv$instance;打开数据库Alterdatabase open;读控制文件中描述的数据文件验证数据文件
27、的一致性,如果不一致,使用日志文件将数据库文件恢复到一致的状 态.数据库open后,普通用户才可以访问数据库 用户的表才为可见只读方式open数据库Alterdatabaseopenreadonly;selectOPEN_MODEfromv$database;默认的 open 方式为 readwrite想改readonly为readwrite必须重新启动数据库我们现在回想一下数据库启动的三个台阶,我们先读的是参数文件,参数文件可以有我们来编写.读完参数文件后又读了控制文件,控制文件描述了数据文件和日志文件的信息 ,如果控制文件丢失可以重新建立,最后是读数据文件.数据文件里才存放了我们的数据.数
28、据库将启动分为三个台阶,目的是我们可以准确的知道哪里有问题 ,迅速的排除.有点象老鼠拖木钎,大头在后面.由最开始的一个1k 的参数文件 ,最后到几个t 的大型数据库.当我们只打startup 而不加任何参数的时候.默认是到 open, 等于 startupopen;SQL>startupORACLEinstancestarted.TotalSystemGlobalArea167772160bytesFixedSize1247900bytesVariableSize75498852bytesDatabaseBuffers88080384bytesRedoBuffers2945024byte
29、sDatabasemounted.Databaseopened.我们从屏幕显示的结果可以清楚的看出,有三个台阶.还有一个命令是startupforce 强制启动数据库,等于强制停止数据库再启动数据库.实验 5 :停止数据库的四种模式该实验的目的是区分不同的停止数据库的方式.四种停止数据库的方式各不相同,用于不同的情况,一般我们采用shutdownimmediate 方式停止数据库,下面是每种停止数据库方式的差别 .ShutdownTRANSACTIONALShutdownIMMEDIATEShutdownabortShutdownNORMAL新的会话不接受等待非活动的会话结束等待事务结束产生检
30、查点停止数据库ShutdownTRANSACTIONAL新的会话不接受不等待非活动的会话结束等待事务结束产生检查点停止数据库Shutdownimmediate新的会话不接受不等待非活动的会话结束不等事务物结束产生检查点停止数据库Shutdownabort新的会话不接受 不等待非活动的会话结束不等待事务结束不产生检查点停止数据库一致性shutdown ,产生检测点ShutdownNORMALShutdownTRANSACTIONALShutdownIMMEDIATE数据库再次启动的时候不要恢复不一致性shutdown ,不产生检测点ShutdownabortStartupforceInstanc
31、e崩溃(停电)数据库再次启动的时候需要恢复,自动的,透明的。实验6:查找你想要的数据字典该实验的目的是了解什么是数据字典,字典的来源和如何查找到我们关心的数据 字典.数据字典是oracle的核心分为两大类存在于system 表空间 $结尾的基本表Dba_.,all_ .,user_ 视图存在于内存中X$.的虚表V$的动态性能视图数据字典是哪里来的呢?是我们建立数据库的时候运行脚本建立的.%oracle_home%rdbmsadmincatalog.sql;脚本当中含有建立数据字典的语句.而丫$的字典是数据库在启动实例的时候初始化的.数据字典的使用数据库自己使用字典获取信息数据库自动维护我们查看
32、字典来获得数据库的有关信息基本表,是字典得基本表,在建立system表空间的时候建立的.selecttable_name,ownerfromdba_tableswheretable_namelike'%$'andow ner='SYS'视图,是在建立数据库以后运行catalog.sql;脚本建立的.查看哪些字典中含有TABLE关键字,一定要大写.selecttable_namefromdictwheretable_namelike'%TABLE%'查看哪些字典中含有VIEW关键字,一定要大写.selecttable_namefromdictwhe
33、retable_namelike'%VIEW%'查看哪些字典中的一列含有FILE#这一列,一定要大写.selecttable_namefromdict_COLUMNSWHERECOLUMN_NAME='FILE#'查看所有的乂$和丫$的表的信息.SELECT*FROMV$FIXED_TABLE;三大类视图,*代表可以替换为某个单词.Dba *All*User *我们拿tables说明上面得含义.访问的表.dba tables其中user tables 是查看当前用户所拥有的表.all tables 是查看当前用户可以 是查看当前整个数据库拥有的表,但是你得有权限
34、,如果没 有权限会报没有这个表.控制文件控制文件是二进制文件(不会超过 100m , 一般是几m大小) 控制文件记录了数据库的结构和行为 在mount 时候读 在数据库open时一直使用 丢失需要恢复 相关字典SQL>Select*fromv$controlfile;STATUSNAMEIS BLOCK SIZEFILE SIZE BLKS/dbocfs/gfdb/control01.ctlNO16384932 /dbocfs/gfdb/control02.ctlNO16384932 /dbocfs/gfdb/control03.ctlNO16384932 selectCONTROLFI
35、LE_SEQUENCE#fromv$database;selectTYPE,RECORD_SIZE,RECORDS_TOTAL,RECORDS_USEDfromV$CONTROLFILE_RECORD_SECTION;selectvaluefromV$spparameterwherename='control_files'控制文件的位置在参数文件中描述control_files= file1 , file2 多个控制文件是镜像的关系最多八个,最少一个实验 7 :减少控制文件的个数该实验的目的是初步认识如何修改参数文件,如何减少控制文件.减少控制文件, 实验的目的, 有一个控制文
36、件损坏, 我们要将损坏的控制文件剔除。1 .修改参数文件,并验证2 .停止数据库3 .启动数据库4 .验证,查看 v$controlfileSQL>select*fromv$controlfile;验证现在内存中的控制文件个数STATUSNAMEIS_BLOCK_SIZEFILE_SIZE_BLKS /dbocfs/gfdb/control01.ctlNO16384932/dbocfs/gfdb/control02.ctlNO16384932/dbocfs/gfdb/control03.ctlNO16384932SQL>altersystemsetcontrol_files=
37、9;/dbocfs/gfdb/control01.ctl','/dbocfs/gfdb/control02.ctl'scope =spfile;Systemaltered.验证参数文件已经被修改SQL>selectvaluefromv$spparameterwherename='control_files'VALUE/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctl验证内存中的值没有被修改,因为 control_files 是静态参数,想要改变必须重新启动数据库。SQL>select*fr
38、omv$controlfile;STATUSNAMEIS_BLOCK_SIZEFILE_SIZE_BLKS/dbocfs/gfdb/control01.ctlNO16384932/dbocfs/gfdb/control02.ctlNO16384932/dbocfs/gfdb/control03.ctlNO16384932SQL>startupforceORACLEinstancestarted.TotalSystemGlobalArea1610612736bytesFixedSize1262044bytesVariableSize687869476bytesDatabaseBuffers
39、905969664bytesRedoBuffers15511552bytesDatabasemounted.Databaseopened.SQL>select*fromv$controlfile;验证内存被修改了VALUE/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctlSQL>selectvaluefromv$spparameterwherename='control_files'验证参数文件中的值和内存中的值相同VALUE/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/contr
40、ol02.ctl如果你在启动的时候看到 ora-00205 错误,说明你修改的参数不正确,可能是路径写的不对或者在路径前面多写了空格, 请重新修改为正确的值再重新启动数据库。实验 8 :增加控制文件的个数实验的目的是增加控制文件的个数, 1 到 8 个,保护控制文件。认识控制文件的一致性 .什么是控制文件的版本.控制文件的结构.增加控制文件1 .修改参数文件2 .停止数据库3 .复制控制文件4 .启动数据库5 .验证,查看v$controlfile修改二进制的初始化参数文件中的 control_files 选项SQL>altersystemsetcontrol_files='/d
41、bocfs/gfdb/control01.ctl','/dbocfs/gfdb/control02.ctl','/dboc fs/gfdb/control03.ctl'scope=spfile;Systemaltered.SQL>selectvaluefromv$spparameterwherename='control_files'验证参数文件已经被修改VALUE/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctl/dbocfs/gfdb/control03.ctlSQL>
42、select*fromv$controlfile;验证现在内存中的控制文件个数STATUSNAMEIS_BLOCK_SIZEFILE_SIZE_BLKS/dbocfs/gfdb/control01.ctlNO16384932 /dbocfs/gfdb/control02.ctlNO16384932重新启动数据库,使修改的参数起作用SQL>startupforce;ORACLEinstancestarted.TotalSystemGlobalArea1610612736bytesFixedSize1262044bytesVariableSize687869476bytesDatabaseB
43、uffers905969664bytesRedoBuffers15511552bytesORA-00214:controlfile'/dbocfs/gfdb/control01.ctl'version9178inconsistentwithfile'/dbocfs/gfdb/ control03.ctl'version9164因为 CONTROL03.CTL 刚才脱离了数据库,没有参加修改, CONTROL01.CTL和 CONTROL02.CTL 已经变化了, 二 CONTROL03.CTL 没有变化, 所以时间戳不正确了。SQL>hostcp/dboc
44、fs/gfdb/control01.ctl/dbocfs/gfdb/control03.ctl 使用操作系统的命令将老的控制文件覆盖SQL>alterdatabaseopen;alterdatabaseopen*ERRORatline1:ORA-01507:databasenotmounted因为我们处于数据库的 nomount 状态,想要open 不能跨越 mount 台阶,所以必须先 mount 数据库。SQL>alterdatabasemount;启动到 mount 状态Databasealtered.SQL>alterdatabaseopen;启动到 open 状态D
45、atabasealtered.SQL>selectvaluefromv$spparameterwherename='control_files'验证参数文件中 control_files 选项的值VALUE/dbocfs/gfdb/control01.ctl/dbocfs/gfdb/control02.ctl/dbocfs/gfdb/control03.ctlSQL>select*fromv$controlfile;验证现在内存中的控制文件个数SQL>select*fromv$controlfile;STATUSNAMEIS_BLOCK_SIZEFILE_SI
46、ZE_BLKS/dbocfs/gfdb/control01.ctlNO16384932/dbocfs/gfdb/control02.ctlNO16384932/dbocfs/gfdb/control03.ctlNO16384932日志文件日志文件是二进制文件它记录了数据文件的变化Select*fromv$logfile;查看日志文件的位置等信息SQL>Select*fromv$logfile;GROUP#STATUSTYPEMEMBERIS_ 1STALEONLINE/dbocfs/gfdb/redo01.logNO2ONLINE/dbocfs/gfdb/redo02.logNO3ONL
47、INE/dbocfs/gfdb/redo03.logNO4ONLINE/dbocfs/gfdb/redo04.logNO日志文件是物理存在的文件它的组织模式是组组是逻辑的组织方式每个实例至少要两个组Select*fromv$log;Select*fromv$log_history;查看日志组的信息SQL>Select*fromv$log;GROUP#THREAD#SEQUENCE#BYTESMEMBERSARCSTATUSFIRST_CHANGE#FIRST_TIME11329524288001YESINACTIVE1.2381E+1316-APR-1221330524288001NOC
48、URRENT1.2381E+1316-APR-12 327552428801YESINACTIVE1.2381E+1316-APR-1242765242881NOCURRENT1.2381E+1316-APR-12SQL>selectto_char(FIRST_TIME,'yyyy/mm/dd')day,count(*)fromv$log_historygroupbyto_char(FIRST_TIME,'yyyy/mm/dd');DAYCOUNT(*)2012/03/2792012/03/2992012/04/05102012/04/09102012/0
49、3/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/144 2012/04/07102012/04/1010 2012/04/121022rowsselected.该语句可以查看每天产生日志的多少, 估计我们应用的日志量, 可以估计归档的大小。组和组间是平等的关系实例同一时刻只能向一个组写入日志一个组写满后,
50、写下一个组这个过程叫切换( switch )自动切换:日志写满oracle 会写下一个组手工切换: altersystemswitchlogfile;日志组的切换要产生检查点 (checkpoint)检查点有增量检查和完全检查两种完全检查1 .一致性 shutdown 数据库的时候。2 .Altersystemcheckpoint;结果为:所有的脏数据块都写入数据文件,改写文件的头除了完全检查点以外的所有其它检查点都是增量检查点,增量检查是查找检查点列表,将某一个时间点做标记,该时间点前的脏块写入到数据文件, 增量检查不一定马上执行, 根据我们脏的块多少来决定,这就出现了检查点滞后的情况。参数
51、 log_checkpoints_to_alert 决定是否将检查点的信息写入报警日志。默认为假,不写日志。我们可以将这个参数改为真,可以看到检查点的信息。日志的部分信息如下BeginninglogswitchcheckpointuptoRBA0x14b.2.10,S:12380769291235Thread1advancedtologsequence331Currentlog#1seq#331mem#0:/dbocfs/gfdb/redo01.logSystemchangenumber(S) , 数据库的更改号码, 如果你不懂 S 就绝对不懂数据库,这句话一点都不夸张,因为数据库中的一切运转
52、都离开不了 S, S 的地位在数据库中就向我们生活中的时间一样,你觉察不到,但又处处离不开。 S 存在于数据块的块头,文件头,也可以建立特殊的表,使S 存在于表的行头, S 存在内存中, 它是维护数据库的运行基本保证。 备份和恢复更是根据S 来决定我们要重做那些操作和交易。 S 的发生机制在不同版本会不同,我们也不用去关心,我们可以理解为数据库的一切进程操作都要有一个时间的标志,这就是S 。select,update,delete,insert 数据库的一切操作都有S。数据库内的任何操作都产生 S。 S 小的就是先操作的, S 大的就是后操作的,数据库使用 S 来维护因果关系。我们可以将S 理
53、解为数据库的内部时间。S 的最大值为SQL>selectto_number('ffffffffffff','xxxxxxxxxxxxxxxxxxxxxxxxxxxx')fromdual;TO_NUMBER('FFFFFFFFFFFF','XXXXXXXXXXXXXXXXXXXXXXXXXXXX')2.8147E+14为什么最大值是'ffffffffffff' 呢 ?SQL>altersystemdumpdatafile1block2;Systemaltered.我们随便将一个数据文件的块转存到 udum
54、p 的跟踪文件.Startdumpdatablockstsn:0file#:1minblk2maxblk2buffertsn:0rdba:0x00400002(1/2)s:0x0b42.9f1f55dbseq:0x02flg:0x04tail:0x55db1d02frmt:0x02chkval:0x2851type:0x1d=KTFBBitmappedFileSpaceHeaderHexdumpofblock:st=0,typ_found=1我们看到了吧.最大就是12 位的十六进制数值.数据文件头会保存一个特殊的 SSTOPS 记录在数据文件头上。当数据库处在打开状态时, STOPS 被设成最
55、大值Oxffff.ffffffff 。在数据库正常关闭过程中,stops被设置成当前系统的最大 S值。在数据库打开过程中, Oracle 会比较各文件的 STOPS 和 checkpointS , 如果值不一致,表明数据库先前没有正常关闭,需要做恢复。查看数据库当前sselectcurrent_sfromV$database;(10g 才有 )selectdbms_flashback.get_system_change_number()fromdual;( 9i 以后才有)检查点的S,检查点是一个特殊的S,小于该号码的块都已经存盘了,数据库的恢复只需要恢复该S 号码以后的操作就可以了。S 号码
56、和物理的时间有对照表。 SMON_S_TIMEselect*fromSMON_S_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/dbocfs/gfdb/users01.dbf12380769470672/dbocfs/gfdb/STRMADMIN01.dbf123807694706726rowsselec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高级城市规划师资格考试《城市规划实务》备考题库及答案解析
- 2025年执业医师《外科学综合》备考题库及答案解析
- 商铺物业费代缴协议合同2025年范本
- 商铺电路改造安全协议2025
- 软件开发合同协议2025年源代码归属
- 人工智能模型训练服务合同协议2025
- 汽车租赁服务协议2025年
- 2025年人力资源三支柱模型(COE、SSC、BP)应用考试试题及答案
- 2025年冲突管理与有效沟通考试试题及答案
- 大型泥芯销售合同范本
- 靶向药的副作用及处理
- 快递保证金合同协议
- 2025-2030中国BIM软件行业市场发展趋势与前景展望战略研究报告
- 定制防火门合同协议
- 原料生产车间运行安全生产培训
- 短视频在教育中的创新应用及发展前景
- 2025年个人参加巡察工作总结心得(二篇)
- 基于物联网的智能设备销售合同
- 【MOOC】《研究生英语科技论文写作》(北京科技大学)中国大学MOOC慕课答案
- 2024年3月天津第一次高考英语试卷真题答案解析(精校打印)
- 初中九年级英语上学期期中考前测试卷(人教版)含答案解析
评论
0/150
提交评论