zoukankan      html  css  js  c++  java
  • Oracle常用SQL查询

    一、ORACLE的启动和关闭

    1.在单机环境下要想启动或关闭oracle系统必须首先切换到oracle用户,如下:

    su - oracle

    a、启动Oracle系统

    oracle>svrmgrl

      svrmgr>connect internal

      scrmgr>startup

      svrmgr>quit

      b、关闭oracle系统

    oracle > svrmgrl

     

    SVRMGR > connect internal

     

    SVRMGR > shutdown 

     

    SVRMGR > quit

     

     

    启动oracle9i数据库命令:

     

    $ sqlplus  / nolog

     

    SQL * Plus: Release  9.2 . 0.1 . 0   -  Production  on  Fri Oct  31   13 : 53 : 53   2003 

     

     

    Copyright (c)  1982 ,  2002 , Oracle Corporation.  All  rights reserved.

     

     

     

    SQL >  connect  /   as  sysdba

     

    Connected  to  an idle instance.

     

    SQL >  startup ^ C

     

     

     

    SQL >  startup

     

    ORACLE instance started.

     

     

     2 、在双机环境下

     

    要想启动或关闭ORACLE系统必须首先切换到root用户,如下

     

    su - root

     

     

    a、启动ORACLE系统

     

    hareg -y oracle

     

     

    b、关闭ORACLE系统

     

    hareg -n oracle

     

    Oracle数据库有哪几种启动方式

    说明:

    有以下几种启动方式:

     1 、startup nomount

    非安装启动,这种方式启动下可执行:重建控制文件、重建数据库

    读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。

     2 、startup mount dbname

    安装启动,这种方式启动下可执行:

    数据库日志归档、数据库介质恢复、使数据文件联机或脱机,重新定位数据文件、重做日志文件。

     

    执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,但此时不对数据文件和日志文件进行校验检查。

     

     3 、startup  open  dbname

    先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,这种方式下可访问数据库中的数据。

     4 、startup,等于以下三个命令

    startup nomount

     alter   database  mount

     alter   database   open 

     

     5 、startup  restrict 

    约束方式启动这种方式能够启动数据库,但只允许具有一定特权的用户访问非特权用户访问时,会出现以下提示:

    ERROR:ORA - 01035 : ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用

     

     6 、startup force

    强制启动方式当不能关闭数据库时,可以用startup force来完成数据库的关闭,先关闭数据库,再执行正常启动数据库命令

     

     7 、startup pfile = 参数文件名

    带初始化参数文件的启动方式先读取参数文件,再按参数文件中的设置启动数据库

    例:startup pfile = E:Oracleadminoradbpfileinit.ora

     

     8 、startup EXCLUSIVE

    二、用户如何有效的=地利用数据字典

      oracle的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生,随着数据库的变化而变化。体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。

    数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。

    (我们无法手动修改数据字典里的信息)

    很多时候,一般的额oracle用户不知道如何有效的利用它。

    dictionary——全部数据字典表的名称和解释,他有一个同义词dict;

    dict_column——全部数据字典表里字段名称和解释;

    如果我们想查询跟索引有关的数据字典时,可以用下面这条SQL语句:

    SQL > select   *   from  dictionary  where  instr(comments, ' index ' ) > 0 ;

     

    如果我们想知道user_indexes表各字段名称的详细含义,可以用下面这条SQL语句:

     

    SQL > select  column_name,comments  from  dict_columns  where  table_name = ' USER_INDEXES ' ;

     

    依此类推,就可以轻松知道数据字典的详细名称和解释,不用查看ORACLE的其它文档资料了。

     

    下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。

     

     1 、用户

    查看当前用户的缺省表空间

    SQL > select  username,default_tablespace  from  user_users;

     

    查看当前用户的角色

    SQL > select   *   from  user_role_privs;

     

    查看当前用户的系统权限和表级权限

    SQL > select   *   from  user_sys_privs;

    SQL > select   *   from  user_tab_privs;

     

     2 、表

    查看用户下所有的表

    SQL > select   *   from  user_tables;

     

    查看名称包含log字符的表

    SQL > select   object_name , object_id   from  user_objects

     where  instr( object_name , ' LOG ' ) > 0 ;

     

    查看某表的创建时间

    SQL > select   object_name ,created  from  user_objects  where   object_name = upper ( ' &table_name ' );

     

    查看某表的大小

    SQL > select   sum (bytes) / ( 1024 * 1024 )  as  "size(M)"  from  user_segments

     where  segment_name = upper ( ' &table_name ' );

     

    查看放在ORACLE的内存区里的表

    SQL > select  table_name,cache  from  user_tables  where  instr(cache, ' Y ' ) > 0 ;

     

     3 、索引

    查看索引个数和类别

    SQL > select  index_name,index_type,table_name  from  user_indexes  order   by  table_name;

     

    查看索引被索引的字段

    SQL > select   *   from  user_ind_columns  where  index_name = upper ( ' &index_name ' );

     

    查看索引的大小

    SQL > select   sum (bytes) / ( 1024 * 1024 )  as  "size(M)"  from  user_segments

     where  segment_name = upper ( ' &index_name ' );

     

     4 、序列号

    查看序列号,last_number是当前值

    SQL > select   *   from  user_sequences;

     

     5 、视图

    查看视图的名称

    SQL > select  view_name  from  user_views;

     

    查看创建视图的select语句

    SQL > set  view_name,text_length  from  user_views;

    SQL > set   long   2000 ; 说明:可以根据视图的text_length值设定set  long  的大小

    SQL > select   text   from  user_views  where  view_name = upper ( ' &view_name ' );

     

     6 、同义词

    查看同义词的名称

    SQL > select   *   from  user_synonyms;

     

     7 、约束条件

    查看某表的约束条件

    SQL > select  constraint_name, constraint_type,search_condition, r_constraint_name

     from  user_constraints  where  table_name  =   upper ( ' &table_name ' );

     

    SQL > select  c.constraint_name,c.constraint_type,cc.column_name

     from  user_constraints c,user_cons_columns cc

     where  c.owner  =   upper ( ' &table_owner ' )  and  c.table_name  =   upper ( ' &table_name ' )

     and  c.owner  =  cc.owner  and  c.constraint_name  =  cc.constraint_name

     order   by  cc.position;

     

     8 、存储函数和过程

    查看函数和过程的状态

    SQL > select   object_name ,status  from  user_objects  where  object_type = ' FUNCTION ' ;

    SQL > select   object_name ,status  from  user_objects  where  object_type = ' PROCEDURE ' ;

     

    查看函数和过程的源代码

    SQL > select   text   from  all_source  where  owner = user   and  name = upper ( ' &plsql_name ' );

     

     

    三、查看数据库的SQL

     1 、查看表空间的名称及大小

     select  t.tablespace_name,  round ( sum (bytes / ( 1024 * 1024 )), 0 ) ts_size

     from  dba_tablespaces t, dba_data_files d

     where  t.tablespace_name  =  d.tablespace_name

     group   by  t.tablespace_name;

     

     2 、查看表空间物理文件的名称及大小

     select  tablespace_name,  file_id ,  file_name ,

     round (bytes / ( 1024 * 1024 ), 0 ) total_space

     from  dba_data_files

     order   by  tablespace_name;

     

     3 、查看回滚段名称及大小

     select  segment_name, tablespace_name, r.status,

    (initial_extent / 1024 ) InitialExtent,(next_extent / 1024 ) NextExtent,

    max_extents, v.curext CurExtent

     From  dba_rollback_segs r, v$rollstat v

     Where  r.segment_id  =  v.usn( + )

     order   by  segment_name ;

     

     4 、查看控制文件

     select  name  from  v$controlfile;

     

     5 、查看日志文件

     select  member  from  v$logfile;

     

     6 、查看表空间的使用情况

     select   sum (bytes) / ( 1024 * 1024 )  as  free_space,tablespace_name

     from  dba_free_space

     group   by  tablespace_name;

     

     SELECT  A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,

    (B.BYTES * 100 ) / A.BYTES " %  USED",(C.BYTES * 100 ) / A.BYTES " %  FREE"

     FROM  SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C

     WHERE  A.TABLESPACE_NAME = B.TABLESPACE_NAME  AND  A.TABLESPACE_NAME = C.TABLESPACE_NAME;

     

     7 、查看数据库库对象

     

     select  owner, object_type, status,  count ( * )  count #  from  all_objects  group   by  owner, object_type, status;

     

     8 、查看数据库的版本

     Select  version  FROM  Product_component_version

     Where  SUBSTR(PRODUCT, 1 , 6 ) = ' Oracle ' ;

     

     9 、查看数据库的创建日期和归档方式

     

     Select  Created, Log_Mode, Log_Mode  From  V$ Database ;

     

     -- ------------------------------------------------------------------------------ 

     

    四、ORACLE用户连接的管理

     

    用系统管理员,查看当前数据库有几个用户连接:

     

    SQL >   select  username,sid,serial#  from  v$session;

     

    如果要停某个连接用

     

    SQL >   alter  system  kill  session  ' sid,serial# ' ;

     

    如果这命令不行,找它UNIX的进程数

     

    SQL >   select  pro.spid  from  v$session ses,v$process pro  where  ses.sid = 21   and  ses.paddr = pro.addr;

     

    说明:21是某个连接的sid数

     

    然后用  kill  命令杀此进程号。

     

     

    五、SQL * PLUS使用

    a、近入SQL * Plus

    $sqlplus 用户名 / 密码

     

    退出SQL * Plus

    SQL > exit 

     

    b、在sqlplus下得到帮助信息

    列出全部SQL命令和SQL * Plus命令

    SQL > help

    列出某个特定的命令的信息

    SQL > help 命令名

     

    c、显示表结构命令DESCRIBE

    SQL > DESC  表名

     

    d、SQL * Plus中的编辑命令

    显示SQL缓冲区命令

    SQL > L

     

    修改SQL命令

    首先要将待改正行变为当前行

    SQL > n

    用CHANGE命令修改内容

    SQL > c / 旧 / 新

    重新确认是否已正确

    SQL > L

     

    使用INPUT命令可以在SQL缓冲区中增加一行或多行

    SQL > i

    SQL > 输入内容

     

    e、调用外部系统编辑器

    SQL > edit 文件名

    可以使用DEFINE命令设置系统变量EDITOR来改变文本编辑器的类型,在login.sql文件中定义如下一行

    DEFINE_EDITOR = vi

     

    f、运行命令文件

    SQL > START test

    SQL > @test 

     

    常用SQL * Plus语句

    a、表的创建、修改、删除

    创建表的命令格式如下:

     create   table  表名 (列说明列表);

     

    为基表增加新列命令如下:

     ALTER   TABLE  表名  ADD  (列说明列表)

    例:为test表增加一列Age,用来存放年龄

    sql > alter   table  test

     add  (Age  number ( 3 ));

     

    修改基表列定义命令如下:

     ALTER   TABLE  表名

    MODIFY (列名 数据类型)

    例:将test表中的Count列宽度加长为10个字符

    sql > alter  atble test

    modify (County  char ( 10 ));

     

    b、将一张表删除语句的格式如下:

    DORP  TABLE  表名;

    例:表删除将同时删除表的数据和表的定义

    sql > drop   table  test

     

    c、表空间的创建、删除

     

     

    六、ORACLE逻辑备份的SH文件

     

    完全备份的SH文件:exp_comp.sh

     

    rq = ` date  + " % m % d" `

     

    su  -  oracle  - c " exp  system / manager  full = y inctype = complete  file =/ oracle / export / db_comp$rq.dmp"

     

    累计备份的SH文件:exp_cumu.sh

     

    rq = ` date  + " % m % d" `

     

    su  -  oracle  - c " exp  system / manager  full = y inctype = cumulative  file =/ oracle / export / db_cumu$rq.dmp"

     

    增量备份的SH文件: exp_incr.sh

     

    rq = ` date  + " % m % d" `

     

    su  -  oracle  - c " exp  system / manager  full = y inctype = incremental  file =/ oracle / export / db_incr$rq.dmp"

     

    root用户crontab文件

     / var / spool / cron / crontabs / root增加以下内容

     

     0   2   1   *   *   / oracle / exp_comp.sh

     

     30   2   *   *   0 - 5   / oracle / exp_incr.sh

     

     45   2   *   *   6   / oracle / exp_cumu.sh

     

    当然这个时间表可以根据不同的需求来改变的,这只是一个例子。

     

     

  • 相关阅读:
    ci 框架 报错级别 调整
    首页流氓广告的一种实现方法
    php中实现中文字符串的反转
    vmware 1021 错误解决 win7 64位
    isset 判断为POST信息是否为空 (笔记,持续更新)
    windows 下 ci 框架 命令行模式(cli)的使用
    ci 框架 excel 上传失败的处理
    php 日期处理(不断更新)
    svn的本地密码文件处理
    rpmdb open failed 的解决办法
  • 原文地址:https://www.cnblogs.com/nin-w/p/6086819.html
Copyright © 2011-2022 走看看