利用脚本文件管理Oracle数据库,Plus用法指南

利用脚本文件来管理Oracle数据库,具有很大的优越性。

SQL是一种命令式的语言,它是用户操作数据库的最重要的一种方式。
SQL语句在执行时,需要有一个执行环境。

如可以降低命令的输入量;如可以将调试测试通过的命令保存起来以便于下次需要的时候再次使用;如可以避免输入上的错误等等。虽然说,Oracle数据库提供的SQL*Plus程序编辑工具提供了一定程度的现实、编辑、修改SQL缓冲区命令的功能,但是,其对命令的编辑能力是非常弱小的,操作起来也不如脚本文件那么方便。故很多数据库管理专家喜欢把一些常用的命令制作成脚本文件。在以后需要用的时候,直接调用脚本文件即可。如笔者现在保存的有用脚本文件已有近百个。在需要用的时候,只要把脚本文件拿过来,有的可以直接拿来执行;有的只要稍微根据实际情况修改一下,也可以使用。

开发人员在开发软件时,最终的结果是形成一个应用程序。
在应用程序中可以嵌入SQL语句,利用这些SQL语句可以访问数据库。
这时应用程序作为数据库服务器的客户,与数据库服务器以客户/服务器模式工作。

第一步:创建脚本文件

把SQL语句嵌入到应用程序中的好处是使最终用户无需了解SQL的工作原理,也不需要知道SQL
唯一官网,命令的使用方法,只要能够正确操作应用程序,就能够与数据库服务器进行交互。
然而对于数据库管理员,应用程序远远不能达到他们的目的,访问数据库最直接的方式是利用数据库软件提供的实用程序。
Oracle 提供了一个功能强大的实用工具--SQL*Plus。
SQL*Plus 是Oracle提供的一个客户端工具,也是远程客户访问数据库的一种重要途径。

在Oracle数据库重,创建脚本文件的方式很多。如可以直接在记事本中创建脚本文件,也可以通过SQL*Plus工具直接创建。不过,笔者的意见是,在SQL*Plus中直接创建脚本文件的话,比较麻烦。这主要是因为在SQL*Plus工具中,命令编辑能力非常有效。如不能够使用键盘上的箭头键定位输入的位置,不能够使用DEL键删除输入的内容等等。而且阅读起来也比较困难。

在SQL*Plus 中可以执行任一条SQL语句,可以执行一个PL/SQL块,也可以执行SQL*Plus本身的命令,而且几乎所有的管理任务都可以在SQL*Plus 中完成。

笔者喜欢的作法是,现在一些编辑器中,如文本文件中先把脚本语句写好,然后直接复制到SQL*Plus工具中进行测试。若测试通过的话,即就可以把它保存起来,以待下次有需要的时候使用。所以,利用第三方的脚本语句编辑工具,有一个缺陷就是不能够直接对语句进行测试。而需要人工的把它复制粘贴到Oracle环境中进行测试。不过这对于命令编辑来说,这点功夫还是值得的。毕竟在第三方工具中编辑脚本语句,要比在SQL*Plus中,编辑脚本要简单的不知道多少倍。笔者也搞不清楚,像Oracle这么大的数据库管理软件,为什么不开发一个像样的脚本语句编辑器呢。

SQL*Plus的基本用法

另外需要说明的一点就是,在SQL*Plus语句中,虽然可以对未测试或者有错误的脚本语句进行保存。不过,这么做的话,只会浪费时间。为了提高脚本语句的可用性,笔者是强烈建议,数据库管理员不要太过于自信,脚本语句编写完成后,一定要进行测试。只有经过测试表明这个脚本语句有用后,才能对其进行归档。

如果要使用SQL*Plus与数据库服务器进行交互,首先要登录到数据库服务器上,这时在SQL*Plus进程和数据库服务器之间将建立一条连接,它们以客户/服务器模式工作。
登录与退出

其次,若采用记事本等工具编写脚本语句的时候,为了在Oracle环境中可以直接调用这个脚本文件,最好把脚本文件的扩展名改为SQL。这是Oracle数据库承认的脚本文件扩展名。

启动SQL*Plus的命令是sqlplus ,在操作系统提示符下输入sqlplus ,系统将显示版本、日期、版权等信息,然后提示用户输入用户名和口令。
如果输入正确,则在SQL*Plus和数据库服务器之间将建立一条连接,井显示服务器的信息,最后出现SQL*Plus的提示符“ SQL>”,在这个提示符下就可以输入需要执行的命令了。
如果以sys用户身份登录,在用户名之后还应该指定身份“ as sysdba ”或“ as sysoper ”。

还有对于初次接触脚本文件的数据库管理员来说,对于脚本文件的格式要稍微注意一点。大体上,跟普通的SQL语句类似。只是在两个方面要引起注意。一是在脚本文件的最后一行,一定要添加“/”符号。这个符号的作用是,告示数据库现在可以执行这条语句了。二是在SQL语句的最后一条语句中,不要添加“;”号。否则的话,下次运行这个脚本语句的时候,会出现错误。

启动SQL*Plus时,还可以在sqlplus命令之后直接指定用户名和口令,这时系统将不再提示输入用户名和口令,而是直接登录到数据库服务器。
格式是:用户名/口令。

最后,在编写脚本文件的时候,要注意脚本文件的变量问题。若脚本文件需要外界传入参数,则在执行的时候,SQL*Plus工具,会使用这些外部传入的值替换脚本文件中的替换参数,所以,脚本文件中替换参数的生命方式跟Oracle数据库中函数与过程的变量声明方式有一点区别。在脚本文件中,在使用替换参数的时候,不需要事先声明。而是在要用到的时候,直接利用1 2等来表示。

如果在一台计算机上安装了多个数据库服务器,为了登录到正确的数据库,在进入SQL*Plus之前,先要设置环境变量ORACLE_SID ,将其值设置为要登录的数据库。
例如:

第二步:编辑脚本文件

SET ORACLE_SID=orcl

在我们使用脚本文件的时候,往往需要根据实际情况,对其进行稍微的调整。对脚本文件进行编辑,也有两种方式。一是通过SQL*Plus工具,二是第三方独立的脚本编辑软件。

如果数据库服务器运行在UNIX下,通过以下方式设置环境变量ORACLE_SID:

对于一些调整不大的脚本文件,我们可以直接利用SQL*Plus工具打开,然后进行编辑。但是,对于需要进行大量修改的脚本文件,则笔者建议数据库管理员采用第三方独立的脚本编辑软件。原因很简单,就如同上面所说的那样,SQL*Plus工具脚本命令编辑功能非常的薄弱。若采用这个工具对现成的脚本语句进行编辑的话,则可能工作量还是重新编写一个来的轻。所以,数据库管理员要根据实际的情况,选择合适的脚本编辑工具。

ORACLE_SID=orcl

EXPORT ORACLE_SID

在默认情况下SQL*Plus和Oracle服务器位于同一台计算机上,启动SQL*Plus时,它将自动登录到本机的数据库服务器上。
如果SQL*Plus和Oracle服务器不在同一台计算机上,在登录时还要指定所使用的网络服务名
例如:

sqlplus scott/tiger@orcl

网络服务名:是可以任意指定的,可以通过net_manager工具配置。

这时SQL*Plus和Oracle服务器将通过Oracle Net 进行通信。

无论采用哪种登录方式,登录成功后将出现SQL*Plus的提示符“ SQL>”。

SQL*Plus是一个基于字符界面的工具,所有的命令都需要手工输入。
在提示符之后输入的命令以分号结束。
如果命令太长,可以输入回车,在换行之后继续输入,这时在每行之前将自动出现当前的行号。
在命令的最后输入分号,然后四车,这条命令将提交给数据库服务器执行。

需要注意的是,分号并不是SQL命令的一部分,而是一条SQL命令结束的标志。

退出SQL*Plus时,在提示符之后输入命令QUIT或EXIT即可。

如果要在不退出SQL*Plus的情况下断开与数据库服务器的连接,则输入DISCONNECT(DISCONN)命令。
如果要重新连接,或者在已经连接的情况下以另一个用户的身份连接,则使用CONNECT(CONN)命令。
这条命令的格式为:

CONNECT 用户名/口令 as sysdba

如果是SYS用户,则使用“as sysdba”或者“as sysoper”参数。

如果是远程登录,还要在用户名和口令之后输入网络服务名。
在SQL*Plus 中还可以执行操作系统命令。

host命令使得用户可以在不退出SQL*Plus的情况下执行操作系统命令。
在SQL*Plus提示符下执行host命令后,将进入操作系统提示符,在这里可以执行操作系统命令。

在操作系统提示符下输入exit命令,将返回SQL*Plus 。

SQL*Plus 的UNIX版本还提供了一个“!”命令,它使得用户可以在SQL*Plus提示符下直接执行UNIX命令。
UNIX命令执行结束后重新显示SQL*Plus提示符。

 如何获取帮助信息

如果在使用SQL*Plus命令时有困难,可以使用HELP?命令获得帮助信息。

首先,可以获得帮助索引,命令的格式为:

HELP INDEX

上述命令都属于SQL*Plus ,也就是说,这些命令只能在SQL*Plus 中执行。

读者在学习Oracle 的过程中,一定要搞清楚哪些是SQL*Plus命令,哪些是SQL命令
通过HELP命令可以进一步获得每条命令的详细帮助信息。
获取帮助的命令格式为:

HELP 命令

例如:

HELP COPE

如何修改SQL*Plus的设置信息

在SQL*Plus 中有两类相关的设置信息,一类是SQL*Plus本身的设置信息这类信息主要控制SQL*Plus的输出格式; 另一类是数据库服务器的设置信息这类信息主要来自实例的参数文件。**
显示SQL*Plus设置信息的命令是show,例如,显示当前登录用户的命令为:

show user

如果要显示SQL*Plus 的所有设置信息,执行“ show all”命令。

如果要显示某个具体的设置信息,可以在show命令之后跟上相关的关键字,例如:

show timing

下面列出了SQL*Plus主要的设置信息反其意义:

设置信息  可选值  默认值  意义

autocommit  on|off|immediate  off  控制DML语句执行后是否立即提交 

autorecovery  on|off  off  开启或关闭自动恢复数据库的功能 

define  用户自定义  &  在用户自定义变量前面的前缀字符

editfile  用户自定义  afiedt.buf  指定执行edit命令时打开的临时文件

linesize  用户自定义  80  指定一行的宽度,单位为字符

long  用户自定义  80  为long型数据指定显示宽度

null  用户自定义  ""  显示空数据时,代替的字符

sqlnumber  on|off  on  控制在多条SQL语句中,第2行之后继续使用SQL*Plus提示符还是行号

sqlprompt  用户自定义  sql>  指定SQL*Plus的提示符

sqlterminator  用户自定义  ;  指定SQL语句的结束标志

time  on |off  off  指定是否将当前时间作为提示符的一部分

timing  on|off  off  指定是否为每一条已执行SQL语句显示使用时间

如果要显示数据库服务器的参数设置信息,可以使用“ show parameter”命令,并在命令之后指定要显示的参数名称。
由于这些信息是从参数文件中读取的,因此只有特权用户可以查看这样的信息。
例如,要查看当前数据库的名称,执行如下命令:

show parameter db_name

在命令执行的结果中包含参数的名称、类型和参数值

由于参数名都是字符串,在显示参数时,可以只指定参数名称的一部分,这样,系统将显示所有包含这个字符串的参数。
例如,要显示所有包含字符串“db_block ”的参数设置信息,可以执行如下命令:
show parameter db_block

修改SQL*Plus设置信息的命令是SET ,这样可以灵活控制SQL*Plus的显示格式。

例如,SQL*Plus的默认提示符是“SQL>”,如果要将提示符改为“ SQL*Plus》”,可以执行以下命令:
set sqlprompt sql>>

需要注意的是,改变后的设置信息只对SQL*Plus的当前启动起作用。

如果要经常修改这些设置信息,通常的做法是编写-个脚本文件,在脚本文件中指定这些设置信息,然后在SQL*Plus 中执行脚本文件。
实例启动与关闭

Oracle的实例是一组内存结构和后台进程的集合,通过实例,应用程序才可以访问数据库中的数据。
Oracle服务器是由实例和数据库组成的,一个实例只能打开一个数据库。
启动Oracle服务器的命令为startup ,这条命令只有SYS用户才可以执行。

在Windows 系统中,数据库服务器表现为一个系统服务。

所以,只要启动对应的系统服务,即可启动数据库服务器。
系统服务的命名规则为: OracleService+实例名称

更简单的方也是在控制面板的管理工具中打开“服务”组件,查找Oracle服务器所对应的系统服务,使其启动。

关闭数据库服务器的过程与启动过程正好相反首先关闭数据库然后卸载数据库,最后关闭实例

关闭Oracle服务器对应的命令为shutdown ,这条命令也是只能由SYS 用户执行。

在Windows 系统中, Oracle服务器同样可以作为一个系统服务来关闭。

例如:

net stop oracleserviceorcl

同样, Oracle服务器也可以通过“服务”组件进行关闭。

SQL*Plus中的缓冲区

SQL*Plus提供了一个命令缓冲区,用来保存最近执行的一条SQL语句,或者一个PL/SQL块。
用户可以反复执行缓冲区中的内容,也可以对缓冲区中的内容进行编辑。

执行缓冲区中的内容

执行缓冲区中内容的命令有两个:“/”和run 。
“/”命令的作用是执行缓冲区中刚刚输入的或者已经执行内容。

如果是一条SQL语句,它的结束标志是;,遇到分号,这条SQL语句就会执行。
如果在SQL语句执行后输入/命令,这条SQL语句将再执行一次。
如果是PL/SQL块,结束标志仍然是; ,只是在输入结束后还必须输入/命令,这个块才能执行。
如果再次输入“/”命令,这个块将再次执行。

run命令与“/”命令一样,也是再次执行缓冲区中的内容,只是在执行之前首先显示缓冲区中的内容。
编辑缓冲区的内容

缓冲区真正的意义在于用户可以编辑其中的内容,这样如果语句执行出错,用户可以很方便地进行修改,特别是长的、复杂的SQL语句或者PL/SQL块。
使用最频繁的编辑命令是edit (或ed )。

这条命令的作用是打开默认的编辑器(在Windows环境中为记事本),并将缓冲区中的内容放在编辑器中。
用户可以在编辑器中修改缓冲区中的内容,修改完后保存并退出编辑器,然后在SQL*Plus 中输入/命令,修改后的内容将在SQL*Plus 中执行。

执行edit命令时, SQL*Plus在操作系统当前目录中建立了-个临时文件,用来保存当前缓冲区的内容。
这个文件的默认文件名为“ afiedt.buf”。

需要注意的是,在这个临时文件中井不保存所有已经执行的SQL语句或者PL/SQL块,仅当执行edit命令时,才将当前缓冲区中的内容写入这个文件,文件中以前的内容将被覆盖。
如果要显示缓冲区中的内容,可以执行list (或者I )命令。

list命令以分行的形式显示缓冲区的内容,并在每一行前面显示行号。
如果要显示某一行的内容,可以在list命令之后指定行号,这样只显示指定的一行,并使这一行成为当前行,而不是显示所有内容。

还有一种简单的方法用来显示某一行的内容。

在SQL*PLUS提示符下直接输入一行的行号,结果与将行号作为参数的list命令是等价的。

append命令(或者a )的作用是在缓冲区中当前行的末尾追加文本

在默认情况下,最后一行是当前行。

如果以某一行的行号作为参数执行了list命令,那么指定的行将成为当前行。
append命令的格式为:

APEEND 文本

append将把指定的文本追加到当前行的末尾。

注意追加的文本不需要用引号限定,否则引号将作为文本的一部分一起被追加,在关键字APPEND和文本之间留两个空格的位置。

append命令的作用是在当前行的末尾追加文本。

如果要在缓冲区中增加一行,就要使用input 命令。
input命令(或者i )的作用是在当前行之后追加一行或者多行。

在默认情况下,input命令在最后一行之后追加文本。
如果要在某一行之后追加,应该先执行list命令使该行成为当前行,然后再追加。
使用input命令追加文本时,可以只追加一行,这时input命令的格式为:

input 文本

如果要追加多行,则输入不带参数的input命令并回车,这时行号将变成ni 的形式,其中n是从当前行号的下一个数字开始的整数,表示该行内容是追加到缓冲区中的。
追加结束后以一个空行回车符结束。

注意,在追加多行时, input命令为追加的新行重新显示了行号,即上面的2i 、3i等。

输入结束后,在下一行直接回车,这时重新显示SQL*Plus提示符,追加操作便告结束。

如果发现缓冲区中内容有错误,可以用edit命令打开编辑器,在编辑器中进行修改。

还有一种修改方法,就是change命令。
change (或者c )命令的作用是在缓冲区中当前行上用新的字符串代替旧的字符串

这条命令的格式为:
change 当前字符串/替换字符串/

如果要清空缓冲区中的内容,可以执行del命令。

当缓冲区被清空后,就不能再执行edit命令进行编辑,也不能再执行list命令进行显示了。
如果只删除缓冲区中的一部分内容,则通过edit和list命令可以显示剩下的内容。
在默认情况下, del命令删除缓冲区中当前行的全部内容。

但是通过指定参数, del命令可以删除指定的一行或者多行。
del命令的格式有以下形式:
del 开始行号 结束行号 删除开始行号和结束行号之间的行。
del 开始行号 *  删除开始行号和当前行之间的行。
del * 结束行号 删除当前行和结束行号之间的行。
del last 删除最后一行。
其中开始行号和结束行号是指定的行号,开始行号必须小于结束行号。

符号“*”用来代表当前行,标识符last代表最后一行。

如何对操作系统文件进行读写

在SQL*Plus 中可以对操作系统中的文本文件进行简单的读写访问

例如,事先将SQL语句或者PL/SQL块的代码存放在文本文件中,再把文本文件调入缓冲区中,使之执行。
或者把当前缓冲区中的内容保存到一个文件中,或者把SQL语句、PL/SQL块的执行结果保存到文件中。
读文件涉及的命令包括@、get 、start等命令。
@命令的作用是将指定的文本文件的内容读到缓冲区中,并执行它。

文本文件可以是本地文件,也可以是远程服务器上的文件
如果是本地文件,@命令的命令的执行格式为
@文件名
这里的文件名要指定完整的路径,默认的扩展名是.sql,如果脚本文件使用了默认的扩展名,则在@命令中可以省略扩展名。
如果是远程文件,必须将它存放到一个web服务器上,并以HTTPFTP方式访问。
这时@命令的命令的执行格式为(以HTTP为例):
@
使用@命令读取文件时,文件中可以包含多条SQL语句,每条语句以分号结束;或者可以包含一个PL/SQL块

本文由澳门新萄京官方网站发布于信息数据库,转载请注明出处:利用脚本文件管理Oracle数据库,Plus用法指南

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。