如何查找某个对象的定义(V$_X$_DBA)[7]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 lunar2000 的 blog

emp                                      comm                                     number(22)
emp                                      deptno                                   number(22)
salgrade                                 grade                                    number(22)
salgrade                                 losal                                    number(22)
salgrade                                 hisal                                    number(22)

19 rows selected

sql>

从oracle 9i开始,可以使用dbms_metadata.get_ddl来找到对象的定义,例如:

sql> @c:\temp\get_obj_sql.sql
sql> set heading off echo off pages 10000 long 90000
输入 object_type 的值:  table
输入 object_name 的值:  emp
输入 object_owner 的值:  lunar
原值    1: select dbms_metadata.get_ddl(upper('&object_type'),upper('&object_name'),upper('&object_o
wner')) from dual
新值    1: select dbms_metadata.get_ddl(upper('table'),upper('emp'),upper('lunar')) from dual


  create table "lunar"."emp"
   (    "empno" number(4,0) not null enable,
        "ename" varchar2(10),
        "job" varchar2(9),
        "mgr" number(4,0),
        "hiredate" date,
        "sal" number(7,2),
        "comm" number(7,2),
        "deptno" number(2,0)
   ) 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 "system"

 

sql>

注意,这个查询是需要临时表空间的,所以如果临时表空间不够查询就会有问题了:
sql> @c:\temp\get_obj_sql.sql
sql> set heading off echo off pages 10000 long 90000
输入 object_type 的值:  table
输入 object_name 的值:  dept
输入 object_owner 的值:  lunar
原值    1: select dbms_metadata.get_ddl(upper('&object_type'),upper('&object_name'),upper('&object_o
wner')) from dual
新值    1: select dbms_metadata.get_ddl(upper('table'),upper('dept'),upper('lunar')) from dual
error:
ora-25153: 临时表空间为空
ora-06512: 在"sys.dbms_lob", line 424
ora-06512: 在"sys.dbms_metadata", line 557
ora-06512: 在"sys.dbms_metadata", line 1221
ora-06512: 在line 1

 

未选定行

sql>
sql> select name from v$tempfile;

未选定行

sql> select name from v$tablespace;

name
------------------------------
system
undotbs1
temp
indx
users

sql> alter temporary tablespace temp add tempfile 'd:\oracle92\oradata\test1\temp01.dbf' size 10m;
alter temporary tablespace temp add tempfile 'd:\oracle92\oradata\test1\temp01.dbf' size 10m
      *
error 位于第 1 行:
ora-00940: 无效的 alter 命令


本文关键:如何查找某个对象的定义(V$_X$_DBA)
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top