{"id":35,"date":"2015-12-16T16:47:14","date_gmt":"2015-12-16T08:47:14","guid":{"rendered":"http:\/\/www.lisq.net.cn\/?p=35"},"modified":"2015-12-16T16:54:19","modified_gmt":"2015-12-16T08:54:19","slug":"dbms_space-space_usage-%e8%87%aa%e5%8a%a8%e8%bf%90%e8%a1%8c%ef%bc%8c%e7%bb%93%e6%9e%9c%e4%bf%9d%e5%ad%98%e5%88%b0%e8%a1%a8%e9%87%8c","status":"publish","type":"post","link":"https:\/\/www.lisq.net\/?p=35","title":{"rendered":"DBMS_SPACE.SPACE_USAGE \u81ea\u52a8\u8fd0\u884c\uff0c\u7ed3\u679c\u4fdd\u5b58\u5230\u8868\u91cc"},"content":{"rendered":"<p>\u9996\u5148\u5c06\u8981\u67e5\u8be2\u788e\u7247\u7684\u5bf9\u8c61\u4fe1\u606f\u653e\u5728\u57fa\u7840\u8868\u91cc\uff0c\u7136\u540e\u6267\u884cEXEC_SHOW_SPACE\uff0c\u7ed3\u679c\u4fdd\u5b58\u5728\u7ed3\u679c\u8868\u91cc\uff08\u53d6\u51b3\u4e8esegment\u7684\u7ba1\u7406\u65b9\u5f0f\uff09<\/p>\n<p>[php]<br \/>\n&#8212; Create table \u57fa\u7840\u6570\u636e\u8868<br \/>\ncreate table SHOW_SPACE_TABLE<br \/>\n(<br \/>\nowner VARCHAR2(30 BYTE),<br \/>\nsegment_name VARCHAR2(81),<br \/>\nsegment_type VARCHAR2(18),<br \/>\npartition_name VARCHAR2(30 BYTE)<br \/>\n);<\/p>\n<p>&#8212; Create table \u5b58\u653e\u7ed3\u679c\u8868<br \/>\ncreate table SHOW_SPACE_TABLE_REPORT<br \/>\n(<br \/>\nsegment_name VARCHAR2(300),<br \/>\nsegment_type VARCHAR2(300),<br \/>\nunformatted_blocks NUMBER,<br \/>\nunformatted_bytes NUMBER,<br \/>\nfs1_blocks NUMBER,<br \/>\nfs1_bytes NUMBER,<br \/>\nfs2_blocks NUMBER,<br \/>\nfs2_bytes NUMBER,<br \/>\nfs3_blocks NUMBER,<br \/>\nfs3_bytes NUMBER,<br \/>\nfs4_blocks NUMBER,<br \/>\nfs4_bytes NUMBER,<br \/>\nfull_blocks NUMBER,<br \/>\nfull_bytes NUMBER,<br \/>\npartition_name VARCHAR2(300),<br \/>\nowner VARCHAR2(300),<br \/>\nchk_date DATE,<br \/>\nid NUMBER(8)<br \/>\n);<\/p>\n<p>&#8212; Create table \u5b58\u653e\u7ed3\u679c\u8868<br \/>\ncreate table SHOW_FREE_BLOCKS_REPORT<br \/>\n(<br \/>\nsegment_owner VARCHAR2(30),<br \/>\nsegment_name VARCHAR2(30),<br \/>\nsegment_type VARCHAR2(30),<br \/>\nfreelist_group_id NUMBER,<br \/>\nfree_blks NUMBER,<br \/>\npartition_name VARCHAR2(30),<br \/>\nchk_date DATE,<br \/>\nid NUMBER(8)<br \/>\n);<\/p>\n<p>&#8212; Create table \u5b58\u653e\u9519\u8bef\u4fe1\u606f<br \/>\ncreate table BI_ERROR_RECORD_LSQ<br \/>\n(<br \/>\nerror_id NUMBER(16) not null,<br \/>\nerror_code NUMBER(10),<br \/>\nerror_msg VARCHAR2(2000 BYTE),<br \/>\nerror_date DATE,<br \/>\nerror_program VARCHAR2(200 BYTE)<br \/>\n);<\/p>\n<p>&#8211;\u5e8f\u5217<br \/>\ncreate sequence SEQ_SHOW_FREE_BLOCKS_REPORT<br \/>\nminvalue 1<br \/>\nmaxvalue 999999999999999999999999999<br \/>\nstart with 1<br \/>\nincrement by 1<br \/>\ncache 20;<\/p>\n<p>create sequence SEQ_SHOW_SPACE_TABLE_REPORT<br \/>\nminvalue 1<br \/>\nmaxvalue 999999999999999999999999999<br \/>\nstart with 1<br \/>\nincrement by 1<br \/>\ncache 20;<\/p>\n<p>create sequence SEQ_BI_ERROR_RECORD<br \/>\nminvalue 1<br \/>\nmaxvalue 9999999999999999<br \/>\nstart with 1<br \/>\nincrement by 1<br \/>\ncache 20;<\/p>\n<p>&#8211;\u5b58\u50a8\u8fc7\u7a0b<br \/>\nCREATE OR REPLACE PROCEDURE SAVE_ERROR_INFO(IN_SQLCODE BI_ERROR_RECORD.ERROR_CODE%TYPE,<br \/>\nIN_MSG BI_ERROR_RECORD.ERROR_MSG%TYPE,<br \/>\nIN_PROGRAM BI_ERROR_RECORD.ERROR_PROGRAM%TYPE) AS<br \/>\nBEGIN<br \/>\n\/* \u4fdd\u5b58\u9519\u8bef\u4fe1\u606f *\/<br \/>\nINSERT INTO BI_ERROR_RECORD_LSQ<br \/>\n(ERROR_ID, ERROR_CODE, ERROR_MSG, ERROR_DATE, ERROR_PROGRAM)<br \/>\nVALUES<br \/>\n(SEQ_BI_ERROR_RECORD.NEXTVAL, IN_SQLCODE, IN_MSG, SYSDATE, IN_PROGRAM);<br \/>\nEND SAVE_ERROR_INFO;<\/p>\n<p>CREATE OR REPLACE PROCEDURE SHOW_SPACE(V_SEGMENT_OWNER IN VARCHAR2,<br \/>\nV_SEGMENT_NAME IN VARCHAR2,<br \/>\nV_SEGMENT_TYPE IN VARCHAR2,<br \/>\nV_PARTITION_NAME IN VARCHAR2 DEFAULT NULL)<br \/>\nAUTHID CURRENT_USER AS<br \/>\nP_SEGMENT_NAME VARCHAR2(30);<br \/>\nP_SEGMENT_OWNER VARCHAR2(30);<br \/>\nP_SEGMENT_TYPE VARCHAR2(30);<br \/>\nP_PARTITION_NAME VARCHAR2(30);<br \/>\nP_SPACE VARCHAR2(30);<\/p>\n<p>L_UNFORMATTED_BLOCKS NUMBER;<br \/>\nL_UNFORMATTED_BYTES NUMBER;<br \/>\nL_FS1_BLOCKS NUMBER;<br \/>\nL_FS1_BYTES NUMBER;<br \/>\nL_FS2_BLOCKS NUMBER;<br \/>\nL_FS2_BYTES NUMBER;<br \/>\nL_FS3_BLOCKS NUMBER;<br \/>\nL_FS3_BYTES NUMBER;<br \/>\nL_FS4_BLOCKS NUMBER;<br \/>\nL_FS4_BYTES NUMBER;<br \/>\nL_FULL_BLOCKS NUMBER;<br \/>\nL_FULL_BYTES NUMBER;<\/p>\n<p>L_FREE_BLKS NUMBER;<br \/>\nL_TOTAL_BYTES NUMBER;<br \/>\nL_UNUSED_BLOCKS NUMBER;<br \/>\nL_UNUSED_BYTES NUMBER;<br \/>\nL_LASTUSEDEXTFILEID NUMBER;<br \/>\nL_LASTUSEDEXTBLOCKID NUMBER;<br \/>\nL_LAST_USED_BLOCK NUMBER;<br \/>\nV_PROGRAM VARCHAR2(30) := &#8216;SHOW_SPACE_TABLE&#8217;;<\/p>\n<p>BEGIN<br \/>\n\/* \u8c03\u7528\u7cfb\u7edfDBMS *\/<br \/>\nP_SEGMENT_NAME := UPPER(V_SEGMENT_NAME);<br \/>\nP_SEGMENT_OWNER := UPPER(V_SEGMENT_OWNER);<br \/>\nP_SEGMENT_TYPE := UPPER(V_SEGMENT_TYPE);<br \/>\nP_PARTITION_NAME := UPPER(V_PARTITION_NAME);<\/p>\n<p>EXECUTE IMMEDIATE &#8216;select ts.segment_space_management from dba_segments seg, dba_tablespaces ts where seg.segment_name = :p_segname and (:p_partition is null or seg.partition_name = :p_partition) and seg.owner = :p_owner and seg.tablespace_name = ts.tablespace_name&#8217;<br \/>\nINTO P_SPACE<br \/>\nUSING P_SEGMENT_NAME, P_PARTITION_NAME, P_PARTITION_NAME, P_SEGMENT_OWNER;<br \/>\nIF P_SPACE = &#8216;AUTO&#8217; THEN<br \/>\nDBMS_SPACE.SPACE_USAGE(SEGMENT_OWNER =&gt; P_SEGMENT_OWNER,<br \/>\nSEGMENT_NAME =&gt; P_SEGMENT_NAME,<br \/>\nSEGMENT_TYPE =&gt; P_SEGMENT_TYPE,<br \/>\nUNFORMATTED_BLOCKS =&gt; L_UNFORMATTED_BLOCKS,<br \/>\nUNFORMATTED_BYTES =&gt; L_UNFORMATTED_BYTES,<br \/>\nFS1_BLOCKS =&gt; L_FS1_BLOCKS,<br \/>\nFS1_BYTES =&gt; L_FS1_BYTES,<br \/>\nFS2_BLOCKS =&gt; L_FS2_BLOCKS,<br \/>\nFS2_BYTES =&gt; L_FS2_BYTES,<br \/>\nFS3_BLOCKS =&gt; L_FS3_BLOCKS,<br \/>\nFS3_BYTES =&gt; L_FS3_BYTES,<br \/>\nFS4_BLOCKS =&gt; L_FS4_BLOCKS,<br \/>\nFS4_BYTES =&gt; L_FS4_BYTES,<br \/>\nFULL_BLOCKS =&gt; L_FULL_BLOCKS,<br \/>\nFULL_BYTES =&gt; L_FULL_BYTES,<br \/>\nPARTITION_NAME =&gt; P_PARTITION_NAME);<br \/>\nINSERT INTO SHOW_SPACE_TABLE_REPORT<br \/>\n(ID,<br \/>\nOWNER,<br \/>\nSEGMENT_NAME,<br \/>\nSEGMENT_TYPE,<br \/>\nUNFORMATTED_BLOCKS,<br \/>\nUNFORMATTED_BYTES,<br \/>\nFS1_BLOCKS,<br \/>\nFS1_BYTES,<br \/>\nFS2_BLOCKS,<br \/>\nFS2_BYTES,<br \/>\nFS3_BLOCKS,<br \/>\nFS3_BYTES,<br \/>\nFS4_BLOCKS,<br \/>\nFS4_BYTES,<br \/>\nFULL_BLOCKS,<br \/>\nFULL_BYTES,<br \/>\nPARTITION_NAME,<br \/>\nCHK_DATE)<br \/>\nVALUES<br \/>\n(SEQ_SHOW_SPACE_TABLE_REPORT.NEXTVAL,<br \/>\nP_SEGMENT_OWNER,<br \/>\nP_SEGMENT_NAME,<br \/>\nP_SEGMENT_TYPE,<br \/>\nL_UNFORMATTED_BLOCKS,<br \/>\nL_UNFORMATTED_BYTES,<br \/>\nL_FS1_BLOCKS,<br \/>\nL_FS1_BYTES,<br \/>\nL_FS2_BLOCKS,<br \/>\nL_FS2_BYTES,<br \/>\nL_FS3_BLOCKS,<br \/>\nL_FS3_BYTES,<br \/>\nL_FS4_BLOCKS,<br \/>\nL_FS4_BYTES,<br \/>\nL_FULL_BLOCKS,<br \/>\nL_FULL_BYTES,<br \/>\nP_PARTITION_NAME,<br \/>\nSYSDATE);<br \/>\nCOMMIT;<\/p>\n<p>ELSE<\/p>\n<p>DBMS_SPACE.FREE_BLOCKS(SEGMENT_OWNER =&gt; P_SEGMENT_OWNER,<br \/>\nSEGMENT_NAME =&gt; P_SEGMENT_NAME,<br \/>\nSEGMENT_TYPE =&gt; P_SEGMENT_TYPE,<br \/>\nFREELIST_GROUP_ID =&gt; 0,<br \/>\nPARTITION_NAME =&gt; P_PARTITION_NAME,<br \/>\nFREE_BLKS =&gt; L_FREE_BLKS);<br \/>\n\/*P(&#8216;Free Blocks&#8217;, L_FREE_BLKS);*\/<br \/>\nINSERT INTO SHOW_FREE_BLOCKS_REPORT<br \/>\n(ID,<br \/>\nSEGMENT_OWNER,<br \/>\nSEGMENT_NAME,<br \/>\nSEGMENT_TYPE,<br \/>\nFREELIST_GROUP_ID,<br \/>\nFREE_BLKS,<br \/>\nPARTITION_NAME,<br \/>\nCHK_DATE)<br \/>\nVALUES<br \/>\n(SEQ_SHOW_FREE_BLOCKS_REPORT.NEXTVAL,<br \/>\nP_SEGMENT_OWNER,<br \/>\nP_SEGMENT_NAME,<br \/>\nP_SEGMENT_TYPE,<br \/>\n&#8216;0&#8217;,<br \/>\nL_FREE_BLKS,<br \/>\nP_PARTITION_NAME,<br \/>\nSYSDATE);<br \/>\nCOMMIT;<br \/>\nEND IF;<\/p>\n<p>EXCEPTION<br \/>\nWHEN OTHERS THEN<br \/>\nROLLBACK;<br \/>\nSAVE_ERROR_INFO(SQLCODE,<br \/>\n&#8216;\u788e\u7247\u72b6\u6001:&#8217; || P_SEGMENT_NAME || P_PARTITION_NAME ||<br \/>\n&#8216;,\u9519\u8bef\u4fe1\u606f:&#8217; || SQLERRM,<br \/>\nV_PROGRAM);<br \/>\nCOMMIT;<\/p>\n<p>END;<\/p>\n<p>CREATE OR REPLACE PROCEDURE EXEC_SHOW_SPACE<br \/>\n AUTHID CURRENT_USER AS<\/p>\n<p>BEGIN<br \/>\n\/* \u5faa\u73af\u8c03\u7528\u5b58\u50a8\u8fc7\u7a0b *\/<br \/>\n FOR C1 IN (SELECT EE.OWNER,<br \/>\n EE.SEGMENT_NAME,<br \/>\n EE.SEGMENT_TYPE,<br \/>\n EE.PARTITION_NAME<br \/>\n FROM SHOW_SPACE_TABLE EE) LOOP<br \/>\n SHOW_SPACE(C1.OWNER,<br \/>\n C1.SEGMENT_NAME,<br \/>\n C1.SEGMENT_TYPE,<br \/>\n C1.PARTITION_NAME);<br \/>\n END LOOP;<\/p>\n<p>END;<br \/>\n[\/php]<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148\u5c06\u8981\u67e5\u8be2\u788e\u7247\u7684\u5bf9\u8c61\u4fe1\u606f\u653e\u5728\u57fa\u7840\u8868\u91cc\uff0c\u7136\u540e\u6267\u884cEXEC_S &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[4],"tags":[],"class_list":["post-35","post","type-post","status-publish","format-standard","hentry","category-4"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7zRbQ-z","_links":{"self":[{"href":"https:\/\/www.lisq.net\/index.php?rest_route=\/wp\/v2\/posts\/35","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lisq.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lisq.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lisq.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lisq.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=35"}],"version-history":[{"count":4,"href":"https:\/\/www.lisq.net\/index.php?rest_route=\/wp\/v2\/posts\/35\/revisions"}],"predecessor-version":[{"id":40,"href":"https:\/\/www.lisq.net\/index.php?rest_route=\/wp\/v2\/posts\/35\/revisions\/40"}],"wp:attachment":[{"href":"https:\/\/www.lisq.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=35"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lisq.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=35"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lisq.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}