以下的文章主要讲述的是Oracle数据库中如何正确的查看sql,以及查询表的相关状态,下面就是文章的抓哟内容的介绍,如果你对其相关的实际操作有兴趣的话,你就可以对以下的文章点击观看了。
selectuo.OBJECT_NAME,uo.OBJECT_ID,lo.Oracle_USERNAME,lo.LOCKED_MODEfrom user_objectsuo,v$locked_objectlowhereuo.OBJECT_ID=lo.OBJECT_ID;
查看数据库字符集
select*fromnls_database_parameters;
查看表创建,修改时间
select*fromALL_OBJECTSwhereobject_name=upper('tname');
每个表所占空间
selectSegment_Name,round(Sum(bytes)/1024/1024,0)"MBytes" FromUser_ExtentsGroupBySegment_Nameorderby"MBytes"desc;
查询正在执行的存储过程
select*fromdba_ddl_lockswhereowner='USERNAME';
查看表空间的使用情况
selecta.tablespace_name,round(a.bytes/(1024*1024),2) "TotalMB",round(b.bytes/(1024*1024),2)"UsedMB", round(c.bytes/(1024*1024),2)"FreeMB", round((b.bytes*100)/a.bytes,2)||'%'"%Used", round((c.bytes*100)/a.bytes,2)||'%'"%Free" fromsys.sm$ts_availa,sys.sm$ts_usedb,sys.sm$ts_freec wherea.tablespace_name=b.tablespace_nameanda.tablespace_name=c.tablespace_name;
加\解锁:
locktabledeptinsharemode;
仍然解不了,用以下方法:
SELECTsid,serial#,username,osuserFROMv$session; ALTERSYSTEMKILLSESSION'sid,serial'; example: ALTERSYSTEMKILLSESSION'131,33574';
如果对象被锁住了,用Oracle的ALTER SYSTEM KILL SESSION ‘SID,SERIAL#’不一定会将SESSION KILL掉,会报
SQL>altersystemkillsession'200,18325' * ERRORatline1: ORA-00031:sessionmarkedforkill
这样的错误,所以可以在操作系统级上KILL掉进程
select'kill-9'||a.spid"xxx"fromv$processa,v$sessionb wherea.addr=b.paddrandb.status='KILLED';
查找出被标志为KILLED的SESSION的操作系统进程号。
增加表空间,文件
ALTERTABLESPACEbgtablespace01 ADDDATAFILE'/opt/Oracle/oradata/orcl/ bgtablespace01/bgtablespace0190.dbf'SIZE5120M;
更改用户表空间
alteruserusermodifydefaulttablespacebgtablespace01;
Oracle中针对大表增加有默认值的字段的操作方法
ALTERTABLEtab_largeaddcol_newNumber(9)Default1;
该语句会对所有记录进行填值操作,对于现场tab_large中存在3000W条左右数据,该步骤需要执行数小时。
可以将该语句改为:
ALTERTABLEtab_largeaddcol_newNumber(9); ALTERTABLEtab_largemodifycol_newnumber(9)default1;
该语句只会对新增的记录进行填值操作,只需要数秒。
如果需要对原来的值进行操作,可以在升级后进行update操作,这样能够节省大量的升级时间。
增加数据库用户
createusersjzqidentifiedbysjzq123default tablespaceBGTABLESPACE01TemporaryTABLESPACETemp; grantconnecttosjzq; grantselectonabc.tnametosjzq;
相关文章
标签:Oracle