友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

SQL 21日自学通(V3.0)(PDF格式)-第61部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!




决这个问题你需要将 DBA 规则应用于 JSMITH              当然这必须要得到 DBA 的许可 



数据库用户信息 



    USER_USER  与 ALL_USER  视图将会给你最少的关于用户的信息  DBA  视图被称为 



DBA_USERS   它为 SYS    所拥有    所有的关于所有用户的信息            前提是你有 DBA  规则或 



SELECT_ANY_TABLE 权限      如下例如示 



INPUT 



    SQL》 SELECT * FROM SYS。DBA_USERS; 



OUTPUT 



USERNAME      USER_ID    PASSWORD             DEFAULT_TABLESPACE 



SYS           0          4012DA490794C16B     SYSTEM 



JSMITH        5          A4A94B17405C10B7     USERS 



      实际为一个表格  这里由于排版需要改为两个 



USERNAME      TEMPORARY_TABLESPACE       CREATED    PROFILE 



SYS           TEMP                       06…JUN…96  DEFAULT 



JSMITH        TEMP                       06…JUN…96  DEFAULT 



分析 



    当你选择了 DBA_USERS      视图中的所有内容         你会看到对于每个用户来说至为重要的 



信息    注意这里的 PASSWORD 是经过加密处理的  这个视图是 DBA 管理其它用户的重要 



                                                                       339 


…………………………………………………………Page 340……………………………………………………………

SQL 21  日自学通(V1。0)                                         翻译人   笨猪 



视图 



数据库安全 



   在数据字典中有三个基本的视图与数据库安全相关的                   尽管想得到完整的信息你必须 



还要查阅其它相关的信息  这三个视图与数据库的规则                   规则对用户的授权以及系统权限 



对用户的授权相关 这三个视图会在 DBA_ROLES            DBA_ROLE_PRIVS 和DBA_SYS_PRIVS 



这三个部分中介绍        下边的查询显示了如何去获得相关的数据库安全信息 



INPUT 



   SQL》 SELECT * FROM SYS。DBA_ROLES; 



OUTPUT 



     ROLE                  PASSWORD 



     CONNECT               NO 



     RESOURCE              NO 



     DBA                   NO 



     EXP_FULL_DATABASE     NO 



     IMP_FULL_DATABASE     NO 



     END_USER_ROLE         NO 



分析 



   视图 DBA_ROLES   给出了所有在数据库中创建的规则的信息  它给出的规则的名字以 



及规则是否存在密码 



INPUT 



   SQL》 SELECT * 



       2    FROM  SYS。DBA_ROLE_PRIVS 



       3    WHERE  GRANTEE  =  'RJENNINGS' 



       GRANTEE          GRANTED_ROLE      ADM    DEF 



       RJENNINGS        CONNECT          NO      YES 



       RJENNINGS        DBA              NO      YES 



       RJENNINGS        RESOURCE         NO      YES 



分析 



   DBA_ROLE_PRIVS  给出的关于赋给用户的数据库规则的信息               第一列为被授权人 



第二列显示了被授予的规则          注意  对用户所授予的每一个规则都会占用表中的一个记录 



                                                                  340 


…………………………………………………………Page 341……………………………………………………………

SQL 21  日自学通(V1。0)                                        翻译人   笨猪 



ADM 通过后边的 ADM 选项来确定这个规则是否是允许的                也就是说该用户是否有权将该 



规则授予其它的用户        最后一列为默认  表明这个规则是否是用户的默认规则 



分析 



   DBA_SYS_PRIVS 给了所有授予用户的系统权限           这个视图与 DBA_ROLE_PRIVS    视 



图类似  你可以通过把系统权限授予规则来把这些系统权限包括在规则中                        就像你是一个 



用户一样 



数据库对象 



   数据库对象是 DBA  所关心了又一个重要内容             在数据字典中有几个视图提供了有关 



数据库对象如表和索引的信息  通常这些视图你可以获得常用的信息或详细的信息 



INPUT 



   SQL》 SELECT * 



       2    FROM  SYS。DBA_CATALOG 



       3    WHERE  ROWNUM  《  5; 



OUTPUT 



     OWNER        TABLE_NAME      TABLE_TYPE 



     SYS          CDEF           TABLE 



     SYS          TAB            TABLE 



     SYS          IND            TABLE 



     SYS          CLU            TABLE 



分析 



   DBA_CATALOG  所做的事与 USER_CATALOG     是一样的     只显示了所有者的表        与 



之相对比  USER_CATALOG  则用于显示当前用户的表  用 DBA_CATALOG 视图 DBA 可 



以快速地查看所有的表 



   下边的查询给出了对于特定的数据库都存在哪种类型的对象 



技巧  出于测试的目的你可以使用 ROWNUM 来限制查询返回特定数目的行  它与 ROWID 



    一样可以在任何数据库表和视图中使用 



INPUT/OUTPUT 



SQL》 SELECT DISTINCT(OBJECT_TYPE) 



    2    FROM  SYS。DBA_OBJECTS; 



                                                                341 


…………………………………………………………Page 342……………………………………………………………

SQL 21  日自学通(V1。0)                                            翻译人    笨猪 



         OBJECT_TYPE        OBJECT_TYPE 



         CLUSTER            PROCEDURE 



         DATABASE LINK      SEQUENCE 



         FUNCTION           SYNONYM 



         INDEX              TABLE 



         PACKAGE            TRIGGER 



         PACKAGE BODY       VIEW 



分析 



    在上边的查询中 DISTINCT      功能可以让存在于数据库中的对象只出现一次  在数据库 



的设计和开发时使用这个查询来发现数据库中都有哪些对象是非常好的 



    DBA_TABLES 视图给出了关于数据库表和大多数与存储有关的数据库对象的信息 



INPUT/OUTPUT 



    SQL》 SELECT SUBSTR(OWNER;1;8) OWNER; 



        2                  SUBSTR(TABLE_NAME;1;25)  TABLE_NAME; 



        3                  SUBSTR(TABLESPACE_NAME;1;30)  TABLESPACE_NAME 



        4    FROM  SYS。DBA_TABLES 



        5    WHERE  OWNER  =  'JSMITH'; 



         OWNER     TABLE_NAME       TABLESPACE_NAME 



         JSMITH    MAGAZINE_TBL     USERS 



         JSMITH    HOBBY_TBL        USERS 



         JSMITH    ADDRESS_TBL      SYSTEM 



         JSMITH    CUSTOMER_TBL     USERS 



分析 



    除了 ADDRESS_TBL   以外  所有的表都在 USER  表空间中  ADDRESS_TBL           是在系 



统表空间中的       因为这是唯一的一个你可能存储于系统表空间中的表                     作为 DBA  需要知 



道这件事     这个查询对你的帮助不小 



    JSMITH 应该马上把这个表移到其它符合条件的表空间中去 



    DBA_SYNONYMS   给出了所有存在于数据库中的同义字的清单                   DBA_SYNONYMS 



给出了所有数据库用户的同义字清单               与 USER_SYNONYMS    不同 — — 它只是给出了当前 



用户私有的同义字 



INPUT/OUTPUT 



    SQL》 SELECT SYNONYM_NAME; 



                                                                     342 


…………………………………………………………Page 343……………………………………………………………

SQL 21  日自学通(V1。0)                                                        翻译人    笨猪 



        2                  SUBSTR(TABLE_OWNER;1;10)  TAB_OWNER; 



        3                  SUBSTR(TABLE_NAME;1;30)  TABLE_NAME 



        4    FROM  SYS。DBA_SYNONYMS 



        5    WHERE  OWNER  =  'JSMITH'; 



               SYNONYM_NAME          TAB_OWNER       TABLE_NAME 



               TRIVIA_SYN            VJOHNSON        TRIVIA_TBL 



分析 



    下边的例子表时 JSMITH  有对 VJOHNSON  所有的 TRIVIA_TBL                      表有一个名字叫 



TRIVIA_SYN  的同义字 



    现在假设你想得到所有的 JSMITH  的表和索引的清单  你也许会写出像下边这样的查 



询   它使用了 DBA_INDEXS 



INPUT/OUTPUT 



    SQL》 SELECT SUBSTR(TABLE_OWNER;1;10) TBL_OWNER; 



        2                  SUBSTR(TABLE_NAME;1;30)  TABLE_NAME; 



        3                  SUBSTR(INDEX_NAME;1;30)  INDEX_NAME 



        4    FROM  SYS。DBA_INDEXES 



        5    WHERE  OWNER  =  'JSMITH' 



        6        AND  ROWNUM  《  5 



        7    ORDER  BY  TABLE_NAME; 



            TBL_OWNER        TABLE_NAME                INDEX_NAME 



            JSMITH           ADDRESS_TBL               ADDR_INX 



            JSMITH           CUSTOMER_TBL              CUST_INX 



            JSMITH           HOBBY_TBL                 HOBBY_PK 



            JSMITH           MAGAZINE_TBL              MAGAZINE_INX 



分析 



    像上边这样一个很容易的查询可以给出一个计划                           工程  和与之相中所使用的表 



INPUT/OUTPUT 



    SQL》 SELECT SUBSTR(TABLE_NAME;1;15) TABLE_NAME; 



        2                  SUBSTR(INDEX_NAME;1;30)  INDEX_NAME; 



        3                  SUBSTR(COLUMN_NAME;1;15)  COLUMN_NAME; 



        4                  COLUMN_POSITION 



                                                                                  343 


…………………………………………………………Page 344……………………………………………………………

SQL 21  日自学通(V1。0)                                               翻译人    笨猪 



        5    FROM  SYS。DBA_IND_COLUMNS 



        6    WHERE  TABLE_OWNER  =  'JSMITH' 



        7        AND  ROWNUM  《  10 



        8    ORDER  BY  1;2;3 



TABLE_NAME       INDEX_NAME        COLUMN_NAME       COLUMN_POSITION 



ADDRESS_TBL      ADDR_INX          PERS_ID           1 



ADDRESS_TBL      ADDR_INX          NAME              2 



ADDRESS_TBL      ADDR_INX          CITY              3 



CUSTOMER_TBL     CUST_INX          CUST_ID           1 



CUSTOMER_TBL     CUST_INX          CUST_NAME         2 



CUSTOMER_TBL     CUST_INX          CUST_ZIP          3 



HOBBY_TBL        HOBBY_PK          SAKEY             1 



MAGAZINE_TBL     MAGAZINE_INX      ISSUE_NUM         1 



MAGAZINE_TBL     MAGAZINE_INX      EDITOR            2 



    现在你已经选择一在每一个表中的索引过的列并根据索引出现的次序进行了排序                                  你 



已经学习了表  但是如何才能更好地把握表呢  表空间比表和索引之类的对象更高级                                  表 



空间是 ORACLE 为数据库分配空间的机制  要分配空间                   你必须知道当前有多少空间可供 



使用    你可以对 DBA_TABLESPACES       视图执行一个查询来查看所有的表空间以及它们的 



状态    如下例所示 



INPUT/OUTPUT 



    SQL》 SELECT TABLESPACE_NAME; STATUS 



        2    FROM  SYS。DBA_TABLESPACES 



                  TABLESPACE_NAME         STATUS 



                  SYSTEM                  ONLINE 



                  RBS                     ONLINE 



                  TEMP                    ONLINE 



                  TOOLS                   ONLINE 



                  USERS                   ONLINE 



                  DATA_TS                 ONLINE 



                  INDEX_TS                ONLINE 



分析 



    上边的例子告诉了你当前有多少表空间处于在线状态                       也就是说它对于你来说是可用 



的  如果它是离线状态  那么在它之中的数据库对象                    也就是表  将是不可访问的 



                                                                        344 


…………………………………………………………Page 345……………………………………………………………

SQL 21  日自学通(V1。0)                                                     翻译人    笨猪 



    那么对于 JSMITH 来说有多少配额可供他访问呢                     也就是说  对于 JSMITH 来说他可 



以使用多少空间来存储数据库对象呢 



INPUT/OUTPUT 



    SQL》 SELECT TABLESPACE_NAME; 



        2                  BYTES; 



        3                  MAX_BYTES 
返回目录 上一页 下一页 回到顶部 1 1
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!