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

 

 

 

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

 

 

 

 

转载于:https://www.cnblogs.com/nin-w/p/6086819.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值