• 1. CC&CRM数据库维护(Oracle)2018/10/16
  • 2. 备份与恢复数据库检查维护常用的SQLPage 2
  • 3. DatabaseInstance SGA Redo log bufferData buffer cacheShared pool Data dict. cacheLibrary cache PMON DBW0SMON LGWRCKPTOthersUser processServer processPGAControl filesData files Redo log filesArchived log filesParameter filePassword fileArchitecture OverviewPage 3
  • 4. 1、Oracle数据库运行日志所在的位置。 $ORACLE_BASE/admin/$ORACLE_SID/bdump $ORACLE_BASE/admin/$ORACLE_SID/Udump $ORACLE_BASE/admin/$ORACLE_SID/Cdump 2、主要关注告警文件 $ORACLE_HOME\admin\$ORACLE_SID\bdump\alertSID.log 如:/home/oracle/admin/ora921/bdump/alertora921.log 3、关注告警文件中的ORA-XXXXX错误检查数据库告警日志 Page 4
  • 5. 从告警日志中可以得到信息1、数据库的异常情况 Thu Jun 2 16:28:30 2005 Errors in file /database/oracle/admin/ora92/bdump/ora921_dbw0_26367.trc: ORA-01157: cannot identify/lock data file 5 - see DBWR trace file ORA-01110: data file 5: '/database/oracle/oradata/rdata10' ORA-27037: unable to obtain file status HP-UX Error: 2: No such file or directory Additional information: 3 2、redo log的切换情况 3、数据库的参数设置 processes = 150 timed_statistics = TRUE shared_pool_size = 318767104 large_pool_size = 16777216Page 5
  • 6. 收集数据库的参数设置1、查看系统视图 select name, value from v$parmater Name value --------------- ---------- processes 150 Sessions 170 cpu_count 8 2、检查参数文件 可以是文本文件,如intiora921.ora。 或者是二进制文件,通过create pfile='/tmp/ora921.ora' from spfile; 3、通过命令行 sqlplus "/ as sysdba“ SQL>show parameter cluster; Page 6
  • 7. 收集数据库服务器端的字符集设置select * from v$nls_parmater parameter value ------------------------ ----------- NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN NLS_CHARACTERSET US7ASCII NLS_SORT BINARY …… NLS_DUAL_CURRENCY $ NLS_NCHAR_CHARACTERSET US7ASCII NLS_COMP BINARYPage 7
  • 8. 收集客户端的字符集1、Windows操作系统 通过regedit程序,查看HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE及其子项下的NLS_LANG的值。 2、UNIX 通过检查环境变量NLS_LANG的值获得。Page 8
  • 9. 检查表空间占用情况1、查看每个表空间剩余空间 select TABLESPACE_NAME, sum(bytes)/1024/1024,sum(blocks) from dba_free_space group by tablespace_name 2、查看每个表空间总的尺寸 select tablespace_name, sum(bytes) / 1048576 from dba_data_files group by tablespace_name 3、给表空间添加数据文件 alter tablespace service_core_dat add datafile '/dev/vgdata/rlv_dat010' size 4000M, '/dev/vgdata/rlv_dat011' size 4000M Page 9
  • 10. 检查失效的对象1、查找失效的对象 select object_name from user_objects where status = 'INVALID‘ 2、编译失效的对象 alter procedure p_my_proc compile 3、借助第三方工具PL/SQL DEVELOPER Page 10
  • 11. 检查服务器资源占用情况1、通过命令sar或者vmstat #sar 1 10 15:56:15 %usr %sys %wio %idle physc 15:56:16 0 1 0 99 2.01 15:56:17 31 1 0 68 1.96 2、通过top(HPUX)/topas(AIX) Page 11
  • 12. 查找耗用资源高的SQL语句1、查找耗用资源高的SQL语句 select SQL_TEXT, EXECUTIONS, DISK_READS, BUFFER_GETS, DISK_READS / DECODE(EXECUTIONS, 0, 1, EXECUTIONS) as AVER_DISK, BUFFER_GETS / DECODE(EXECUTIONS, 0, 1, EXECUTIONS) as AVER_BUFF from v$sqlarea order by AVER_BUFF desc 2、获得SQL语句的执行计划 SQL: explain plan for select * from t_mytable where f1 = :1; @?/rdbms/admin/utlxpls; PLSQL DEVELOPER: 在SQL Window中输入SQL语句并按F5键。 Page 12
  • 13. 备份与恢复数据库检查维护常用的SQLPage 13
  • 14. Oracle备份与恢复的工具程序1、物理备份工具rman(Recovery Manager) rman功能强大,操作相对复杂一些,对普通的开发人员来说,在日常工作当中一般不需要使用,感兴趣的同事可以通过查看Oracle相关的资料了解。 2、逻辑备份工具exp & imp exp & imp工具程序使用简单、方便,一般与数据库有关的开发人员都可能要使 用到。本课程将主要介绍exp & imp。 3、数据装载工具SQL Loader SQL Loader主要用于将文本文件装载到数据库中。Page 14
  • 15. exp & imp (一)1、使用exp & imp 需要注意的事项 使用exp和imp需要保证服务器和客户端的字符集一致,通过exp导出时,客户端的版本最好和服务器一致,通过imp恢复时的数据库版本不能比原有的数据库版本低。 2、备份指定的表 exp icd/icd@orauidb tables=tbilllog1 rows=y indexes=n file=tbilllog1.dmp 3、按用户备份 exp icd/icd@orauidb owner=icd feedback=5000 file=icd.dmp 4、全库备份 exp icd/icd@orauidb feedback=5000 full=y file=full.dmpPage 15
  • 16. exp & imp (二)5、备份指定的表空间 exp icd/icd@orauidb tablespaces=service_core_dat file=service_core_dat.dmp 6、按条件导出 exp icd/icd@orauidb tables=tbilllog1 query=\”where logdate>to_date('2005-06-01','yyyy-mm-dd')\" file=tbilllog1.dmp 7、从备份文件中恢复指定的表的数据 imp icd/icd@orauidb tables=tbilllog1 ignore=y feedback=5000 file=icd.dmp 8、恢复整个备份文件 imp icd/icd@orauidb feedback=5000 full=y file=full.dmpPage 16
  • 17. SQL Loader的使用1、基本步骤 使用SQL Loader工具迁移数据一般分为三个步骤: 第一、生成文本文件。 第二、编写控制文件。 第三、导入的命令。 2、编写控制文件 LOAD DATA INFILE "D:\t_card_bill.txt" APPEND INTO TABLE t_Card_bill FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (uaccountno,billtype, fee,serviceno,fee_date date 'YYYY-MM-DD HH24:MI:SS', fee_enddate date 'YYYY-MM-DD HH24:MI:SS', caller_number, called_number, duration) 3、导入的命令 sqlldr username/password@database control=控制文件所在路径\控制文件名 readsize=5000000 bindsize=5000000 rows=1000 Page 17
  • 18. 备份与恢复数据库检查维护常用的SQLPage 18
  • 19. 常用的SQL(一)1、查看所有的会话 select * from v$session 2、查看会话的等待事件 select * from v$session_wait 该语句在数据库会话被阻塞时用来收集会话被阻塞的原因。 3、查看被锁的对象 select * from v$locked_object 4、查看SGA的状态 select * from v$SGA 5、查看数据库使用的数据文件 select name, bytes from v$datafilePage 19
  • 20. 常用的SQL(二)6、查看表/索引所占的空间 select sum(bytes) / 1048676 from user_extents where segment_name='T_PUB_COMMONINFO‘ 7、查看所有的表空间 select * from dba_tablespaces 8、查看当前用户下所有的对象 select * from user_objects 9、查看当前用户下所有的约束 select * from user_constraints Page 20
  • 21. 常用的SQL(三)10、重建索引 alter index idx_commoninfo rebuild alter index idx_commoninfo rebuild online 11、添加日志组 Alter database add logfile group 5 ('/dev/vgdata/rlv_redo51', '/dev/vgdata/rlv_redo52') size 200M 12、删除日志组 Alter database drop logfile group 5 13、手工切换正在使用的日志组 Alter system switch logfile Page 21