sql*plus入门
oracle sql*plus工具是用于连接管理数据库的实用工具,提供了简洁强大的命令行界面
在各个发行版本都带有该工具。用于执行数据库管理,编辑执行sql,pl/sql命令。
注:oracle sql*plus执行的部分是本地命令(local commands),也是就是sql*plus自带的命令,
部分是服务器端命令(server-executed commands).
使用sql*plus连接数据库:
sqlplus scott/TIGER@localhost:1521/ORACL
使用easy connect方法,连接远程数据库。可以不需要配置tnsnames.ora文件
要连接远程数据库只需要把localhost换成远程主机名。
tnsnames.ora可以使用netmgr配置或者直接修改tnsnames.ora文件。
设置默认使用的数据库:
$ ORACLE_SID=orcl
$ export ORACLE_SID
这样可以不需要指定登陆的数据库名
$ sqlplus username/password
注意:这时候密码是可见
当需要连接到非默认的数据库的时候,指定tnsnames.ora文件中的服务名
$ sqlplus username@connect_identifier
可以使用操作系统认证的方式以sysdba登陆系统:
sqlplus / as sysdba
某种操作,比如startup,shutdown 必须是以sysdba or sysoper验证的用户
connect命令:
进入sql命令行界面以后,也可以切换到其他用户,其他数据库
SQL> connect newuser/newuser_passwd
SQL> connect salapati/sammyy1@orcla
connect sys/sammy1@prod1 as sysdba
connect / as sysdba
connect username/password as sysdba
connect / as sysoper
connect username/password as sysoper
这时确保tnsnames.ora已经配置关于要连接的数据库的连接信息
nolog命令:
可以使用/nolog先进入sql*plus命令行界面,而不连接到数据库
$ sqlplus /nolog
这时主要是为了编辑sql脚本,需要连接到数据库的时候可以使用connect命令
-用于连接字符拼接:
SQL> select 200 - -
> 100 from dual;
200-100
----------
100
其中一个用作减号
exit,quit用于退出数据库系统:
注意:这时候sql*plus会自动的执行commit;
如果你得事物不需要提交请在退出前rollback;
show screen用于清理屏幕
SQL> clear screen
在linux下也可以使用:
SQL> !clear
edit命令:
在提示符下输入edit默认使用的vi,windows下是notepad,如果要改变默认的sql语句编辑器
可以再提示符下输入define_editor=notpad(你想要使用的编辑器名)。
出现在文本编辑器中的sql语句是最新执行的,默认文件名为afiedt.buf
如果想要保持你编辑的sql语句,可以在edit后面跟上你要保存的文件名(filename)。
执行sql语句,只需要在提示符下键入/然后按enter键,或者使用@filename然后按enter键。
set命令:
set命令用于设置sql*plus会话的环境变量.使用help index命令显示出帮助主题
使用help [topic]详细了解该命令。
SQL> help index
Enter Help [topic] for help.
@ COPY PAUSE SHUTDOWN
@@ DEFINE PRINT SPOOL
/ DEL PROMPT SQLPLUS
ACCEPT DESCRIBE QUIT START
APPEND DISCONNECT RECOVER STARTUP
ARCHIVE LOG EDIT REMARK STORE
ATTRIBUTE EXECUTE REPFOOTER TIMING
BREAK EXIT REPHEADER TTITLE
BTITLE GET RESERVED WORDS (SQL) UNDEFINE
CHANGE HELP RESERVED WORDS (PL/SQL) VARIABLE
CLEAR HOST RUN WHENEVER OSERROR
COLUMN INPUT SAVE WHENEVER SQLERROR
COMPUTE LIST SET XQUERY
CONNECT PASSWORD SHOW
array[size]:设置一次从数据库中获取的行数,把该值设置的大写可以提高查询的效率,但是同时也需要
更多的内存。
SQL> show array
arraysize 15
SQL> set array 30
autocommit[on|off]:设置是否自动提交事务。
SQL> show autocommit;
autocommit OFF
echo[on|off]:每一个命令都将在屏幕输出前显示。
SQL> show echo
echo OFF
SQL> set echo on
linesize[80|n]:控制每行显示的字符个数。
SQL> show linesize
linesize 80
SQL> set linesize 120
time[on|off]:显示系统时间。
SQL> show time
time OFF
SQL> set time on
12:34:58 SQL>
sqlprompt[sql>|text]:sql*plus会话的提示符。
SQL> show sqlprompt
sqlprompt "SQL> "
SQL> set sqlprompt "dba@oracle>"
dba@oracle>
space[1|n]:设置列输出之间的空格,最大值是10.
SQL> show space
space 1
SQL> select * from V$sgainfo;
NAME BYTES RES
-------------------------------- ---------- ---
Fixed SGA Size 1336120 No
Redo Buffers 6373376 No
Buffer Cache Size 159383552 Yes
Shared Pool Size 96468992 Yes
Large Pool Size 29360128 Yes
Java Pool Size 12582912 Yes
Streams Pool Size 0 Yes
Shared IO Pool Size 0 Yes
Granule Size 4194304 No
Maximum SGA Size 305508352 No
Startup overhead in Shared Pool 62914560 No
NAME BYTES RES
-------------------------------- ---------- ---
Free SGA Memory Available 0
SQL> set space 0
SQL> select * from V$sgainfo;
NAME BYTESRES
---------------------------------------------
Fixed SGA Size 1336120No
Redo Buffers 6373376No
Buffer Cache Size 159383552Yes
Shared Pool Size 96468992Yes
Large Pool Size 29360128Yes
Java Pool Size 12582912Yes
Streams Pool Size 0Yes
Shared IO Pool Size 0Yes
Granule Size 4194304No
Maximum SGA Size 305508352No
Startup overhead in Shared Pool 62914560No
NAME BYTESRES
---------------------------------------------
Free SGA Memory Available 0
请注意查询输出的差异
pagesize[24|n]:设置每页的行数。
SQL> show pagesize
pagesize 14
SQL> select * from V$sgainfo;
1//编号是自己手动添加的
2NAME BYTESRES
3---------------------------------------------
4Fixed SGA Size 1336120No
5Redo Buffers 6373376No
6Buffer Cache Size 159383552Yes
7Shared Pool Size 96468992Yes
8Large Pool Size 29360128Yes
9Java Pool Size 12582912Yes
10Streams Pool Size 0Yes
11Shared IO Pool Size 0Yes
12Granule Size 4194304No
13Maximum SGA Size 305508352No
14Startup overhead in Shared Pool 62914560No
NAME BYTESRES
---------------------------------------------
Free SGA Memory Available 0
12 rows selected.
其中每一页最大14行.
feedback[on|off]:设置是否范围“x row selected”。
SQL> show feedback
FEEDBACK ON for 6 or more rows
SQL> set feedback off
SQL> show feedback
feedback OFF
verify[on|off]:设置SQL文本是否显示当,变量替换以后。
SQL> show verify
verify ON
SQL> create table hr.test(col number(4));
Table created.
SQL> insert into hr.test values(&col);
Enter value for col: 1000
old 1: insert into hr.test values(&col)
new 1: insert into hr.test values(1000)
1 row created.
SQL> set verify off
SQL> insert into hr.test values(&col);
Enter value for col: 999
1 row created.
注意前后的区别。