【发布时间】:2015-09-20 11:22:32
【问题描述】:
我正在使用 DBVisualizer 导出整个架构,但它不“执行”序列。
架构中有几十个序列。如何批量导出 DDL 以生成所有序列?
谢谢!
【问题讨论】:
-
DBVisualizer 9.0 或更高版本当然可以为 Oracle 处理序列。通过 UI 或脚本。
标签: oracle oracle11g export sequence ddl
我正在使用 DBVisualizer 导出整个架构,但它不“执行”序列。
架构中有几十个序列。如何批量导出 DDL 以生成所有序列?
谢谢!
【问题讨论】:
标签: oracle oracle11g export sequence ddl
使用这个选择:
select to_char (dbms_metadata.get_ddl ('SEQUENCE', user_objects.object_name)) as ddl
from user_objects
where object_type = 'SEQUENCE'
【讨论】:
SELECT
'DROP SEQUENCE ' || sequence_owner || '.' || sequence_name || '; ' ||
'CREATE SEQUENCE ' || sequence_owner || '.' || sequence_name ||
' INCREMENT BY ' || increment_by ||
' START WITH ' || last_number ||
' MAXVALUE ' || max_value ||
' MINVALUE ' || min_value ||
CASE WHEN cycle_flag = 'N' THEN ' NO' ELSE ' ' END || 'CYCLE ' ||
CASE WHEN cache_size = 0 THEN 'NOCACHE' ELSE 'CACHE ' || cache_size END ||
CASE WHEN order_flag = 'N' THEN ' NO' ELSE ' ' END || 'ORDER;' ddl_sql
FROM
dba_sequences
WHERE
sequence_owner NOT IN
(
'ANONYMOUS',
'APEX_030200',
'APEX_PUBLIC_USER',
'APPQOSSYS',
'AQ_ADMINISTRATOR_ROLE',
'ARCSERVE',
'CONNECT',
'CTXSYS',
'DATAPUMP_EXP_FULL_DATABASE',
'DATAPUMP_IMP_FULL_DATABASE',
'DBA',
'DBAMON',
'DBSNMP',
'DIP',
'EM_DD_ACC',
'EXFSYS',
'EXP_FULL_DATABASE',
'EXP_USR',
'FLOWS_FILES',
'IMP_FULL_DATABASE',
'JAVADEBUGPRIV',
'LOGSTDBY_ADMINISTRATOR',
'MDDATA',
'MDSYS',
'MGMT_USER',
'NAGIOS',
'OEM_ADVISOR',
'OEM_MONITOR',
'OLAPSYS',
'OLAP_DBA',
'OLAP_USER',
'ORACLE_OCM',
'ORDDATA',
'ORDSYS',
'OUTLN',
'OWB$CLIENT',
'OWBSYS',
'OWBSYS_AUDIT',
'RECOVERY_CATALOG_OWNER',
'RESOURCE',
'SCHEDULER_ADMIN',
'SCOTT',
'SI_INFORMTN_SCHEMA',
'SPATIAL_CSW_ADMIN_USR',
'SPATIAL_WFS_ADMIN_USR',
'SYS',
'SYSMAN',
'SYSTEM',
'TEST',
'TSMSYS',
'WMSYS',
'WRHSE_ETL',
'XDB'
)
ORDER BY
sequence_owner,
sequence_name
;
如果序列从一开始就不存在,则可能不需要删除它们,如果您不想忽略导入时的许多错误,则从此查询中删除该行应该可以解决该问题。 sequence_owner 您不想导出的模式序列列表可能会有所不同——我只在几个数据库上对此进行了测试。 NOT IN 列表的目的是避免不需要并且可能不应该导入的系统序列。我想如果你使用user_sequences,你可以在没有适当权限的模式上运行它。请注意,user_sequences 没有 sequence_owner 列,因为所有者是运行它的用户。
【讨论】: