《学习Oracle从这里开始》之sqlplus命令篇

做为数据库开发和管理人员,日常工作用到最多的工具可能就是PLSQL和SQLPLUS了,我在工作中一般编写SQL语句或写一些包、存储过程之类的代码是在PLSQL中完成的(挺喜欢它的提示和排版的),其它的基本上都是利用SQLPLUS了。既然我们如此多的使用打了SQLPLUS,那么我们就很有必要掌握它的一些常用的命令了,在本篇博文中我会列出一些我常用命令,大家可以积极发言进行补充。

数据库管理人员经常会使用SYS用户以SYSDBA进行登录,如果有机会直接在服务器端登录是最好的,如果没有那需要在客户端登录怎么办呢?方法很简单,只需要在命令窗口使用:“sqlplus 用户名/密码@连接 as sysdba”就可以了。那如果实在服务器端呢?实际上就更简单了,在服务器端使用的是操作系统验证的方式登录的,所以有没有用户名、密码、和连接实际上都是一样的,不信我们来看,我们以三种不同的当时登录:

sqlplus / as sysdba

sqlplus ccc/ccc@orcl as sysdba

sqlplus ss/cc as sysdba

点击(此处)折叠或打开

Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.

C:\\Documents and Settings\\Administrator>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 8月 6 13:48:32 2014

Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> show user;
USER 为 \"SYS\"
SQL>

点击(此处)折叠或打开

Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.

C:\\Documents and Settings\\Administrator>sqlplus ccc/ccc@orcl as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 8月 6 13:46:46 2014

Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL>show user;
USER 为 \"SYS\"
SQL>

点击(此处)折叠或打开

Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.
C:\\Documents and Settings\\Administrator>sqlplus ss/cc as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 8月 6 13:47:09 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.

连接到:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL>show user;
USER 为 \"SYS\"
SQL>

以sysdba登录后能做什么呢?我们来看:

1、启动数据库:startup

startup 默认参数为open,并且默认以独占方式装入数据库。

正常使用startup启动就可以了,但是总有个别情况,那我们来看看它的参数吧:

startup; 启动实例装入并打开数据库,允许任何用户连接到数据库并执行数据库访问操作。

startup nomount; 启动实例但不装入数据库,一般只有在数据库创建的时候使用。

startup mount; 启动实例装入数据库但不打开数据库,允许用户执行一些维护工作,如:重命名数据文件、添加和撤消以及重命名重做日志文件、启动和禁止重做日志归档、执行全部的数据库恢复。

startup restrict; 限制在数据库启动时的用户访问,这种模式只允许DBA进行:执行结构维护、执行数据库文件的导入导出、执行数据装载、临时阻止典型用户使用数据。

startup force; 强行启动实例,如果一个实例正在启动,该命令可以重新启动。

startup open recover; 启动实例,装入数据库,并启动介质恢复。

如果用户的oracle服务器允许多个事例来并发的访问一个数据库(oracle 并行服务器选项),应选择独占或并行装入数据库。

startup open orcl pfile=initorcl.ora parallel; 并行装入数据库。

strartup open orcls pfile=initorcls.ora execlusive restrict; 独占装入数据库。

2、关闭数据库:shutdown

shutdown normal; 不允许产生新的连接、等待当前所有会话结束、等待当前存在的所有事务结束、做一个检查点并关闭数据文件,启动时不需要实例恢复。

shutdown transactional; 不允许产生新的连接、不等待当前存在会话结束、等待当前存在的所有事务结束、做一个检查点并关闭数据文件,启动时不需要实例恢复。

shutdown immediate; 不允许产生新的连接、不等待当前存在会话结束、不等待当前存在的事务结束、做一个检查点并关闭数据文件,没有结束的事务是自动rollback的,启动时不需要实例恢复。

shutdown abort; 不允许产生新的连接、不等待当前存在会话结束、不等待当前存在的事务结束、不做检查点且没有关闭数据文件,启动时自动进行实例恢复。

3、更改数据库状态为打开/装载/备份,更改字符集
代码就不一一罗列了,基本上就是alter system set ... = ... scope=..; cope分为memory、spfile、both。
alter tablespace .. read wrte;

....
....

4、创建用户

create user test identified by test;

5、授权

grant dba to test;

6、创建表空间:

create smallfile tablespace data3 logging datafile 'd:\oradata\ora10g\data3.dbf' size 32767m reuse autoextend on next 10240k maxsize unlimited extent management local segment space management auto;

7、给用户分配表空间:

alert user test default tablespace data3;

8、创建spfile:

create spfile from pfile;

9、日志归档和恢复。

不再废话了,看下其他的:
    show all           --查看所有系统变量值 
    show user          --显示当前用户 
    show error       --查看错误 
    set heading off    --禁止输出列头,默认值为on 
    set feedback off   --禁止显示计数信息,默认值为"on" 
    set timing on      --默认为off,显示查询耗时
    set sqlprompt " "  --设置默认提示符,默认值就是" " 
    set linesize 1000  --设置屏幕显示行宽,默认100 
    set autocommit on  --设置是否自动提交,默认为off 
    set pause on       --默认为off,设置暂停,会使屏幕显示停止,等待按下enter键,再显示下一页 
    set arraysize 1    --默认为15 
    set long 1000      --默认为80

    define               -- 用来定义常量,如: define val=‘a’; select &val from dual;

  spool d:\log.txt; --将执行结果记录到文件

  spool off; -- 关闭信息记录

@d:sql.sql -- 用来执行外部文件,如果在文件内引用其他文件,那么需要使用两个@,如:@@sourcecreate_table.sql;

a  where rownum = 1;  -- 添加文本到缓冲区当前行尾,a后面紧跟两个空格, 如当前执行的是:select * from user_tables; 执行结果为:select * fom user_tables where rownum = 1;

 c --替换,如:c/*/table_name,执行结果为select table_name from user_tables where rownum = 1;

del --删除当前缓冲区的语句,可进行参数设置,如: del 2;

i --添加一行到缓冲区

l --显示当前缓冲的所有语句,可进行参数设置,如:l 2;显示当前缓冲的第2条语句,l 1 3;显示当前缓冲区1到3条语句。

run 或者 / 或者 r -- 执行当前缓冲区的语句,我测试过,如果当前缓冲区存在多条的话,是执行失败的。

edit -- 如:edit s 如果当前目录下不存在s.sql文件,则系统自动生成s.sql文件,编辑后,保存退出,再次使用只需要用:@s 即可。

save -- 如:save a 将当前缓冲区的语句保存到文件。

get -- 如:get a 读取存盘的sql文件

start -- 如:start a 运行调入内存的sql文件

exit -- 退出当前sqlplus

desc -- 如:desc user_tables; 显示表结构

clear screen -- 清空当前窗口

其他补充:
清空共享池或者叫缓存池:

alter system flush shared_pool;
       alter system flush buffer_cache;

本文转自ICT时空 dbasdk博客,原文链接:《学习Oracle从这里开始》之sqlplus命令篇 ,如需转载请自行联系原博主。

上一篇:《工业控制网络安全技术与实践》一一1.6 本章习题


下一篇:Photoshop 让地震后的废墟再现辉煌的处理