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

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

作者头像
Alfred Zhao
发布于 2024-04-12 00:22:36
发布于 2024-04-12 00:22:36
12600
代码可运行
举报
运行总次数:0
代码可运行

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

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

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

Oracle的小妙招

sqlplus界面优化

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd $ORACLE_HOME/sqlplus/admin/
vi glogin.sql

添加新内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
[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
代码运行次数:0
运行
AI代码解释
复制
[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
代码运行次数:0
运行
AI代码解释
复制
prompt=\u@\h [\d] >

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
替代变量与SQL*Plus环境设置
scott@ORCL> select * from emp where empno=7788;
Leshami
2018/08/07
6430
【DB宝32】Oracle DG环境中主库做闪回操作后,备库如何修复继续同步
本文介绍一下,在DG环境中,若主库做了闪回数据库的操作后,备库如何通过flashback操作,继续和主库保持同步,而不用重新搭建DG。
AiDBA宝典
2020/12/18
9780
由sqlplus中的一个小细节所做的折腾(r5笔记第11天)
sqlplus是Oracle DBA每天都要用到烂的工具了。如果没有sqlplus还真不知道怎么和oracle对话了。转念一想,自己已经很久没使用过toad了。 我们知道在sqlplus登录的时候我们可以定义一些通用的设置,在每次登录sqlplus的时候都可以生效。 $ORACLE_HOME/sqlplus/admin/gloin.sql的内容是下面的形式, -- -- Copyright (c) 1988, 2005, Oracle. All Rights Reserved. -- -- NAME --
jeanron100
2018/03/15
9700
实战篇:Oracle巧记登录用户IP,无所遁形
至此,第一种方式已经介绍完毕。可以看到,已经可以记录到登录数据库的用户IP地址。
Lucifer三思而后行
2021/08/17
7630
实战篇:Oracle巧记登录用户IP,无所遁形
一个普通数据库用户所能查到的"意料之外"的信息(r2笔记98天)
有时候限于工作环境的情况,大多数开发人员只得到了一个权限收到限制的数据库用户。 可能你都不知道你所拥有的数据库用户都能查到哪些你想象不到的数据库信息,其实你知道还是不知道,哪些东西就在那儿:) 假定现
jeanron100
2018/03/14
7530
RHEL6.4 + Oracle 11g DG测试环境快速搭建参考
     参考:http://www.cnblogs.com/jyzhao/p/4332410.html
Alfred Zhao
2022/05/06
4630
【Oracle小技巧】手把手教你玩转SQL*Plus命令行,工作效率提升200%
那么问题来了,这些都可以解决吗?当然,我写这篇就是为了介绍如何优化SQL*Plus命令行嘛!
Lucifer三思而后行
2021/08/17
9310
【Oracle小技巧】手把手教你玩转SQL*Plus命令行,工作效率提升200%
Oracle-Java JDBC 连接超时之后的认知纠正
偶然读到熊老师的文章《老熊的三分地-JDBC中语句超时与事务》了解到:JAVA代码的最后正常断开数据库连接,在默认情况下,正常断开的数据库连接会自动提交没有提交的事务。
布衣530
2025/01/10
1750
Oracle-Java JDBC 连接超时之后的认知纠正
教你玩转 sqlplus,工作效率提升 200%
经常使用 Oracle 数据库的朋友,应该对 sqlplus 这个命令行工具不会陌生。基本上每天工作都离不开它,但是这个工具有些不太好用:
Lucifer三思而后行
2022/01/08
1.3K0
教你玩转 sqlplus,工作效率提升 200%
实战篇:Oracle 巧记登录用户 IP,无所遁形
日常工作生产,我们一般都通过监听连接 Oracle 数据库。如果想要记录访问过数据库的用户 IP 地址,常规方式是无法做到的,但是可以通过一些非常规方式来实现。
Lucifer三思而后行
2022/01/08
1.4K0
实战篇:Oracle 巧记登录用户 IP,无所遁形
系统级alias vs Oracle ADR功能(r5笔记第35天)
Oracle在11g中推出的新特性ADR,即Automatic Diagnostic Repository 个人理解这个工具就是能够高效的把一些日志文件轻松管理起来。比如查看数据库alert日志就不必麻烦去到对应的路径下去找一圈,直接使用show alert即可,比如查看现在数据库中出现了哪些错误,直接通过show problem命令即可。 命令的使用也很方便。直接输入adrci就开启了专门的窗口来使用。如果不知道该使用哪些命令,直接使用help即可。 $ adrci ADRCI: Release 11.2
jeanron100
2018/03/15
8920
使用Data Guard Broker进行Data Guard物理备用库配置
本文讲解在Oracle Database 19c中使用Data Guard Broker进行Data Guard物理备用库配置。
Yunjie Ge
2022/04/24
8990
glogin设置oracle的sqlplus中显示用户名和实例
修改$ORACLE_HOME/sqlplus/admin/glogin.sql文件,添加如下内容:
Lucifer三思而后行
2021/08/17
1K0
glogin设置oracle的sqlplus中显示用户名和实例
关于数据库中的一些name(r3笔记第64天)
如果接触数据库有些时间了,可能会碰到很多关于数据库相关的名字,比如ORACLE_SID,db_name,instance_name,db_unique_name等等。可能一下子都有些糊涂了,就一股脑儿认为都应该是一致的,其实不然。如果你接触的环境比较单一,可能会有这种错觉。 我们来简单对比一下单实例和多实例下的数据库中的这些名词。 首先来看看单实例的。 [ora11g@rac1 ~]$ echo $ORACLE_SID TEST01 [ora11g@rac1 ~]$ sqlplus / as sys
jeanron100
2018/03/15
6640
你知道 DBA 工作中都要做的巡检有哪些吗?
-------------------------------------------------------------------
JiekeXu之路
2020/04/14
7760
你知道 DBA 工作中都要做的巡检有哪些吗?
Oracle必知的100道问题
100.sql>startup pfile和ifile,spfiled有什么区别?
IT小马哥
2020/03/17
3.5K0
Oracle 11g ADG 部署(duplicate)快速参考
本文旨在指导客户完成Oracle 11g的ADG部署工作,主库环境已具备,备库环境已安装完成数据库软件。 环境:RHEL 6.8 + Oracle 11.2.0.4
Alfred Zhao
2020/07/15
2.1K0
ADG无法同步:TT00进程报错 Error 12514
环境: Oracle 19.16 ADG (Single Instance -> RAC) 在配置ADG的场景,发现ADG不能同步。
Alfred Zhao
2023/02/10
9700
ORACLE 数据库实例启动和关闭
使用 sqlplus 登录连接 oracle 数据库时, 为了方便显示当前的用户名称已经连接的数据库
用户8006012
2022/07/05
1.3K0
手动创建数据库及创建过程遇到的错误(踩到的坑)
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
SQLplusDB
2020/03/26
6.2K0
推荐阅读
相关推荐
替代变量与SQL*Plus环境设置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档