-----SQL/Shell 脚本
Leshami
十年以上数据库领域一线实战经验,涵盖高可用,灾备中心设计,备份恢复,数据库开发,数据挖掘,数据库设计,性能优化等;其产品服务领域包括Oracle,MySQL,SQLserver,MongoDB等。曾先后服务于晨星资讯,dbadirect,香港易高科技等金融,证券软件行业;并提供企业级数据库性能优化,运维管理相关培训,先后提供培训服务的对象有速尔快递,同洲电子,民太安保险,康拓普,广州电信研究院,中行浙江分行等。
展开
-
linux 下RMAN备份shell脚本
RMAN备份对于Oracle数据库的备份与恢复简单易用,成本低廉。对于使用非catalog方式而言,将RMAN脚本嵌入到shell脚本,然后再通过crontab来实现中小型数据库数据库备份无疑是首选。本文提供了一个简单易用的基于linux shell下的RMAN备份脚本供参考。大家可根据自己的需要进行适当调整。 RMAN备份相关方面的知识较多,可以参考: RMAN 概述及其体系结构 R原创 2012-09-28 16:56:48 · 24280 阅读 · 6 评论 -
Oracle 监控索引的使用率
Oracle提供了索引监控特性来判断索引是否被使用。在Oracle 10g中,收集统计信息会使得索引被监控,在Oracle 11g中该现象不复存在。尽管如此,该方式仅提供的是索引是否被使用。索引被使用的频率未能得以体现。下面的脚本将得到索引的使用率,可以很好的度量索引的使用情况以及根据这个值来判断当前的这些索引是否可以被移除或改进。 1、索引使用频率报告--运行环境SQL> select *原创 2013-04-19 11:32:36 · 11909 阅读 · 0 评论 -
Linux/Unix shell 脚本监控磁盘可用空间
Linux下监控磁盘的空闲空间的shell脚本,对于系统管理员或DBA来说,必不可少。下面是给出的一个监控磁盘空间空间shell脚本的样本,供大家参考。 1、监控磁盘的空闲空间shell脚本robin@SZDB:~/dba_scripts/custom/bin> more ck_fs_space.sh #!/bin/bash# -------------------------------原创 2013-05-07 10:32:21 · 8855 阅读 · 0 评论 -
批量迁移Oracle数据文件,日志文件及控制文件
有些时候需要将Oracle的多个数据文件以及日志文件重定位或者迁移到新的分区或新的位置,比如磁盘空间不足,或因为特殊需求。对于这种情形可以采取批量迁移的方式将多个数据文件或者日志文件实现一次性迁移。当然备份恢复也是其中的方式之一。本文主要描述如何使用批量方式来迁移数据文件,日志文件。如需要也可以将整个数据库迁移到新的位置以及重命名数据库。1、环境及需求 robin@SZDB:~> cat /e原创 2013-01-29 17:53:17 · 7897 阅读 · 3 评论 -
Oracle RMAN 清除归档日志
在开发环境及UAT环境经常碰到需要清除归档日志的情形,对于这个问题方法有很多。可以直接使用rm方式清除归档日志,也可以使用find命令来查找符合条件的记录来清除归档日志,或者直接写个shell脚本来搞定。这样在DEV或者UAT还可以,但是在Prod环境还是建议使用RMAN提供的命令来搞定比较妥当。因为rm,find方式删除了实际的归档日志也释放了空间,但对应的存储在控制文件中的归档信息并没有彻底清原创 2013-07-12 11:03:36 · 66491 阅读 · 2 评论 -
中小型数据库 RMAN CATALOG 备份恢复方案(一)
对于数据库的稳定性,高可用,跨平台以及海量数据库的处理,Oracle 数据库通常是大型数据库和大企业的首选。尽管如此,仍然不乏很多中小企业想要品尝一下Oracle腥味,因此在Oracle环境中也有不少中小型数据库。出于成本的考虑,通常有可能就搞个标准版了,跑在Linux上。谁叫Oracle太贵呢?对于中小企业而言,选择合理的才是最好的。对我们这些个搞DB的,贵的一定有贵的道理,我们也可以都多几斗米原创 2013-08-07 12:06:14 · 9962 阅读 · 0 评论 -
中小型数据库 RMAN CATALOG 备份恢复方案(二)
中小型数据库呈现的是数据库并发少,数据库容量小,版本功能收限以及N多单实例等特点。尽管如此,数据库的损失程度也会存在零丢失的情形。企业不愿意花太多的钱又要保证数据库的可靠稳定,可是苦煞了我这些搞DB的。接上一篇文章,中小型数据库 RMAN CATALOG 备份恢复方案(一),我们继续来给出基于中小型数据库的恢复的脚本与其部署。 1、RMAN还原shell脚本--下面的shell脚本用于实现数据库的原创 2013-08-09 10:35:10 · 5553 阅读 · 0 评论 -
Linux/Unix shell 脚本跨服务器跨实例执行SQL
在DB运维的过程中,难免碰到需要跨多个服务以及多个Oracle实例查询数据库的情形。比如我们需要查看当前所有生产环境数据库上open_cursor参数的值以便考虑是否需要增加。而需要查看的数据库服务器上有多个实例,同时又存在多个数据库服务器,这样子下来,几十个DB,上百个的情形一个个查,那得把人给累死。那就像点办法撒,写个shell脚本,轮巡所有服务器及服务器上的所有实例。见本文的描述。原创 2013-08-22 17:51:39 · 9189 阅读 · 0 评论 -
收缩Oracle数据文件
最近有网友提到收缩Oracle数据文件的问题,这是DBA经常碰到的一个常见问题。通常我们需要收缩相应的数据文件以减少来自磁盘空间的压力以及提高数据库的整体性能。但这并非对于所有情形都是适用的,尤其是生产环境。因为生产环境数据清洗相当较少,因此空间浪费也比较小,而且一旦收缩之后又要重新自动扩展数据文件,浪费系统资源。对于UAT,DEV环境,多DB,磁盘空间压力大的情形,收缩一下非常有必要。勒紧裤带过原创 2013-10-30 15:17:43 · 7203 阅读 · 0 评论 -
提取用户对象及系统权限DDL
在工作中难免碰到需要提取用户权限或是不同数据库用户权限的同步问题。我们知道,Oracle数据库的任意一个用户,必须有相应的权限才可以登录以及操纵数据库对象。同时这些用户存在对象权限、系统权限以及所属用户组的情形,或这三种情况同时存在。本文首先通过脚本获取任意指定用户的所有权限,然后产生特定用户所有权限相关的DDL,最后演示了一个权限同步的例子。 有关用户角色的相关概念可参考:原创 2013-11-04 16:58:47 · 6038 阅读 · 0 评论 -
PL/SQL 下邮件发送程序
对DBA而言,尽管在os级别下发送邮件是轻而易举的事情,然而很多时候我们也需要在PL/SQL中来发送邮件,比如监控job的执行状况等。本文根据网友(源作者无考证)的代码将其改装并封装到了package,感谢这位网友的无私奉献。文章首先给出演示调用该包发送邮件的情形后面给出了完整的代码。关于os下发送邮件可参考:不可或缺的 sendEmail 1、调用SENDMAIL_PKG来发送邮件gx_admi原创 2014-01-21 17:37:33 · 6892 阅读 · 0 评论 -
批量生成sqlldr文件,高速卸载数据
SQL*Loader 是用于将外部数据进行批量高速加载的数据库的最高效工具,可用于将多种平面格式文件加载到Oracle数据库。SQL*Loader支持传统路径模式以及直接路径这两种加载模式。关于SQL*Loader的具体用法可以参考Oracle Utilities 手册或者SQL*Loader使用方法。那么如何以SQL*Loader能识别的方式高效的卸载数据呢? Tom大师为我们提供了一个近乎完美原创 2014-01-14 16:37:30 · 5992 阅读 · 1 评论 -
PL/SQL 下SQL结果集以html形式发送邮件
在运维的过程中,有时候需要定时将SQL查询的数据结果集以html表格形式发送邮件,因此需要将SQL查询得到的结果集拼接成html代码。对于这种情形通常有二种方式来完成。一是直接使用cron job来定时轮询并借助os级别的邮件程序来完成。其查询结果集可以直接在SQL*Plus下通过设置html标签自动实现html表格形式。一种方式是在Oracle中使用scheduler job来定时轮询。这种方式原创 2014-01-24 16:47:00 · 7618 阅读 · 0 评论 -
使用dbms_backup_restore包修改dbname及dbid
修改dbname以及dbid通常在使用RMAN还原到异机之后需要更改dbname以及dbid的情形。对于这个修改我们可以借助于命令行下的nid工具来完成。同时也可以直接调用API来实现。本文即是通过dbms_backup_restore方式来修改dbname及dbid,供大家参考。 有关使用nid方式修改dbname及dbid,请参考:使用nid命令修改 db name 及 dbid 1原创 2014-03-29 20:53:18 · 4458 阅读 · 0 评论 -
Oracle 性能相关常用脚本(SQL)
在缺乏的可视化工具来监控数据库性能的情形下,常用的脚本就派上用场了,下面提供几个关于Oracle性能相关的脚本供大家参考。以下脚本均在Oracle 10g测试通过,Oracle 11g可能要做相应调整。 1、寻找最多BUFFER_GETS开销的SQL 语句--filename: top_sql_by_buffer_gets.sql--Identify heavy SQL (Get the SQ原创 2013-05-09 12:12:49 · 7297 阅读 · 5 评论 -
自动清除日期目录shell脚本
很多时候备份通常会使用到基于日期来创建文件夹,对于这些日期文件夹下面又有很多子文件夹,对于这些日期文件整个移除,通过find结合rm或者delete显得有些力不从心。本文提供一个简单的小脚本,可以嵌入到其他脚本,也可直接调用,如下文供大家参考。 1、脚本内容[root@SZDB ~]# more purge_datedir.sh #!/bin/bash# Author: Leshami原创 2015-01-28 11:46:04 · 4234 阅读 · 0 评论 -
Oracle OWI 等待事件视图(v$session_wait/v$session_event/v$system_event)
通常情况下,用户提交一条SQL语句,总会存在这样或那样的等待事件。也就是说由于所需资源被占用导致进程不得不处于等待状态。Oracle为我们提供了获取这些等待事件的可用视图。根据这些视图可以得知哪些事件导致该SQL语句效率低下而采取相应的修改或调整。本文基于Oracle 10g描述了如何通过视图v$session_wait,v$session_event,以及v$system_event去获取等待事原创 2013-04-16 10:00:59 · 9154 阅读 · 0 评论 -
Linux/Unix shell 脚本清除归档日志文件
对于DEV以及UAT环境,有些时候,数据库需要处于归档模式,但并不需要备份数据库。因此,archive归档日志不停的增长导致磁盘空间被大量耗用。对于这种情形,可以使用一个shell脚本来定时自动清除这些归档日志。本文给出了清除归档日志的脚本。 1、清除归档日志shell脚本 robin@SZDB:~/dba_scripts/custom/bin> more remove_arch_dump.sh原创 2013-04-15 10:53:37 · 11803 阅读 · 1 评论 -
Linux/Unix shell sql 之间传递变量
灵活结合Linux/Unix Shell 与SQL 之间的变量传输,极大程度的提高了DBA的工作效率,本文针对Linux/Unix shell sql 之间传递变量给出几个简单的示例以供参考。 Linux/Unix 下调用SQL,RAMN 请参考:Linux/Unix shell 脚本中调用SQL,RMAN脚本 一、示例1、shell变量接受sql返回值之方式一oracle@SZD原创 2012-09-14 11:04:04 · 16217 阅读 · 0 评论 -
基于catalog 创建RMAN存储脚本
--==============================-- 基于catalog 创建RMAN存储脚本--============================== 简言之,将rman的备份恢复命令写成脚本并保存在恢复目录内,恢复目录内的脚本可用性及通用性高于基于文件系统的脚本。客户端只要能够登录到RMAN恢复目录,则这些脚本可用,尤其对于global脚本,可以被任意注册的数据库原创 2010-12-13 13:17:00 · 11279 阅读 · 0 评论 -
Linux/Unix shell 脚本中调用SQL,RMAN脚本
Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可少的技能之一。本文针对Linux/Unix shell脚本调用sql, rman 脚本给出了相关示例。 一、由shell脚本调用sql,rman脚本1、shell脚本调用sql脚本#首先编辑sql原创 2012-09-11 10:00:07 · 22485 阅读 · 1 评论 -
Linux/Unix shell 调用 PL/SQL
Linux/Unix 下除了调用SQL之外,调用PL/SQL也是DBA经常碰到的情形,下面主要通过一些示例给出如何在shell下面来调用pl/sql。 其它相关的参考: Linux/Unix shell 脚本中调用SQL,RMAN脚本 Linux/Unix shell sql 之间传递变量 1、将pl/sql代码逐行输入到临时文件robin@SZDB:~/d原创 2013-01-30 16:06:16 · 11552 阅读 · 0 评论 -
Linux/Unix shell 监控Oracle监听器(monitor listener)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等。本文给出Linux 下使用 shell 脚本来监控 Oracle 监听器。 Linux Shell的相关参考: Linux/Unix shell 脚本中调用SQL,RMAN脚本 Li原创 2013-02-01 17:00:46 · 6266 阅读 · 0 评论 -
Linux/Unix shell 监控Oracle告警日志(monitor alter log file)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等。本文给出Linux 下使用 shell 脚本来监控 Oracle 告警日志(monitor alter log file)。 Linux Shell的相关参考: Linux/Unix shell原创 2013-02-04 17:29:16 · 8831 阅读 · 2 评论 -
Linux/Unix shell 监控Oracle实例(monitor instance)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等。本文给出Linux 下使用 shell 脚本来监控 Oracle 实例。 Linux Shell的相关参考: Linux/Unix shell 脚本中调用SQL,RMAN脚本 Lin原创 2013-02-01 14:55:20 · 8274 阅读 · 0 评论 -
Linux/Unix shell 自动导出Oracle数据库
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等。本文给出Linux 下使用 shell 脚本来实现数据库自动导出。 Linux Shell以及导入导出的相关参考: Linux/Unix shell 脚本中调用SQL,RMAN脚本原创 2013-02-07 11:42:44 · 12029 阅读 · 7 评论 -
Linux/Unix shell 自动 FTP 备份档案
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等。本文给出Linux 下使用 shell 脚本来实现自动FTP备份档案。 Linux Shell以及导入导出的相关参考: Linux/Unix shell 脚本中调用SQL,RMAN脚本原创 2013-02-07 13:13:23 · 9363 阅读 · 2 评论 -
Linux/Unix shell 参数传递到SQL脚本
在数据库运维的过程中,Shell 脚本在很大程度上为运维提供了极大的便利性。而shell 脚本参数作为变量传递给SQL以及SQL脚本也是DBA经常碰到的情形之一。本文主要讨论了如何将shell脚本的参数传递到SQL脚本之中并执行SQL查询。 有关shell与SQL之间的变量传递,请参考: Linux/Unix shell sql 之间传递变量 1、启动sqlplus时执行脚本并传递参数robi原创 2013-03-07 14:23:08 · 13175 阅读 · 1 评论 -
Linux/Unix shell 自动发送AWR report
观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告。不过awrrpt.sql脚本执行时需要我们提供一些交互信息,因此可以将其整合到shell脚本中来实现自动产生指定时段的awr报告并发送给相关人员。本文即是描述linux shell脚本来实现此功能。 1、shell脚本robin@SZDB:~原创 2013-03-10 14:17:48 · 7742 阅读 · 6 评论 -
Oracle 测试常用表BIG_TABLE
创建测试用表,DBA经常用到,通常都是基于dba_objects来创建的比较多。本文根据Tom大师的big_table进行了整理,供大家参考。一、基于Oracle 10g下的big_table--==============================================-- Create a test table for Oracle 10g-- File : cr_原创 2013-03-01 13:37:10 · 5960 阅读 · 0 评论 -
sqlplus spool 到动态日志文件名
通过sqlplus的spool功能我们将数据库日常运维的结果输出到日志文件,而有时候则需要定时输出,为避免日志文件名的重复,我们可以将输出的日志文件名采用动态命名方式来实现。本文则是针对这个问题给出一个示例,供大家参考。 1、生成动态日志文件的脚本 robin@SZDB:~> more dynamic_logfile_name.sql--+ =========================原创 2013-03-15 11:26:31 · 8241 阅读 · 0 评论 -
Linux/Unix shell 自动发送AWR report(二)
观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告。不过awrrpt.sql脚本执行时需要我们提供一些交互信息,因此可以将其整合到shell脚本中来实现自动产生指定时段的awr报告并发送给相关人员。本文对Linux/Unix shell 自动发送AWR report的功能进行了完善和补充。 1、sh原创 2013-03-18 16:20:16 · 5809 阅读 · 11 评论 -
Linux/Unix shell 自动导入Oracle数据库
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等。本文给出Linux 下使用 shell 脚本来实现自动导入Oracle数据库。 Linux Shell以及导入导出的相关参考: Linux/Unix shell 脚本中调用SQL,RMAN脚原创 2013-02-08 15:19:21 · 8532 阅读 · 15 评论 -
基于Innobackupex的MySQL备份脚本
Innobackupex是Xtrabackup的一部分,其实质也是调用xtrabackup。主要的不同是Xtrabackup除了支持innodb引擎外还支持xtradb引擎。本文主要封装了Innobackupex到shell脚本进行定期备份,供大家参考。 1、脚本描述a、支持增量备份以及全备b、需要传递到备份脚本(如备份路径,连接相关参数等)c、基于周日,周三的全量备份,其他增量备份d、可根据需要原创 2015-01-12 15:32:00 · 6397 阅读 · 0 评论