--查会话
select OBJECT_NAME,s.sid,s.serial#,osuser
from V$locked_Object lo,dba_Objects ao,v$session s
where lo.Object_id = ao.Object_id
and Lo.Session_Id = s.sid
--结束会话(杀进程)
alter system kill session 'sid,serial#'
-------在执行的SQL
select t3.SQL_TEXT,t1.*,t2.*
from v$session t1,v$locked_object t2,v$sql t3
where t1.sid=t2.session_id and t1.SQL_ID=t3.SQL_ID;
--查看某储存过程是否被锁
select * from v$db_object_cache where locks !=0 and upper(name) = upper('FSCF_PRC_SERV_FARM_prod_YH')--过程名
--查看被锁过程的sid
select /*+rule*/ * from v$access where upper(object) = upper('FSCF_PRC_SERV_FARM_prod_YH')
--拿到被锁过程的sid去查serial#
select * from v$session where sid in(580)
--查看某个表是否被锁
select * from v$locked_object a,dba_objects b where a.object_id = b.object_id and upper(OBJECT_NAME) = upper('fspe_cfg_full_disc_2018_0');
--用 session_id 查sid去查serial#,session_id 就是sid
select * from v$session where sid in(582);
--结束会话,杀不了用sqlplus杀
alter system kill session 'sid,serial#'
--查看某个表被那个过程用到,user_source是本用户,dba_source是全库
select * from user_source where upper(text) like upper('%tb_mo_partition%')--表名
----------------会话结束不了的时候,获取系统进程
select spid ,s.osuser,s.program from v$session s,v$process p where s.paddr = p.addr and s.sid=1436
--结果系统进程
kill -9 27380
--查询视图、表赋权给那些用户
select * from user_tab_privs where table_name = upper('hx_duty_result_201802_2019_v')--表、视图名
-----------------------------------------------------------------
--表占用的容量
select SEGMENT_NAME,round(BYTES/1024/1024/1024,2)||'G' from user_segments order by BYTES desc
--查看数据文件
select * from dba_data_files;
--给表空间增加数据文件
--数据文件自动扩展
alter tablespace data add datafile '/srcdata1/oracle11g/data_116.dbf' size 1024M autoextend on next 5m maxsize 30720M;
--添加固定的数据文件
alter tablespace data add datafile '/srcdata1/oracle11g/data_137.dbf' size 30720M
--Oracle自动作业
--创建job,参数1:job号 自动生成,参数2:要执行的过程,参数3:开始执行时间,
参数4:下次执行时间间隔,在参数3的基础上加上间隔则是下次执行的时间
declare
v2_job number ;
begin
sys.dbms_job.submit(job => v2_job,
what => 'prc_etl_duty_result_day();',
next_date => to_date('25-01-2019 10:30:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'trunc(sysdate + 1, ''dd'') + 8 / 24');
commit;
end;
/
--查看job信息
select * from user_jobs
--删除job,26是job号
declare begin dbms_job.remove(30); end;
--运行作业
begin dbms_job.run(作业号); end;
--停止已经启动的作业
begin
dbms_job.broken(542079,true,sysdate);
commit;
end;
-----------收集统计信息---------------
--收集用户的统计信息
call dbms_stats.gather_achema_stats(ownname => 'FSJIFEN')
--收集某个用户某个表的统计信息
call dbms_stats.gather_table_stats('fsjifen','hx_duty_result_201812')
-------------------------------------闪回操作-------------------------------------
--查询表某个时间的数据
select * from 表 as of timestamp(to_timestamp('2019-08-05 09:30:00', 'yyyy-mm-dd hh24:mi:ss')) --时间点
--把表恢复到误操作前
alter table 表名 enable row movement;
flashback table 表名 to timestamp to_timestamp('2019-08-05 09:30:00','yyyy-mm-dd hh24:mi:ss')
--删除表时没有加purge才能闪回
--闪回删除的表
flashback table 表名 to before drop
--闪回删除的表并起另外表名
flashback table table_name to before drop rename to new_name
------------------------hist语句-----------------
--并行创建索引,要取消并行
create index PROD_INST_ATTR_SUB_SUBSID on CRM_TB_PROD_INST_ATTR_SUB (PROD_INST_ID) parallel 4;
alter index PROD_INST_ATTR_SUB_SUBSID noparallel;
--并行创、不生成日志建表
create /*+parallel(5) nologging */ table XX as select * from table_name;
--并行查询
select /*+parallel(5) from table_name;
--并行、高水位线直接插入、不生成日志
insert /*+parallel(5) append nolgging */ into XX select * from table_name;