DB2 授权简介.docx_第1页
DB2 授权简介.docx_第2页
DB2 授权简介.docx_第3页
DB2 授权简介.docx_第4页
DB2 授权简介.docx_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DB2 授权简介DB2授权控制数据库安全计划的以下方面:用户被授予的权限级别允许用户运行的命令允许用户读取和/或修改的数据允许用户创建、修改和/或删除的数据库对象授权由特权组和高级数据库管理程序(实例级)维护和实用操作组成。在DB2可用的5种权限中,SYSADM、SYSCTRL 和SYSMAINT是实例级权限。这意味着它们的范围包含实例级命令以及针对这个实例中的所有数据库的命令。这些权限只能分配给组;可以通过DBM CFG文件分配这些权限。针对特定数据库的DBADM和LOAD权限可以分配给用户或用户组。可以使用GRANT命令显式地分配这些权限。以下几节描述如何分配每种权限以及允许拥有此权限的用户执行哪些命令。注意,任何提到组成员关系的地方都假设在操作系统级上已经定义了这些用户和组名。用户可以通过发出以下命令来判断自己拥有哪些权限和数据库级特权:$db2 get authorizations获得SYSADM权限DB2中的SYSADM权限就像是UNIX上的根权限或Windows上的Administrator 权限。对一个DB2实例拥有SYSADM权限的用户能够对这个实例、这个实例中的任何数据库以及这些数据库中的任何对象发出任何DB2命令。他们还能够访问数据库中的数据以及对其他用户授予或撤消特权或权限。只允许SYSADM用户更新DBM CFG文件。SYSADM权限由DBM CFG文件中的SYSADM_GROUP参数控制。在Windows上,在创建实例时,这个参数设置为 Administrator(但是,如果发出命令db2 get dbm cfg,它看起来是空的)。在 UNIX 上,它设置为创建这个实例的用户的主组。因为只允许SYSADM用户更新DBM CFG文件,所以只有他们能够向其他组授予任何SYS*权限。以下示例演示如何向db2grp1组授予 SYSADM 权限:db2 update dbm cfg using SYSADM_GROUP db2grp1请记住,这一修改直到实例停止并重新启动之后才会生效。还要记住,如果您当前不是作为db2grp1组的成员登录的,那么就无权重新启动实例!您必须注销并用正确的组中的 ID 重新登录,或者将自己当前的ID添加进db2grp1组中。获得SYSCTRL权限拥有SYSCTRL权限的用户可以在实例中执行所有管理和维护命令。但是,与SYSADM用户不同,他们不能访问数据库中的任何数据,除非他们被授予了访问数据所需的特权。SYSCTRL 用户可以对实例中的任何数据库执行的命令示例如下:db2start/db2stopdb2 create/drop databasedb2 create/drop tablespacedb2 backup/restore/rollforward databasedb2 runstats (针对任何表)db2 update db cfg for database dbname拥有 SYSADM 权限的用户可以使用以下命令将 SYSCTRL 分配给一个组:db2 update dbm cfg using SYSCTRL_GROUP group name获得SYSMAINT权限拥有SYSMAINT权限的用户可以发出的命令是拥有SYSCTRL权限的用户可以发出的命令的子集。SYSMAINT 用户只能执行与维护相关的任务,比如:db2start/db2stopdb2 backup/restore/rollforward databasedb2 runstats (针对任何表)db2 update db cfg for database dbname注意,拥有SYSMAINT权限的用户不能创建或删除数据库或表空间。他们也不能访问数据库中的任何数据,除非他们被显式地授予访问数据所需的特权。如果您拥有 SYSADM 权限,那么可以使用以下命令将 SYSMAINT 权限分配给一个组:db2 update dbm cfg using SYSMAINT_GROUP group name获得DBADM权限DBADM 权限是一个数据库级权限,而不是实例级权限。DBADM用户对一个数据库有几乎完全的控制能力。DBADM用户不能执行某些维护或管理任务,比如:drop databasedrop/create tablespacebackup/restore databaseupdate db cfg for database db name但是,他们可以执行以下任务:db2 create/drop tabledb2 grant/revoke (任何特权)db2 runstats (任何表)DBADM用户还被自动地授予对数据库对象及其内容的所有特权。因为 DBADM 权限是一个数据库级权限,所以它可以被分配给用户和用户组。以下命令演示授予DBADM 权限的不同方法。db2 create database test这个命令将数据库test上的DBADM权限隐式地授予发出此命令的用户。db2 connect to sampledb2 grant dbadm on database to user tst1这个命令只能由 SYSADM 用户发出;它向用户 tst1 授予示例数据库上的DBADM权限。注意,在授予DBADM权限之前,发出这个命令的用户必须连接到示例数据库。db2 grant dbadm on database to group db2grp1这个命令将 DBADM 权限授予 db2grp1 组中的每个用户。同样,只有 SYSADM 用户能够发出这个命令。获得LOAD权限LOAD权限是一个数据库级权限,所以它可以被分配给用户和用户组。顾名思义,LOAD权限允许用户对表发出LOAD命令。当用大量数据填充表时,LOAD命令通常用来替代插入或导入命令,它的速度更快。根据您希望执行的LOAD 操作类型,仅仅拥有 LOAD权限可能还不够。可能还需要表上的特定特权。拥有LOAD权限的用户可以运行以下命令:db2 quiesce tablespaces for tabledb2 list tablespacesdb2 runstats (任何表)db2 load insert (必须有表上的插入特权)db2 load restart/terminate after load insert (必须有表上的插入特权)db2 load replace (必须有表上的插入和删除特权)db2 load restart/terminate after load replace (必须有表上的插入和删除特权)只有拥有SYSADM或DBADM权限的用户能够对用户或用户组授予或撤消 LOAD 权限。以下示例演示LOAD权限如何允许我们的用户使用LOAD命令将数据装载进sales表中。假设已经发出了命令db2 connect to sample。db2 grant load on database to user tst1db2 grant insert on table sales to user tst1有了 LOAD 权限和插入特权,tst1 就可以对 sales 表发出 LOAD INSERT 或 LOAD RESTART ,或者在LOAD INSERT之后发出TERMINATE 。db2 grant load on database to group grp1db2 grant delete on table sales to group grp1db2 grant insert on table sales to group grp1有了 LOAD 权限以及删除和插入特权,grp1的任何成员就可以对sales表发出 LOAD REPLACE 或 LOAD RESTART ,或者在 LOAD REPLACE 之后发出 TERMINATE 。DB2对象特权用户可以拥有的数据库级特权有:CREATETAB: 用户可以在数据库中创建表。BINDADD: 用户可以使用BIND命令在数据库中创建包。CONNECT: 用户可以连接数据库。CREATE_NOT_FENCED: 用户可以创建unfenced用户定义函数(UDF)。IMPLICIT_SCHEMA: 用户可以在数据库中隐式地创建模式,而不需要使用 CREATE SCHEMA 命令。LOAD: 用户可以将数据装载进表中。QUIESCE_CONNECT: 用户可以访问处于静默(quiesced)状态的数据库。CREATE_EXTERNAL_ROUTINE: 用户可以创建供应用程序和数据库的其他用户使用的过程。数据库对象包括表、视图、索引、模式和包。幸运的是,大多数对象级特权的意义无需解释。下表总结了这些特权。特权名称相关对象描述CONTROL表、视图、索引、包、别名、不同的类型、用户定义函数、序列提供对对象的全部权限。拥有这种特权的用户还可以向其他用户授予或撤消对对象的特权。DELETE表、视图允许用户从对象中删除记录。INSERT表、视图允许用户通过 INSERT 或 IMPORT 命令将记录插入对象中。SELECT表、视图提供使用选择语句来查看对象内容的能力。UPDATE表、视图允许用户使用更新语句修改对象中的记录。ALTER表允许用户使用更改语句更改对象定义。INDEX表允许用户使用创建索引语句在对象上创建索引。REFERENCES表提供在对象上创建或删除外键约束的能力。BIND包允许用户重新绑定现有的包。EXECUTE包、过程、函数、方法允许用户执行包和例程。ALTERIN模式允许用户修改模式中的对象定义。CREATEIN模式允许用户在模式中创建对象。DROPIN模式允许用户删除模式中的对象。关于对象级特权的信息存储在系统编目视图中。视图名称是syscat.tabauth、syscat.colauth、syscat.indexauth、syscat.schemaauth、syscat.routineauth和syscat.packageauth。显式特权可以使用 GRANT 和 REVOKE 命令显式地对用户或组授予或撤消特权。我们来看看如何在各种对象上使用这些命令。作为拥有 Administrator 权限的用户登录 Windows,打开两个 DB2 命令窗口。在这两个窗口中,确保将db2instance变量设置为DB2!在第一个窗口中发出以下命:db2 connect to sample现在,在第二个窗口中发出以下命令:db2 connect to sample user test1 using password请记住,第一个窗口中的命令是由一个拥有 SYSADM 权限的用户发出的。第二个窗口中的命令是由tst1发出的,这个用户对示例数据库没有特殊的权限或特权。注意,与示例数据库中的表相关联的模式名是发出db2sampl命令的用户的名称。在这些示例中,这个用户是GMILNE。现在,在第二个窗口中发出以下命令:db2 select * from 应该会看到以下响应:SQL0551N TEST1 does not have the privilege to perform operation SELECT on object GMILNE.ORG.为了纠正这种状况,在第一个窗口中发出以下命令:db2 grant select on table to user test1现在,前面的命令就会成功!接下来,在第二个窗口中发出一个更复杂的命令:db2 insert into values (100, Tutorial, 1, Eastern, Toronto)同样会看到错误消息:SQL0551N TEST1 does not have the privilege to perform operation INSERT on object GMILNE.ORG所以,在第一个窗口中输入以下命令:db2 grant insert on table to group db2grp1原来失败的 INSERT 命令现在应该会成功完成,因为test1是db2grp1组的成员。现在,在第二个窗口中输入以下命令:db2 drop table gmilne.emp_photo同样会看到错误消息:SQL0551N TEST1 does not have the privilege to perform operation DROP TABLE on object GMILNE.EMP_PHOTO.所以,我们要授予这个特权。在第一个窗口中输入以下命令:db2 grant dropin on schema gmilne to allDROP TABLE命令现在应该会成功完成。既然已经完成了示例,就可以撤消刚才授予的特权。在第一个窗口中发出以下命令:db2 revoke select on table from user test1db2 revoke insert on table from group db2grp1db2 revoke dropin on schema gmilne from all注意,从组中撤消特权不一定会从这个组的所有成员撤消它。例如,以下命令可以用来从db2grp1撤消对 表的所有特权(CONTROL 除外):db2 revoke all on table from group db2grp1但是,test1用户(他是db2grp1的成员)仍然拥有对这个表的选择特权,因为他或她是被直接授予这个特权的。隐式特权当发出某些命令时,DB2可能会自动地授予特权,而不需要像前面看到的那样发出显式的 GRANT语句。下表总结了会导致数据库管理程序隐式地授予特权的一些命令。注意,当删除创建的对象时,这些特性会隐式地撤消。但是,当显式地撤消更高级的特权时,不会撤消它们。发出的命令授予的特权被授予特权的用户CREATE TABLE mytablemytable上的 CONTROL发出命令的用户CREATE SCHEMA myschemamyschema上的 CREATEIN、ALTERIN 和 DROPIN,以及将这些特权授予其他用户的能力发出命令的用户CREATE VIEW myviewmyview上的 CONTROL(只有在用户拥有myview定义中引用的所有表和视图上的CONTROL特权的情况下)发出命令的用户CREATE DATABASE mydbmydb的系统编目表上的 SELECT,mydb 上的 IMPLICIT_SCHEMA *PUBLIC*注:当用户创建数据库时,隐式地授予这个用户这个数据库上的DBADM权限。获得DBADM权限就会隐式地授予CONNECT、CREATETAB、BINDADD、IMPLICIT_SCHEMA 和 CREATE_NOT_FENCED 特权。即使撤消了DBADM权限,这个用户仍然会保留这些特权。PUBLIC 是一个特殊的 DB2 组,其中包括特定数据库的所有用户。与前面讨论过的其他组不同,PUBLIC 不必在操作系统级进行定义。在默认情况下,会向 PUBLIC 授予一些特权。例如,这个组自动接受数据库上的 CONNECT 特权和编目表上的 SELECT 特权。可以对 PUBLIC 组发出 GRANT 和 REVOKE 命令,比如:db2 grant select on table sysibm.systables to publicdb2 revoke select on table sysibm.systables from public间接特权当数据库管理器执行包时,可以间接获得特权。包中包含一个或多个SQL语句,这些语句已经转换为DB2用来在内部执行它们的格式。换句话说,包中包含可执行格式的多个SQL语句。如果包中的所有语句都是静态的,那么用户只需要有包上的EXECUTE 特权,就能够成功地执行包中的语句。例如,假设db2package1执行以下静态的SQL 语句:db2 select * from orgdb2 insert into test values (1, 2, 3)在这种情况下,拥有db2package1上的 EXECUTE 特权的用户会间接地获得org表上的 SELECT 特权和 test 表上的 INSERT 特权。基于标签的访问控制DB2 9中新增的一个概念是基于标签的访问控制(LBAC)。LBAC为DBA提供了在表的行或列级限制读/写特权的能力。在以前,进行这种限制的惟一方法是创建一个视图,授权用户使用这个视图,并撤消对基表的访问权。本教程只演示LBAC安全场景的一个示例。关于LBAC的更详细解释,请参考 developerWorks 上的DB2 Label-Based Access Control, a practical guide, Part 1: Understand the basics of LBAC in DB2。LBAC由安全管理员通过创建安全策略来设置。每个表只能由一个安全策略来控制,但是系统中可以有任意数量的安全策略。设置LBAC需要几个步骤。必须做的第一件事情是,决定对于您的数据需要什么类型的访问控制。我们做出以下假设。在您的组织中有三类人。名称在组织中的角色Jane人力资源执行官JoeD11 和 E21 部门的经理Frank团队主管 - A00 部门现在,在组织的数据库中有一个定义职员信息的表。这个表类似于 SAMPLE 数据库中的EMP 表。它包含关于职员和他们所属的部门的数据。它现在的定义如下:db2 = describe select * from empSQLDA Informationsqldaid : SQLDA sqldabc: 896 sqln: 20 sqld: 14Column Informationsqltype sqllen sqlname.data sqlname.length- - - -452 CHARACTER 6 EMPNO 5448 VARCHAR 12 FIRSTNME 8453 CHARACTER 1 MIDINIT 7448 VARCHAR 15 LASTNAME 8453 CHARACTER 3 WORKDEPT 8453 CHARACTER 4 PHONENO 7385 DATE 10 HIREDATE 8453 CHARACTER 8 JOB 3500 SMALLINT 2 EDLEVEL 7453 CHARACTER 1 SEX 3385 DATE 10 BIRTHDATE 9485 DECIMAL 9, 2 SALARY 6485 DECIMAL 9, 2 BONUS 5485 DECIMAL 9, 2 COMM 4组织会定期对规则进行审计。审计指出,职员不应该能够访问机密的数据。规则规定,执行官对所有职员记录有完全的读/写访问权,经理对自己部门的职员记录有读/写访问权,而团队主管只能读取部门中他们领导的职员的记录。我们要设置 LBAC 安全策略来实现这些规则。1、定义安全策略和标签,并将安全标签授予用户2、在EMP表中添加安全标签列并将安全策略连接到它定义安全策略和标签为了定义安全策略和标签,需要 SECADM 权限。步骤 1a. 创建安全标签组件首先,需要决定对于这个策略最合适的安全组件类型。在这个示例中,最合适的策略类型是 “TREE”。Tree策略意味着可以定义一组标签,让子组件拥有它们的父组件的权限的子集。在这个示例中,创建一个名为 “J_DEPT” 的安全组件。CREATE SECURITY LABEL COMPONENT J_DEPT TREE (HR_EXECUTIVE ROOT, MAN_D11_E21 UNDER HR_EXECUTIVE A00 UNDER HR_EXECUTIVE, B01 UNDER HR_EXECUTIVE, C01 UNDER HR_EXECUTIVE, D11 UNDER MAN_D11_E21, D21 UNDER HR_EXECUTIVE, E01 UNDER HR_EXECUTIVE, E11 UNDER HR_EXECUTIVE, E21 UNDER MAN_D11_E21 )上面的布局说明根是HR_EXECUTIVE,这个执行官领导的所有部门都是它的子组件。步骤 1b. 定义安全策略在上面的示例中,设置 LBAC 所需的下一个步骤是定义与上面的安全标签组件相关联的策略。一个安全策略可以使用多个组件。CREATE SECURITY POLICY J_DEPT_POLICY COMPONENTS J_DEPT WITH DB2LBACRULES RESTRICT NOT AUTHORIZED WRITE SECURITY LABEL步骤 1c. 创建安全标签设置安全策略的第三步是创建安全标签。在这里将指定每个用户具有的不同角色。因为这个示例非常简单,只有三个标签,Executive、Manager 和 Team Lead。CREATE SECURITY LABEL J_DEPT_POLICY.EXECUTIVE COMPONENT J_DEPT HR_EXECUTIVECREATE SECURITY LABEL J_DEPT_POLICY.MANAGE_D11_E21 COMPONENT J_DEPT MAN_D11_E21CREATE SECURITY LABEL J_DEPT_POLICY.A00 COMPONENT J_DEPT A00CREATE SECURITY LABEL J_DEPT_POLICY.B01 COMPONENT J_DEPT B01CREATE SECURITY LABEL J_DEPT_POLICY.C01 COMPONENT J_DEPT C01CREATE SECURITY LABEL J_DEPT_POLICY.D11 COMPONENT J_DEPT D11CREATE SECURITY LABEL J_DEPT_POLICY.D21 COMPONENT J_DEPT D21CREATE SECURITY LABEL J_DEPT_POLICY.E01 COMPONENT J_DEPT E01CREATE SECURITY LABEL J_DEPT_POLICY.E11 COMPONENT J_DEPT E11CREATE SECURITY LABEL J_DEPT_POLICY.E21 COMPONENT J_DEPT E21在下一步中,将定义与这些标签相关联的实际权限。步骤 1d. 根据标签授予权限下面的步骤描述对表数据授予权限的过程。权限可以是ALL ACCESS、WRITE ACCESS 或 READ ACCESS。如果这些权限都没有授予一个用户,那么这个用户就不能访问任何表数据。请记住,执行官有完全的访问权,经理对自己的部门有完全的访问权,而团队主管对他们领导的部门成员有读访问权。db2 grant security label J_DEPT_POLICY.A00 to user Frank for read accessdb2 grant security label J_DEPT_POLICY.MANAGE_D11_E21 to user Joe for all accessdb2 grant security label J_DEPT_POLICY.EXECUTIVE to user Jane for all access在用户上设置以上标签,就会根据步骤 1a中的树定义来分配权限。因为用户Joe被标为 MANAGE_D11_E21并获得所有权限,他将能够读写那些安全标记为J_DEPT_POLICY.D11 或J_DEPT_POLICY.E21 的行(因为它们是他的子组件)。步骤 2. 修改EMP表在修改 EMP 表时,必须创建一个额外的列来存储安全标签。这个列的类型是“DB2SECURITYLABEL”。您可以修改SAMPLE数据库中现有的 EMP 表。为此,必须使用在这个策略中被授予根级特权的用户,在这个示例中就是用户Jane。还必须先从SAMPLE 数据库删除MQT表 ADEFUSR。CONNECT TO SAMPLE Database Connection InformationDatabase server = DB2/NT 9.1.0SQL authorization ID = GMILNELocal database alias = SAMPLEDROP TABLE ADEFUSRCONNECT RESETCONNECT TO SAMPLE USER Jane USING passwordALTER TABLE EMP ADD COLUMN DEPT_TAG DB2SECURITYLABEL ADD SECURITY POLICY J_DEPT_POLICY如果从EMP表进行选择,就会看到刚定义的新列。因为是用在EXECUTIVE级上定义的用户执行这一修改,添加的所有安全标记都是EXECUTIVE。为了改变这一情况,需要更新这个表。db2 = select EMPNO, FIRSTNME, LASTNAME, WORKDEPT, SALARY,varchar(SECLABEL_TO_CHAR(J_DEPT_POLICY,DEPT_TAG),30) from gmilne.empEMPNO FIRSTNME LASTNAME WORKDEPT SALARY 6- - - - - -000010 CHRISTINE HAAS A00 152750.00 HR_EXECUTIVE000020 MICHAEL THOMPSON B01 94250.00 HR_EXECUTIVE000030 SALLY KWAN C01 98250.00 HR_EXECUTIVE000050 JOHN GEYER E01 80175.00 HR_EXECUTIVE000060 IRVING STERN D11 72250.00 HR_EXECUTIVE000070 EVA PULASKI D21 96170.00 HR_EXECUTIVE000090 EILEEN HENDERSON E11 89750.00 HR_EXECUTIVE000100 THEODORE SPENSER E21 86150.00 HR_EXECUTIVE000110 VINCENZO LUCCHESSI A00 66500.00 HR_EXECUTIVE000120 SEAN OCONNELL A00 49250.00 HR_EXECUTIVE000130 DELORES QUINTANA C01 73800.00 HR_EXECUTIVE000140 HEATHER NICHOLLS C01 68420.00 HR_EXECUTIVE000150 BRUCE ADAMSON D11 55280.00 HR_EXECUTIVE000160 ELIZABETH PIANKA D11 62250.00 HR_EXECUTIVE000170 MASATOSHI YOSHIMURA D11 44680.00 HR_EXECUTIVE000180 MARILYN SCOUTTEN D11 51340.00 HR_EXECUTIVE000190 JAMES WALKER D11 50450.00 HR_EXECUTIVE000200 DAVID BROWN D11 57740.00 HR_EXECUTIVE000210 WILLIAM JONES D11 68270.00 HR_EXECUTIVE000220 JENNIFER LUTZ D11 49840.00 HR_EXECUTIVE000230 JAMES JEFFERSON D21 42180.00 HR_EXECUTIVE000240 SALVATORE MARINO D21 48760.00 HR_EXECUTIVE000250 DANIEL SMITH D21 49180.00 HR_EXECUTIVE000260 SYBIL JOHNSON D21 47250.00 HR_EXECUTIVE000270 MARIA PEREZ D21 37380.00 HR_EXECUTIVE000280 ETHEL SCHNEIDER E11 36250.00 HR_EXECUTIVE000290 JOHN PARKER E11 35340.00 HR_EXECUTIVE000300 PHILIP SMITH E11 37750.00 HR_EXECUTIVE000310 MAUDE SETRIGHT E11 35900.00 HR_EXECUTIVE000320 RAMLAL MEHTA E21 39950.00 HR_EXECUTIVE000330 WING LEE E21 45370.00 HR_EXECUTIVE000340 JASON GOUNOT E21 43840.00 HR_EXECUTIVE200010 DIAN HEMMINGER A00 46500.00 HR_EXECUTIVE200120 GREG ORLANDO A00 39250.00 HR_EXECUTIVE200140 KIM NATZ C01 68420.00 HR_EXECUTIVE200170 KIYOSHI YAMAMOTO D11 64680.00 HR_EXECUTIVE200220 REBA JOHN D11 69840.00 HR_EXECUTIVE200240 ROBERT MONTEVERDE D21 37760.00 HR_EXECUTIVE200280 EILEEN SCHWARTZ E11 46250.00 HR_EXECUTIVE200310 MICHELLE SPRINGER E11 35900.00 HR_EXECUTIVE200330 HELENA WONG E21 35370.00 HR_EXECUTIVE200340 ROY ALONZO E21 31840.00 HR_EXECUTIVE 42 record(s) selected.db2=update emp set DEPT_TAG=(SECLABEL_BY_NAME(J_DEPT_POLICY,A00) where WORKDEPT=A00db2=update emp set DEPT_TAG=(SECLABEL_BY_NAME(J_DEPT_POLICY,B01) where WORKDEPT=B01db2=update emp set DEPT_TAG=(SECLABEL_BY_NAME(J_DEPT_POLICY,C01) where WORKDEPT=C01db2=update emp set DEPT_TAG=(SECLABEL_BY_NAME(J_DEPT_POLICY,D11) where WORKDEPT=D11db2=update emp set DEPT_TAG=(SECLABEL_BY_NAME(J_DEPT_POLICY,D21) where WORKDEPT=D21db2=update emp set DEPT_TAG=(SECLABEL_BY_NAME(J_DEPT_POLICY,E01) where WORKDEPT=E01db2=update emp set DEPT_TAG=(SECLABEL_BY_NAME(J_DEPT_POLICY,E11) where WORKDEPT=E11db2=update emp set DEPT_TAG=(SECLABEL_BY_NAME(J_DEPT_POLICY,E21) where WORKDEPT=E21db2 = select EMPNO, FIRSTNME, LASTNAME, WORKDEPT, SALARY,varchar(SECLABEL_TO_CHAR(J_DEPT_POLICY,DEPT_TAG),30) from empEMPNO FIRSTNME LASTNAME WORKDEPT SALARY 6- - - - - -000010 CHRISTINE HAAS A00 152750.00 A00000020 MICHAEL THOMPSON B01 94250.00 B01000030 SALLY KWAN C01 98250.00 C01000050 JOHN GEYER E01 80175.00 E01000060 IRVING STERN D11 72250.00 D11000070 EVA PULASKI D21 96170.00 D21000090 EILEEN HENDERSON E11 89750.00 E11000100 THEODORE SPENSER E21 86150.00 E21000110 VINCENZO LUCCHESSI A00 66500.00 A00000120 SEAN OCONNELL A00 49250.00 A00000130 DELORES QUINTANA C01 73800.00 C01000140 HEATHER NICHOLLS C01 68420.00 C0100015

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论