oracle kill session、同义词、临时表空间的占用

1.kill session

--oracle
select t2.username,t2.sid,t2.serial#,t2.logon_time ,vs.SQL_TEXT
    from v$locked_object t1,v$session t2 ,v$sql vs
   where t1.session_id=t2.sid
   and vs.sql_id=t2.sql_id
    order by t2.logon_time;

alter system  kill session '446,1599'; --'sid,serial'

补充:昨日在一张视图view上建立物化视图,执行慢后来放弃,之后重新编译改视图一直假死,drop也是假死,报ora-04021错,使用上面的语句并未发现有死锁存在,于是查看等待事件(猜想死锁只产生在有事务时,如果有等待查询时间,同时编译并不会在上述代码中查出,但这时就会导致编译时无法锁定对象,然后才报ora-04021错)

select t2.username,t2.sid,t2.serial#,t2.logon_time,vs.SQL_TEXT  
from v$session t2 ,v$sql vs where vs.sql_id=t2.sql_id

发现有很多查询事件,使用

ALTER SYSTEM DISCONNECT SESSION '215,2149' IMMEDIATE;

 ALTER SYSTEM DISCONNECT SESSION 杀掉专用服务器(DEDICATED SERVER)或共享服务器的连接会话,它等价于从操作系统杀掉进程。它有两个选项POST_TRANSACTION和IMMEDIATE, 其中POST_TRANSACTION表示等待事务完成后断开会话,IMMEDIATE表示中断会话,立即回滚事务。

但是发现这个代码也无法立即杀死,只是做个mark,于是使用kill -9 在服务器端杀

select 'kill -9 '|| p.spid
   from v$session s, v$process p
  where s.paddr = p.addr
  and s.SID=XXX and s.SERIAL#=XXX;

将执行的结果在服务端运行

 

2.同义词

假如a用户访问b用户下的表空间数据需要加前缀才能访问,为了去掉前缀,使用同义词,同义词大概的意思就是取一个别名,这个别名指向b.tablename

同义词分为两种,一种是public公有的,一种是私有的,顾名思义公有的即使是在a下面建立的同义词,其他的用户访问b的改表也不需要加前缀就可以访问。

 

(1)授权创建同义词的权限给a用户

GRANT CREATE PUBLIC SYNONYM TO a;

(2)切换为b用户,查出所有的b用户下的表同义词语句

select 'create public synonym '|| table_name || ' for b.' || table_name || ';' from user_tables;

如下:

(3)切换到a用户,将建立同义词的语句拷出执行

执行后同义词便建立好了,可以直接访问表名了

附:

--普通用法如下所示:

CREATE [OR REPLACE] [PUBLIC] SYNONYM [ schema.] 同义词名称 FOR [ schema.] object [ @dblink ];

--专有(私有)同义词

CREATE SYNONYM SYSN_TEST FOR TEST;

--公共同义词

CREATE PUBLIC SYNONYM PUBLIC_TEST FOR TEST;

--如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个Database Link(数据库连接)来扩展访
--问,然后再使用如下语句创建数据库同义词:create synonym table_name for table_name@DB_Link;

3.查询临时表空间的占用sql

SELECT se.username, 
       sid, 
       serial#, 
       sql_address, 
       machine, 
       program, 
       tablespace, 
       segtype, 
       contents 
  FROM v$session se, v$sort_usage su 
WHERE se.saddr = su.session_addr 

通过alter system kill session 'xxx,xxx' immediate

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值