日期:2014-05-16  浏览次数:20489 次

oracle学习日记
1. 查询当前有多少连接数
select count(*) from v$process
2. 数据库允许的最大连接数
select value from v$parameter where name = 'processes'
3. 查看当前有哪些用户正在使用数据
SELECT osuser, a.username,cpu_time/executions/1000000||'s', sql_fulltext,machine
from v$session a, v$sqlarea b
where a.sql_address=b.address
4. 修改最大连接数
alter system set processes=300 scope=spfile;
5. 重启数据库
shut down immediate;
startup;
5. 设置分页
select * from ( select row_.*, rownum rownum_ from ( select dism.* from DISM_MEAS_TYPE dism ) row_ where rownum <= ?) where rownum_ > ?
6. 拷贝表结构或数据(where 后面条件是否成立)
create table dis_common.CIM_SUBCONTROLAREA as select * from  SJJC_OMS_KDNRCIM.CIM_SUBCONTROLAREA where 1=2
insert into DIS_COMMON.CIM_SUBCONTROLAREA select * from SJJC_OMS_KDNRCIM.CIM_SUBCONTROLAREA
7. 修改密码
sqlplus /nolog 这句话是说不登陆数据库,只启动sqlplus

SQL> conn /as sysdba
已连接。
SQL> alter user system identified by password;
SQL> alter user sys identified by password;

8  exp 导出数据
C:\Users\mxs>exp sjjc_szd/sjjc@orcl0.155 file=d:\temp\sjjc_szd.dmp owner=sjjc_szd

导入数据:

C:\Users\mxs>imp sjjc_szd/sjjc@orcl0.155 fromuser=sjjc_szd touser=sjjc_szd file=d:\temp\sjjc_szd.dmp

9.  查询解析次数
select *
  from (SELECT hash_value,
               sql_text,
               executions,
               buffer_gets,
               disk_reads,
               parse_calls
          FROM V$SQLAREA
         ORDER BY buffer_gets + 100 * disk_reads DESC)
where sql_text like
       '%DISS_PSR_ATTR%';
      
       SELECT substr(sql_text, 1, 40) "SQL",
       count(*),
       sum(executions) "TotExecs"
  FROM v$sqlarea
WHERE executions < 5 --语句执行次数
GROUP BY substr(sql_text, 1, 40)
HAVING count(*) > 30 --所有未共享的语句的总的执行次数
ORDER BY 2;

10
查看共享SQL区的使用率:
select(sum(pins-reloads))/sum(pins) "Library cache" from v$librarycache;--动态性能表
查看数据字典缓冲区的使用率:
select (sum(gets-getmisses-usage-fixed))/sum(gets) "Data dictionary cache" from v$rowcache;
这个使用率也应该在90%以上,否则需要增加共享池的大小。

修改共享池的大小:
ALTER SYSTEM SET SHARED_POOL_SIZE = 64M  scope=spfile; 

缓冲区高速缓存:

SELECT name,value FROM v$sysstat order by name WHERE name IN(''DB BLOCK GETS'',''CONSISTENT GETS'',''PHYSICAL READS'');

计算出来数据缓冲区的使用命中率=1-(physical reads/(db block gets+consistent gets)),这个命中率应该在90%以上,否则需要增加数据缓冲区的大小。


11  修改缓冲区大小

alter system set shared_pool_size=100m scope=spfile;
alter system set db_cache_size=100m scope=spfile;

12.查询是否存在死锁
select sess.sid,
   sess.serial#,
   lo.oracle_username,
   lo.os_user_name,
   ao.object_name,
   lo.locked_mode
   from v$locked_object lo,
   dba_objects ao,
   v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;

select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;
--杀死
alter system kill session '452';