当前位置: > 数据库 > Oracle >

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

时间:2014-08-30 19:08来源:linux.it.net.cn 作者:it

   做为数据库开发和管理人员,日常工作用到最多的工具可能就是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

 

点击(此处)折叠或打开

  1. Microsoft Windows [版本 5.2.3790]
  2. (C) 版权所有 1985-2003 Microsoft Corp.
  3.  
  4. C:\\Documents and Settings\\Administrator>sqlplus / as sysdba
  5.  
  6. SQL*Plus: Release 10.2.0.1.- Production on 星期三 8月 6 13:48:32 2014
  7.  
  8. Copyright (c) 1982, 2005, Oracle. All rights reserved.
  9.  
  10.  
  11. 连接到:
  12. Oracle Database 10g Enterprise Edition Release 10.2.0.1.- Production
  13. With the Partitioning, OLAP and Data Mining options
  14.  
  15. SQL> show user;
  16. USER 为 \"SYS\"
  17. SQL>

 

 

点击(此处)折叠或打开

  1. Microsoft Windows [版本 5.2.3790]
  2. (C) 版权所有 1985-2003 Microsoft Corp.
  3.  
  4. C:\\Documents and Settings\\Administrator>sqlplus ccc/ccc@orcl as sysdba
  5.  
  6. SQL*Plus: Release 10.2.0.1.- Production on 星期三 8月 6 13:46:46 2014
  7.  
  8. Copyright (c) 1982, 2005, Oracle. All rights reserved.
  9.  
  10.  
  11. 连接到:
  12. Oracle Database 10g Enterprise Edition Release 10.2.0.1.- Production
  13. With the Partitioning, OLAP and Data Mining options
  14.  
  15. SQL>show user;
  16. USER 为 \"SYS\"
  17. SQL>

点击(此处)折叠或打开

  1. Microsoft Windows [版本 5.2.3790]
  2. (C) 版权所有 1985-2003 Microsoft Corp.
  3.  
  4. C:\\Documents and Settings\\Administrator>sqlplus ss/cc as sysdba
  5.  
  6. SQL*Plus: Release 10.2.0.1.- Production on 星期三 8月 6 13:47:09 2014
  7.  
  8. Copyright (c) 1982, 2005, Oracle. All rights reserved.
  9.  
  10.  
  11. 连接到:
  12. Oracle Database 10g Enterprise Edition Release 10.2.0.1.- Production
  13. With the Partitioning, OLAP and Data Mining options
  14.  
  15. SQL>show user;
  16. USER 为 \"SYS\"
  17. 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 -- 用来执行外部文件,如果在文件内引用其他文件,那么需要使用两个@,如:@@source\create_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;

(责任编辑:IT)
------分隔线----------------------------