• 超简单:必须要掌握的运维小妙招


    常言道:生产运维无小事!尤其针对黑屏操作,相信不少客户都有自己的血泪史。
    比如操作系统rm命令误删掉了关键系统数据...
    比如执行关库操作后才发现连错了数据库...

    除了对生产要有敬畏之心,做关键操作之前反复多确认,多人复核,其实还可以借助一些小妙招来减少紧张和焦虑情绪。
    我们给客户做hands-on实验演示时,也可以通过这些小妙招来加快演示速度,同时能让观众更清楚Demo环境。

    • Oracle的小妙招
    • MySQL的小妙招

    Oracle的小妙招

    sqlplus界面优化

    默认情况下,sqlplus连接到数据库,并不会清楚显示必要信息,只有默认的SQL>
    有经验的运维人员做关键操作时,比如关闭数据库,会习惯性的确认当前连接的数据库是否正确。
    同时,建议设置glogin.sql文件,示例如下:

    cd $ORACLE_HOME/sqlplus/admin/
    vi glogin.sql
    

    添加新内容如下:

    define gname=idle
    column global_name new_value gname
    set heading off
    set termout off
    col global_name noprint
    select upper (sys_context ('userenv', 'DATABASE_ROLE') || ' @' || sys_context('userenv', 'db_unique_name') || ' -> ' ||user||' @'|| sys_context ('userenv', 'con_name')) global_name from dual;
    set sqlprompt '&gname> '
    set heading on
    set termout on
    set lines 180 pages 100
    

    关于连接信息的核心就是配置这一段,可根据你的需求做微调:

    select upper (sys_context ('userenv', 'DATABASE_ROLE') || ' @' || sys_context('userenv', 'db_unique_name') || ' -> ' ||user||' @'|| sys_context ('userenv', 'con_name')) global_name from dual;
    

    我这里就是想显示数据库角色(主/备)、数据库db_unique_name、当前连接用户和连接容器库名。

    连接上就可以清楚的看到这些信息,效果如下:

    [oracle@demo ~]$ p
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Thu Apr 11 07:55:08 2024
    Version 19.21.0.0.0
    
    Copyright (c) 1982, 2023, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
    Version 19.21.0.0.0
    
    PRIMARY @DB0913_9DF_IAD -> SYS @CDB$ROOT> 
    
    [oracle@demo ~]$ s
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Thu Apr 11 07:55:17 2024
    Version 19.21.0.0.0
    
    Copyright (c) 1982, 2023, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 19c EE High Perf Release 19.0.0.0.0 - Production
    Version 19.21.0.0.0
    
    PHYSICAL STANDBY @DB0913_DG -> SYS @CDB$ROOT> 
    

    上面的p和s是简化后的别名,同时需要注意的是,glogin.sql其实也有一定的局限性,比如已经连接到会话之后,针对这个会话本身的操作,比如alter session set container这样的命令,就无法捕捉到容器的变化,因为glogin.sql只有在你发起新的连接才能触发,不过瑕不掩瑜,执行这样的操作之后如果想看到变化,就手工调用下glogin.sql就OK。

    另外,我最后面特意写了一行set lines 180 pages 100,是想提醒如果大家的日常操作相对固定,可以把最常用的格式设置都放在这里,而不用平常不管查什么都大量去set和col了,真的一点儿都不酷。

    别再狂找alert日志了

    经常遇到现场的小伙伴在遇到问题时慌慌张张,一顿操作猛如虎,仔细一看就是在各种cd还没找到最关键的alert日志在哪里。而adrci工具也不是所有人都知道,况且有时候也会出现问题不可用。
    最简单的技巧,就是设置个别名,日常把数据库的alert日志查清楚,写好别名,比如下面示例,针对主库和备库的alert都设置了别名:

    [oracle@demo ~]$ which alert
    alias alert='tail -200f /u01/app/oracle/diag/rdbms/db0913_9df_iad/DB0913/trace/alert_DB0913.log'
    	/usr/bin/tail
    [oracle@demo ~]$ which alertdg
    alias alertdg='tail -200f /u01/app/oracle/diag/rdbms/db0913_dg/DB0913_DG/trace/alert_DB0913_DG.log'
    	/usr/bin/tail
    

    这样遇到问题就直接看最近错误,最近错误显示不到,也可以快速vi这个全路径做精细查找分析,非常方便。

    MySQL的小妙招

    类似的,MySQL也一样,如何优化mysql界面?
    有没有类似Oracle的glogin.sql配置文件,不用那么麻烦,MySQL的设置更加简单,直接在你MySQL的my.cnf配置文件中的[mysql]下,添加这么一行:

    prompt=\u@\h [\d] >
    

    这样就可以看到关键的用户和所连接的数据库,效果如下:

    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 2556678
    Server version: 5.7.29-log Source distribution
    
    Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    alfred@localhost [demodb] >
    

    此外,针对MySQL的错误日志和慢查询日志,也是可以做类似别名设置提示效率的。

    Tips: 这些小妙招其实并没啥统一规范,有规划也是企业内部自己制定的规划,所以就当抛砖引玉吧,期望能给经常动手实践的同学带来些许帮助。

  • 相关阅读:
    SpringCloud中Turbine 1.X版本BUG
    华纳云:Nginx服务器可视化配置问题怎么解决
    mysql 基础知识
    uva 11729 Commando War(贪心算法)
    神经网络的图像识别技术,语音识别深度神经网络
    【数据通信】具有路由 WSN 模拟器的随机方式移动(Matlab代码实现)
    竞赛 大数据房价预测分析与可视
    制造业RFID物料追踪管理方案
    操作系统-死锁,锁
    Aws配置钉钉告警实现
  • 原文地址:https://www.cnblogs.com/jyzhao/p/18130241/chao-jian-dan-bi-xu-yao-zhang-wo-de-yun-wei-xiao-m