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 kill session 'sid,serial#';
如果出现了锁的问题, 某个DML操作可能等待很久没有反应。
28.如何解锁
ALTER SYSTEM KILL SESSION ‘SID,SERIR#’;
29.如何获取错误信息
SELECT * FROM USER_ERRORS;
30.如何获取连接状况
Select * from DBA_DB_LINKS;