Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

109

积分

0

好友

9

主题
1#
发表于 2013-3-3 17:10:54 | 查看: 3909| 回复: 3
测试环境为Redhat 4 U4,oracle 10.2.0.1
在/home/oracle下写了一个简单的脚本check.sh,内容如下
select to_char(sysdate,'HH24:MI:SS') now from dual;
select CPHBT from X$KCCCP where CPHBT>0;
!md5sum /u0/oracle/oradata/TESTwis/control01.ctl;
在sqlplus下运行正常
SQL> @check.sh

NOW
--------
16:19:42


     CPHBT
----------
809090683

ac99dc73241f11ad92cb415c61a9bb59  /u0/oracle/oradata/TESTwis/control01.ctl

为了多次运行这一脚本,想将其修改为循环结构,于是修改check.sh内容如下
declare
i number;
begin
for i in 1..20 loop
select to_char(sysdate,'HH24:MI:SS') now from dual;
select CPHBT from X$KCCCP where CPHBT>0;
!md5sum /u0/oracle/oradata/TESTwis/control01.ctl;
end loop;
end;
/

运行该脚本后出错,内容如下
SQL> @check.sh
!md5sum /u0/oracle/oradata/TESTwis/control01.ctl;
*
ERROR at line 7:
ORA-06550: line 7, column 1:
PLS-00103: Encountered the symbol "!" when expecting one of the following:
begin case declare end exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe
The symbol "case was inserted before "!" to continue.
ORA-06550: line 7, column 49:
PLS-00103: Encountered the symbol ";" when expecting one of the following:
. ( * @ % & = - + < / > at in is mod remainder not rem when
<an exponent (**)> <> or != or ~= >= <= <> and or like LIKE2_
LIKE4_ LIKEC_ between || member
貌似循环结构下识别不了操作系统的命令?
那要想多次自动运行上述三个命令,请教一下,该如何操作?
2#
发表于 2013-3-3 18:53:08
“!”是sqlplus的命令,不是PL/SQL的命令,所以报错,用shell来实现循环就好了

回复 只看该作者 道具 举报

3#
发表于 2013-3-3 23:09:32
本帖最后由 Stone 于 2013-3-3 23:12 编辑
貌似循环结构下识别不了操作系统的命令?
那要想多次自动运行上述三个命令,请教一下,该如何操作?


应该是在PL/SQL里面无法识别,所以报错。
用shell脚本应该是比较好的啦,简单写了下,可以参考下 :)

  1. [oracle@stonedb stone]$ cat chk.sh
  2. #!/bin/bash

  3. for (( i=1; i<=10; i++ ))
  4. do
  5. echo "=== 第 $i 次检查 ==="
  6. sqlplus -s '/ as sysdba' << EOL
  7. select to_char(sysdate,'HH24:MI:SS') now from dual;
  8. select CPHBT from X\$KCCCP where CPHBT>0;
  9. host md5sum /u01/app/oracle/oradata/STONE11G/control01.ctl
  10. EOL
  11. done

复制代码
输出测试如下,环境Redhat Linux 5.4:
  1. [oracle@stonedb stone]$ ./chk.sh
  2. === 第 1 次检查 ===

  3. NOW
  4. --------
  5. 23:05:13


  6.      CPHBT
  7. ----------
  8. 800963123

  9. a7463eccdf1dcb50af37968f6734003e  /u01/app/oracle/oradata/STONE11G/control01.ctl

  10. === 第 2 次检查 ===

  11. NOW
  12. --------
  13. 23:05:13


  14.      CPHBT
  15. ----------
  16. 800963123

  17. a7463eccdf1dcb50af37968f6734003e  /u01/app/oracle/oradata/STONE11G/control01.ctl

  18. === 第 3 次检查 ===

  19. NOW
  20. --------
  21. 23:05:13


  22.      CPHBT
  23. ----------
  24. 800963123

  25. a7463eccdf1dcb50af37968f6734003e  /u01/app/oracle/oradata/STONE11G/control01.ctl

  26. === 第 4 次检查 ===

  27. NOW
  28. --------
  29. 23:05:13


  30.      CPHBT
  31. ----------
  32. 800963123

  33. a7463eccdf1dcb50af37968f6734003e  /u01/app/oracle/oradata/STONE11G/control01.ctl

  34. === 第 5 次检查 ===

  35. NOW
  36. --------
  37. 23:05:14


  38.      CPHBT
  39. ----------
  40. 800963123

  41. a7463eccdf1dcb50af37968f6734003e  /u01/app/oracle/oradata/STONE11G/control01.ctl

  42. === 第 6 次检查 ===

  43. NOW
  44. --------
  45. 23:05:14


  46.      CPHBT
  47. ----------
  48. 800963123

  49. a7463eccdf1dcb50af37968f6734003e  /u01/app/oracle/oradata/STONE11G/control01.ctl

  50. === 第 7 次检查 ===

  51. NOW
  52. --------
  53. 23:05:14


  54.      CPHBT
  55. ----------
  56. 800963123

  57. a7463eccdf1dcb50af37968f6734003e  /u01/app/oracle/oradata/STONE11G/control01.ctl

  58. === 第 8 次检查 ===

  59. NOW
  60. --------
  61. 23:05:14


  62.      CPHBT
  63. ----------
  64. 800963123

  65. a7463eccdf1dcb50af37968f6734003e  /u01/app/oracle/oradata/STONE11G/control01.ctl

  66. === 第 9 次检查 ===

  67. NOW
  68. --------
  69. 23:05:14


  70.      CPHBT
  71. ----------
  72. 800963123

  73. a7463eccdf1dcb50af37968f6734003e  /u01/app/oracle/oradata/STONE11G/control01.ctl

  74. === 第 10 次检查 ===

  75. NOW
  76. --------
  77. 23:05:15


  78.      CPHBT
  79. ----------
  80. 800963123

  81. a7463eccdf1dcb50af37968f6734003e  /u01/app/oracle/oradata/STONE11G/control01.ctl
复制代码

2013-03-03_231212.png (20.22 KB, 下载次数: 405)

脚本截图

脚本截图

回复 只看该作者 道具 举报

4#
发表于 2013-3-4 11:45:47
非常感谢!学习了!

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-27 01:15 , Processed in 0.086290 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569