简单的 Oracle 脚本
博客专区 > 周翔 的博客 > 博客详情
简单的 Oracle 脚本
周翔 发表于3年前
简单的 Oracle 脚本
  • 发表于 3年前
  • 阅读 166
  • 收藏 7
  • 点赞 0
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

摘要: 简单的 Oracle 脚本

Oracle用了很久,但是一般使用还是通过PL/SQL Developer下面执行.

以前用过相关的脚本是 awrrpt.sql 生成awr报告使用.


最近有这样一个想法,写一个SQL脚本放在用户目录下,系统出问题时由同事负责执行.等我有时间时去查看相关信息.所以尝试写SQL脚本.也可以写成定时任务去处理某些事情.


中间遇到的问题:

1 字符集的问题.Windows下默认GBK编码,在数据库服务器上可能会执行报错,很可能是字符集的原因.当时使用Eclipse把字符集改成UTF-8 解决这个问题.

2 关于注释.SQL语句里注释很重要,做一引起必要的说明,不然自己被自己搞昏了头.

SQL脚本:

--初始化参数
define user = "'HLWL'";
define operate = "'zhouxianglh'";
define log_name;

--初始化设置
--显示输出
set echo on;
--指定每行长度
set LINESIZE 999;
--指定每页大小,pagesize=0,则不会显示表头
set pagesize 10000;
--显示实际执行的SQl(包含参数执行时能过 old,new 的方式分别显示)
set verify ON;
--输出文本去除首尾空格
set trimspool on;
--显示字段名称
set heading ON;
--set autotrace on;对执行SQL进行分析

--开始写入文件
select '/home/oracle/zx_'||lower(name)||'_'||&user||'_'||to_char(sysdate,'yyyy-mm-dd-hh24-mi')||'.sql' log_name from v$database;
spool &logname;
--开始执行SQL
--查找当进程,找出导致系统当前性能问题的SQL
select inst_id,sid,serial#,seq#,taddr,sql_id,sql_child_number child,username,machine,last_call_et call_et,module,
(select object_name from dba_objects where a.row_wait_obj#=object_id) object_name,action,event from gv$session a 
where a.status = 'ACTIVE' and a.username is not null order by last_call_et;

--记录操作完成
select sysdate from dual;

--关闭文件
spool off;


标签: Oracle 脚本
共有 人打赏支持
周翔
粉丝 6
博文 45
码字总数 20552
×
周翔
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: