首页 > 数据库 >Oracle数据库状态信息自动化收集脚本

Oracle数据库状态信息自动化收集脚本

时间:2024-07-26 11:54:11浏览次数:14  
标签:NAME 数据库 DB echo FILE 自动化 Oracle OUTPUT PDB

#!/bin/bash

# 配置变量
ORACLE_SID=CDB
ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID ORACLE_HOME PATH

# 数据库登录信息
DB_USER=lcsdb
DB_PASS=123456
PDB_NAME=FS3_LCS

# 输出文件
OUTPUT_DIR=/path/to/output/directory
DATE=$(date +'%Y%m%d_%H%M%S')
OUTPUT_FILE="$OUTPUT_DIR/db_monitor_$DATE.txt"

# 创建输出目录
mkdir -p $OUTPUT_DIR

# 开始记录
echo "Oracle Database Monitoring Report - $DATE" > $OUTPUT_FILE
echo "----------------------------------------" >> $OUTPUT_FILE
echo "" >> $OUTPUT_FILE

# 1. 数据库运行状态
echo "1. Database Status for PDB $PDB_NAME:" >> $OUTPUT_FILE
sqlplus -s $DB_USER/$DB_PASS@$PDB_NAME <<EOF >> $OUTPUT_FILE
SET LINESIZE 200
SET PAGESIZE 50
SELECT 'Database Status:' STATUS FROM v\$instance;
EOF
echo "" >> $OUTPUT_FILE

# 2. 内存使用情况
echo "2. Memory Usage for PDB $PDB_NAME:" >> $OUTPUT_FILE
sqlplus -s $DB_USER/$DB_PASS@$PDB_NAME <<EOF >> $OUTPUT_FILE
SET LINESIZE 200
SET PAGESIZE 50
SELECT * FROM v\$sgainfo;
EOF
echo "" >> $OUTPUT_FILE

# 3. CPU使用情况
echo "3. CPU Usage for PDB $PDB_NAME:" >> $OUTPUT_FILE
sqlplus -s $DB_USER/$DB_PASS@$PDB_NAME <<EOF >> $OUTPUT_FILE
SET LINESIZE 200
SET PAGESIZE 50
SELECT * FROM v\$osstat WHERE stat_name IN ('NUM_CPU_CORES', 'NUM_CPU_SOCKETS', 'NUM_CPU_THREADS');
EOF
echo "" >> $OUTPUT_FILE

# 4. 初始化参数
echo "4. Initialization Parameters for PDB $PDB_NAME:" >> $OUTPUT_FILE
sqlplus -s $DB_USER/$DB_PASS@$PDB_NAME <<EOF >> $OUTPUT_FILE
SET LINESIZE 200
SET PAGESIZE 50
SHOW PARAMETER;
EOF
echo "" >> $OUTPUT_FILE

# 5. 数据文件
echo "5. Data Files for PDB $PDB_NAME:" >> $OUTPUT_FILE
sqlplus -s $DB_USER/$DB_PASS@$PDB_NAME <<EOF >> $OUTPUT_FILE
SET LINESIZE 200
SET PAGESIZE 50
SELECT file_name, bytes/1024/1024 AS size_mb FROM dba_data_files;
EOF
echo "" >> $OUTPUT_FILE

# 6. 日志文件
echo "6. Log Files for PDB $PDB_NAME:" >> $OUTPUT_FILE
sqlplus -s $DB_USER/$DB_PASS@$PDB_NAME <<EOF >> $OUTPUT_FILE
SET LINESIZE 200
SET PAGESIZE 50
SELECT member FROM v\$logfile;
EOF
echo "" >> $OUTPUT_FILE

# 7. 告警日志
echo "7. Alert Log for PDB $PDB_NAME:" >> $OUTPUT_FILE
ALERT_LOG="$ORACLE_HOME/log/alert_${ORACLE_SID}.log"
if [ -f "$ALERT_LOG" ]; then
    tail -n 50 "$ALERT_LOG" >> $OUTPUT_FILE
else
    echo "Alert log not found at $ALERT_LOG" >> $OUTPUT_FILE
fi
echo "" >> $OUTPUT_FILE

# 8. 监控
echo "8. Monitoring for PDB $PDB_NAME:" >> $OUTPUT_FILE
sqlplus -s $DB_USER/$DB_PASS@$PDB_NAME <<EOF >> $OUTPUT_FILE
SET LINESIZE 200
SET PAGESIZE 50
SELECT * FROM v\$monitoring_info;
EOF
echo "" >> $OUTPUT_FILE

# 9. 表空间剩余大小
echo "9. Tablespace Usage for PDB $PDB_NAME:" >> $OUTPUT_FILE
sqlplus -s $DB_USER/$DB_PASS@$PDB_NAME <<EOF >> $OUTPUT_FILE
SET LINESIZE 200
SET PAGESIZE 50
SELECT tablespace_name, 
       ROUND(SUM(bytes) / 1024 / 1024, 2) AS total_mb,
       ROUND(SUM(free_bytes) / 1024 / 1024, 2) AS free_mb
FROM (SELECT tablespace_name, bytes AS total_bytes, 0 AS free_bytes
      FROM dba_data_files
      UNION ALL
      SELECT tablespace_name, 0 AS total_bytes, bytes AS free_bytes
      FROM dba_free_space)
GROUP BY tablespace_name;
EOF
echo "" >> $OUTPUT_FILE

# 10. 数据一致性检查
echo "10. Data Consistency Check for PDB $PDB_NAME:" >> $OUTPUT_FILE
sqlplus -s $DB_USER/$DB_PASS@$PDB_NAME <<EOF >> $OUTPUT_FILE
SET LINESIZE 200
SET PAGESIZE 50
SELECT * FROM dba_repair_summary;
EOF
echo "" >> $OUTPUT_FILE

# 11. 表和索引碎片
echo "11. Table and Index Fragmentation for PDB $PDB_NAME:" >> $OUTPUT_FILE
sqlplus -s $DB_USER/$DB_PASS@$PDB_NAME <<EOF >> $OUTPUT_FILE
SET LINESIZE 200
SET PAGESIZE 50
SELECT segment_name, segment_type, ROUND((bytes/1024/1024),2) AS size_mb
FROM dba_segments
WHERE segment_type IN ('TABLE', 'INDEX')
ORDER BY size_mb DESC;
EOF
echo "" >> $OUTPUT_FILE

# 12. 用户活动和权限管理
echo "12. User Activity and Permissions for PDB $PDB_NAME:" >> $OUTPUT_FILE
sqlplus -s $DB_USER/$DB_PASS@$PDB_NAME <<EOF >> $OUTPUT_FILE
SET LINESIZE 200
SET PAGESIZE 50
SELECT username, account_status, profile FROM dba_users;
EOF
echo "" >> $OUTPUT_FILE

# 13. 安全审计
echo "13. Security Audit for PDB $PDB_NAME:" >> $OUTPUT_FILE
sqlplus -s $DB_USER/$DB_PASS@$PDB_NAME <<EOF >> $OUTPUT_FILE
SET LINESIZE 200
SET PAGESIZE 50
SELECT * FROM dba_audit_trail;
EOF
echo "" >> $OUTPUT_FILE

# 14. 网络和连接
echo "14. Network and Connections for PDB $PDB_NAME:" >> $OUTPUT_FILE
sqlplus -s $DB_USER/$DB_PASS@$PDB_NAME <<EOF >> $OUTPUT_FILE
SET LINESIZE 200
SET PAGESIZE 50
SELECT * FROM v\$session;
EOF
echo "" >> $OUTPUT_FILE

# 结束记录
echo "----------------------------------------" >> $OUTPUT_FILE
echo "Monitoring completed at $(date)" >> $OUTPUT_FILE

echo "Monitoring report saved to $OUTPUT_FILE"

 

标签:NAME,数据库,DB,echo,FILE,自动化,Oracle,OUTPUT,PDB
From: https://www.cnblogs.com/dll102/p/18325002

相关文章

  • 【Python自动化办公】用Pandas库自动化操作Excel表格,从读取、写入到数据处理和分析
    文末免费赠送精品编程资料~~前言Python的第三方Pandas库是数据处理和分析中的利器,其强大的功能可以帮助我们轻松地对Excel表格进行自动化操作。接下来,我们将介绍九个用Pandas库操作Excel的编程例子,并且每个例子都会涉及不同的知识点,确保全面掌握这个主题。1.读取和写入E......
  • Oracle数据库监控和运维关注哪些方面
    全面的数据库监控和运维涉及多个方面。以下是一些关键的数据库状态信息,你应该关注这些方面,以确保数据库的健康和性能:1.数据库运行状态数据库状态:检查数据库是否运行正常,了解是否处于OPEN、MOUNT或NOMOUNT状态。实例状态:确保所有实例都正常运行,没有宕机或异常。2.内存使用......
  • KingbaseES数据库禁止某用户连接到数据库
    一、权限介绍KingbaseES数据库中的权限控制主要分为两个层次:实例级别和数据库级别。实例级别的权限由sys_hba.conf文件控制,而数据库级别的权限则由数据库内部的权限系统控制。对于数据库以及实例的权限控制,这两者权限控制可以理解为粗粒度,细粒度。实例级别权限:这主要通过sys_hba......
  • KingbaseES 数据库WAL日志暴增问题处理
    故障现象:kingbase数据库容量不足100G,业务繁忙程度小,但是每天产生112283个WAL日志,每个日志16M,生成约1.7T的归档日志分析过程:思路一:从数据库日志入手,分析过程如下:sys_log日志:2024-06-0223:54:05.497CST3130361b580b0.7a47182242021-12-1212......
  • KingbaseES 数据库无响应问题分析
    一、背景及理论阐述某项目数据库系统是集群环境,主库业务卡顿,应用反馈部分业务无法正常进行。在操作系统中,物理内存(RAM)是有限的资源,当内存需求超过物理内存的容量时,操作系统会使用页面调度机制来管理内存资源。页面调度涉及将不常用的内存页面(Page)移到磁盘上的交换空间(SwapSpace......
  • 聊一聊PostgreSQL数据库,以及PostgreSQL认证体系
    PostgreSQL数据库简介PostgreSQL是一种强大的开源关系型数据库管理系统(RDBMS)。它具有以下显著特点和优势:强大的功能:支持丰富的数据类型,包括数组、JSON、XML等复杂数据类型。提供完善的事务处理机制,确保数据的一致性和可靠性。高度的可扩展性:可以通过自定义函数、存储过程和......
  • 修改数据库的默认校对规则
    在Linux下,要修改MySQL服务器的默认字符集和校对规则,您需要按照以下步骤操作: ###1.查找MySQL配置文件 首先,您需要找到MySQL的配置文件。配置文件通常位于`/etc/mysql/my.cnf`或`/etc/my.cnf`。您可以使用`find`命令来查找它: ```bashsudofind/-namemy.cnf```......
  • Oracle: 创建分区表、分区索引
    ORACLE创建分区表例子:--删除分区表DROPTABLECUX.CUX_PARTITION_TEST;--创建分区表,以GROUP_NAME字段的值进行分区CREATETABLECUX.CUX_PARTITION_TEST(TEST_IDNUMBER,TEST_NAMEVARCHAR2(50),GROUP_NAMEVARCHAR2(30),CREATION_DAT......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-53- 处理面包屑(详细教程)
    1.简介面包屑(Breadcrumb),又称面包屑导航(BreadcrumbNavigation)这个概念来自童话故事“汉赛尔和格莱特”,当汉赛尔和格莱特穿过森林时,不小心迷路了,但是他们发现沿途走过的地方都撒下了面包屑,让这些面包屑来帮助他们找到回家的路。所以,面包屑导航的作用是告诉访问者他们在网站中......
  • C#中将多个excel档案汇总为一个excel档,并批量汇入oracle数据库
    privatevoidbt_bach_oracle_Click(objectsender,EventArgse){//將下載的excel匯總為一個excelstringsourceFolder=@"D:\123";//源文件夹路径stringdestinationFolder=@"D:\456";//目标文件夹路径stringdest......