前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >超简单:必须要掌握的运维小妙招

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

作者头像
Alfred Zhao
发布2024-04-12 08:22:36
650
发布2024-04-12 08:22:36
举报

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

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

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

Oracle的小妙招

sqlplus界面优化

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

代码语言:javascript
复制
cd $ORACLE_HOME/sqlplus/admin/
vi glogin.sql

添加新内容如下:

代码语言:javascript
复制
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

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

代码语言:javascript
复制
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、当前连接用户和连接容器库名。

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

代码语言:javascript
复制
[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都设置了别名:

代码语言:javascript
复制
[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]下,添加这么一行:

代码语言:javascript
复制
prompt=\u@\h [\d] >

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

代码语言:javascript
复制
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: 这些小妙招其实并没啥统一规范,有规划也是企业内部自己制定的规划,所以就当抛砖引玉吧,期望能给经常动手实践的同学带来些许帮助。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Oracle的小妙招
    • sqlplus界面优化
      • 别再狂找alert日志了
      • MySQL的小妙招
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档