oracle中如何查看sql
--查询表状态:
select uo.OBJECT_NAME,uo.OBJECT_ID,lo.ORACLE_USERNAME,lo.LOCKED_MODE from
user_objects uo,v$locked_object lo where uo.OBJECT_ID=lo.OBJECT_ID;
--查看数据库字符集
select * from nls_database_parameters;
--查看表创建,修改时间
select * from ALL_OBJECTS where object_name =upper('tname');
--每个表所占空间
select Segment_Name, round(Sum(bytes)/1024/1024,0) "MBytes"
From User_Extents Group By Segment_Name order by "MBytes" desc;
--查询正在执行的存储过程
select * from dba_ddl_locks where owner='USERNAME';
--查看表空间的使用情况
select a.tablespace_name,round(a.bytes/(1024*1024),2) "Total MB",round(b.bytes/(1024*1024),2) "Used MB",
round(c.bytes/(1024*1024),2) "Free MB",round((b.bytes*100)/a.bytes,2)||'%' "% Used",
round((c.bytes*100)/a.bytes,2)||'%' "% 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;
加解锁:
lock table dept in share mode;
仍然解不了,用以下方法:
SELECT sid, serial#, username, osuser FROM v$session;
ALTER SYSTEM KILL SESSION 'sid,serial';
example:
ALTER SYSTEM KILL SESSION '131, 33574';
如果对象被锁住了,用ORACLE的ALTER SYSTEM KILL SESSION 'SID,SERIAL#'不一定会将SESSION KILL掉,会报
SQL> alter system kill session '200,18325'
*
ERROR at line 1:
ORA-00031: session marked for kill
这样的错误,所以可以在操作系统级上KILL掉进程
select 'kill -9 '||a.spid "xxx" from v$process a,v$session b where a.addr=b.paddr and b.status='KILLED';
查找出被标志为KILLED的SESSION的操作系统进程号。
增加表空间,文件
ALTER TABLESPACE bgtablespace01
ADD DATAFILE '/opt/oracle/oradata/orcl/bgtablespace01/bgtablespace0190.dbf' SIZE 5120M ;
更改用户表空间
alter user user modify default tablespace bgtablespace01;
oracle中针对大表增加有默认值的字段的操作方法
ALTER TABLE tab_large add col_new Number(9) Default 1;
该语句会对所有记录进行填值操作,对于现场tab_large中存在3000W条左右数据,该步骤需要执行数小时。
可以将该语句改为:
ALTER TABLE tab_large add col_new Number(9);
ALTER TABLE tab_large modify col_new number(9) default 1;
该语句只会对新增的记录进行填值操作,只需要数秒。
如果需要对原来的值进行操作,可以在升级后进行update操作,这样能够节省大量的升级时间。
--增加数据库用户
create user sjzq identified by sjzq123 default tablespace BGTABLESPACE01 Temporary TABLESPACE Temp;
grant connect to sjzq;
grant select on abc.tname to sjzq;