1、Oracle 11gR2 数据库系统日常维护操作手册修订纪录:版 本 号 日 期 作 者 修 订 纪 录V1.0 2012-03-07 肖贤光 初稿目录一、 介绍 3二、 维护 42.1 ASM 管理与监控 .42.1.1 磁盘创建(Linux) .42.1.2 查看磁盘(Linux) .42.1.3 删除磁盘 (linux) .52.1.4 创建磁盘组 52.1.5 磁盘组新增磁盘 .52.1.6 磁盘组删除磁盘 .52.1.7 磁盘组删除 52.1.8 磁盘组维护 52.1.9 磁盘组监控 62.2 OHAS 服务管理与监控 .62.2.1 启/禁用服务资源 .62.2.2 启动/停止资源
2、服务 .82.2.3 监控/删除资源服务 .92.3 表空间管理与监控 102.3.1 表空间管理 102.3.2 表空间监控 112.4 重做日志管理 122.5 日志维护 132.5.1 定制 GRID 模块的日志保留策略 132.5.2 定制 RDBMS 模块的日志保留策略 142.5.3 查看异常日志 142.5.4 手工清理日志 15一、 介绍Oracle 11g 引进了些新的特性,在日常维护方面也带来些变化和改善。日常维护工作中,大体上保持和延续了以前版本的优良友好操作接口,只部分新特性下,增加或改善了操作交互方式。二、 维护日常维护工作中,主要有表空间、重做日志、归档、用户帐户、
3、表、索引、簇表等的管理维护;在 Oracle 11gR2 数据库,我们的系统开始采用 Oracle 的 ASM 组件来管理数据库的存储,因而 ASM 管理存储也成了一项日常维护工作;另外,还采用了Oracle Restart 功能来管理 ASM、数据库、监听等数据库资源服务,故 OHAS 服务状态管理也是需要加以关注。表空间、重做日志、归档的一般管理和以前版本的管理没有太多的差异;只是涉及新增和调整时,涉及文件存储方面,因使用 ASM 部件,而需要做些操作命令语法上的调整;用户账户、表、索引、簇表等内部逻辑结构的维护管理没有太多的变化。2.1 ASM 管理与监控ASM 管理涉及存储的管理,主要
4、有磁盘、磁盘组的创建、新增、更新、删除等管理维护方面。2.1.1 磁盘创建(Linux)ASM 磁盘创建,主要是使用 ASMLib 来管理磁盘的配置,Oracle 引进 ASMLib 在内核级别进行磁盘的管理,便于 ASM 实例识别到磁盘,方面 ASM 创建、更新、删除磁盘组或组磁盘成员。ASMLib 管理磁盘,通过在系统级别识别到磁盘路径后,创建一个别名,来配置磁盘。Redhat linux 下通过多路径软件识别磁盘路径后,对磁盘进行分区后,就可以使用 ASMLib 来创建一个磁盘别名。示例:Redhat ES 5 下,采用 DM 管理的磁盘通过多路径软件识别并配置了一个磁盘路径,将在/de
5、v/mapper 目录生成一个设备文件,默认是:/dev/mapper/mpath0N命名,但这个识别的设备对应的真实设备可能会随机器启动而发生变化;故可以通过 wwwid 号在/etc/multipath.conf文件配置别名,来固化设备与设备文件名对应;如配置一个设备别名为:asm_dsk_01,则在/dev/mapper 目录生成一个文件名:/dev/mapper/asm_dsk_01,这样就可以使用 fdisk 或 kpartx 来划分分区,然后使用 ASMLib 来自动管理设备和生成另一个别名,便于 Oracle ASMLib 来管理设备的权限,而不随系统启动发生权限信息丢失问题。创
6、建语句:划分的 DM 设备文件分区为:/dev/mapper/asm_dsk_01p1/usr/sbin/oracleasm createdisk DISK01 /dev/mapper/asm_dsk_01p1ASMLib 创建磁盘别名后,会在/dev/oracleasm/disks 目录生成一个赋予 ASM 实例属主权限的磁盘设备别名文件,如示例则生成一个设备文件: /dev/oracleasm/disks/DISK01,属主将是初始化 ASMLib 时配置的属主: grid:asmadmin,ASMLib 初始化配置,也可以通过配置文件进行调整:/etc/sysconfig/oraclea
7、sm2.1.2 查看磁盘(Linux)磁盘查看,通过 oracleasm 脚本,查看系统目前已经被 ASMLib 管理的磁盘。#查看创建 ASMLib 磁盘别名/usr/sbin/oracleasm listdisks#查看 DM 设备对应的 ASMLib 磁盘/usr/sbin/oracleasm querydisk /dev/mapper/asm_dsk_01p12.1.3 删除磁盘 (linux)ASMLib 删除磁盘,需要先从 ASM 磁盘组里把磁盘卸载后,再从 ASMLib 配置里把磁盘别名删除。/usr/sbin/oracleasm deletedisk DISK012.1.4 创
8、建磁盘组ASM 创建磁盘组,是在 ASM 实例里操作,以记录磁盘组使用的磁盘和容量等元数据信息。可以通过 SQLPLUS 或 ASMCMD,以及 ASMCA 工具配置。su - gridsqlplus “/ as sysasm“create diskgroup DATA01 external redundancydisk ORCL:DISK01,ORCL:DISK02;2.1.5 磁盘组新增磁盘alter diskgroup DATA01add disk ORCL:DISK03,ORCL:DISK04;2.1.6 磁盘组删除磁盘先查询出磁盘组里磁盘名set linesize 2000set p
9、agesize 2000col g_name for a30col d_path for a60col d_name for a30select g.name grp_name,d.path d_path,d.name dsk_namefrom v$asm_disk d,v$asm_diskgroup gwhere d.group_number=g.group_number;删除磁盘alter diskgroup DATA01drop disk DISK01,DISK02;2.1.7 磁盘组删除drop diskgroup DATA01 including contents;2.1.8 磁盘组
10、维护磁盘组维护,主要包括加载、检查修复磁盘。#加载磁盘组alter diskgroup DATA01 mount;#卸载磁盘组alter diskgroup DATA01 dismount;#检查修复磁盘alter diskgroup DATA01 check all repair/norepair;alter diskgroup DATA01 check disk DISK01 repair/norepair;2.1.9 磁盘组监控磁盘组监控,主要有:容量,磁盘加载状态,可以通过 sqlplus 登陆 ASM 实例查询视图,或在 ASMCMD 工具里查看。查看磁盘组分配和使用情况:(若磁盘空
11、闲空间不足,需要及时申请分配存储到主机)select name,total_mb,free_mb,hot_used_mb,cold_used_mbfrom v$asm_diskgroup;查看磁盘组加载状况:select name,state from v$asm_diskgroup;通过 ASMCMD 工具查看#查看磁盘组信息su - gridamscmd lsdg#查看连接的客户端信息amscmd lsct2.2 OHAS 服务管理与监控Oracle OHAS 是 Oracle 11g 开始推出的集成高可用解决方案的一款管理工具,主要用来管理 CRS,RAC,Oracle Restart,
12、RAC On One Node,ASM,Listener 等数据库资源服务的守护进程管理工具。他可以通过 crsctl 工具作为管理接口,也可以通过srvctl 进行接口管理服务资源。涉及日常管理工作部分有:启/禁用 OHAS Deamon、ASM、磁盘组、监听、ONS、数据库、SERVICES;启动/停止 OHAS Deamon、ASM、磁盘组、监听、ONS、数据库、SERVICES;监控/删除 OHAS Deamon、ASM、磁盘组、监听、ONS、数据库、SERVICES.2.2.1 启/禁用服务资源启/禁用 OHAS Deamon、ASM、磁盘组、监听、ONS 服务需要在 grid 属主
13、用户下执行;启/禁用数据库、SERVICES 资源服务,既可以在 grid 属主用户,也可以在 RDBMS 用户下执行。#启用 crs deamon 服务crsctl enable crs#禁用 crs deamon 服务crsctl disable crs#启用 has deamon 服务crsctl enable has#禁用 has deamon 服务crsctl disable has#启用 ASM 服务srvctl enable asm#禁用 ASM 服务srvctl disable asm#启用磁盘组资源srvctl enable diskgroup -g #禁用磁盘组资源srvc
14、tl disable diskgroup -g #启用监听资源srvctl enable listener -l #禁用监听资源srvctl disable listener -l #启用 ons 资源srvctl enable ons -v#禁用 ons 资源 srvctl disable ons -v#启用数据库资源srvctl enable database -d #禁用数据库资源srvctl disable database -d #启用数据库服务srvctl enable service -d -s “ #禁用数据库服务srvctl disable service -d -s “2.
15、2.2 启动/停止资源服务启动/停止 OHAS Deamon、ASM、磁盘组、监听、ONS 服务需要在 grid 属主用户下执行;启动/停止数据库、SERVICES 资源服务,既可以在 grid 属主用户,也可以在 RDBMS 用户下执行。#启动 crs deamon 服务crsctl start crs#停止 crs deamon 服务crsctl stop crs#启动 has deamon 服务crsctl start has#停止 has deamon 服务crsctl stop has#启动 ASM 服务srvctl start asm -o #停止 ASM 服务srvctl sto
16、p asm -f#启动磁盘组资源srvctl start diskgroup -g #停止磁盘组资源srvctl stop diskgroup -g -f#启动监听资源srvctl start listener -l #停止监听资源srvctl stop listener -l -f#启动 ons 资源srvctl start ons -v#停止 ons 资源 srvctl stop ons -v#启动数据库资源srvctl start database -d -o #停止数据库资源srvctl stop database -d -f#启动数据库服务srvctl start service -
17、d -s “ -o #停止数据库服务srvctl stop service -d -s “ -f2.2.3 监控/删除资源服务监控/删除 OHAS Deamon、ASM、磁盘组、监听、ONS 服务需要在 grid 属主用户下执行;监控/删除数据库、SERVICES 资源服务,既可以在 grid 属主用户,也可以在 RDBMS 用户下执行。#监控 crs deamon 服务crsctl check crscrs_stat -t#删除 crs deamon 服务$ORACLE_HOME/crs/install/rootcrs.pl -deconfig -force -verbose#监控 has
18、deamon 服务crsctl check hascrs_stat -t#删除 has deamon 服务$ORACLE_HOME/crs/install/roothas.pl -deconfig -force -verbose#监控 ASM 服务srvctl status asm -a -v#删除 ASM 服务srvctl remove asm -f#监控磁盘组资源srvctl status diskgroup -g -a -v#删除磁盘组资源srvctl remove diskgroup -g -f#监控监听资源srvctl status listener -l -v#删除监听资源srvc
19、tl remove listener -l | -a -f#监控 ons 资源srvctl status ons -v#删除 ons 资源 srvctl remove ons -f -v#监控数据库资源srvctl status database -d -f -v#删除数据库资源srvctl remove database -d -f -y -v#监控数据库服务srvctl status service -d -s “ -f -v#删除数据库服务srvctl remove service -d -s “ -f2.3 表空间管理与监控2.3.1 表空间管理表空间管理中的创建、添加、删除操作和 9
20、i 没有太大的变化,变化的就是在创建、添加指定数据文件名时,不必麻烦自己指定一个文件名或裸设备名,只需要明示 datafile 项,以及大小和是否自动扩展即可;或有新的磁盘组加入到 ASM实例,并分配给这个数据库使用时,参数:db_create_file_dest 设置的默认磁盘组非新加的磁盘组名参数值时,需要在 datafile 后面带上新磁盘组名,如: datafile +DATA02即可。创建表空间,假定数据库参数 db_create_file_dest,设定了一个磁盘组: +DATA01,则:#普通创建crate tablespace ts_misc20datafile size 10
21、24m autoextend offextent management localsegment space management auto;#若创建到新加的一个非参数 db_create_file_dest 指定的磁盘组,如:DATA02,则create tablespace ts_misc20_newdatafile +DATA02 size 1024m autoextend offextent management localsegment space management auto;#普通添加数据文件alter tablespace ts_misc20add datafile size
22、 1024m autoextend off,size 2048m autoextend off,size 4096m autoextend off;#若添加到新加的一个非参数 db_create_file_dest 指定的磁盘组,如:DATA02,则alter tablespace ts_misc20_newadd datafile +DATA02 size 1024m autoextend off,+DATA02 size 2048m autoextend off,+DATA02 size 4096m autoextend off;2.3.2 表空间监控表空间监控在数据库里的监控和 9i 一
23、样,通过查询视图来获取使用和空闲情况;另外因现在数据库的存储通过 ASM 来管理,同样为了保证系统能正常运行,也需要监控 ASM 管理的磁盘组的磁盘空间使用情况,避免磁盘组空间耗尽,导致系统宕机;监控 ASM 磁盘组的方法,可按条目:2.1.9 磁盘组监控, 来获取信息。数据库查询视图监控表空间 SQL 语句:set linesize 2000set pagesize 2000select t.tablespace_name TableSpace_Name,ROUND(t.Total_MB,2) Total_MB,ROUND(t.Total_MB-NVL(f.Free_MB,0),2) Use
24、d_MB,ROUND(NVL(f.Free_MB,0),2) Free_MB,ROUND(t.Total_MB-NVL(f.Free_MB,0)*100/t.Total_MB,2) Used_Rate,ROUND(NVL(f.Free_MB,0)*100/t.Total_MB,2) Free_Ratefrom (select tablespace_name,sum(bytes)/1024/1024 Total_MBfrom dba_data_filesgroup by tablespace_name) t,(select tablespace_name,sum(bytes)/1024/1024
25、 Free_MBfrom dba_free_spacegroup by tablespace_name) fwhere t.tablespace_name = f.tablespace_name(+)union allselect dt.tablespace_name Tablespace_Name,ROUND(dt.Total_Mb,2) Total_Mb,ROUND(tp.Used_Mb,2) Used_Mb,ROUND(dt.Total_Mb - NVL(tp.Used_Mb,0),2) Free_Mb,ROUND(NVL(tp.Used_Mb,0)/dt.Total_Mb,2)*100
26、 Used_Rate,ROUND(dt.Total_Mb - NVL(tp.Used_Mb,0)/dt.Total_Mb,2)*100 Free_Ratefrom(select tablespace_name,sum(bytes)/1024/1024 Total_Mbfrom dba_temp_filesgroup by tablespace_name) dt,(select tablespace_name,sum(bytes_used)/1024/1024 Used_Mbfrom v$temp_extent_poolgroup by tablespace_name) tpwhere tp.t
27、ablespace_name (+) = dt.tablespace_nameorder by TableSpace_Name;2.4 重做日志管理重做日志组的管理,其他方面也是和 9i 的操作无异,主要也是指定日志成员时,需要考虑使用 ASM 的特性,默认路径是由参数:db_create_online_log_dest_n 指定。#普通创建alter database add logfile group 4 size 256m;#若创建到新加的一个非参数 db_create_online_log_dest_n 指定的磁盘组,如:DATA02,则:alter database add logf
28、ile group 4 (+DATA02,+DATA02,+DATA02) size 256m;#普通添加alter database add logfile member to group 4;#若添加到新加的一个非参数 db_create_online_log_dest_n 指定的磁盘组,如:DATA02,则:alter database add logfile member +DATA02 to group 4;2.5 日志维护Oracle 数据库在运行时,会生成一些日志、告警、监听、Coredump 等日志信息文件,日常维护中需要对这些文件进行管理维护,避免文件大量耗用系统空间;11g
29、 以前,多数通过手工清理方式,进行日志文件的删除清理,从 11g 开始,系统引进了ADR 功能组件(Automatic Diagnostic Repository),可以定制化管理这些日志文件,包括保留策略,清理等功能,并可以收集打包这些文件;访问调用这个功能,可以通过 EM Grid Control 或 ADRCI 命令行工具接口来配置管理。为了充分发挥 ADR 的自动管理功能,节省日常维护管理工作量,可以通过观察日志的生成量和保留策略的评估,来设置日志的保留策略,以便 ADR 自动定期进行日志的清理,避免耗用并撑爆空间,而影响系统正常运行。Oracle 11g,我们系统部署单机和主机双机架
30、构都采用 Oracle Restart+ASM 体系,而且系统部署 GRID 和 RDBMS 时,是需要分开部署,所以有对不同的组件的 Home 下的日志信息,进行不同的策略定制。2.5.1 定制 GRID 模块的日志保留策略定制 GRID 模块日志保留策略,需要登陆到 GRID 模块软件属主用户下,调用adrci 工具接口,进行配置。 #调用 ADRCI 工具su - gridadrci# 在工具接口命令行,查看当前需要管理的日志 Home 目录adrcishow homes#设置当前工作 Home 目录,Grid 模块下,一般管理了 ASM 和监听器两个组件,故#有两个 Home 目录,所
31、以需要分开设置,如这里的先设置 ASM 的 Home 目录adrci set home diag/asm/+asm/+ASM#查看这个 Home 目录下的当前保留策略设置adrci show control#设置保留策略 ,策略设置的值单位是:小时,可根据实际情况而定adrci set control (SHORTP_POLICY = 480)adrci set control (LONGP_POLICY = 720)#设置后,再检测一遍adrci show control#再设置监听的目录adrci set home diag/tnslsnr/listeneradrci show contr
32、ol#设置策略,策略设置的值单位是:小时,可根据实际情况而定adrci set control (SHORTP_POLICY = 240)adrci set control (LONGP_POLICY = 480)#设置后,再检测一遍adrci show control2.5.2 定制 RDBMS 模块的日志保留策略定制 RDBMS 模块的日志保留策略,需要登陆 RDBMS 模块的属主用户下,调用 adrci 接口工具,进行定制化配置。#调用 ADRCI 工具su oracleadrci#在工具接口命令行,查看当前需要管理的日志 Home 目录adrcishow homes#设置当前工作 Ho
33、me 目录,RDBMS 模块下一般只有一个 Home 目录,因而也可以#不设置adrciset home diag/rdbms/#查看这个 Home 目录下的当前保留策略设置adrci show control#设置 RDBMS 目录策略, 策略设置的值单位是:小时,可根据实际情况而定adrci set control (SHORTP_POLICY = 480)adrci set control (LONGP_POLICY = 720)#设置后,再检测一遍adrci show control2.5.3 查看异常日志日常管理中,可以登录 ADRCI 工具,查看是否存在异常日志。查看 RDBMS
34、日志信息示例 : su oracleadrciadrcishow homesadrciset home diag/rdbms/# 查看异常问题号adrci show problem#或则只查询某类错误号的信息adrci show problem -p “problem_key=ORA 4031“#再查看这些异常的摘要信息adrci show incident#指定异常错误号adrci show incident -p “problem_key=ORA 4031“#指定时间范围adrci show incident -p “create_time 2012-02-28 16:20:45“#再查看
35、这些异常的详细摘要信息adrci show incident -mode detailadrci show incident -mode detail -p “create_time 2012-03-13 16:00:00“#再获取这些异常的对应的 trace 文件信息,以便去查看异常的具体信息#列出所有的异常问题的 trace 文件信息adrcishow incdir#列出指定事件 trace 文件信息,这里的事件号,是前面摘要信息看到的incdent_id 号adrcishow incdir 34177#列出一个范围事件号的 trace 信息,事件号也是前面摘要信息看到的 incdent_
36、id号adrcishow incdir 34000 35000#查看告警日志#查看整个告警日志文件的内容,默认是打开文件后,是调用 VI 工具来操作文件,可以#使用 VI 的命令查看 alert 信息adrcishow alert#指定只看最后 300 行adrcishow alert -tail 300注:同样,查看 GRID 模块下的异常信息,也参考上面的方法进行。2.5.4 手工清理日志手工清理日志,也可以在 ADRCI 工具里进行手工清理日志文件或记录。 #通过摘要事件号,进行清理adrcipurge -i 0 1000#通过日志老化,按时间来清理;这里 age 项指定的时间单位是:分钟,即多少分钟之前;#type 项指定的是什么类型的日志,类型:ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMPadrcipurge -age 60 -type ALERT