ITPub博客

首页 > 数据库 > Oracle > 042-7 Undo表空间,SESSION,PROCESS,Connect

042-7 Undo表空间,SESSION,PROCESS,Connect

原创 Oracle 作者:zuiai510416 时间:2014-03-26 20:59:50 0 删除 编辑
--SESSION的概念


新窗口(不同SESSION)查询到1 a的原理,是由于存在undo表空间,oracle将修改前的数据放在undo表空间
/*SESSIO会话 --通过session信息查找对应的操作系统进程
select distinct sid from v$mystat;   --查询当前SESSION的ID
Select * From v$session where sid in (143) --查看SESSION,PADDR=1FE4C60C 操作系统进程号,PROCESS 236:3628 PLSQL进程号:客户端线程(linux只有客户端线程)
SELECT * FROM V$PROCESS WHERE ADDR = '1FE4C60C'  --PID=15 oracle分配的id,SPID=1852 服务器端操作系统对应的线程
UNIX下根据SPID=1852 在线程中直接KILL就可以了 
windows下 只能看到ORACLE.EXE的进程号 有2中方法
方法1:需要在oracle其他SESSION中执行以下语句
ALTER SYSTEM KILL SESSION(145,1852)  --将SESSION在oracle中kill,所占资源将在一段时候后被PMON释放
方法2:CMD下使用orakill杀进程 orakill sid thread
orakill testrid 1852     --删除成功显示:Kill of thread id 1852 in instance testrid successfully signalled.
*/
--windows下查看现成工具process explorer
Select * From v$mystat
--==================
SID:System Identifier                --数据库的SID
SID:Session Identifier               --SESSION的SID
--==================
--*************CONNECT的概念
--当使用sqlplus ta/ta@testdb输入的用户和密码是错误的时候
Select Count(*) From v$session ;      --SESSION数17个
Select Count(*) From v$process       --进程19个,默认比SESSION多1个,另外一个就是输入错误用户和密码的连接进程
Select addr From v$PROCESS
Minus
Select paddr FROM V$SESSION


Select * From SYSTEM_PRIVILEGE_MAP   --系统权限表
Select * From DBA_ROLES              --角色表
Select * From DBA_SYS_PRIVS Where GRANTEE='CONNECT' --CONNECT角色的权限 CREATE SESSION
--*************ROWID
Select T.*,Rowid From T
AAAC78           AAB                                AAAHMK              AAA
Segment 段编号   相对编号,表空间内部文件的标识     数据块              行
--====================
Select object_id,data_object_id From dba_objects Where object_name ='T';--obcject_id = 10256,data_object_id = 12028,
--obcject_id<>data_object_id的情况,1.alter table t move;--移动后ROWID改变
省略部分,详细介绍见047-11.rowid和index的原理.sql
Select * From dba_objects Where data_object_id Is Null --没有data_object_id的object不是段segment,如job,procedure
--====================


--************UNDO表空间
Select * From dba_tablespaces
Select * From dba_data_files
Select * From dba_temp_files
Select * From dba_segments Where tablespace_name='UNDOTBS2'  --查看UNDO表空间段 回滚段
Select * From dba_extents Where segment_name = 'TT'
Select * From dba_tables Where Table_name = 'TT'  
--创建UNDO表空间
Create Undo Tablespace undotbs2 Datafile 'C:\oracle\product\10.2.0\oradata\undotbs02.dbf' Size 10m;


Insert Into t Values(1,'a',Sysdate)
Insert Into t Values(2,'b',Sysdate)
Insert Into t Values(3,'d',Sysdate)
Update t Set Name='c' Where Id = 3       --未提交
Select * From t       --本窗口看到 1 c sysdate


重打开一个cmd窗口:
cd \   --操作系统验证
sqlplus / As Sysdba --操作系统验证后,不需要密码即可登录sys用户
Select * From system.t       --新窗口看到 3 d sysdate






来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15810196/viewspace-1130230/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 042-6 DB逻辑结构
请登录后发表评论 登录
全部评论

注册时间:2011-07-19

  • 博文量
    53
  • 访问量
    133092