您好,欢迎访问一九零五行业门户网

SQL*Plus常用指令

1.如何链接数据库
由操作系统验证方式:sql>conn / as sysdba
由数据库验证方式sql>conn username/password @databaseidentified as sysdba
databaseidentified是链接标识符,和数据库无关,可以自由命名。
as 后面是角色
2. 如何执行一个sql脚本文件 sql>start file_name sql>@ file_name
我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。
3. 重新运行上一次运行的sql语句 sql> run
4. 将显示的内容输出到指定文件 sql> spool file_name
在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。
5. 关闭spool输出 sql> spool off
只有关闭spool输出,才会在输出文件中看到输出的内容。
6.显示一个表的结构 sql> desc table_name
7. col命令:
我之用格式化的方法col columnname format a20
改变缺省的列标题 column column_name heading column_heading for example: sql>select * from dept; deptno dname loc
---------- ---------------------------- ---------
10 accounting new york sql>col loc heading location sql>select * from dept; deptno dname location
--------- ---------------------------- -----------
10 accounting new york
8. set 命令:
我一般之用
set linesize 1000
set wrap off
当sql语句的长度大于linesize时,是否在显示时截取sql语句。 sql> set wra[p] {on|off}
当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。
9.修改sql buffer中的当前行中,第一个出现的字符串 c[hange] /old_value/new_value sql> l 1* select * from dept sql> c/dept/emp 1* select * from emp
10.显示sql buffer中的sql语句,list n显示sql buffer中的第n行,并使第n行成为当前行 l[ist] [n]
10.在sql buffer的当前行下面加一行或多行 i[nput]
11.将指定的文本加到sql buffer的当前行后面 a[ppend] sql> select deptno, 2 dname 3 from dept; deptno dname
---------- -------------- 10 accounting 20 research 30 sales 40 operations sql> l 2 2* dname sql> a ,loc 2* dname,loc sql> l 1 select deptno, 2 dname,loc 3* from dept sql> / deptno dname loc ---------- -------------- ------------- 10 accounting new york 20 research dallas 30 sales chicago 40 operations boston
12.再次执行刚才已经执行的sql语句 run or /
13.执行一个存储过程 execute procedure_name
14.显示sql*plus命令的帮助 help
15.显示sql*plus系统变量的值或sql*plus环境变量的值 syntax sho[w] option
1) . 显示当前环境变量的值: show all
2) . 显示当前在创建函数、存储过程、触发器、包等对象的错误信息 show error
当创建一个函数、存储过程等出错时,变可以用该命令查看在那个地方出错及相应的出错信息,进行修改后再次进行编译。
3) . 显示初始化参数的值: show parameters [parameter_name]
4) . 显示数据库的版本: show rel[ease]
5) . 显示sga的大小 show sga
6) 显示当前的用户名 show user
******************************************
ora-00054: resource busy and acquire with nowait specified
症状:
       locked_mode为2,3,4不影响dml(insert,delete,update,select)操作,
但ddl(alter,drop等)操作会提示ora-00054错误。
有主外键约束时 update / delete ... ; 可能会产生4,5锁。  
ddl语句时是6的锁。  
处理方法: 
以dba角色, 查看当前数据库里锁的情况可以用如下sql语句:
select object_id,session_id,locked_mode from v$locked_object;
或select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
如果有长期出现的一列,可能是没有释放的锁。  
我们可以用下面sql语句杀掉长期没有释放非正常的锁:
alter system kill session 'sid,serial#';
最后恢复正常.
其它类似信息

推荐信息