[转帖] Oracle维护常用的55条语句_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 5198 | 回复: 1   主题: [转帖] Oracle维护常用的55条语句        下一篇 
红与黑
注册用户
等级:上尉
经验:644
发帖:51
精华:1
注册:2013-2-25
状态:离线
发送短消息息给红与黑 加好友    发送短消息息给红与黑 发消息
发表于: IP:您无权察看 2013-3-1 10:06:52 | [全部帖] [楼主帖] 楼主

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;


转自:http://www.iteye.com/topic/1123885




赞(0)    操作        顶端