oracle日常维护语句

1.如何查看数据库的状态 
   unix下 
ps -ef | grep ora 
windows下 
看服务是否起来 
是否可以连上数据库 
SQL> select status, instance_role from v$instance; 
通过此语句可以核查数据库是否出于open状态 
2.如何查有多少个数据库实例 
  SQL>SELECT * FROM V$INSTANCE; 
3.怎样查得数据库的SID 
select name from v$database; 
也可以直接查看 init.ora文件 
4.查看表空间占用情况 
select  b.file_id  file_ID,  b.tablespace_name  tablespace_name, b.bytes  Bytes,  (b.bytes-sum(nvl(a.bytes,0)))  used, sum(nvl(a.bytes,0))  free, sum(nvl(a.bytes,0))/(b.bytes)*100         Percent   from dba_free_space a,dba_data_files b  where a.file_id=b.file_id  group by b.tablespace_name,b.file_id,b.bytes   order by b.file_id; 
5如何.获取表空间信息 
select * from dba_tablespaces(或者v$tablespace); 
6.如何改变表空间的大小 
通过手动改变数据文件大小来改变表空间大小: 
 Alter database datafile ‘/opt/oracle/data/datafilename.dbf’ resize 500m; 
通过在表空间中增加数据文件来改变表空间大小: 
 Alter tablespace tablespace_name add datafile ‘opt/oracle/data/newdatafile.dbf’ size 300m; 
7.如何增加临时表空间大小 
如果原来的用户缺省临时表空间大小不够,此时首先用如下语句创建一足够大的临时表空间: 
 CREATE TEMPORARY TABLESPACE temp 
  TEMPFILE '/u01/oradata/temp01.dbf' SIZE 500M 
  EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M; 
然后用如下语句改变用户的缺省临时表空间: 
 alter user username temporary tablespace new_temporary_tablespace_name; 
8. 如何查看数据文件的信息 
   数据文件信息: 
   Select * from dba_data_files(v$datafile); 
      临时数据文件信息: 
   Select * from dba_temp_files(v$tempfile) 
9.如何将表移动之表空间 
ALTER TABLE TABLE_NAME MOVE TABLESPACE_NAME; 
10.如何查看回滚段名称及大小 
  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 ; 
11.如何察看回滚段竞争情况 
   Select * from v$undostat; 
  返回结果中nospaceerrcnt字段的值应该为0,如果持续出现非0,建议增加回滚段表空间大小. 
12.如何查看控制文件. 
   select name from v$controlfile; 
13.如何查看日志文件 
select member from v$logfile; 
14.如何查看日志文件的切换时间 
 SQL>select to_char(first_time,'yyyy-mm-dd hh24:mi:ss') change_time from v$log_history; 
15.查看数据库版本 
select * from v$version 
16.查看会话情况 
   select machine,terminal from v$session; 
17.如何查看系统最大会话数 
   Select * from v$parameter where name like ‘proc%’ 
   Show parameter processes 
   Select * from v$license 
18. 如何查看系统被锁的事务时间 
   select * from v$locked_object 
19.查看数据库的创建日期和归档方式 
select created,log_mode,log_mode from v$database 
20.如何以archivelog的方式运行oracle 
   init.ora 
log_archive_start = true 
RESTART DATABASE 
21.如何获取有哪些用户在使用数据库 
select username from v$session; 
22.如何显示当前连接用户 
    SHOW  USER 
23.如何获取用户相关信息 
Select * from dba_users(dba_ts_quotas); 
从结果中可以查看用户的缺省临时表空间等信息. 
24.如何查看每个用户的权限 
SELECT *  FROM DBA_SYS_PRIVS; 
25. 如何知道使用CPU多的用户session 
  11是cpu used by this session 
   select a.sid,spid,status,substr(a.program,1,40)prog,a.terminal,osuser,value/60/100 value from v$session a,v$process b,v$sesstat c where c.statistic#=11 and c.sid=a.sid and a.paddr=b.addr order by value desc; 
26.unix 下怎么调整数据库的时间? 
su -root 
date -u 08010000 
27.如何查看当前数据库里锁的情况 
   以DBA角色, 查看当前数据库里锁的情况可以用如下SQL语句: 
select object_id,session_id,locked_mode from v$locked_object; 
select t2.username,t2.sid,t2.serial#,t2.logon_time 
from v$locked_object t1,v$session t2 
where t1.session_id=t2.sid order by t2.logon_time;如果有长期出现的一列,可能是没有释放的锁。我们可以用下面SQL语句杀掉长期没有释放非正常的锁: 
alter system kill session 'sid,serial#'; 
如果出现了锁的问题, 某个DML操作可能等待很久没有反应。 
28.如何解锁 
ALTER SYSTEM KILL SESSION  ‘SID,SERIR#’; 
29.如何获取错误信息 
  SELECT *  FROM  USER_ERRORS; 
30.如何获取连接状况 
Select  * from  DBA_DB_LINKS; 

posted @ 2014-04-02 11:38  凡轩之  阅读(221)  评论(0编辑  收藏  举报