【问题标题】:Create Tablespace Script in Oracle 10g在 Oracle 10g 中创建表空间脚本
【发布时间】:2010-01-20 15:00:52
【问题描述】:

我正在使用以下脚本生成 DDL 以在数据库中创建表空间。

select 'create tablespace ' || df.tablespace_name || chr(10)
 || ' datafile ''' || df.file_name || ''' size ' || df.bytes 
 || decode(autoextensible,'N',null, chr(10) || ' autoextend on maxsize ' 
 || maxbytes) 
 || chr(10) 
 || 'default storage ( initial ' || initial_extent 
 || decode (next_extent, null, null, ' next ' || next_extent )
 || ' minextents ' || min_extents
 || ' maxextents ' ||  decode(max_extents,'2147483645','unlimited',max_extents) 
 || ') ;' "Script To Recreate Tablespaces"
 from dba_data_files df, dba_tablespaces t
 where df.tablespace_name=t.tablespace_name;

效果很好。但是当一个表空间包含两个数据文件时,它也会使用 create tablespace 创建单独的命令。如果一个表空间包含两个数据文件,它会简单地创建两个创建表空间命令。请分享您的想法。

干杯,

Srinivasan Thirunavukkarasu。

【问题讨论】:

    标签: oracle scripting tablespace


    【解决方案1】:

    如果您只是想对现有表空间进行逆向工程以生成脚本,为什么不直接使用 DBMS_METADATA?

    select dbms_metadata.get_ddl('TABLESPACE','yourTablespaceNameOfInterest') 
    from dual;
    

    如果您想要所有这些语句,您可以使用简单的包装器为数据库中的每个表空间生成其中一个语句。

    【讨论】:

    • 嗨,我认为 DBMS_METADATA 仅在 10g 中可用。我的是9i数据库。干杯,Srinivasan Thirunavukkarasu。
    • 我很确定 9i 安装包括 DBMS_METADATA - 也许您没有软件包的权限?
    • Srinivasan,如果你问的是 9i,你为什么在问题标题中加上 10g?
    【解决方案2】:
    SET LONG 1000000
    
    select dbms_metadata.get_ddl('TABLESPACE','tablespace_name')||';' from dual;
    

    【讨论】:

      【解决方案3】:
      select 
           dbms_metadata.get_ddl('TABLESPACE',tablespace_name) 
      from
           dba_tablespaces
      ;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-27
        • 1970-01-01
        • 1970-01-01
        • 2020-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多