Oracle基本信息检查

1. 检查Windows下的Oracle相关服务的状态

主要服务包括: OracleServiceORA10:Oracle实例服务
OracleOraDb10g_home1TNSListenerFslmyoracle: Oracle监听服务(OFS管理)
OracleMSCSServices:Oracle Fail Safe for MSCS服务
在当前活动节点上,服务状态应该是正常“已启动”状态。

2. 检查Oracle初始化参数

  1. select * from v$parameter;  
select * from v$parameter;

3. 检查Oracle的实例状态

  1. select instance_name,version,status,database_status   
  2. from v$instance;  
select instance_name,version,status,database_status
from v$instance;

其中"STATUS"表示Oracle当前的实例状态,必须为"OPEN";"DATABASE_STATUS"表示Oracle当前数据库的状态,必须为"ACTIVE"。

4. 检查后台线程的状态

  1. Select name,Description   
  2. From V$BGPROCESS   
  3. Where Paddr<>'00';  
Select name,Description
From V$BGPROCESS
Where Paddr<>'00';

5. 检查系统全局区SGA信息

  1. select * from v$sga;  
select * from v$sga;

检查SGA各部份的分配情况,与实际内存比较是否合理。

6. 检查SGA各部分占用内存状况

  1. select * from v$sgastat;  
select * from v$sgastat;

检查有无占用大量Shared pool的对象,及是否有内存浪费情况。

7. 检查系统SCN号

  1. select dbms_flashback.get_system_change_number from dual;   
  2. select current_scn from v$database;  
select dbms_flashback.get_system_change_number from dual;
select current_scn from v$database;

8. 检查数据库状态

  1. select name,log_mode,open_mode from v$database;  
select name,log_mode,open_mode from v$database;

9. 检查当前数据库的操作系统平台

  1. select platform_name from v$database;  
select platform_name from v$database;

10. 检查数据库的大小,和空间使用情况

  1. col tablespace format a20   
  2. select b.file_id  文件ID,   
  3.   b.tablespace_name  表空间,   
  4.   b.file_name     物理文件名,   
  5.   b.bytes       总字节数,   
  6.   (b.bytes-sum(nvl(a.bytes,0)))   已使用,   
  7.   sum(nvl(a.bytes,0))        剩余,   
  8.   sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比   
  9.   from dba_free_space a,dba_data_files b   
  10.   where a.file_id=b.file_id   
  11.   group by b.tablespace_name,b.file_name,b.file_id,b.bytes   
  12.   order by b.tablespace_name   
  13. /  
col tablespace format a20
select b.file_id  文件ID,
  b.tablespace_name  表空间,
  b.file_name     物理文件名,
  b.bytes       总字节数,
  (b.bytes-sum(nvl(a.bytes,0)))   已使用,
  sum(nvl(a.bytes,0))        剩余,
  sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比
  from dba_free_space a,dba_data_files b
  where a.file_id=b.file_id
  group by b.tablespace_name,b.file_name,b.file_id,b.bytes
  order by b.tablespace_name
/

  dba_free_space --表空间剩余空间状况
  dba_data_files --数据文件空间占用情况

11. 检查数据库的创建日期和归档方式

  1. Select Created, Log_Mode, Log_Mode From V$Database;  
Select Created, Log_Mode, Log_Mode From V$Database;

12. 检查数据库是否处于归档模式,并启动了自动归档进程

  1. archive log list;  
archive log list;

13. 检查NLS信息(包括字符集)

  1. select * from nls_database_parameters  
select * from nls_database_parameters

'NLS_LANGUAGE' || 'NLS_TERRITORY' || 'NLS_CHARACTERSET' 即字符集。

14. 检查表空间的名称、状态及大小

  1. select t.tablespace_name, t.status, round(sum(bytes/(1024*1024)),0) ts_size   
  2.     from dba_tablespaces t, dba_data_files d   
  3.     where t.tablespace_name = d.tablespace_name   
  4. group by t.tablespace_name, t.status;  
select t.tablespace_name, t.status, round(sum(bytes/(1024*1024)),0) ts_size
    from dba_tablespaces t, dba_data_files d
    where t.tablespace_name = d.tablespace_name
group by t.tablespace_name, t.status;

15. 检查每个表空间占用空间的大小

  1. Select Tablespace_Name,Sum(bytes)/1024/1024   
  2. From Dba_Segments Group By Tablespace_Name;  
Select Tablespace_Name,Sum(bytes)/1024/1024
From Dba_Segments Group By Tablespace_Name;

16. 检查表空间物理文件的名称及大小

  1. select tablespace_name, file_id, file_name,   
  2. round(bytes/(1024*1024),0) total_space   
  3. from dba_data_files   
  4. order by tablespace_name;  
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;

17. 查询表空间的剩余大小

  1. select tablespace_name,sum(bytes)/(1024*1024) as free_space   
  2. from dba_free_space   
  3. group by tablespace_name;  
select tablespace_name,sum(bytes)/(1024*1024) as free_space
from dba_free_space
group by tablespace_name;

18. 检查表空间的使用情况

  1. SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,   
  2. (B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"  
  3. FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C   
  4. WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME   
  5. AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;  
SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME
AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;

19. 检查表空间碎块状况

  1. col tablespace_name form a25   
  2. select tablespace_name, count(*) chunks,   
  3. max(bytes)/1024/1024 max_chunk,   
  4. sum(bytes)/1024/1024 total_space   
  5. from dba_free_space group by tablespace_name;  
col tablespace_name form. a25
select tablespace_name, count(*) chunks,
max(bytes)/1024/1024 max_chunk,
sum(bytes)/1024/1024 total_space
from dba_free_space group by tablespace_name;

如果最大可用块(max_chunk)与总大小(total_space)相比太小,要考虑接合表空间碎片或重建某些数据库对象。 碎片接合的方法: alter tablespace 表空间名 coalesce;

20. 检查回滚段名称、状态及大小

  1. select segment_name, tablespace_name, r.status,   
  2. (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,   
  3. max_extents, v.curext CurExtent   
  4. From dba_rollback_segs r, v$rollstat v   
  5. Where r.segment_id = v.usn(+)   
  6. order by segment_name ;  
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 ;

21. 检查控制文件状态

  1. select * from v$controlfile;  
select * from v$controlfile;

22. 检查日志文件状态

  1. select * from v$logfile;  
select * from v$logfile;

23. 检查日志组信息

  1. select * from v$log;  
select * from v$log;

24. 检查数据文件状态

  1. select file_name,status   
  2. from dba_data_files;  
select file_name,status
from dba_data_files;

25. 检查数据文件存放路径

  1. col file_name format a50   
  2. select tablespace_name,file_id,bytes/1024/1024,file_name   
  3. from dba_data_files order by file_id;  
col file_name format a50
select tablespace_name,file_id,bytes/1024/1024,file_name
from dba_data_files order by file_id;

26. 检查数据文件的自动增长控制

  1. select file_name,autoextensible from dba_data_files;  
select file_name,autoextensible from dba_data_files;

27. 检查临时数据文件路径

  1. select file_name   
  2. from Dba_temp_files;  
select file_name
from Dba_temp_files;

28. 检查闪回恢复区的路径

  1. select name from v$recovery_file_dest;  
select name from v$recovery_file_dest;

29. 检查数据库库对象

  1. select owner, object_type, status, count(*) count#   
  2. from all_objects group by owner, object_type, status;  
select owner, object_type, status, count(*) count#
from all_objects group by owner, object_type, status;

30. 检查数据库的版本 

  1. Select version FROM Product_component_version   
  2. Where SUBSTR(PRODUCT,1,6)='Oracle';   
  3.   
  4. VERSION   
  5. ---------------   
  6. 11.1.0.6.0  
Select version FROM Product_component_version
Where SUBSTR(PRODUCT,1,6)='Oracle';

VERSION
---------------
11.1.0.6.0

依次为:版本号11、新特性版本号1、维护版本号0、普通的补丁设置号码6、特殊的平台补丁设置号码0

31. 检查数据库的创建日期和归档方式

  1. Select Created, Log_Mode, Log_Mode From V$Database;  
Select Created, Log_Mode, Log_Mode From V$Database;

32. 检查当前所有对象

  1. select * from tab;  
select * from tab;

33. 检查当前连接用户

show user;

34. 检查已有用户:

  1. select username from dba_users;  
select username from dba_users;

35. 检查所有表、索引、存储过程、触发器、包等对象的状态

  1. select owner,object_name,object_type   
  2. from dba_objects where status!='VALID'  
  3. and owner!='SYS' and owner!='SYSTEM';  
select owner,object_name,object_type
from dba_objects where status!='VALID'
and owner!='SYS' and owner!='SYSTEM';

36. 检查当前用户的缺省表空间、临时表空间

  1. select username,default_tablespace, temporary_tablespace from user_users;  
select username,default_tablespace, temporary_tablespace from user_users;

37. 检查当前用户的角色

  1. select * from user_role_privs;  
select * from user_role_privs;

38. 检查当前用户的系统权限和表级权限

  1. select * from user_sys_privs;   
  2. select * from user_tab_privs;  
select * from user_sys_privs;
select * from user_tab_privs;

39. 检查用户下所有的表

  1. select * from user_tables;  
select * from user_tables;

40. 检查各个表的大小

检查当前用户每个表占用空间的大小:

  1. Select Segment_Name,Sum(bytes)/1024/1024   
  2. From User_Extents Group By Segment_Name  
Select Segment_Name,Sum(bytes)/1024/1024
From User_Extents Group By Segment_Name

注:段名即表名

按数据对象大小排序

  1. Select Segment_Name,segment_type, Sum(bytes)/1024/1024 as MB   
  2. From User_Extents   
  3. Group By Segment_Name, segment_type   
  4. Order by MB  
Select Segment_Name,segment_type, Sum(bytes)/1024/1024 as MB
From User_Extents
Group By Segment_Name, segment_type
Order by MB

41. 检查某表的创建时间

  1. select object_name,created from user_objects where object_name=upper('&table_name');  
select object_name,created from user_objects where object_name=upper('&table_name');

42. 检查名称包含log字符的表

  1. select object_name,object_id from user_objects   
  2.      where instr(object_name,'LOG')>0;  
select object_name,object_id from user_objects
     where instr(object_name,'LOG')>0;

43. 检查某表的大小

  1. select sum(bytes)/(1024*1024) as "size(M)" from user_segments   
  2.      where segment_name=upper('&table_name');  
select sum(bytes)/(1024*1024) as "size(M)" from user_segments
     where segment_name=upper('&table_name');

44. 检查放在内存区里的表

  1. select table_name,cache from user_tables where instr(cache,'Y')>0;  
select table_name,cache from user_tables where instr(cache,'Y')>0;

45. 检查索引个数和类别

  1. select index_name,index_type,table_name from user_indexes order by table_name;  
select index_name,index_type,table_name from user_indexes order by table_name;

46. 检查索引中被索引的字段

  1. select * from user_ind_columns where index_name=upper('&index_name');  
select * from user_ind_columns where index_name=upper('&index_name');

47. 检查索引的大小

  1. select sum(bytes)/(1024*1024) as "size(M)" from user_segments   
  2.      where segment_name=upper('&index_name');  
select sum(bytes)/(1024*1024) as "size(M)" from user_segments
     where segment_name=upper('&index_name');

48. 检查是否有失效的索引

  1. select index_name, owner, table_name, tablespace_name   
  2. from dba_indexes   
  3. where owner not in ('SYS','SYSTEM'and status != 'VALID';  
select index_name, owner, table_name, tablespace_name
from dba_indexes
where owner not in ('SYS','SYSTEM') and status != 'VALID';

如果有记录返回,考虑重建这些索引。

49. 检查是否有无效的对象

  1. select object_name,      object_type,      owner,      status   
  2. from dba_objects   
  3. where status !='VALID'  
  4. and owner not in ('SYS','SYSTEM')   
  5. and object_type in  ('TRIGGER','VIEW','PROCEDURE','FUNCTION');  
select object_name,      object_type,      owner,      status
from dba_objects
where status !='VALID'
and owner not in ('SYS','SYSTEM')
and object_type in  ('TRIGGER','VIEW','PROCEDURE','FUNCTION');

如果存在无效的对象,手工重新编译一下。

50. 检查序列号

  1. select * from user_sequences;  
select * from user_sequences;

last_number是当前值

51. 检查序列号的使用

  1. select sequence_owner, sequence_name, min_value,   
  2. max_value, increment_by, last_number,   
  3. cache_size, cycle_flag from dba_sequences;  
select sequence_owner, sequence_name, min_value,
max_value, increment_by, last_number,
cache_size, cycle_flag from dba_sequences;

检查是否存在即将达到max_value的sequence 。

52. 检查视图的名称

  1. select view_name from user_views;  
select view_name from user_views;

53. 检查创建视图的select语句

  1. set view_name,text_length from user_views;   
  2. set long 2000;                --说明:可以根据视图的text_length值设定set long 的大小   
  3. select text from user_views where view_name=upper('&view_name');  
set view_name,text_length from user_views;
set long 2000;                --说明:可以根据视图的text_length值设定set long 的大小
select text from user_views where view_name=upper('&view_name');

54. 检查同义词的名称

  1. select * from user_synonyms;  
select * from user_synonyms;

55. 检查某表的约束条件

  1. select constraint_name, constraint_type,search_condition, r_constraint_name   
  2.      from user_constraints where table_name = upper('&table_name');   
  3.   
  4. select c.constraint_name,c.constraint_type,cc.column_name   
  5.  from user_constraints c,user_cons_columns cc   
  6.  where c.owner = upper('&table_owner'and c.table_name = upper('&table_name')   
  7.  and c.owner = cc.owner and c.constraint_name = cc.constraint_name   
  8.  order by cc.position;  
select constraint_name, constraint_type,search_condition, r_constraint_name
     from user_constraints where table_name = upper('&table_name');

select c.constraint_name,c.constraint_type,cc.column_name
 from user_constraints c,user_cons_columns cc
 where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')
 and c.owner = cc.owner and c.constraint_name = cc.constraint_name
 order by cc.position;

56. 检查函数和过程的状态

  1. select object_name,status from user_objects where object_type='FUNCTION';   
  2. select object_name,status from user_objects where object_type='PROCEDURE';  
select object_name,status from user_objects where object_type='FUNCTION';
select object_name,status from user_objects where object_type='PROCEDURE';

57. 检查函数和过程的源代码

  1. select text from all_source where owner=user and name=upper('&plsql_name');  
select text from all_source where wner=user and name=upper('&plsql_name');

58. 检查当前数据库有几个用户连接

用系统管理员权限执行,

  1. select username,sid,serial#, machine, status from v$session;  
select username,sid,serial#, machine, status from v$session;

USERNAME:建立该会话的用户名;
SID:会话(session)的ID号;
SERIAL#:会话的序列号,和SID一起用来唯一标识一个会话;
PROGRAM: 这个会话是用什么工具连接到数据库的;
MACHINE:这个会话是从哪台电脑连过来的
STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;

如果要停某个连接用

  1. SQL> alter system kill session 'sid,serial#';  
SQL> alter system kill session 'sid,serial#';

如果这命令不行,找它UNIX的进程数

  1. SQL> select pro.spid   
  2.     from v$session ses,v$process pro   
  3.     where ses.sid=21 and ses.paddr=pro.addr;  
SQL> select pro.spid
	from v$session ses,v$process pro
	where ses.sid=21 and ses.paddr=pro.addr;

说明:21是某个连接的sid数

然后用 kill 命令杀此进程号。

59. 检查定时作业的完成情况

  1. select job,log_user,last_date,failures   
  2. from dba_jobs;   
  3.   
  4. select  job, this_date, this_sec, next_date, next_sec, failures, what   
  5. from dba_jobs where failures !=0 or failures is not null;  
select job,log_user,last_date,failures
from dba_jobs;

select  job, this_date, this_sec, next_date, next_sec, failures, what
from dba_jobs where failures !=0 or failures is not null;

如果FAILURES列是一个大于0的数的话,说明JOB运行失败,要进一步的检查。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8183550/viewspace-659608/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8183550/viewspace-659608/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值