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

oracle日常维护常用的55条语句
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 k