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

oracle命令
一、查询自己数据库中所有用户和密码
select   *   from   dba_users;
查询当前用户信息:select * from dba_ustats;
二、通过触发器记录连接客户端的ip地址或机器名
connect sys
grant select on v_$session to scott;
rem 这个user是建触发器的user,需要sys直接授权

create table session_history
(username varchar2(20),
log_time date,
ip varchar2(20)
)
/
CREATE OR REPLACE TRIGGER logon_history
AFTER LOGON ON SCHEMA
BEGIN
insert into session_history
select username,SYSDATE,SYS_CONTEXT('USERENV','IP_ADDRESS')
from v$session
where audsid = userenv( 'sessionid' ) ;
commit;
END;
/
三、查询登录数据库的用户信息
select * from v$session
四、获取指定表的列名及类型等信息
desc table_name
五、查询2小时前某表数据
select * from 表名 as of timestamp sysdate-1/12
六、恢复drop后的表
flashback table 表名 to before drop;  
七、因为密码输入错误多次用户自动被锁定.
解决办法:alter user user_name account unlock;
八、查询得到当前数据库中锁,以及解锁:
查锁
SELECT /*+ rule */ s.username,
decode(l.type,'TM','TABLE LOCK',
'TX','ROW LOCK',
NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
FROM v$session s,v$lock l,dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND s.username is NOT NULL;
解锁
alter system kill session 'sid,serial';
如果解不了。直接倒os下kill进程kill -9 spid
九、查看消耗资源最多的SQL
SELECT hash_value, executions, buffer_gets, disk_reads, parse_calls  
FROM V$SQLAREA  
WHERE buffer_gets > 10000000OR disk_reads > 1000000  
ORDERBY buffer_gets + 100 * disk_reads DESC;
十、查看某条SQL语句的资源消耗
SELECT hash_value, buffer_gets, disk_reads, executions, parse_calls  
ROM V$SQLAREA  
WHERE hash_Value = 228801498AND address = hextoraw('CBD8E4B0'); 
十一、查询oracle的版本
select * from v$version;
十二、查询数据库的一些参数
select * from v$parameter
十三、查找你的session信息
SELECT SID, OSUSER, USERNAME, MACHINE, PROCESS  
FROM V$SESSION WHERE audsid = userenv('SESSIONID'); 
十四、查找当前被某个指定session正在运行的sql语句。假设sessionID为100  
select b.sql_text   
from v$session a,v$sqlarea b   
where a.sql_hashvalue=b.hash_value and a.sid=100  
十五、查询oracle的目前连接用户数
select count(*) from v$session;
十六、查询应用的连接数
select * from v$resource_limit ;
十七、查询数据库当前进程的连接数
select count(*) from v$process;
十八、查看数据库的并发连接数
select count(*) from v$session where status='ACTIVE';
十九、查看当前数据库建立的会话情况
select sid,serial#,username,program,machine,status from v$session;
二十、查询数据库允许的最大连接数
select value from v$parameter where name = 'processes';
  或者:show parameter processes;
二十一、修改数据库允许的最大连接数
(需要重启数据库才能实现连接数的修改)
  重启数据库:
  shutdown immediate;
  startup;
二十二、查看当前有哪些用户正在使用数据
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
  order by cpu_time/executions desc;
备注:UNIX 1个用户session对应一个操作系统process,而Windows体现在线程。
  启动oracle
  su - oracle
  sqlplus system/pwd as sysdba  //进入sql
  startup                                     //启动数据库
  lsnrctl start                              //启动监听
  sqlplus "/as sysdba"
  shutdown immediate;
  startup mount;
  alter database open;