Oracle -- 小结

1.

1)v$sqltext:存储的是完整的SQL,SQL被分割

v$sqlarea:存储的SQL和一些相关的信息,比如累计的执行次数,逻辑读,物理读等统计信息(统计)

v$sql:内存共享SQL区域中已经解析的SQL语句。(即时)

select opname, target, to_char(start_time, 'yyyy-mm-dd hh24:mi:ss') start_time, elapsed_seconds elapsed, 
executions execs, buffer_gets/decode(executions, 0, 1, executions) bufgets, module, sql_text
from v$session_longops sl, v$sqlarea sa
where sl.sql_hash_value = sa.hash_value
and upper(substr(module, 1, 4)) <> 'RMAN'
and substr(opname, 1, 4 ) <> 'RMAN'
and sl.start_time > trunc(sysdate)
order by start_time;

2)根据sid查找完整sql语句:

select sql_text from v$sqltext a where a.hash_value = (selectsql_hash_value from v$session b where b.sid = '&sid')
order bypiece asc

3)查询某个表空间所占的资源

select a.CPU_TIME,--CPU时间 百万分之一(微秒)
       a.OPTIMIZER_MODE,--优化方式
       a.EXECUTIONS,--执行次数
       a.DISK_READS,--读盘次数
       a.SHARABLE_MEM,--占用shared pool的内存多少
       a.BUFFER_GETS,--读取缓冲区的次数
       a.COMMAND_TYPE,--命令类型(3:select,2:insert;6:update;7delete;47:pl/sql程序单元)
       a.SQL_TEXT,--Sql语句
       a.SHARABLE_MEM,
       a.PERSISTENT_MEM,
       a.RUNTIME_MEM,
       a.PARSE_CALLS,
       a.DISK_READS,
       a.DIRECT_WRITES,
       a.CONCURRENCY_WAIT_TIME,
       a.USER_IO_WAIT_TIME
  from SYS.V_$SQLAREA a
 WHERE PARSING_SCHEMA_NAME = 'CHEA_FILL'--表空间
 orderby a.CPU_TIME desc

2.v$sqlarea,v$sql查询最占用资源的查询

1)从V$SQLAREA中查询最占用资源的查询
select b.username username,a.disk_reads reads,
    a.executions exec,a.disk_reads/decode(a.executions,0,1,a.executions) rds_exec_ratio,
    a.sql_text Statement
from  v$sqlarea a,dba_users b
where a.parsing_user_id=b.user_id
 and a.disk_reads > 100000
order by a.disk_reads desc;
用buffer_gets列来替换disk_reads列可以得到占用最多内存的sql语句的相关信息。
V$SQL是内存共享SQL区域中已经解析的SQL语句。
2)列出使用频率最高的5个查询:
select sql_text,executions
from (select sql_text,executions,
   rank() over
    (order by executions desc) exec_rank
   from v$sql)
where exec_rank <=5;
3)消耗磁盘读取最多的sql top5:
select disk_reads,sql_text
from (select sql_text,disk_reads,
   dense_rank() over
     (order by disk_reads desc) disk_reads_rank
   from v$sql)
where disk_reads_rank <=5;
4)找出需要大量缓冲读取(逻辑读)操作的查询:
select buffer_gets,sql_text
from (select sql_text,buffer_gets,
   dense_rank() over
     (order by buffer_gets desc) buffer_gets_rank
   from v$sql)
where buffer_gets_rank<=5;

3.当磁盘满时,是否能删除home/oracle/app/oradata/orcl/中的文件

解答:(待验证)出处:http://bbs.csdn.net/topics/390878280

1)查看视图是下面视图中的文件:

select name from v$controlfile;
select member from v$logfile;
select name from v$datafile;
select name from v$tempfile;

2)可以用v$parmeter查看文件用途

select * from v$parameter;//查询文件的用途
select * from dba_data_files;//查看是否在要删除的目录下的,若有,最好不要动

4.having

 1) 对部分分组进行过滤时,不能使用where,而应该使用having

例:

select name,count(*) as sums from employee group by name having count(*)>1;

 2)having语句也可以像where语句一样使用复杂的过滤条件,比如查找个数为1或3个的年龄段,可以使用下面的sql

select fage,count(*) as countOfThisAge from employee group by fage having count(*)=1 or count(*)=3having count(*) in (1,3);

3)位置:group by 在where 之后,在having之前

4)注意:having语句中不能包含未分组的列名

 错误的:select fage,count(*) as countOfThisAge from employee group by fage having fname is not null;

 改正:selectfage,count(*) as countOfThisAge from employee where fname is not null group by fage;

5.查询表的备注

SELECT TABLE_NAME, TABLE_TYPE, COMMENTS FROM USER_TAB_COMMENTS;

6.查询字段的备注

SELECT TABLE_NAME, COLUMN_NAME, COMMENTS FROM USER_COL_COMMENTS;

7.查询system用户名、密码

select username,password from dba_users;

8.查看数据库的实例名

在两个配置文件里面:tnsnames.ora、listener.ora,路径如:E:\app\Administrator\product\11.2.0\dbhome_2\NETWORK\ADMIN。里面写明了远程连接的实例名和端口号,也就是SERVICE_NAME。实际上还有另外一种查看方式,那就是用SQL语句查询。用管理员身份system登陆后输入“showparameter service_name;”命令便可查看出来。

9.查看数据库信息的几个命令

show parameter instance_name   --实例名
show parameter db_name  --数据库名
show parameter db_domain  --域名
show parameter service_names  --服务器名
show parameter global  --全局数据库名
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq814965130/article/details/79456737
文章标签: Oracle
个人分类: 数据库 Oracle
想对作者说点什么? 我来说一句

forall 用法小结

2009年02月02日 168KB 下载

Oracle ASM 常用知识小结

2009年06月28日 6.67MB 下载

没有更多推荐了,返回首页

不良信息举报

Oracle -- 小结

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭