你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / 数据库开发
oracle基础(2)
 

在每个权限集中,权限都显示为一个值或“-”。 如果该位置显示“-”,表示该位置的未授予权限。 例如,在上述情况中,注意第六个位置,指示组的写权限设置为“-”,表示组“dba”(文件所属的组)不能向文件写入。 如果授予该权限,则该值设置为相应的字母。 还是在上面的示例中,组的读权限(由位置 5 表示)显示“r”,表示组“dba”可以读取该文件。

注意后三个位置,它们指示其他用户(不包括所有者、oracle 或者属于“dba”组的用户)的权限。 通过权限,您可以看到其他用户只能执行该文件,但是不能读取该文件或者向其写入。

这说明“r”、“w”和“x”分别表示读、写和执行,但是,“s”表示什么呢,这个位置本该显示“x”呀? 这是有关执行权限的一个有趣技巧。 上述情况在权限上显示“s”表示该程序启用了 setuid。 当程序运行时,无论运行该程序的用户是哪一个,该程序都将以程序所有者的用户身份即“oracle”运行。 利用这种方式,程序可以由 Oracle 软件拥有,但是由连接到它的任何用户来运行。 因此,程序可以在“oracle”权限下(而不是运行它的用户)运行,从而可以进行打开数据库文件等操作。

双任务体系结构。 记住 Oracle 数据库进程的运行方式是使用户进程与服务器进程分离。 如果您没有完全记住,我强烈建议您重新阅读 Oracle 数据库 10g 概念手册的前几章。 考虑到时间的问题,这里提供交互的高度精华版本,其中只是介绍了权限的基础,并不能替代手册中的内容。

当用户连接到 Oracle 数据库时(假定使用的是 SQL*Plus),Oracle 会创建一个新的进程来为该用户的程序提供服务。 该新进程名为 Oracle 服务器进程,它同用户进程(sqlplus、sqlplus.exe、TOAD.exe 或者可能的其他任何进程)不同。 如果在系统全局区域 (SGA) 等数据块缓冲区中未发现数据,该服务器进程与 SGA 等内存结构交互并从数据文件中读取数据。 在任何情况下,都不允许用户进程 (sqlplus) 直接与 Oracle 数据库交互。 由于有两个进程(用户进程和服务器进程)协同工作,因此有时称其为双任务体系结构。 如果用户进程执行了一些破坏性操作(例如违反主机中的内存管理),Oracle 数据库本身不会受到影响,损坏限于用户进程。

(请注意,上述内容适用于专用服务器环境中的 Oracle 连接。 在多线程服务器环境中,该模型会有所不同,因为在这种情况下,一个服务器进程可以向多个用户进程提供服务。 这仍然双任务,但是服务器进程和用户进程之间不是一对一的关系,而是一对多的关系。)

服务器进程在拥有 Oracle 软件的用户权限下运行。下面是一个例子。 假设用户使用 SQL*Plus 登录到数据库

$ sqlplus arup/arup

此后,如果搜索该进程:

$ ps -aef|grep sqlplus

将显示:

oracle 6339 6185 0 13:06 pts/0 00:00:00 sqlplus

当然,这是假设服务器上一直没有运行其他 SQL*Plus 会话。

注意进程 ID (6339)。 现在,如果搜索该进程 ID

$ ps -aef|grep 6339

您将获得两个进程:

oracle    6339  6185  0 13:06 pts/0    00:00:00 sqlplus
oracle    6340  6339  0 13:06 ?        00:00:00 oracleDBA102 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) 

第一个进程您之前已经看到,即 SQL*Plus 会话进程。 第二个进程的 ID 为 6340,它是 Oracle 为用户创建的服务器进程。 请注意,该进程的父进程 ID 为 6339,是 SQL*Plus 会话的进程 ID。

进程名称为“oracleDBA102 (DESCRIPTION=(LOCAL=YES) (ADDRESS=(PROTOCOL=beq)))”,其中包含了许多有用的信息。 首先,子句 LOCAL=YES 的存在表明该进程由于与数据库本身在同一个服务器上本地运行的另一个进程而启动。 名称中的 PROTOCOL=beq 还意味着该连接是通过 bequeath 连接构建的。

您还可以从动态视图中找到关于该服务器进程的信息。

select spid
from v$session s, v$process p
where s.sid = (select sid from v$mystat where rownum <2)
and p.addr = s.paddr;
(编辑:anna sui)
  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089