HairOracle数据库运维手册.docx
海尔Oracle数据库维护和管理手册编号:共 46页,第 46 页密级:内部公开操作规范:禁止传播单位:青岛东软Oracle 数据库维护和管理手册作者孙德金审核分类数据库子类Oracle更新时间2013-11-24关键字Oracle 维护和管理摘要Oracle 运行维护、管理、日常巡检主要适用环境linux文档控制文档修订记录版本号变化状态变更内容修改日期变更人0.01C2013.11.24孙德金 *变化状态:C创建,A增加,M修改,D删除文档审批信息版本号审核人审核日期批准人批准日期备注目录1概述61.1目的61.2范围61.3预期读者61.4术语定义61.5参考资料62CRS的管理72.1RAC状态检查72.1.1检查守护进程状态72.1.2检查资源状态72.2手工启动与关闭RAC72.3OCR的管理82.3.1磁盘状态查看:82.3.2备份与恢复:82.3.3OCR内容查看:92.3.4OCR盘的指定:92.3.5增加OCR盘:102.3.6删除OCR盘:102.4VOTING DISK的管理112.4.1检查Voting Disl盘:112.4.2备份与恢复:112.4.3添加VOTING DISK盘:112.4.4删除VOTING DISK盘:112.5CSS管理112.6管理工具SRVCTL122.6.1管理实例122.6.2管理监听程序122.6.3管理ASM122.6.4管理service132.7修改RAC的IP及VIP132.7.1修改外网IP及心跳IP132.7.2修改VIP142.7.3查看与删除IP153ASM的管理153.1管理DG153.1.1建立与扩充disk group153.1.2mount与unmount的命令163.1.3删除disk group163.1.4增加DISK的total_mb163.1.5DG的属性AU大小173.1.6DG的属性离线删除时间173.1.7DG的属性兼容版本173.1.8向ASM中添加disk的完整步骤183.2ASMCMD203.2.1ASMCMD常用命令203.2.2复制ASM文件203.2.3命令lsdg203.2.4元数据备份与恢复213.2.5ASM磁盘头信息备份与恢复213.3ASM常用视图223.3.1视图V$ASM_DISKGROUP223.3.2视图V$ASM_DISK233.4常用方法243.4.1如何确定ASM实例的编号243.4.2查询DGRAW磁盘的对应关系254数据库管理274.1参数文件管理274.2表空间管理284.2.1表空间大小284.2.2表空间自动扩张284.2.3表空间更名294.2.4表空间的数据文件更名294.2.5缺省表空间294.2.6表空间删除304.2.7UNDO表空间304.2.8TEMP表空间304.3重做日志文件管理304.3.1增加REDO日志组304.3.2删除日志组314.3.3日志切换314.3.4日志清理314.3.5重做日志切换次数查询314.4归档模式334.4.1单实例数据库修改为归档模式的方法334.4.2RAC数据库修改为归档模式的方法334.4.3归档路径344.5重建控制文件344.6内存参数管理364.6.1Oracle内存管理发展阶段364.6.2自动内存管理AMM364.6.3自动共享内存管理ASMM374.6.4自动PGA管理374.7其他管理内容374.7.1数据库版本查看374.7.2字符集384.7.3创建密码文件384.7.4关闭审计功能384.7.5帐号管理384.7.6profile管理395Oracle数据库日常巡检395.1系统环境巡检395.1.1 Uptime395.1.2 Date395.1.3 Cpu405.1.4 Mem405.1.5 Process415.1.6 User415.2日志巡检415.2.1 OS_log415.2.2 Cron_log425.2.3 Ora_log425.2.4 Lsnrctl status435.3数据库巡检435.3.1 DB Links检查435.3.2 Instance status检查435.3.3 Datafile status检查445.3.4 JOB检查445.3.5 Session检查445.3.6 Invalid objects检查455.3.7 DB碎片情况检查455.3.8 表空间增长检查455.3.9 归档检查451 概述1.1 目的本文档是海尔Oracle11g数据库维护和管理手册,供系统管理员维护系统时使用。本文档是系统维护的重要参考资料。1.2 范围本文档是针对海尔Oracle数据库的日常维护操作步骤和管理的说明及描述,包括CRS、ASM、数据库等。1.3 预期读者系统管理员1.4 术语定义术语定义解 释1.5 参考资料编号文档名称文档说明123452 CRS的管理2.1 RAC状态检查2.1.1 检查守护进程状态守护进程是由/etc/inittab文件中如下三行内容拉起并管理:h1:35:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1 </dev/nullh2:35:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1 </dev/nullh3:35:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1 </dev/null如果这三行内容错误或没有,则守护进程可能会受到影响。三个守护进程如下:/bin/sh /etc/init.d/init.cssd fatal/bin/sh /etc/init.d/init.crsd run/bin/sh /etc/init.d/init.evmd run通过ps ef |grep 可以检查他们是否存在。2.1.2 检查资源状态检查RAC所有资源的状态:# $ORA_CRS_HOME/bin/crs_stat t检查CRS的状态:# $ORA_CRS_HOME/bin/crsctl check crs单独检查CSS的状态:# $ORA_CRS_HOME/bin/crsctl check css2.2 手工启动与关闭RAC使用init.crs start启动RAC,使用init.crs stop关闭RAC。该命令可以将整个RAC的所有资源(不包括三个守护进程)启动或停止。不同操作系统上,ini.crs文件的位置不同:SUSE: /etc/init.d/init.crsHP: /sbin/init.d/init.crsAIX: /etc/init.crsSUN: /etc/init.d/init.crs说明:不建议使用crsctl start/stop来启动或关闭RAC,因为这个命令并不校验各资源间的依赖关系,不是很可靠。2.3 OCR的管理2.3.1 磁盘状态查看:命令ocrcheck检查OCR存储的情况,执行结果类似于:midware01% ocrcheckStatus of Oracle Cluster Registry is as follows : Version : 2 Total space (kbytes) : 513652 Used space (kbytes) : 2792 Available space (kbytes) : 510860 ID : 1054294748 Device/File Name : /dev/rdsk/c3t12d0s4 Device/File integrity check succeeded Device/File not configured Cluster registry integrity check succeeded2.3.2 备份与恢复:默认地,OCR会被自动备份,使用命令ocrconfig -showbackup查看OCR进行的自动备份:linux1: # /oracle/crs/bin/ocrconfig -showbackuplinux2 2008/12/05 07:06:09 /oracle/crs/cdata/RAC/backup00.ocrlinux2 2008/12/05 03:06:09 /oracle/crs/cdata/RAC/backup01.ocrlinux2 2008/12/04 23:06:09 /oracle/crs/cdata/RAC/backup02.ocrlinux2 2008/12/04 07:06:08 /oracle/crs/cdata/RAC/day.ocrlinux2 2008/11/19 19:06:08 /oracle/crs/cdata/RAC/week.ocr如果要手工备份,可执行下面的命令:# $ORA_CRS_HOME/bin/ocrconfig export /oracle/db/ocrbak.ocr恢复OCR的方法如下:先关闭两个节点上的RAC,分别执行以下命令:# /etc/init.d/init.crs stop然后执行恢复:如果是一个空的OCR盘则用如下命令导入:# $ORA_CRS_HOME/bin/ocrconfig import /oracle/db/ocrbak.ocr如果OCR盘已经有信息了,那么应使用如下命令做恢复:# $ORA_CRS_HOME/bin/ocrconfig restore /oracle/db/ocrbak.ocr2.3.3 OCR内容查看:将OCR的内容用ocrdump导出后,可以用vi打开来查看:# ocrdump /home/oracle/ocr.txt2.3.4 OCR盘的指定:OCR使用哪个磁盘或文件是在/etc/oracle/ocr.loc文件中指定的。此文件包含两行内容,例如:ocrconfig_loc=/oracle/app/product/11g/db/cdata/localhost/local.ocrlocal_only=TRUE这里,ocrconfig_loc指定的是OCR所用的磁盘名称或者文件名。如果是RAC环境,则这里应为磁盘名,如果是单实例的环境,则这里为一个绝对路径及文件名。local_only表示CRS的二进制文件是安装在本地还是多个节点共享的存储上,单实例环境中该参数为TRUE,RAC中二进制文件装在各自本地盘上则为FALSE。2.3.5 增加OCR盘:一个RAC环境中,可以有两个OCR,一个为OCR,另外一个为OCRMIRROR。可以增加OCRMIRROR盘,命令如下:# ocrconfig -replace ocrmirror /dev/raw/raw3增加以后,执行ocrcheck将看到两个OCR盘了:# /oracle/crs/bin/ocrcheckStatus of Oracle Cluster Registry is as follows : Version : 2 Total space (kbytes) : 296940 Used space (kbytes) : 3948 Available space (kbytes) : 292992 ID : 938694221 Device/File Name : /dev/raw/raw1 Device/File integrity check succeeded Device/File Name : /dev/raw/raw3 Device/File integrity check succeeded Cluster registry integrity check succeeded Logical corruption check succeeded2.3.6 删除OCR盘:以下命令将删除OCR盘,原来的OCRMIRROR变成OCR:# ocrconfig -replace ocr删除OCRMIRROR:# ocrconfig -replace ocrmirror2.4 VOTING DISK的管理2.4.1 检查Voting Disl盘:# $ORA_CRS_HOME/bin/crsctl query css votedisk2.4.2 备份与恢复:备份命令如下:# dd if=/dev/raw/raw2 of=/oracle/db/voting.bak备份时间会比较长,备份文件与VOTING DISK盘的大小接近。恢复命令如下:# dd if=/oracle/db/voting.bak of=/dev/raw/raw2恢复前不需要先关闭RAC。2.4.3 添加VOTING DISK盘:可以添加一个盘为voting disk,命令如下:# crsctl add css votedisk /dev/raw/raw32.4.4 删除VOTING DISK盘:# crsctl delete css votedisk /dev/raw/raw3 -force2.5 CSS管理CSS的作用是协调ASM实例与数据库实例之间的通信。因此要使用ASM管理存储,无论是单实例还是RAC环境,都必须先配置CSS。查看CSS进程是否正常,以oracle用户执行以下命令:# crsctl check cssd如果CSS正常,那么显示如下信息:Cluster Synchronization Services appears healthy如果显示CSS未启动,则执行如下命令:# /etc/init.d/init.cssd start2.6 管理工具SRVCTL在RAC中,可以使用srvctl(service control tool)工具来管理CRS的各类资源。SRVCTL的有些命令会修改OCR的信息,例如添加service。有些命令则是通过发送指令给CRSD(oracle clusterware process),然后由CRSD去执行,例如启动数据库。可以使用-h查看命令的帮助信息,例如,要查看srvctl add asm的用法,可以执行如下命令:# srvctl add asm h2.6.1 管理实例启动数据库实例:# srvctl start instance -d db_name -i instance_name -o open;检查数据库实例的状态:# srvctl status database -d db_name2.6.2 管理监听程序添加监听程序:#srvctl add listener n hostname -o $ORACLE_HOME删除监听程序:#srvctl remove listener n hostname如果要指定删除一个资源,例如一个节点上有两个lsnr资源,一个为LISTENER3_HOST1,另外一个为LISTENER_HOST1,现在需要将不正确的LISTENER3_HOST1删除:# srvctl remove listener -n hostname -l LISTENER3_HOST1启动监听程序:#srvctl start listener n hostname停止监听程序:#srvctl stop listener n hostname检查监听程序是否存在#srvctl config listener n hostname2.6.3 管理ASM添加ASM实例:#srvctl add asm n hostname i ASM_ORACLE_SID -o $ORACLE_HOME删除ASM实例:#srvctl add asm n hostname f -i ASM_ORACLE_SID 其中-f表示如果删除失败,则强制删除启动ASM实例:#srvctl start asm n hostname -i ASM_ORACLE_SID停止ASM实例:# srvctl stop asm n hostname -i ASM_ORACLE_SID检查ASM实例是否存在# srvctl config asm n hostname2.6.4 管理service增加service:# srvctl add service -d db_name -s service_name -r 主节点的ORACLE_SID -a 备节点A的ORACLE_SID,备节点B的ORACLE_SID删除service:# srvctl remove service -d db_name -s service_name启动service:# srvctl start service -d db_name -s service_name停止service:# srvctl stop service -d db_name -s service_name2.7 修改RAC的IP及VIP2.7.1 修改外网IP及心跳IP当外网IP修改并重新绑定到网卡上以后,需要修改RAC中记录的外网IP。修改方法如下:关闭两个节点上的RAC;修改/etc/hosts文件,用新的IP替换旧IP值启动RAC,在两个节点上分别执行:# /etc/init.d/init.crs start假设我们要修改节点1的外网IP:# cd $ORA_CRS_HOM/bin# ./oifcfg setif -global eth0/192.168.1.10:public请根据实际情况替换eth0、192.168.1.10然后删除旧的外网IP信息:# ./oifcfg delif -global eth0/192.168.0.11修改 $ORACLE_HOME/network/admin/listener.ora 文件中HOST等于的外网IP值假设我们要修改节点1的心跳IP,旧IP为10.10.10.0,新IP为10.10.20.0:# cd $ORA_CRS_HOM/bin# ./oifcfg setif -global eth1:/10.1.0.20:cluster_interconnect# ./oifcfg delif -global eth1/10.10.10.0可以查看现在RAC中IP的值:# ./oifcfg getif global最后在两个节点上关闭并重启RAC。2.7.2 修改VIP查看当前的VIP设置:# /oracle/crs/bin/srvctl config nodeapps -a -n linux1RAC安装完以后,可以修改两个节点的VIP。前提是修改后的VIP必须没有被其他系统使用掉。正确的修改方法如下:步骤1: 使用srvctl修改VIP进入/crs/bin目录下执行如下命令:# ./srvctl modify nodeapps -n rac2 -A 10.71.99.112/255.255.255.0其中rac2为节点2的hostname,10.71.99.112为新的VIP如果两个节点的VIP都需要修改,则两个节点上都需要执行该步骤步骤2: 停止CRS的所有资源# /etc/init.d/init.crs stop步骤3: 卸掉旧的VIP网卡假定旧的VIP是绑定在eth3:1上,那么执行命令:# ifconfig eth3:1 down两个节点上都需要执行该步骤步骤4: 修改/etc/host文件 修改该文件,将旧的VIP改为新的VIP值. 两个节点上都需要执行该步骤步骤5: 启动CRS资源在任意一个节点上执行以下命令:# /etc/init.d/init.crs start步骤6: 修改客户端或应用程序连接服务器所使用的VIP值2.7.3 查看与删除IP查看与管理OCR中IP的配置信息:查看IP配置信息:# oifcfg getif返回结果例如:linux1: # /oracle/crs/bin/oifcfg getifbond0 10.71.99.0 global publicbond1 192.168.128.0 global cluster_interconnect# oifcfg iflist返回结果例如:linux1: # /oracle/crs/bin/oifcfg iflistbond0 10.71.99.0bond1 192.168.128.0即使两个节点的VIP都漂到一个节点上,那么此命令的执行结果也仍只有两行。删除网卡信息:# oifcfg delif -global ce0这里,-global表示删除RAC中所有节点上的网卡ce0。如果只想删除一个节点的,则用- n nodename3 ASM的管理3.1 管理DG3.1.1 建立与扩充disk group建立外部冗余的DG:SQL>create diskgroup dg_name external redundancy disk /dev/raw/raw5;冗余度:normal(2-way镜像),high(3-way镜像),external(不做镜像)建立normal冗余的DG:SQL> CREATE DISKGROUP dg_name NORMAL REDUNDANCY 2 FAILGROUP FGROUP1 DISK 3 'D:MYRAWSRAW1' NAME DISKn, 4 ' . other disk . ' 5 FAILGROUP FGROUP2 DISK 6 'D:MYRAWSRAW3' NAME DISKn, 7 ' . other disk . ' ;向一个disk group中增加一个裸盘的方法:SQL>alter diskgroup dg_name add disk '/dev/raw/raw6'从disk group中去掉disk:SQL> alter diskgroup dg_name drop disk disk在diskgroup中的名称(可从v$asm_disk中查询获得,也可在添加disk到group时加name disk名称来指定)3.1.2 mount与unmount的命令 SQL>alter diskgroup dg_name dismount;SQL>alter diskgroup dg_name mount;3.1.3 删除disk group要在节点1上执行DG的删除动作,则节点1上DG应为MOUNT,节点2上此DG的状态应为DISMOUNT。如果不是,则要先调整。删除DG的命令如下:SQL>DROP DISKGROUP dg_name (including contents);如果DG为DISMOUNT状态,则可以强制删除:SQL> drop diskgroup dg_name force including contents;3.1.4 增加DISK的total_mb当包含在DG中的RAW被扩大后,应在ASM中执行以下命令来扩张ASM可见此RAW的total_mb:SQL> alter diskgroup dg_name resize all size 19085M;如果DG中有多个RAW,每个RAW的大小不同,则这里应指定具体的DISK名称:SQL> alter diskgroup dg_name resize disk disk_name size 19085M;3.1.5 DG的属性AU大小在11G中,默认每个DG的AU大小为1M,可以为每个DG设置不同的AU大小。在建立DG时加上如下子句即可: attribute 'au_size' = '2M'AU_SIZE 的值应为 1M、2M、4M、8M、16M、32M 或 64M。可以修改已有DG的AU值:SQL> alter diskgroup dg_name set attribute 'au_size'='2M'3.1.6 DG的属性离线删除时间ASM会删除离线时间超过3.6小时的磁盘,可以通过修改DISK_REPAIR_TIME(单位可以是分钟,M或m,或小时,H或h)参数设置磁盘组默认时间限制。以小时为单位进行设置:SQL> ALTER DISKGROUP dg_name SET ATTRIBUTE 'disk_repair_time' = '4.5h'以分钟为单位进行设置SQL> ALTER DISKGROUP dg_name SET ATTRIBUTE 'disk_repair_time' = '300m'ALTER DISKGROUP命令的DROP AFTER子句用于废除DISK_REPAIR_TIME参数设置的默认时间。使用默认的DISK_REPAIR_TIME:SQL> ALTER DISKGROUP dg_name OFFLINE DISK D1_0001;废除默认的DISK_REPAIR_TIME:SQL> ALTER DISKGROUP dg_name OFFLINE DISK D1_0001 DROP AFTER 30m;如果磁盘在滚动升级期间离线,直到滚动升级完成,计时器才会启动。3.1.7 DG的属性兼容版本ASM 是一个适用于从 10g 到当前版本的 Oracle 数据库的存储平台。因此,11g 上的 ASM 实例可以保存 10g 第 1 版、10g 第 2 版以及 11g 第 1 版(以及更高版本)的数据库。只要 ASM 版本与 RDBMS 的版本相同或者更高,就可以在该 ASM 实例上创建数据库。如果 ASM 和 RDBMS 实例的版本不同,它们将如何通信呢?很简单:ASM将消息转换成适合RDBMS的版本。默认情况下,ASM 实例可以支持10g数据库。但如果您希望在该 ASM 实例上仅放置 11g RDBMS,该怎么办?无需进行消息转换来支持版本差异。但如果可以告诉 ASM 实例唯一支持的数据库是11g第 1 版,该怎么办?这将消除,至少可以减少消息转换。在Oracle数据库11g中,可以使用ASM兼容性和RDBMS兼容性磁盘组属性实现。首先,我们将检查磁盘组的当前属性:SQL> select name, compatibility, database_compatibility from v$asm_diskgroup;返回结果例如:NAME COMPATIBILITY DATABASE_COMPATIBILI- - -DG_ARCH 10.1.0.0.0 10.1.0.0.0DG_DATA 10.1.0.0.0 10.1.0.0.0DG_DBFILE 10.1.0.0.0 10.1.0.0.0DG_INDEX 10.1.0.0.0 10.1.0.0.0这里,ASM 兼容性(由COMPATIBILITY显示)设置为 10.1.0.0.0,这意味着该磁盘组最高可支持10.1 ASM 结构。因此,该磁盘组可以具有任意RDBMS结构。另一列DATABASE_COMPATIBILITY显示RDBMS兼容性设置为10.1.这意味着,ASM 磁盘组可用于10.1版的任何RDBMS由于数据库为11g,并只希望创建11g ASM 和RDBMS结构,因此无需拥有10g元素。要将该磁盘组的 ASM 兼容性属性设置为 11.1,可以执行以下语句(在ASM实例中):SQL> alter diskgroup dg_name set attribute 'compatible.asm'='11.1'现在ASM 兼容性设置为 11.1;但 RDBMS 兼容性仍然设置为 10.1.要将它也更改为 11.1,命令如下:SQL> alter diskgroup dg_name set attribute 'compatible.rdbms'='11.1'注意:兼容性是针对磁盘组设置的,而不是针对整个 ASM 实例。使用该特性,您只需使用一个 ASM 实例即可满足所有数据库版本类型的需要。根据所使用的版本,您可以相应地设置属性,从而减少版本间的通信。3.1.8 向ASM中添加disk的完整步骤1. 划好磁盘分区,例如sdd62. 查看现有的RAW:# raw qa确定下一个RAW的编码,例如此时最大的RAW编码为RAW11,那么下面将使用RAW123. 将RAW12添加到文件/etc/raw中,使它永久生效:添加的内容请参考该文件中的其他行4. 修改RAW12的权限# chown oracle:dba /dev/raw/raw125. 将sdd6绑定为裸设备,如raw12:# raw /dev/raw/raw12 /dev/sdd66. 将raw12添加到要扩充的dg中,例如dg_dbfile中:确定diskstring当前的值,以oracle用户登录节点1:#export ORACLE_SID=+ASM1#sqlplus / as sysdbaSQL>show parameter asm_diskstring;例如该参数的值为/dev/raw/raw1,/dev/raw/raw2登录节点1,然后执行如下步骤:#export ORACLE_SID=+ASM1#sqlplus / as sysdba修改参数asm_diskstring:SQL> alter system set asm_diskstring='/dev/raw/raw1,/dev/raw/raw2,/dev/raw/raw12' 登录节点2,然后执行如下步骤:#export ORACLE_SID=+ASM2#sqlplus / as sysdba修改参数asm_diskstring:SQL> alter system set asm_diskstring='/dev/raw/raw1,/dev/raw/raw2,/dev/raw/raw12'增加raw12到dg中:SQL>alter diskgroup dg_dbfile add disk '/dev/raw/raw12'查看该dg的状态:SQL>select name,state from v$asm_diskgroup where name=DG_DBFILE;如果状态为DISMOUNT,则执行下面的命令将它MOUNT起来:SQL>alter diskgroup dg_dbfile mount;回到节点1,执行如下步骤:查看该dg的状态:SQL>select name,state from v$asm_diskgroup where name=DG_DBFILE;如果状态为DISMOUNT,则执行下面的命令将它MOUNT起来: