SQL*Plus的常用命令
数据库实例支持四种状态:打开(open),关闭(close),已装载(mount),和已启动(nomount)。
一、启动数据库
1. startup:启动数据库实例,装载并打开数据库。
2. starup mount:启动数据库实例,装载数据库,但并不打开
3. startup nomount:启动数据库实例,不装载。通常只在整个数据库创建过程中使用该模式。(控制文件丢失时)
4. alter database open; (继续打开数据库需进行的操作)
5. alter database open read only; (以只读的方式打开数据库,适用于仅具有查询功能的数据库系统。)
6. startup restrict:启动后限制对数据库实例的访问。仅仅允许一些特权用户(具有DBA身份)才能使用数据库。
7. startup force :实际上是强行关闭数据库(shutdown abort)和启动数据库(startup)的一个综合。在系统遇到问题不能关闭数据库使使用。
数据库的启动过程分为三个阶段:
第一阶段:启动实例
包括:1.读取参数文件;2.分配SGA;3.启动后台进程。
第二阶段:装载数据库
装载数据库是将数据库与已启动的实例相联系。数据库装载后,数据库保持关闭状态。
第三阶段:打开数据库
此步骤使用数据库可进行正常的操作的处理。主要是打开控制文件,数据文件和日志文件。
要启动和关闭数据库,必须要以具有oracle管理员权限的用户登录,通常也就是以sysdba权限的用户登录。
二、关闭数据库
1. shutdown (normal):正常关闭,等待目前所有用户退出关闭数据库,再不允许任何用户连接。
2. shutdown immediate:立即关闭,断开所有已经连接的用户然后关闭。
在以下情形中使用立即关闭数据库模式:
a. 要初始化一个自动的并且未参与的备份
b. 当要马上发生电源的关闭动作时
c. 当数据库或其中一个应用程序功能不正常,此时又不能联络到用户以请求注销操作或者这些用户不能注销时
3. shutdown transactional:计划关闭数据库,等待当前所有活动的事务完成后,以shutdown immediate方式关闭数据库。
4. shutdown abort:当数据库实例出现异常,中止数据库实例,立即关闭。
在以下情形中使用立即关闭数据库模式:
a. 数据库或其中一个应用程序功能不正常且未使用其它关闭操作
b. 需要即刻关闭数据库(例如知道会在一分钟内发生关闭电源的动作)
c. 启动实例遇到问题
三、连接命令
conn[ect] 用法:conn 用户名/密码@网络服务名 [as sysdba/sysoper];
当用特权用户登录时,必须带上as sysdba 或as sysoper
disc[onnect] 用来断开与当前数据库的连接;
passw[ord] 用户修改用户的密码;如果想要修改其他用户密码,需用sys/system登录
show user 显示当前用户名
exit 该命令会断开与数据库的连接,同时会退出sql*plus
四、文件操作命令
start和@:运行sql脚本
例如:sql>start d:\aa.sql或者sql>@ d:\aa.sql
edit:该命令可以编辑指定的sql脚本;例如sql> edit d:\aa.sql
spool:该命令可以将sql*plus屏幕上的内容输到指定文件中;
例如sql>spool d:\ b.sql,并且输入sql>spool off
五、交互式命令
& :可以替代变量,而该变量执行时,需要用户输入
例如:sql>select * from emp where job=‘&job’;
六、编辑命令
list/l: 查看Oracle缓冲区中曾经写的命令
行编辑命令的使用,change(替换字符串), Append(追加字符串)等
save :将当前缓冲区中内容保存至脚本文件中。get:获得执行的脚本内容,并不执行
七、报表命令
显示和设置环境变量,可以来控制输出的各种格式,
set linesize 设置显示行的宽度,默认是80个字符
sql>show linesize; sql>set linesize 90
pagesize设置每页显示的行数目,默认是14
用法与linesize相同
column:给SQLPLUS各种关于列的标题、格式和处理的指令。配合使用column clear
例如:sql> COLUMN deptno HEADING department //改变缺省的列标题
sql> COLUMN dname FORMAT a20 //改变列的显示长度(字符型)
sql> COLUMN deptno FORMAT 0099 //改变字段的格式(数值型)
sql> COLUMN sal FORMAT $99,990
sql> COLUMN deptno justify Left; //改变字段的对齐方式
sql> COLUMN //显示列的当前的显示属性值
sql> CLEAR COLUMNS //将所有列的显示属性设为缺省值
FORMAT选项用于指定列的显示格式,其中格式模型包含以下一些元素:
An:设置char,varchar2类型列的显示宽度;
9 :在number类型列上禁止显示前导0;
0 :在number类型列上强制显示前导0;
$ :在number类型列前显示美元符号;
L :在number类型列前显示本地货币符号;
.:指定number类型列的小数点位置;
,:指定number类型列的千分隔符;
例如:设置显示salary列的格式﹕
col salary for $9,999.99;//逗号 表示千位符号﹐9为不显示前导0﹐
//設置前導0的格式為﹕$009,999.00
//設置本地貨幣符號的格式為﹕L009,999.00;
ttitle/btitle:设置报表每一页的头标题。配合使用TTTILE OFF和BTITLE OFF
主要参数的说明:
a. 报表标题的显示的位置,有LEFT,CENTER决定
b. 还可以使用用户的变量(内容有系统来维护),如SQL.PNO
页号, SQL.LNO行号等
c. COL[N] 就是在第几个字符位置开始显示标题。
例如:
sql> TTITLE CENTER “我的报表” skip 1 –
LEFT “报表制作” RIGHT “页码” –
FOTMAT 999 SQL.PNO SKIP 2;
sql> BTITLE COL 5 “报表页脚” ;
break on:一般可以用BREAK ON column SKIP xx 来对查询结果进行排列BREAK ON 的参数如下:
clear breaks 清除所有的break定义
break on column 在该列上中断
break on row 在每一行上中断
break on page 在每页上中断
break on report 在每一报告上中断
skip n 跳过n行
skip page 跳过未使用的页
例如:分别以不同的中断形式,对emp表中的deptno进行排列:
SQL> break on deptno;
SQL> set pagesize 100
SQL> select deptno,ename,sal from scott.emp order by deptno;
SQL> break on deptno skip 2
SQL> select deptno,ename,sal from scott.emp order by deptno;
SQL> break on deptno skip page
SQL> select deptno,ename,sal from scott.emp order by deptno;
COMPUTE:对结果进行格式化,配合使用clear compute
CMP [FUNCTION LAB TEXT] OF {EXPR|COLUMN|ALIAS}
ON {EXPR|COLUMN|ALIAS|REPORT|ROW}
function可以是下面的参数之一:
AVG 数字类型的平均值
COU 所有类型的个数
MIN NUMBER,VARCHAR,CHAR,NCHAR,NVARCHAR2类型的最小值
MAX NUMBER,VARCHAR,CHAR,NCHAR,NVARCHAR2类型的最大值
NUM 计算所有类型的行数
SUM 计算所有非空类型的总和
LAB TEXT显示的字符串:
OF OF子串或表达式或别名
ON ON子串或表达式或别名或REPORT或ROW
例如:对emp表中不同的部门进行格式化,计算平均工资,并加以标记”salary average”
sql>break on deptno;
sql>select deptno, ename, sal from emp order by deptno;
sql>COMP AVG LABEL ‘salary average’ of sal on deptno;
sql>select deptno, ename, sal from emp order by deptno;
八、补充说明
以下17个是作为语句开头的关键字:
alter drop revoke audit grant rollback* commit* insert select comment lock update create
noaudit validate delete rename
这些命令必须以“;”结尾
带*命令句尾不必加分号,并且不存入SQL缓存区。