利用脚本文件来管理Oracle数据库,具有很大的优越性。
如可以降低命令的输入量;如可以将调试测试通过的命令保存起来以便于下次需要的时候再次使用;如可以避免输入上的错误等等。虽然说,Oracle数据库提供的SQL*Plus程序编辑工具提供了一定程度的现实、编辑、修改SQL缓冲区命令的功能,但是,其对命令的编辑能力是非常弱小的,操作起来也不如脚本文件那么方便。故很多数据库管理专家喜欢把一些常用的命令制作成脚本文件。在以后需要用的时候,直接调用脚本文件即可。如笔者现在保存的有用脚本文件已有近百个。在需要用的时候,只要把脚本文件拿过来,有的可以直接拿来执行;有的只要稍微根据实际情况修改一下,也可以使用。
***步:创建脚本文件
在Oracle数据库重,创建脚本文件的方式很多。如可以直接在记事本中创建脚本文件,也可以通过SQL*Plus工具直接创建。不过,笔者的意见是,在SQL*Plus中直接创建脚本文件的话,比较麻烦。这主要是因为在SQL*Plus工具中,命令编辑能力非常有效。如不能够使用键盘上的箭头键定位输入的位置,不能够使用DEL键删除输入的内容等等。而且阅读起来也比较困难。
笔者喜欢的作法是,现在一些编辑器中,如文本文件中先把脚本语句写好,然后直接复制到SQL*Plus工具中进行测试。若测试通过的话,即就可以把它保存起来,以待下次有需要的时候使用。所以,利用第三方的脚本语句编辑工具,有一个缺陷就是不能够直接对语句进行测试。而需要人工的把它复制粘贴到Oracle环境中进行测试。不过这对于命令编辑来说,这点功夫还是值得的。毕竟在第三方工具中编辑脚本语句,要比在SQL*Plus中,编辑脚本要简单的不知道多少倍。笔者也搞不清楚,像Oracle这么大的数据库管理软件,为什么不开发一个像样的脚本语句编辑器呢。
另外需要说明的一点就是,在SQL*Plus语句中,虽然可以对未测试或者有错误的脚本语句进行保存。不过,这么做的话,只会浪费时间。为了提高脚本语句的可用性,笔者是强烈建议,数据库管理员不要太过于自信,脚本语句编写完成后,一定要进行测试。只有经过测试表明这个脚本语句有用后,才能对其进行归档。
其次,若采用记事本等工具编写脚本语句的时候,为了在Oracle环境中可以直接调用这个脚本文件,***把脚本文件的扩展名改为SQL。这是Oracle数据库承认的脚本文件扩展名。
还有对于初次接触脚本文件的数据库管理员来说,对于脚本文件的格式要稍微注意一点。大体上,跟普通的SQL语句类似。只是在两个方面要引起注意。一是在脚本文件的***一行,一定要添加“/”符号。这个符号的作用是,告示数据库现在可以执行这条语句了。二是在SQL语句的***一条语句中,不要添加“;”号。否则的话,下次运行这个脚本语句的时候,会出现错误。
***,在编写脚本文件的时候,要注意脚本文件的变量问题。若脚本文件需要外界传入参数,则在执行的时候,SQL*Plus工具,会使用这些外部传入的值替换脚本文件中的替换参数,所以,脚本文件中替换参数的生命方式跟Oracle数据库中函数与过程的变量声明方式有一点区别。在脚本文件中,在使用替换参数的时候,不需要事先声明。而是在要用到的时候,直接利用&1 &2等来表示。
第二步:编辑脚本文件
在我们使用脚本文件的时候,往往需要根据实际情况,对其进行稍微的调整。对脚本文件进行编辑,也有两种方式。一是通过SQL*Plus工具,二是第三方独立的脚本编辑软件。
对于一些调整不大的脚本文件,我们可以直接利用SQL*Plus工具打开,然后进行编辑。但是,对于需要进行大量修改的脚本文件,则笔者建议数据库管理员采用第三方独立的脚本编辑软件。原因很简单,就如同上面所说的那样,SQL*Plus工具脚本命令编辑功能非常的薄弱。若采用这个工具对现成的脚本语句进行编辑的话,则可能工作量还是重新编写一个来的轻。所以,数据库管理员要根据实际的情况,选择合适的脚本编辑工具。
另外,在编辑的过程中,要注意语法的正确性。特别是要注意,不能够改变其固有的格式。如不要不小心删除了***的“/”符号结束,等等。笔者现在喜欢用的时微软自带的记事本作为脚本的编辑工具。他比较方便,而且也不用再去网上找专业的脚本编辑工具。即省事,又能够我们数据库管理员的常规需求,何乐而不为呢!
第三步:运行脚本文件
脚本建立好之后,如何运行脚本呢?在Oracle系统中也提供了许多方式。数据库管理员可以根据自己的使用习惯来进行选择。
一是通过Start语句来调用脚本文件。其语法是Start Filemame[相关参数]。在运行这个命令的时候,需要注意几个问题。
1.脚本文件的扩展名问题。上面在建立脚本文件的时候,笔者就跳掉过,为了在SQL*Plus等工具中可以直接调用这个脚本文件,***能够把扩展名改为Oracle数据库能够接受的扩展名。默认情况下,扩展名设置为SQL即可。
2.脚本文件的路径问题。若用户在利用Start调用脚本文件的时候,若没有清楚的指名保存路径的话,则SQL*Plus工具会现在当前的目录中进行查找;若没有的话,则会根据环境变量中确定的目录中进行查找。而一般情况下,我们把脚本文件都会独立存放。所以,在使用Start命令执行脚本文件的时候,***能够注明脚本文件的绝对路径名。防止语句执行错误。
另外@命令也可以起到跟Start命令一样的作用。只不过,前者的使用范围更广一点。@命令可以脱离SQL*PLUS工具而使用。如可以直接在微软操作系统中的命令行方式下使用。当然,这操作系统要事先部署了Oracle数据库环境。
二是可以直接利用SQL*Plus工具打开文本文件,执行脚本语句。然后点击“文件”、“执行”命令执行这个脚本语句。这种方式的好处就是,系统会主动提示用户需要输入的参数。
不过笔者不怎么喜欢采用以上两种方式。笔者一般是先利用脚本编辑器打开对应的脚本文件。然后看看是否需要进行必要的更改。若不需要的话,就直接把这个语句复制粘贴到SQL*Plus工具中,执行。如此的话,也就不用像Start那样,指定脚本文件的具体位置了。
在执行脚本语句的时候,特别需要注意一个参数的位置问题。从外界传入的参数,要跟脚本语句的替换参数一一对应。如果参数的位置出现问题,则执行的结果也就会有问题。
总之,脚本文件是我们管理Oracle数据库的一大利器。我们好好利用脚本文件,可以提高Oracle数据库的管理效率。毕竟,每次在需要的时候,都去编写命令是一件很麻烦的事情。而脚本文件的***好处,就是可以提高语句的重复利用,节省我们编写语句、调试测试的时间。
【编辑推荐】