首页 > 其他分享 >ORALCE DBA学习1

ORALCE DBA学习1

时间:2022-12-08 20:32:44浏览次数:43  
标签:文件 ORALCE DBA 备份 学习 SQL 进程 日志 id


1 oracle的服务架构


    服务器启动监听进程,用户进程发出请求,到达该监听进程,监听进程收到请求后,派生出一个


服务进程出来(可以重新建一个,也可以从服务器进程池中拿出来),监听进程把用户请求转发给


服务进程后,继续去监听其他请求


    ORACLE 有NET 8协议,实现了OSI中的上三层,负责客户和服务器之间建立完整的SQL会话,解析SQL语句,执行



SQL等



2 服务端的listner.ora,有专有模式和共享模式两种,区别为:


    专有模式:为每个用户连接启动一个单独的进程,而共享模式为多个用户连接共享一个进程,也就是多个用户共



享一个会话通道



3 监听器进程的静态注册和动态注册


   静态注册,配置监听器时,明确告诉监听器某个数据库的信息,告诉需要连接哪个SID的信息


    动态注册:由数据库动态向监听器注册,由PMON进程完成的,也可以用


      alter system register,命令马上强制pmon立即注册


    动态注册的话,在lsnrctl status中,可以看到静态的是unknown状态,动态的能准确监视其数据库状态



4 lsnrctl命令


   lsnrctl status,lsnrctl start,lsnrctl stop


5 在10g中,可以使用easy connect naming method,客户端不再需要配置


tnsname.ora,格式为


   sqlplus xxx/xxxx@//host/sid



6 数据库物理结构:分为数据文件,控制文件,日志文件,最重要三种



7 联机日志组: LGWR进程会不断的向redo log中写入日志内容,当一组日志文件被写满时,会触发log switch,然



后lgwr继续向另外一组日志写入


会覆盖掉以前的;如果要保留全部日志,必须用归档日志。



8 归档日志,当一组联机日志写满后,在触发日志切换的同时,还触发arcn进程,将写满的日志copy到另外一个位置





即使在rac环境中,每个日志线程的要求也是一样的


9 trace文件 分别是内核跟踪文件,后台进程跟踪文件,用户追踪文件。



10 OMF:


   实际上就是设置了一些预先的参数位置,让比如创建相关操作时,不用进行指定文件路径等;


11 数据块:一般OLTP设置为8KB比较好,OLAP可以适当设置大点。


         数据块分为数据块头(block header):包括数据块地址,数据块类型(索引块,undo),事务表(ITL)


     row directory:为数据块内部的一个指针表,找某条记录时,不需要再遍历整个


数据块


    free space:空闲的空间 used space:数据记录占用的空间


   分区:为了更好地管理数据块,分区数量可多可少,是连续的空间,但会产生空间碎片


    段:每个表或索引都对应一个段,段不要求连续


  表空间:分为永久表空间,临时表空间和undo表空间。永久表空间为system,sysaux,user表空间;sysaux为10G以



后辅助功能而设置的表空间


   临时表空间组:一个临时表空间组至少包含一个临时表空间(10g开始提供)


    select * from dba_tablespace_groups;


    移动临时表空间到新的临时表空间组:


     alter tablespace temp tablespace group tmpgroup1;


    undo表空间:一个数据库中可存在多个undo表空间,但任一时间只有一个UNDO


表空间被激活



12 段空间管理


    在手动创建segments时,手动空间管理方式中,oracle通过一个freelist链表来记录


数据块的使用,但容易引起DML时的竞争


   因此9I开始,使用自动空间管理方式,ASSM,不再使用freelist,而是通过位图方式记录每个数据块的使用情况,



用来记录数据块的位图的数据块叫bitmapped block(BMB),


分散在段中,减少了竞争。


   oracle对于extent的管理分字典管理和本地管理,本地管理使用位图,比较快和好



13  desc dba_objects


     两者可以这样区别:object_id可以看做是对象的一个逻辑id,在对象创建时分配,一经分配即不再改变;而



data_object_id为一个物理id,在对象物理存储变化时可能发生改变。


    


14  后台进程


    1) DBWN:负责把sga被修改的数据同步到磁盘中去;写的时机包括:检查点,每3秒唤醒一次,数据库最多有20



个dbwn进程


   2)LGWR:将log buffer中的日志内容写到联机日志文件中去。当DBWR试图把一个脏数据块写到磁盘前,先确定其



REDO记录是否写到联机日志文件中,如果没有,则通知LGWR进程去写入。


  3)PMON:监视用户进程,负责发现用户进程异常后清理资源等工作


  4)SMON:负责实例的恢复工作


  5)ARCN:归档日志进程


  6)MMON,MMNL,MMAN:10G中的AWR进程收集


  7)CJQO:负责定时任务


  8)RVWR:10G中负责flashback功能


15 SGA:共享进程,适用OLTP,PGA对与OLAP比较重要


    1)data buffer  cache,分为keep buffer pool,recycle buffer ppol,


default buffer ppol,其中keep buffer pool的初始化参数为db_keep_cache size,


该区域内的数据会尽可能保留在内存中


       recycle buffer pool:一用完就会被移走,比如体积大的日志表等,可以考虑用这个


       default_buffer_pool:db_cache_size 缺省的cache


     2)shardpool:存放的为代码,分为library cache和dictionary cache两个


区域,library中存放代码部分,dicitionary存放数据字典部分,加快解析用。


    3)redo log  buffer:存放redo记录


    4)大对象池,JAVA池


16 PGA:完成排序,HASH,连接等


17 归档模式和非归档模式


    1) 切换为归档模式:alter database archivelog;


      定义归档位置: alter system set log_archive_dest="location=d:\....."


scope=both;



    2) RMAN介绍:


       targetdatabase:要进行备份的数据库叫做targetdatabase.


       catalog database:rman的备份信息可以保存在控制文件中,也可以保存在一个


单独的数据库中,方便管理


      通道channel:是一个命令行接口,它指引一个target database的一个服务进程


进行数据库备份,还原和恢复。


      备份集和COPY:有备份集和COPY方式,备份集象ZIP的方式,备份集的方式包括要还原和恢复 ,恢复为恢复相



关的归档日志和联机日志,占用时间多点;而COPY方式则可以忽略还原的操作,不需要额外的空间


       RMAN连接到目标数据库,其中有2个通道用来对数据库进行调用,用自己的PL/SQL执行RMAN命令,调用数据库



进行备份。



     操作:


   1) rman target '用户名/xxxxx@sid'


   注意,有时会报:找不到recover.bsq文件,要把服务端rdmbs\admin下的复制到客户端


     看所有配置  show all;


       


  2) 配置控制文件的自动备份


    configure controlfile autobackup on;


  3) 缺省的备份格式为backupset,为压缩的,配置磁盘备份


      configure default device type to disk;


     配置为压缩方式backup


          configure device type disk backup type to compressesd backupset;


  4) 基于时间窗口的备份策略


      比如设置了configure retention policy to recovery window of 7 days;


     设置了7天,则假如1,14号分别作了一次全备,恢复时间是7天,现在是23号,


就要保证恢复到16号,则需要14号的全备+14号以后的归档日志,而14号之前的,都可以删除


   5) 基于冗余的策略


       configure retention policy to redundancy 2;


      定义每个文件至少保留2个备份。


   6)查看策略


       show retention policy;


    7) 查看过期的备份文件


        report obsolete;


   

删除过期文件


          delete obsolete;


    9)完全备份: 


       backup database;


       采用压缩备份:backup as compressed backupset database;


       采用image copy方式备份:backup as copy database;


    10)增量备份:在做完全备份后,比如周二备份的只是周二的,每天都是当天的备份;


   backup incremental level 1 database;


    累加增量备份:比如周二的是周一到周二之间共2天的变化


    backup incremental level1 cumulative database;



11)提升增量备份的性能,有一个特殊文件叫数据块变化跟踪文件,减少数据的遍历;


当数据块发生变化时,将相关信息记录到这个文件中,当RMAN增量备份时,利用这个


文件就可以获得需要备份的数据块列表,而不必所有数据块遍历


启用:


     alter datbase enable block change tracking using file 'xxx/bcl';


select * from v$block_change_tracking;


  关闭


     alter database disable block change tracking;


18   一个REDO记录号包括:事务号,被修改数据的位置,数据块号,修改后的值


     日志文件SCN:每个日志文件都有一个低SCN,高SCN。当一个日志文件存


满后,新的日志文件低SCN就用上一个日志文件的高SCN+1来表示。每个正被


使用的日志文件的高SCN无穷大。


    每个数据文件的文件头记录启动SCN,而控制文件会记录每个数据文件的终止


SCN,正常运行的开始SCN都设置一样,终止被设置无穷大


    重要:正常数据库关闭后,每个数据文件的终止SCN被设置为成功启动的SCN




19 oracle 的database control是BS结构去管理一个数据库,grid control是管理多个数据库;


 在oracle_home\bin目录下,有emctl的启动文件


   oracle10g\oc4j\j2ee\OC4J_DBConsole为模版目录,每一个被管理的数据库都会在下面生成一个


oc4j_dbconsole_hostname_sid的目录,一个database control只能管理一个数据库实例。


   重新配置databasecontrol:


      emca -config dbcontrol db -repos create




20  pga:为每个用户的连接请求分配一个服务进程,而这个服务进程分配的内存区域就叫PGA。PGA是独占的方式,


进程访问时不需要latch,lock等保护机制,不会发生竞争。


   PGA包括session area(包含会话特有的信息,如会话跟踪信息等),private sql area(即通常所说的


cursor),又分为persistent area(保存绑定变量等)和run-time area(SQL运行过程中使用的空间,执行完SQL后,



这部分空间会被释放)



21 parent cursor和child cursor的概念


    parent cursor:保存的是SQL的原始执行文本


    child cursor:保存的是执行计划和环境信息


    v$SQLAREA:从parent cursor级别上统计SQL语句的执行信息;


    v$sql:从child cursor级别上统计的语句执行信息


   open_cursor参数控制每个session 最多能同时打开的cursor数量,如果超过遇到ora-1000错误


   session_cached_cursors:定义后,如果一个SQL被频繁执行,这个cursor就会被cache掉,提高效果。


   


22 查看执行计划: explain plann for ...........


    查看执行计划     select  * from table(dbms_xplan.display);


    系统级别设置10046事件 :


      alter system set event='10046 trace name context forever,level 8';


      alter system set event='10046 trace name context off';


23 sql>oradebug setospid 操作系统的id


    sql>oradebug setorapid oracle进程的id


24 library cache中获得执行计划


    使用dbmx_xplan包,其中display方法为9i用,display_cursor为10G用


    在10G中推荐用display_cursor,其参数说明为:


                          sql_id:代表sql语句的id,其实为一个哈希值


                          child_number:一个SQL中的多个子游标,可以为null,则列出所有子游标计划


   1) 确定语句的sql_id:比如


      select sql_text,sql_id from v$sql where sql_text like '%..要分析的SQL语句....%'


      获得其哈希值,


    2)select * from table(dbms_xplan.display_cursor('哈希值',null,'basic'));


       select * from table(dbms_xplan.display_cursor('哈希值',null,'typical'));


      select /* +gather_plan_statistics */ count(*) from ......



       查看执行计划


       select * from table(dbms_xplan.display_cursor9('哈希值',null,'TYPICAL,+iostats,+memstats');


     则在显示的列中,E-ROWS,A-ROW分别代表估计和真正执行的花费


   3)display_awr


     在awr报告中,有一列sql_id,


      select * from table(dbmx_xplan.display_awr('来自AWR报告中的sql_id列'));



25 阅读SQL执行计划


    1)概要部分,输出SQL ID及文本


    2) 执行计划


    3) QUERY BLOCK分为简单的SQL和复杂的SQL


        对于简单的sql,在query block部分,用:


        1---SEL$1 来表示,而象 $DEL$:删除,系统生成的名字不够人性化,可以自定义:


      select /*+ qb_name(abc) */ b1.id,b2.id from b b1,b b2


标签:文件,ORALCE,DBA,备份,学习,SQL,进程,日志,id
From: https://blog.51cto.com/u_14230175/5923419

相关文章

  • ror学习小结5
    1一对一关系,假设student和mealcard为两个一对一关系的类classStudent<ActiveRecord::Basehas_one(:meal_card,:class_name=>"MealCard",:foreign_key=>"stu......
  • ror学习小结6
    1每个controler都会在app\views下有一个相应的目录2视图中输出debug信息<%=DEBUGparams%><%=debugresponse%>3页面上输出<%=session[:user_name]%>...........
  • ACM学习路线
    简单的概括一下ACM入门的学习路线。1.基础算法模拟枚举贪心打表排序递归,递推分治构造二分(二分查找,二分答案)高精度前缀和,差分双指针位运算离散化区间合并2......
  • wince 蓝牙 学习
    蓝牙命令1.向蓝牙设备发送命令bccmd-tbcsp-d/dev/ttymxc1psload-r/etc/bluetooth/BC6QFN.psr-t指定通讯协议bcsp为蓝牙核心串口协议-d指定执行命令的......
  • django框架之基础学习
    目录纯手撸web框架基于wsgiref模块代码封装优化动静态网页jinja模板前端、后端、数据库三者联动python主流web框架Django简介Django基本使用djangoapp的概念django的主要......
  • 翟老师的学习方法
    人皆云,业精于勤,勤能补拙。但是在很多时候,即便你花了很多时间练习,你的水平还是很难提高。比如说,有的孩子学书法,跟着老师学了很久,上课练的时候似乎写得不错,但是跟着......
  • dba-数据库启停
       selectstatusfromv$instance  ---服务器当前状态1.shutdown  关闭数据库(1)shutdownnormal:正常方式关闭数据库正常的关闭方式,如果对于关闭数据库的时......
  • Docker学习笔记十:Docker安装Nginx
    准备下载命令:dockerpullnginx安装可参考Docker Hub官网说明的镜像的用法  安装 第一步:简单安装创建容器命令:dockerrun-d--name=nginx-p8111:8080......
  • Github Actions 学习笔记
    GithubActions是什么?GithubActions官方介绍:GitHubActions是一个持续集成和持续交付(CI/CD)平台,允许您自动化构建、测试和部署管道。您可以创建构建和测试存储库中的每......
  • LWIP 的ethernetif.c 学习
     《嵌入式网络那些事-LwIP协议深度剖析与实战演练》学习 ethernetif.c netif.c 在 LWIP中,是通过一个叫做结构体:structnetif{structnetif*next;//指向下一个......