首页 > 数据库 > Oracle > Oracle9i SET用法简介1
Oracle9i SET用法简介1
设置一个系统变量来改变你当前会话的SQL*Plus环境设置,比如:
你也可以在iSQL*Plus中使用系统变量屏幕来设置系统变量。
SET 系统变量 值
系统变量和值都会显示在SET命令中。
用法
SQL*Plus维护系统变量(也称之为SET命令变量)来使你对一个SQL*Plus会话建立一个特定的环境。你可以使用SET命令改变这些系统变量,并使用SHOW命令列出它们的值。
SET ROLE和SET TRANSACTION是SQL命令(详情参考Oracle9i SQL Reference)。当后面不接TRANSACTION或ROLE关键字时,SET默认是一个SQL*Plus命令。
SET APPI[NFO]{ON|OFF|text}
通过DBMS_APPLICATION_INFO包设置脚本的自动注册。它使得DBA能监控每个脚本的性能和资源使用情况。注册的名字显示在V$SESSION和V$SQLAREA视图中的MODULE字段。你可以使用DBMS_APPLICATION_INFO.READ_MODULE过程来获取注册的名字。
ON注册被@,@@或START命令调用的脚本。OFF禁用脚本注册。替代的,text的当前值被注册。当没有脚本在运行或者当APPINFO设为OFF(这是默认设置)时,Text指定注册text。对于text,默认是“SQL*Plus”。如果你在text中输入多个字,你必须使用引号把它们括起来。Text的最大长度受DBMS_APPLICATION_INFO包的限制。
注册的名字有nn@xfilename的格式,其中nn是脚本的深度水平;当脚本名被截断时,x是’<’,否则它是空的;filename是脚本名,可能会被截断成DBMS_APPLICATION_INFO包接口所允许的长度。
注意: 为了使用这个特征,你必须可以访问DBMS_APPLICATION_INFO包。以SYS用户运行DBMSUTIL.SQL(这个名字可能根据你的操作系统不同而不同)来创建DBMS_APPLICATION_INFO包。DBMSUTIL.SQL是Oracle9i数据库服务器产品的一部分。 |
更多关于DBMS_APPLICATION_INFO包的信息,参考Oracle9i Database Performance Tuning Guide and Reference手册。
举例:
由于它的默认是SET OFF,为了显示APPINFO的设置,输入
SET APPINFO ON
SHOW APPINFO
APPINFO值为ON,并被设置给了”SQL*Plus”
为了改变默认的text值,输入
SET APPINFO 'This is SQL*Plus'
为了确信注册已经被替代,输入
VARIABLE MOD VARCHAR2(50)
VARIABLE ACT VARCHAR2(40)
EXECUTE DBMS_APPLICATION_INFO.READ_MODULE(:MOD, :ACT);
PL/SQL procedure successfully completed.
PRINT MOD
MOD
---------------------------------------------------
This is SQL*Plus
为了改变APPINFO回它的默认值,输入
SET APPI OFF
SET ARRAY[SIZE] {15|n}
设置SQL*Plus一次从数据库里获取的行数--称之为一个batch。取值范围从1到5000。取大值会增加获取多行的查询和子查询的效率,但是需要更多的内存。值大于100之后,性能变化不大。ARRAYSIZE对SQL*Plus操作的结果没有影响,出了增加效率。
SET AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}
控制Oracle什么时候提交对数据库的挂起的改变。ON表示在数据库成功执行每一个INSERT、UPDATE、DELETE命令或者PL/SQL块之后提交对数据库的挂起的改变。OFF禁止自动提交,因而你必须手动提交改变(例如,使用SQL命令COMMIT)。IMMEDAITE方式的功能和ON选项一样。n表示在数据库成功执行n条INSERT、UPDATE、DELETE命令或者PL/SQL块之后提交对数据库的挂起的改变。n必须大于0小于2,000,000,000。在成功执行n条INSERT、UPDATE、DELETE命令或者PL/SQL块、commit、rollback、SET AUTOCOMMIT命令之后,语句的计数器会重置为0。
注意: 对于这个特征,一个PL/SQL块被当做一个事物,不管包含多少个实际的SQL命令个数。 |
SET AUTOP[RINT] {ON|OFF}
设置绑定变量的自动打印。ON或OFF控制SQL*Plus是否自动显示绑定变量(参考EXECUTE命令执行PL/SQL块)。更多关于现实绑定变量的信息,参考本章的PRINT命令。
SET AUTORECOVERY [ON|OFF]
ON表示在恢复期间, RECOVER命令自动应用所需的默认归档日志文件名。当AUTORECOVERY设置为ON时,不需要交互,需要提供的文件以特定的文件名存在于特定的目录。当AUTORECOVERY为0N时所用用的文件名是由初始化参数LOG_ARCHIVE_DEST and LOG_ARCHIVE_FORMAT的值决定的。
在iSQL*Plus中,你必须设置使用RECOVERY命令将AUTORECOVERY设置为ON。试图使用AUTORECOVERY OFF时将会报错:
SP2-0872 在iSQL*Plus中必须使用SET AUTORECOVERY ON
OFF为默认值,要求你手工输入文件名,或者接受给定的默认文件名。关于数据库恢复的更多信息参考本章的RECOVER命令。
举例
为了设置恢复模式为AUTOMATIC,输入
SET AUTORECOVERY ON
RECOVER DATABASE
SET AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
显示有关SQL DML语句(SELECT、INSERT、UPDATE或DETETE)成功执行的报告。这个报告可能包含执行统计和查询执行路径。
OFF不会显示跟踪报告。ON显示跟踪报告。TRACEONLY显示跟踪报告,但即便要,也不打印查询数据。EXPLAIN通过执行一个EXPLAIN PLAN显示查询执行路径。STATISTICS显示SQL语句的统计信息。更多EXPLIAN PLAN信息参考Oracle9i SQL Reference手册。
使用ON或TRACEONLY不带显式选项,默认为EXPLAN STATISTICS。
TRACEONLY选项对于禁止大查询的查询数据可能是有用的。如果STATISTICS被指定,SQL*Plus仍然会从服务器获得查询数据,只不过这些数据不会被显示。
在一个语句成功完成后,AUTOTRACE报告会被打印。
Oracle9i Database Performance Tuning Guide and Reference手册有关于执行计划和统计信息的文档。
当SQL*Plus生成一个STATISTICS报告时,又一个数据库连接会自动生成。当STATISTICS选项被设置成OFF或者你退出SQL*Plus时,这个连接关闭。
你的AUTOTRACE报告的格式会根据你连接和配置的服务器的版本不同而不同。
当FIPS标志启用时,AUTOTRACE不可用。
更多AUTOTRACE信息参考"Tracing Statements"。
SET BLO[CKTERMINATOR] {.|c|ON|OFF}
设置用来结束PL/SQL块的字符为c。它不能是一个包含文字与数字的字符,也不能是空白。为了执行这个块,你必须使用RUN或者/(斜线)命令。
OFF意味着SQL*Plus认为没有PL/SQL块结束符号。ON改变c的值回默认的句号(.),而不是最近使用的符号。
SET CMDS[EP] {;|c|ON|OFF}
将用来分割一行内输入的多个SQL*Plus命令的非字符与数字的字符设置成c。ON或OFF控制你在一行内是否可以输入多个命令。ON自动地设置命令分隔符为分号(;)。
举例
为了以TTITLE指定标题和以COLUMN格式化一列,两者在同一行,输入
SET CMDSEP +
TTITLE LEFT 'SALARIES' + COLUMN SALARY FORMAT $99,999
SELECT LAST_NAME, SALARY FROM EMP_DETAILS_VIEW
WHERE JOB_ID = 'SH_CLERK';
SALARIES
LAST_NAME SALARY
------------------------- --------
Taylor $3,200
Fleaur $3,100
Sullivan $2,500
Geoni $2,800
Sarchand $4,200
Bull $4,100
Dellinger $3,400
Cabrio $3,000
Chung $3,800
Dilly $3,600
Gates $2,900
Perkins $2,500
Bell $4,000
Everett $3,900
McCain $3,200
Jones $2,800
SALARIES
LAST_NAME SALARY
------------------------- --------
Walsh $3,100
Feeney $3,000
OConnell $2,600
Grant $2,600
20 rows selected.
SET COLSEP {_|text}
在iSQL*Plus中,SET COLSEP决定了列的分隔符,这些分隔符作为标志显示在输出列的中间。HTML表输出是默认。为了生成预定格式的输出,你必须使用SET MARKUP HTML PREFORMAT ON命令设置PREFORMAT ON。
设置text显示在被选的列之间。如果COLSEP变量包含多个空格或者标点符号,你必须用单引号括起来。Text的默认值是一个字符。
在多行的记录中,列分隔符不会显示在那些开始在不同的行的列之间。通过使用BREAK…SKIP n,列分隔符不会显示在空行,并且不会覆盖记录分隔符。更多信息参考SET RECSEP章节。
举例
为了将列分隔符设置成"|",输入
SET COLSEP '|'
SELECT LAST_NAME, JOB_ID, DEPARTMENT_ID
FROM EMP_DETAILS_VIEW
WHERE DEPARTMENT_ID = 20;
LAST_NAME |JOB_ID |DEPARTMENT_ID
-------------------------|----------|-------------
Hartstein |MK_MAN | 20
Fay |MK_REP | 20
SET COM[PATIBILITY]{V7|V8|NATIVE}
指定使用的Oracle SQL语法的版本。对于Oracle7,设置COMPATIBILITY为V7,Oracle8为V8,以此类推。COMPATIBILITY总是默认为NATIVE。COMPATIBILITY应该正确设置为与你所连的数据库SQL语法版本一致,否则你可能不能运行任何SQL命令。
举例
为了运行一个脚本,用Oracle7 SQL语法生成的SALARY.SQL,输入
SET COMPATIBILITY V7
START SALARY
在运行这个文件后,重新设COMPATIBILITY为NATIVE以运行Oracle9i所生成的脚本:
SET COMPATIBILITY NATIVE
你也可以在脚本的开头增加SET COMPATIBILITY V7命令,在文件的结尾重设COMPATIBILITY为NATIVE。
SET CON[CAT] {.|c|ON|OFF}
当SQL*Plus将解释下一个字符作为变量名的一部分时,设置用来终止一个替换变量引用的字符。当你接通CONNCAT时,SQL*Plus重设CONCAT值。
SET COPYC[OMMIT] {0|n}
在COPY命令提交改变到数据库后,控制批量处理的数量。COPY提交行到目的数据库,每次它复制n行批量处理。取值范围为0到5000.你可以设置一个批量的值为ARRAYSIZE变量。如果你设置COPYCOMMIT为0,COPY仅仅在复制操作结束时执行提交。
SET COPYTYPECHECK {ON|OFF}
当使用COPY命令插入或追加到表时,设置禁止数据类型比较。这是为了便于复制到DB2,它要求CHAR型被复制成一个DB2 DATE型。
SET DEF[INE] {&|c|ON|OFF}
将作为前缀替换变量的字符设置为c。ON或OFF控制是否SQL*Plus将会扫描替换变量的命令,并用它们的值进行替换。ON改变c的值回默认的‘&’,而不是最近使用的字符。设置DEFINE为0FF覆盖SCAN变量的设置。更多SCAN变量的信息,参考SET SCAN命令。
SET DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}]
设置你可以递归描述对象的水平深度。DEPTH子句有效范围从1到50。如果你SET DESCRIBE DEPTH ALL,深度将会被设置为50,这是允许的最大值。当一个对象包含多个对象类型时,你爷可以显示行数和缩进显示属性或列名。使用SET LINESIZE命令来控制数据显示的宽度。
更多关于描述对象的信息,参考本章前述的DESCRIBE。
举例
为了描述EMP_DETAILS_VIEW视图到2级深度,并且当也要显示行数时缩进输出,首先,向下面这样描述视图:
DESCRIBE EMP_DETAILS_VIEW
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPLOYEE_ID NOT NULL NUMBER(6)
JOB_ID NOT NULL VARCHAR2(10)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
LOCATION_ID NUMBER(4)
COUNTRY_ID CHAR(2)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
JOB_TITLE NOT NULL VARCHAR2(35)
CITY NOT NULL VARCHAR2(30)
STATE_PROVINCE VARCHAR2(25)
COUNTRY_NAME VARCHAR2(40)
REGION_NAME VARCHAR2(25)
为了格式化EMP_DETAILS_VIEW以便输出显示缩进和行数,使用如下的SET DESCRIBE命令:
SET DESCRIBE DEPTH 2 LINENUM ON INDENT ON
为了显示上面的设置,输入
DESCRIBE EMP_DETAILS_VIEW
Name Null? Type
------------------- -------- --------------------
1 EMPLOYEE_ID NOT NULL NUMBER(6)
2 JOB_ID NOT NULL VARCHAR2(10)
3 MANAGER_ID NUMBER(6)
4 DEPARTMENT_ID NUMBER(4)
5 LOCATION_ID NUMBER(4)
6 COUNTRY_ID CHAR(2)
7 FIRST_NAME VARCHAR2(20)
8 LAST_NAME NOT NULL VARCHAR2(25)
9 SALARY NUMBER(8,2)
10 COMMISSION_PCT NUMBER(2,2)
11 DEPARTMENT_NAME NOT NULL VARCHAR2(30)
12 JOB_TITLE NOT NULL VARCHAR2(35)
13 CITY NOT NULL VARCHAR2(30)
14 STATE_PROVINCE VARCHAR2(25)
15 COUNTRY_NAME VARCHAR2(40)
16 REGION_NAME VARCHAR2(25)
SET ECHO {ON|OFF}
控制START命令是否列出一个脚本中的每一个被执行的命令。ON表示列出命令,OFF禁止列出。
SET EDITF[ILE] file_name[.ext]
SET EDITFILE在iSQL*Plus中不支持
为EDIT命令设置默认的文件名。更多关于EDIT命令的信息参考本章EDIT部分。
你可以包括一个路径和(/或)文件扩展。关于改变默认扩展的信息,参考SET领命的SUFFIX变量。这个默认的文件名和最大文件名长度是操作系统指定的。
SET EMB[EDDED] {ON|OFF}
控制每个报告从一页的什么地方开始。OFF强制每个报告在一个新页的顶部开始。ON允许一个报告在一页的任何地方开始。当你想一个报告接着上个运行的报告立即开始打印时,设置EMBEDDED为ON。
SET ESC[APE] {|c|ON|OFF}
定义作为转义字符的字符。OFF表示不定义转义字符。ON表示启用转义字符。ON会修改c的值回默认值“”。
你可以在代替字符(通过SET DEFINE设置)之前使用转义字符来指定SQL*Plus应该对待代替字符作为一个普通字符而不是要求变量替换。
举例
如果你定义了感叹号(!)为转义符,那么
SET ESCAPE !
ACCEPT v1 PROMPT 'Enter !&1:'
显示如下提示:
Enter &1:
为了将转义符设回默认值(反斜线),输入
SET ESCAPE ON
SET FEED[BACK] {6|n|ON|OFF}
当一个脚本选择至少n条记录时,显示返回的记录数。ON或OFF表示是否打开或者关闭这个显示。打开feedback ON设置n为1.将feedback设置为0等同于设置它为OFF。
SET FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}
检查以确保SQL语句符合ANSI/IOS SQL92标准。如果任何非标准的结构发现,Oracle服务器将会作为错误标志它们,并且显示语法错误。这个SQL语言ALTER SESSION SET FLAGGER命令等价。
即使在你没有连上数据库时,你也可以执行SET FLAGGER。FIPS标志将会一直影响SQL*Plus会话,直到SET FLAGGER OFF(或ALTER SESSION SET FLAGGER=OFF)命令成功,或者你退出SQL*Plus。
当FIPS标志启用时,SQL*Plus对CONNECT、DISCONNECT和ALTER SESSION SET FLAGGER命令显示一个警告,即使它们是成功的。
SET FLU[SH] {ON|OFF}
SET FLUSH在iSQL*Plus中不支持
控制什么时候将输出送到用户的显示设备。OFF表示允许主机操作系统缓存输出。ON表示禁用缓存。
仅仅当你运行一个没有交互的脚本时(也就是说,你的脚本运行结束前,你都不需要看到输出和/或者提示符)使用OFF。FLUSH OFF的使用减少了I/O的处理数量,可以提升性能。
SET HEA[DING] {ON|OFF}
在报表中控制列标题的打印。ON表示在报表中打印列标题;OFF表示禁止列标题。
SET HEADING OFF命令不会影响显示的列宽,仅仅禁止列标题自身的打印。
举例
为了禁止在报表中显示列标题,输入
SET HEADING OFF
如果你接着运行一个SQL SELECT命令
SELECT LAST_NAME, SALARY
FROM EMP_DETAILS_VIEW
WHERE JOB_ID = 'AC_MGR';
输出结果如下:
Higgins 12000
为了重新显示列标题,输入
SET HEADING ON
SET HEADS[EP] {||c|ON|OFF}
定义用作标题分隔符的字符。标题分隔符不能是包括文字与数字的或者空白。你可以在COLUMN命令、在为了将一个列标题或题头分成多行的老的BTITLE和TTITLE表格中使用标题分隔符。ON或OFF表示是否打开或关闭标题分隔符。当标题分隔符设置为OFF时,SQL*Plus像任何其它字符一样打印标题分隔符。ON修改c的值回默认值“|”。
SET INSTANCE [instance_path|LOCAL]
将你会话的默认实例修改为指定的实例路径。使用SET INSTANCE命令不会连上数据库。当没指定实例时,使用默认的实例。任何在SET INSTANCE使用前的命令都和默认的实例通信。
为了重新将实例设置成你操作系统的默认值,你既可以输入SET INSTANCE不加instance_path,也可以SET INSTANCE LOCAL。参考你的操作系统指定的Oracle文档查阅如何设置初始默认实例的描述。
注意,你只能在当前没有连接到任何一个实例时改变实例。也就是说,你必须首先确认你已经断开了当前的实例,然后设置或者修改这个实例,接着为了让新的设置生效,重连到一个实例。
这个命令只能在Oracle Net运行时发布。你可以使用任何有效的Oracle Net连接标示符作为指定的实例路径。参考你操作系统指定的Oracle文档查阅关于你的操作系统如何指定Oracle Net连接标示符的完整描述。
举例
为了默认实例为“PROD1”,输入
DISCONNECT
SET INSTANCE PROD1
为了将实例设回本地默认值,输入
SET INSTANCE local
为了改变这个实例,你必须断开任何实例的连接。
SET LIN[ESIZE] {80|n}
在开始一个新行之前,设置SQL*Plus一行的字符显示总数。它也可以控制在TTILE、BTITILE、REPHEADER和REPFOOTER中居中或右对齐的文本的位置。改变linesize设置可以影响来自DESCRIBE命令输出文本的换行显示。DESCRIBE输出列典型地会分配给linesize的一定比例。减少或者增加linesize的大小可能会在你的显示中出现出乎预料的文本换行。你可以定义LINESIZE从1到你的系统支持的最大值。查阅提供给你的操作系统的Oracle installation and user's manual(s)。
SET LOBOF[FSET] {n|1}
设置获取和显示CLOB和NCLOB数据的起始位置。
举例
为了将要获取的CLOB列的数据的起始位置设置成第22位,输入
SET LOBOFFSET 22
CLOB数据将会在你的屏幕上换行;SQL*Plus不会截断,直到第23个字符。
SET LOGSOURCE [pathname]
指定恢复时所需的归档日志的位置。默认值由Oracle初始化文件init.ora中的初始化参数LOG_ARCHIVE_DEST设置。不指定路径使用SET LOGSOURCE命令时从默认路径取文件。
举例
为了将日志文件恢复的默认路径设置为目录"/usr/oracle90/dbs/arch",输入
SET LOGSOURCE "/usr/oracle90/dbs/arch"
RECOVER DATABASE
SET LONG {80|n}
对于显示CLOB、LONG、NCLOB和XML类型的值设置最大的宽度(用字节表示)。n的最大值是2GB。
举例
为了设置显示和复制LONG值最大到500,输入
SET LONG 500
LONG数据将会屏显换行;SQL*Plus将会从第501个字节后截断。LONG的默认值是80字节。
SET LONGC[HUNKSIZE] {80|n}
设置SQL*Plus增量大小(按字节)来获取CLOB、LONG、NCLOB或XML类型的值。
举例
为了在SQL*Plus中获取LONG值的增量大小设为100字节,输入
SET LONGCHUNKSIZE 100
LONG数据将会按100字节增量获取,直到整个值被获取,或者到达了SET LONG的值,二者取最小值。
[@more@]Oracle9i SET用法简介2来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/35686/viewspace-1022561/ ,如需转载,请注明出处,否则将追究法律责任。