一.Oracle每日运维操作
目录
一.Oreace每日运维操作
1.1、确认所有的INSTANCE状态正常
1.2、检查文件系统的使用(剩余空间)
1.3 lwh暗码,,、检查日志文件和trace文件记录
1.4 lwh、检查数据库当日备份的有效性。
1.5、检查数据文件的状态
1.6、检查表空间的使用情况
1.7、检查剩余表空间
1.8、监控数据库性能(重点)
1.9、检查数据库系统性能(重点)
1.10、日常出现问题的处理。
1.11 检查数据库连接池状态
解释
操作步骤
1.12 监控数据库锁
解释
操作步骤
1.14 更新统计信息
解释
操作步骤
1.1、确认所有的INSTANCE状态正常
登陆到所有数据库或例程,检测ORACLE后台进程:
$ps –ef|grep ora
1.2、检查文件系统的使用(剩余空间)
如果文件系统的剩余空间小于20%,需删除不用的文件以释放空间。
#df –k
1.3 lwh暗码,,、检查日志文件和trace文件记录
检查相关的日志文件和trace文件中是否存在错误。
A、连接到每个需管理的系统
使用’telnet’命令
B、对每个数据库,进入到数据库的bdump目录,unix系统中BDUMP目录通常是$ORACLE_BASE/<SID>/bdump
#$ORACLE_BASE/<SID>/bdump
C、使用 Unix ‘tail’命令来查看alert_<SID>.log文件
#tail $ORACLE_BASE/<SID>/bdump/alert_<SID>.log
D、如果发现任何新的ORA- 错误,记录并解决
1.4 lwh、检查数据库当日备份的有效性。
对RMAN备份方式:
1.5、检查数据文件的状态
检查所有数据文件并记录状态不是“online”的数据文件,并做恢复。
Sqlplus> Select file_name from dba_data_files where status=’OFFLINE’
1.6、检查表空间的使用情况
SELECT tablespace_name, max_m, count_blocks free_blk_cnt, sum_free_m,to_char(100*sum_free_m/sum_m, '99.99') || '%' AS pct_free FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name), ( SELECT tablespace_name AS fs_ts_name, max(bytes)/1024/1024 AS max_m, count(blocks) AS count_blocks, sum(bytes/1024/1024) AS sum_free_m FROM dba_free_space GROUP BY tablespace_name ) WHERE tablespace_name = fs_ts_name
1.7、检查剩余表空间
SELECT tablespace_name, sum ( blocks ) as free_blk ,
trunc ( sum ( bytes ) /(1024*1024) ) as free_m,
max ( bytes ) / (1024) as big_chunk_k,
count (*) as num_chunks FROM dba_free_space GROUP BY tablespace_name;
1.8、监控数据库性能(重点)
运行bstat/estat生成系统报告或者使用statspack收集统计数据
1.9、检查数据库系统性能(重点)
主要检查并记录数据库系统的cpu使用率、pagespaces、IO、buffer命中率等等,可以使用topas、vmstat、iostat、glance、top等命令
1.10、日常出现问题的处理。
1.11 检查数据库连接池状态
解释
数据库连接池用于管理数据库连接的复用和管理。确保连接池的使用情况正常非常重要,因为连接泄漏或连接耗尽会导致应用程序性能下降或崩溃。
操作步骤
1. 监控连接池的使用情况
检查当前连接数、活动连接数、空闲连接数等。
使用连接池管理工具或数据库监控工具进行监控。
2. 配置警报
设置阈值,当连接数达到一定数量时触发警报。
示例 (以 HikariCP 连接池为例):
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mydatabase");
dataSource.setUsername("user");
dataSource.setPassword("password");
dataSource.setMaximumPoolSize(10);
// 监控连接池状态
System.out.println("Total connections: " + dataSource.getHikariPoolMXBean().getTotalConnections());
System.out.println("Active connections: " + dataSource.getHikariPoolMXBean().getActiveConnections());
System.out.println("Idle connections: " + dataSource.getHikariPoolMXBean().getIdleConnections());
1.12 监控数据库锁
解释
长时间未释放的锁会导致数据库其他事务被阻塞,影响系统性能和稳定性。定期检查数据库锁的状态,确保没有死锁或长时间未释放的锁。
操作步骤
1. 查询当前锁状态
使用数据库管理工具或 SQL 查询查看当前锁状态。
2. 配置警报
当检测到长时间未释放的锁时,触发警报或自动处理。
示例 (以 MySQL 为例):
查看当前锁信息
SHOW ENGINE INNODB STATUS;
查询正在等待的锁
SELECT * FROM information_schema.innodb_lock_waits;
查询持有锁的事务
SELECT * FROM information_schema.innodb_locks;
1.13 检查数据一致性
解释
数据一致性检查用于确保数据库中的数据没有出现不一致或损坏的情况。这通常包括检查主键、外键约束、一致性校验等。
操作步骤
1. 执行一致性校验脚本
编写脚本或使用工具进行数据一致性检查。
2. 定期检查
设置定期任务,定期执行数据一致性检查。
示例 (以 PostgreSQL 为例):
检查表中的主键是否唯一
SELECT id, COUNT(*)
FROM my_table
GROUP BY id
HAVING COUNT(*) > 1;
检查外键约束
SELECT *
FROM my_table t1
LEFT JOIN foreign_table t2 ON t1.foreign_key = t2.id
WHERE t2.id IS NULL;
1.14 更新统计信息
解释
数据库优化器依赖统计信息来生成高效的查询计划。定期更新统计信息可以确保优化器有最新的数据分布信息,从而提升查询性能。
操作步骤
1. 手动更新统计信息
使用数据库提供的命令手动更新统计信息。
2. 配置自动更新
配置数据库自动更新统计信息的策略。
示例 (以 Oracle 为例):
手动更新统计信息
EXEC DBMS_STATS.GATHER_TABLE_STATS('SCHEMA_NAME', 'TABLE_NAME');
更新整个模式的统计信息
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SCHEMA_NAME');