数据库日常维护手册
注,蓝色部分为可执行命令,红色部分为重点注意的。
一、停止、启动群集
首先应停止实例和相关服务,最后才是关闭节点应用程序(虚拟 IP、GSD、TNS 和 ONS)。以下命令在oracle用户下执行。
emctl stop dbconsole
srvctl stop instance -d hsdb -i hsdb1
srvctl stop instance -d hsdb -i hsdb2
srvctl stop nodeapps -n bjhsdb1
srvctl stop nodeapps –n bjhsdb2
启动节点应用程序(虚拟 IP、GSD、TNS 和 ONS)。当成功启动节点应用程序后,最后才是启动 Oracle 实例和相关服务,以及企业管理器数据库控制台
srvctl start nodeapps -n bjhsdb1
srvctl start nodeapps -n bjhsdb2
srvctl start instance -d hsdb -i hsdb1
srvctl start instance -d hsdb -i hsdb2
emctl start dbconsole
使用 SRVCTL 启动/停止所有实例
srvctl start database -d hsdb
srvctl stop database -d hsdb
二、 归档管理
以下命令是在登入数据库主机后,在sqlplus下执行。
查看是否归档
Archive log list
在RAC中,归档模式之间的切换要比单机复杂,下面是非归档模式该为归档模式
保留一个实例tdb1,停掉其它实例(shutdown immediate)
以下操作都在mesoradb1执行:
alter system set parameter CLUSTER_DATABASE= false scope=spfile;
shutdown immediate
检查LOG_ARCHIVE_DEST、LOG_ARCHIVE_FORMAT参数是否设定正确,具体参照reference;
startup mount
若由非归档模式改为归档模式:
alter database archivelog
由归档模式改为非归档模式:
alter database noarchivelog
alter database open
alter system set parameter CLUSTER_DATABASE= true scope=spfile;
shutdown immediate
三、 空间管理
以下命令可在PL/SQL Developer下执行。
1. 查看数据库中所有数据文件
select name from v$datafile
union
select member from v$logfile
union
select name from v$controlfile
union
select name from v$tempfile;
2. 查看表空间中空闲空间大小
注,对于TEMP、UNDOTBS1、UNDOTBS2我们不需要特别关注,它们可以自动重用。
数据库管理员要对表空间的使用情况进行定期的检查和监控,当前表空间增长达60%时,必须进行表空间的扩充;历史或归档表空间增长达80%时,必须进行表空间的扩充;(扩展办法见下)
交易期间,如当前表空间增长达到90%,应立即对表空间进行扩展。
SELECT a.tablespace_name, b.total \"Total Size(M)\Size(M)\
FROM (select tablespace_name,round(sum(bytes)/1024/1024,0) free from dba_free_space group by tablespace_name) a,
(select tablespace_name,round(sum(bytes)/1024/1024,0) total from dba_data_files group by tablespace_name)b
WHERE a.tablespace_name=b.tablespace_name;
3. 增加数据文件(如扩展HS_FUND_DATA表空间)
目前对datavg所建立的所有逻辑卷都已分配给数据库,如果表空间达到了前面所说的空间大小需要扩充时,首先必须停止RAC,停止HACMP,然后增加逻辑卷,同步hacmp,然后才是启动hacmp,启动RAC(启动RAC时数据库会自动启动)。接下来就是按下面的方法增加逻辑卷到表空间中。假设逻辑卷为/dev/rvg1_fund_data_2,大小为2G
alter tablespace hs_fund_data add datafile '/dev/rvg1_fund_data_2' size 2000M autoextend off;
注,目前HS_HIS_DATA表空间分配了375G的空间,HS_HIS_IDX分配了250G空间,若以后空间不够用时,可以按类似上面的方法增加数据文件。
四、统计信息管理
1. 修改优化器模式(由ALL_ROWS改为RULE)
show parameter optimizer_mode
alter system set optimizer_mode=RULE scope=both sid='*';
2. 收集用户统计信息
不同的用户,可以修改ownname的值。
exec dbms_stats.gather_schema_stats(ownname =>
'HS_FUND',estimate_percent => 100,degree => 4,cascade => TRUE);
3. 收集表统计信息
不同的表,可以修改ownname,tabname的值。
exec dbms_stats.gather_table_stats(ownname => 'HS_FUND',tabname 'FUND',estimate_percent => 100,degree => 4,cascade => TRUE);
4. 删除用户统计信息
exec dbms_stats.delete_schema_stats(ownname => 'HS_FUND');
5. 删除表统计信息
=>
exec dbms_stats.delete_table_stats(ownname => 'HS_FUND',tabname => 'FUND');
五、OS、ORACLE日志检查
1. OS日志
主要通过errpt查看,检查有没有异常信息。另外,还需检查hacmp日志/tmp/hacmp.log
2. 检查本地磁盘空间:
用df -g命令查看,需要特别注意两个节点的/backup目录,数据库的归档日志存放在该目录下,如果该空间满了会导致数据库挂起。
3. ORACLE日志
主要检查以下目录下的log文件,是否存在异常信息。每天只少应检查一遍。
CRS日志:
cssd进程:/u01/app/oracle/product/10.2.0/crs/log/bjhsdb1/cssd
crsd进程:/u01/app/oracle/product/10.2.0/crs/log/bjhsdb1/crsd
evmd进程:/u01/app/oracle/product/10.2.0/crs/log/bjhsdb1/evmd
DATABASE日志:/u01/app/oracle/admin/ghrac/
最主要需要观察此日志:
/u01/app/oracle/admin/ghrac/bdump/alert_bjhsdb1.log与alert_bjhsdb2.log关注期中的一些ORA-打头的报错信息。
六、数据库的备份与还原
数据库的备份与还原是数据库最重要的一项内容,它也是数据库能长期运行的保证,当前数据库主要采用物理备份和逻辑备份:
1. 物理备份方式
主要采用两种方式:
RMAN 工具或第三方工具与RMAN 结合使用,这是业界主要的备份方式。
使用操作系统备份方式:
例:
Sql命令:ALTER TABLESPACE BEGIN BACKUP;
操作系统命令拷贝:cp /ddd/dddd /bbb/dddd
Sql命令:ALTER TABLESPACE BEGIN BACKUP;
2. 逻辑备份方式
使用传统的export/import 命令:
使用 exp help=y和 imp help=y获得帮助
例:
Exp user/passwd@db file=/databak/abc.dmp log=/databak/abc.log
owner=test
使用10g 的数据泵:
与export/import 命令差不多,使用expdp help=y 和 impdp help=y获得帮助
3. 当前系统的考虑
考虑到当前系统的业务需求:
建议暂时采用逻辑备份的方法:
数据备份:
Exp user/passwd file=/databak/abc.dmp log=/databak/abc.log
owner=HSMAN
控制文件备份:
Alter system backup controlfile to trace;
初始参数备份:
Create pfile from spfile;
至于tnsnames.ora,listener.ora 使用操作系统拷贝。
集群文件备份:
七、AWR报告的产生
注,在oracle10g中,每隔一小时就会产生一个快照,把其相关信息存放在SYSAUX。
当系统消耗过多资源,或当感觉数据库存在性能问题时,我们可以利用其快照产生AWR报告,帮助分析性能瓶颈。
以oracle用户登入数据库主机,进入以下目录:
cd $ORACLE_HOME/rdbms/admin
下面是一个产生AWR报告的例子(产生的是15:04-16:00之间的报告),蓝色部为需要
手工输入的。
[GFQH-TDB10:oracle:/oracle/product/10.2.0/db/rdbms/admin#]sqlplus / as sysdba SQL*Plus: Release 10.2.0.3.0 - Production on Fri Sep 7 16:01:25 2007 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - bit Production With the Partitioning, Real Application Clusters and Data Mining options SQL> @awrrpt.sql Current Instance ~~~~~~~~~~~~~~~~ DB Id DB Name Inst Num Instance ----------- ------------ -------- ------------ 2260032062 TDB 1 tdb1
Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
Enter value for report_type: html
Type Specified: html
Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DB Id Inst Num DB Name Instance Host
------------ -------- ------------ ------------ ------------
2260032062 2 TDB tdb2 GFQH-TDB11
* 2260032062 1 TDB tdb1 GFQH-TDB10
Using 2260032062 for database Id Using 1 for instance number Specify the number of days of snapshots to choose from ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Entering the number of days (n) will result in the most recent (n) days of snapshots being listed. Pressing without specifying a number lists all completed snapshots. Enter value for num_days: 1 #这里指定列出快照天数 Listing the last day's Completed Snapshots Snap Instance DB Name Snap Id Snap Started Level ------------ ------------ --------- ------------------ ----- tdb1 TDB 3 07 Sep 2007 00:00 1 4 07 Sep 2007 01:00 1
5 07 Sep 2007 02:00 1
6 07 Sep 2007 03:00 1
7 07 Sep 2007 04:00 1
8 07 Sep 2007 05:00 1
9 07 Sep 2007 06:00 1
10 07 Sep 2007 07:00 1
11 07 Sep 2007 08:00 1
12 07 Sep 2007 09:00 1
13 07 Sep 2007 10:00 1
14 07 Sep 2007 11:00 1
15 07 Sep 2007 12:00 1
16 07 Sep 2007 13:00 1
17 07 Sep 2007 14:00 1
18 07 Sep 2007 15:04 1
19 07 Sep 2007 16:00 1
Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for begin_snap: 18
Begin Snapshot Id specified: 18
Enter value for end_snap: 19
End Snapshot Id specified: 19
Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_18_19.html. To use this name,
press to continue, otherwise enter an alternative.Enter value for report_name: /tmp/awrsp.html