ITPub博客

首页 > 数据库 > 数据库开发技术 > 利用dbms_metadata包获取对象元数据

利用dbms_metadata包获取对象元数据

原创 数据库开发技术 作者:shadowfalao 时间:2007-06-14 17:41:55 0 删除 编辑

dbms_metadata是oracle提供的从数据字典中获取数据库对象元数据(也就是对象的原始定义)的包。在这以前DBA还可以通过创建自定义SQL来获取对象定义,这个包的出现可以大大减少我们的工作。这个包提供了很多有用的工具,10g对这个包进行了更新加强,增加了许多新功能。

常用的过程有dbms_metadata.get_ddl或dbms_metadata.get_xml(对象定义语句以XML的格式返回), 还可以利用dbms_granted_ddl或dbms_granted_xml获取对象的权限信息

获取tablespace定义

SQL> set linesize 200
SQL> set pagesize 990
SQL> set long 1000
SQL> select dbms_metadata.get_ddl('TABLESPACE',tablespace_name) from dba_tablespaces;

DBMS_METADATA.GET_DDL('TABLESP
--------------------------------------------------------------------------------

CREATE TABLESPACE "SYSTEM" DATAFILE
'/u02/oradata/idctest/test/datafile/o1_mf_system_3142lbps_.dbf' SIZE 262144000
AUTOEXTEND ON NEXT 10485760 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT MANUAL

CREATE UNDO TABLESPACE "UNDOTBS1" DATAFILE
'/u02/oradata/idctest/test/datafile/o1_mf_undotbs1_3142lbq6_.dbf' SIZE 209715200
AUTOEXTEND ON NEXT 10485760 MAXSIZE 32767M
BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE

..........

获取用户定义

SQL> select dbms_metadata.get_ddl('USER',username) from dba_users;

DBMS_METADATA.GET_DDL('USER',U
--------------------------------------------------------------------------------

CREATE USER "HR" IDENTIFIED BY VALUES '01C6FA40E1437B28'
DEFAULT TABLESPACE "HRD"
TEMPORARY TABLESPACE "TEMP"

CREATE USER "OSC" IDENTIFIED BY VALUES '1EAF99B140949974'
DEFAULT TABLESPACE "OSCD"
TEMPORARY TABLESPACE "TEMP"

CREATE USER "SYSMAN" IDENTIFIED BY VALUES '447B729161192C24'
DEFAULT TABLESPACE "SYSAUX"
TEMPORARY TABLESPACE "TEMP"
................

................

获取表的定义

SQL> select dbms_metadata.get_ddl('TABLE','TEST') from dual;

DBMS_METADATA.GET_DDL('TABLE',
--------------------------------------------------------------------------------

CREATE TABLE "IQUEWEB"."TEST"
( "A" CHAR(4),
"B" VARCHAR2(10),
"ADDRESS" VARCHAR2(200)
) 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 DEFAULT)
TABLESPACE "USERS"

获取权限定义

SQL> select dbms_metadata.get_granted_ddl('SYSTEM_GRANT') from dual;

DBMS_METADATA.GET_GRANTED_DDL(
--------------------------------------------------------------------------------

GRANT UNLIMITED TABLESPACE TO "IQUEWEB"

SQL> select dbms_metadata.get_granted_ddl('OBJECT_GRANT') from dual;

DBMS_METADATA.GET_GRANTED_DDL(
--------------------------------------------------------------------------------

GRANT DELETE ON "INTERINFO"."IQUE_USER_BASE" TO "IQUEWEB"

GRANT INSERT ON "INTERINFO"."IQUE_USER_BASE" TO "IQUEWEB"

GRANT SELECT ON "INTERINFO"."IQUE_USER_BASE" TO "IQUEWEB"

GRANT UPDATE ON "INTERINFO"."IQUE_USER_BASE" TO "IQUEWEB"

GRANT SELECT ON "INTERINFO"."IQUE_USER" TO "IQUEWEB"

GRANT REFERENCES ON "INTERINFO"."IQUE_FIN_PROJECT" TO "IQUEWEB"

GRANT SELECT ON "INTERINFO"."IQUE_FIN_PROJECT" TO "IQUEWEB"

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/129805/viewspace-918881/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: tns-12541错误解决
请登录后发表评论 登录
全部评论

注册时间:2009-12-18

  • 博文量
    45
  • 访问量
    444893