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

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

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




        2                  BYTES; 



        3                  MAX_BYTES 



        4    FROM  SYS。DBA_TS_QUOTAS 



        5    WHERE  USERNAME  =  'JSMITH' 



               TABLESPACE_NAME         BYTES         MAX_BYTES 



               DATA_TS                 134111232     …1 



               INDEX_TS                474390528     …1 



分析 



    JSMITH  对于可供他访问和使用的表空间是没有限制的                         在这种情况下空间的使用是 



本着先入为主的原则进行的  举例来说                   如果 JSMITH  在 DATA_TS      中使用了所有的表空 



间  那么其它的用户就不能在这里创建对象了 



数据库的生长 



    在这一部分有两个视图可以对管理数据库的生长情况进行控制                                            它 们 是 



DBA_SEGMENTS     和 DBA_EXTENTS       DBA_SEGMENTS     提供了关于每一段或数据对象 



如存储分配        空间使用和扩展的信息  每次当表和索引的增长超过了预先的指定就会开始 



下一次的扩展  采用这种方法增长的表通常会有碎片的产生  DBA_EXTENTS                                则给出的段 



每次扩展的信息 



INPUT 



    SQL》 SELECT SUBSTR(SEGMENT_NAME;1;30) SEGMENT_NAME; 



        2                  SUBSTR(SEGMENT_TYPE;1;12)  SEGMENT_TYPE; 



        3                  BYTES; 



        4                  EXTENTS; 



        5    FROM  SYS。DBA_SEGMENTS 



        6    WHERE  OWNER  =  'TWILLIAMS' 



        7        AND  ROWNUM  《  5 



                                                                               345 


…………………………………………………………Page 346……………………………………………………………

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



OUTPUT 



SEGMENT_NAME         SEGMENT_TYPE         BYTES                EXTENTS 



INVOICE_TBL          TABLE                163840               10 



PLAINT_TBL        TABLE                4763783              3 



HISTORY_TBL          TABLE                547474996            27 



HISTORY_INX          INDEX                787244534            31 



分析 



    看一下从 DBA_SEGMENTS  的输出  你可以很容易地通常 EXTENTS  的数字来确定增 



长最多的表的情况  在本例子 HISTORY_TBL 和 HISTORY_INX                   的增长要比另外的两个表 



快得多 



    现在你可以看一下表每次增长的情况                   我们以 INVOICE_TBL 为例 



INPUT/OUTPUT 



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



        2                  SUBSTR(SEGMENT_NAME;1;30)  SEGMENT_NAME; 



        3                  EXTENT_ID; 



        4                  BYTES 



        5    FROM  SYS。DBA_EXTENTS 



        6    WHERE  OWNER  =  'TWILLIAMS' 



        7        AND  SEGMENT_NAME  =  'INVOICE_TBL' 



        8    ORDER  BY  EXTENT_ID 



OWNER                SEGMENT_NAME         EXTENT_ID            BYTES 



TWILLIAMS            INVOICE_TBL          0                    16384 



TWILLIAMS            INVOICE_TBL          1                    16384 



TWILLIAMS            INVOICE_TBL          2                    16384 



TWILLIAMS            INVOICE_TBL          3                    16384 



TWILLIAMS            INVOICE_TBL          4                    16384 



TWILLIAMS            INVOICE_TBL          5                    16384 



TWILLIAMS            INVOICE_TBL          6                    16384 



TWILLIAMS            INVOICE_TBL          7                    16384 



TWILLIAMS            INVOICE_TBL          8                    16384 



TWILLIAMS            INVOICE_TBL          9                    16384 



分析 



    这个例子显求了该表每次的增长                  EXTEND_ID   和每次增长的字节大小情况  这里每 



                                                                               346 


…………………………………………………………Page 347……………………………………………………………

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



次的增长只有 16K       而且已经增长了 10 次了  你也许应该重建数据库并重新生成表并增加 



initial_extent 的大小以优化空间的使用  重新生成表将可以将表中的数据放放一个单一的片 



断中  所以也就还会有碎片产生了 



空间分配 



    ORACLE  是使用数据文件来分配数据库的空间的                   空间在逻辑上以表空间的形式存 



在  但是它是以数据文件的物理形式存在于磁盘上的                      在许多的解释器中         在数据文件中 



也可直接包括数据         尽管这些文件以能会以其它的名字来引用                   视图 DBA_DATA_FILES 



可以让你看到表空间的实际分配 



INPUT/OUTPUT 



    SQL》 SELECT SUBSTR(TABLESPACE_NAME;1;25) TABLESPACE_NAME; 



        2                  SUBSTR(FILE_NAME;1;40)  FILE_NAME; 



        3                  BYTES 



        4    FROM  SYS。DBA_DATA_FILES; 



TABLESPACE_NAME           FILE_NAME                BYTES 



SYSTEM                    /disk01/system0。dbf      41943040 



RBS                       /disk02/rbs0。dbf         524288000 



TEMP                      /disk03/temp0。dbf        524288000 



TOOLS                     /disk04/tools0。dbf       20971520 



USERS                     /disk05/users0。dbf       20971520 



DATA_TS                   /disk06/data0。dbf        524288000 



INDEX_TS                  /disk07/index0。dbf       524288000 



分析 



    你现在可以看到在数据库中存在的每个表空间实际上被分配了多大的空间                               注意数据 



库文件的名称与它所属的表空间是一一对应的 



可用空间 



    就像下边的例子所显示的一样  DBA_FREE_SPACE               视图可以告诉你在每个表格空中 



还有多少自由的空间可以使用 



INPUT 



                                                                        347 


…………………………………………………………Page 348……………………………………………………………

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



    SQL》 SELECT TABLESPACE_NAME; SUM(BYTES) 



        2    FROM  SYS。DBA_FREE_SPACE 



        3    GROUP  BY  TABLESPACE_NAME; 



OUTPUT 



                   TABLESPACE_NAME           SUM(BYTES) 



                   SYSTEM                    23543040 



                   RBS                       524288000 



                   TEMP                      524288000 



                   TOOLS                      12871520 



                  USERS                      971520 



                   DATA_TS                   568000 



                   INDEX_TS                   1288000 



分析 



    上边的例子给出的所有的每个表空间的自由空间                       如果你只是使用 SELECT         语句而没 



有使用 SUM 函数的话你也会看到每一段的自由空间情况 



ROLLBACK 段 



    为事务所预留的 ROLLBACK  区域对数据库的性能影响是非常大的  你需要知道有多 



少的 ROLLBACK 段是可用的  视图 DBA_ROLLBACK_SEGS 可以为你提供这些信息 



INPUT 



    SQL》 SELECT OWNER; 



        2                  SEGMENT_NAME 



        3    FROM  SYS。DBA_ROLLBACK_SEGS; 



OUTPUT 



                    OWNER              SEGMENT_NAME 



                    SYS                SYSTEM 



                    SYS               R0 



                    SYS               R01 



                    SYS               R02 



                    SYS               R03 



                    SYS               R04 



                    SYS               R05 



                                                                            348 


…………………………………………………………Page 349……………………………………………………………

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



分析 



   这个例子中通过运行一个简单的查询列出的所有 ROLLBACK  段的名字                    其实它还有 



更多的对你有用的数据 



动态执行视图 



   ORACLE  的数据库管理经常会访问动态执行视图因为它对提供了比其它的数据字典视 



图更为详细的对内部性能的量度             在 DBA 视图中也包括了一些相同的信息 



   这些视图涉及到了相当多的细节 — — 依据特定的解释器而定                  这一部分给出在数据字 



典中包括的大体上的信息 



会话信息 



   对 VSEEEION 视图执行 DESCRIBE     在第 20  天的  SQL*PLUS  中会详细讨论  命 



令  你可以看到这个视图中的详细内容 



INPUT 



   SQL》 DESCRIBE VSESSION 



OUTPUT 



         Name             Null?            Type 



         SADDR                             RAW(4) 



         SID                               NUMBER 



         SERIAL#                           NUMBER 



         AUDSID                            NUMBER 



         PADDR                             RAW(4) 



         USER#                             NUMBER 



         USERNAME                          VARCHAR2(30) 



         MAND                           NUMBER 



         TADDR                             VARCHAR2(8) 



         LOCKWAIT                          VARCHAR2(8) 



         STATUS                            VARCHAR2(8) 



         SERVER                            VARCHAR2(9) 



         SCHEMA#                           NUMBER 



         SCHEMANAME                        VARCHAR2(30) 



         OSUSER                            VARCHAR2(15) 



                                                                  349 


…………………………………………………………Page 350……………………………………………………………

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



          Name               Null?               Type 



          PROCESS                                VARCHAR2(9) 



          MACHINE                                VARCHAR2(64) 



          TERMINAL                               VARCHAR2(10) 



          PROGRAM                                VARCHAR2(48) 



          TYPE                                   VARCHAR2(10) 



          SQL_ADDRESS                            RAW(4) 



          SQL_HASH_VALUE                         NUMBER 



          PREV_SQL_ADDR                          RAW(4) 



          PREV_HASH_VALU                         NUMBER 



          E 



          MODULE                                 VARCHAR2(48) 



          MODULE_HASH                            NUMBER 



          ACTION                                 VARCHAR2(32) 



          ACTION_HASH                            NUMBER 



          CLIENT_INFO                            VARCHAR2(64) 



          FIXED_TABLE_SEQ                        NUMBER 



          UENCE 



          ROW_WAIT_OBJ#                          NUMBER 



          ROW_WAIT_FILE#                         NUMBER 



          ROW_WAIT_BLOC                          NUMBER 



          K# 



          ROW_WAIT_ROW#                          NUMBER 



          LOGON_TIME                             DATE 



          LAST_CALL_ET                           NUMBER 



    如果你想得到关于当前数据库的会话信息                   你可以对 VSESSION     写像下边这样的一 
返回目录 上一页 下一页 回到顶部 1 1
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!