Oracle Study之案例--DBMS_METADATA Package应用
admin
2023-05-11 20:01:59
0

Oracle Study之案例--DBMS_METADATA Package应用

DBMS_METADATA:

      The DBMS_METADATA package provides a way for you to retrieve metadata from the database dictionary as XML or creation DDL and to submit the XML to re-create the object.

案例分析:

[oracle@RH6 ~]$ sqlplus '/as sysdba'

SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 8 14:36:29 2014

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options


14:36:29 SYS@ test1 >desc dbms_metadata

FUNCTION GET_DDL RETURNS CLOB
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 OBJECT_TYPE                    VARCHAR2                IN
 NAME                           VARCHAR2                IN
 SCHEMA                         VARCHAR2                IN     DEFAULT
 VERSION                        VARCHAR2                IN     DEFAULT
 MODEL                          VARCHAR2                IN     DEFAULT
 TRANSFORM                      VARCHAR2                IN     DEFAULT

Parameters

Table 87-8 GET_xxx Function Parameters

ParameterDescription

object_type

The type of object to be retrieved. This parameter takes the same values as the OPEN object_type parameter, except that it cannot be a heterogeneous object type. The attributes of the object type must be appropriate to the function. That is, for GET_xxx it must be a named object.

name

The object name. It is used internally in a NAME filter. (If the name is longer than 30 characters, it will be used in a LONGNAME filter.) If this parameter is NULL, then no NAME or LONGNAME filter is specifiedSee Table 87-17 for a list of filters.

schema

The object schema. It is used internally in a SCHEMA filter. The default is the current user.

version

The version of metadata to be extracted. This parameter takes the same values as the OPEN version parameter.

model

The object model to use. This parameter takes the same values as the OPEN model parameter.

transform

The name of a transformation on the output. This parameter takes the same values as the ADD_TRANSFORM name parameter. For GET_XML this must not be DDL.

通过dbms_metadata.get_ddl Procedure分析在extent management(Local or  Dictionary)不同方式下创建table的对象属性

14:50:43 SYS@ test1 >select tablespace_name,contents,extent_management from dba_tablespaces;

TABLESPACE_NAME                CONTENTS  EXTENT_MAN
------------------------------ --------- ----------
SYSTEM                         PERMANENT DICTIONARY
SYSAUX                         PERMANENT LOCAL
TEMP1                          TEMPORARY LOCAL
USERS                          PERMANENT LOCAL
UNDOTBS2                       UNDO      LOCAL
TEMP2                          TEMPORARY LOCAL
INDX                           PERMANENT LOCAL
TMP3                           TEMPORARY LOCAL
TMP4                           TEMPORARY LOCAL
TEST1                          PERMANENT LOCAL
PERFS                          PERMANENT LOCAL
DICT1                          PERMANENT DICTIONARY
TBS_16                         PERMANENT LOCAL

从以上可以看到“USERS tablespace”extent management 为local方式,"DICT1 tablespace" extent management 为dictionary方式


1)获取emp表信息(存储在USERS表空间)

14:44:14 SCOTT@ test1 >set long 5000
14:44:35 SCOTT@ test1 >set linesize 140
14:44:47 SCOTT@ test1 >set pagesize 1000
14:44:54 SCOTT@ test1 >select dbms_metadata.get_ddl('TABLE','EMP') FROM DUAL
DBMS_METADATA.GET_DDL('TABLE','EMP')
--------------------------------------------------------------------------------
  CREATE TABLE "SCOTT"."EMP"
   (    "EMPNO" NUMBER(4,0),
        "ENAME" VARCHAR2(10),
        "JOB" VARCHAR2(9),
        "MGR" NUMBER(4,0),
        "HIREDATE" DATE,
        "SAL" NUMBER(7,2),
        "COMM" NUMBER(7,2),
        "DEPTNO" NUMBER(2,0),
         CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL KEEP FLASH_CACHE DEFAULT CE
LL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"  ENABLE,
         CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")
          REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL RECYCLE FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"
  
14:44:55 SCOTT@ test1 >select dbms_metadata.get_ddl('INDEX','PK_EMP') FROM DUAL;
DBMS_METADATA.GET_DDL('INDEX','PK_EMP')
--------------------------------------------------------------------------------
  CREATE UNIQUE INDEX "SCOTT"."PK_EMP" ON "SCOTT"."EMP" ("EMPNO")
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL KEEP FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"

2)获取t1表信息(存储在DICT1表空间)

14:52:12 SCOTT@ test1 >select dbms_metadata.get_ddl('TABLE','T1') FROM DUAL;
DBMS_METADATA.GET_DDL('TABLE','T1')
--------------------------------------------------------------------------------
  CREATE TABLE "SCOTT"."T1"
   (    "ID" NUMBER(*,0),
        "NAME" VARCHAR2(10)
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 40960 NEXT 40960 MINEXTENTS 1 MAXEXTENTS 505
  PCTINCREASE 50 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEF
AULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "DICT1"

3)查看数据字典

14:58:23 SCOTT@ test1 >select table_name,TABLESPACE_NAME,PCT_FREE,PCT_USED,FREELISTS,INITIAL_EXTENT/1024,NEXT_EXTENT/1024 from user_tables;

TABLE_NAME TABLESPACE_NAME                  PCT_FREE   PCT_USED  FREELISTS INITIAL_EXTENT/1024 NEXT_EXTENT/1024
---------- ------------------------------ ---------- ---------- ---------- ------------------- ----------------
EMP        USERS                                  10                                        64             1024
T1         DICT1                                  10         40          1                  40               40

    从以上可以判断,对于存储在local管理的tablespace上的table,在创建时,Oracle默认会分配大小64k的extent,启用pct_free参数,而pct_used和freelists参数不再被使用。对于存储在dictionary管理的tablespace上的table,在创建时,Oracle默认会分配大小40k得extent,启用pct_free,pct_used,freelists参数。


相关内容

热门资讯

以军士兵集体丢掉武器抗命,大喊... 据凤凰卫视报道,以色列国防军一军事基地7月30日发生士兵抗命事件,约120名士兵抗议指挥官做法,将武...
蒋成华任商务部副部长 国务院任免国家工作人员。任命蒋成华为商务部副部长。免去蒋成华的商务部国际贸易谈判副代表职务。
伊朗驻华大使:在军事威胁下,不... 新华社北京7月31日电(记者刁慧琳) 伊朗驻华大使法兹里7月28日表示,伊美回到谈判桌的前提是美国必...
伊朗革命卫队在霍尔木兹海峡击中... 当地时间31日,伊朗伊斯兰革命卫队发布声明称,革命卫队海军当天在霍尔木兹海峡击中并扣留了两艘违反禁令...
美媒:特朗普,遇到了一个更强硬... 据《纽约时报》7月29日报道,就在特朗普总统看似放弃战事升级计划几天后,美国再次与伊朗交火。上周末,...
女子做气管镜时不幸身亡,丈夫称... 7月29日,西安刘先生反映妻子在当地医院做支气管镜检查时死亡,看监控时发现医生疑有违规操作。刘先生表...
全网“帮卖西瓜”,然后呢? 近日,河南部分地区西瓜滞销的消息在网上热度很高。很多地方也伸出援手:有景区收购千斤西瓜、免费赠予游客...
美媒:乌克兰袭击伊朗船只,险引... 据《纽约时报》7月28日报道,据伊朗和西方官员称,伊朗曾考虑攻击乌克兰的一个港口,以报复乌克兰对一艘...
20年里,他只画美女,用东方风... 迈进KIM在上海的工作室,迎面是一整墙的美女们。她们像是刚从一场时髦的沙龙里退场,或倚或立,眉宇间是...
Google在港推出AI代理G... 观点网讯:7月29日,Google在香港推出AI代理Gemini Spark,该代理可全天候在后台运...