八宝书库 > 文学其他电子书 > SQL 21日自学通(V3.0)(PDF格式) >

第68部分

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

小说: SQL 21日自学通(V3.0)(PDF格式) 字数: 每页4000字

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






                  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 



        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) 



返回目录 上一页 下一页 回到顶部 0 0

你可能喜欢的