我正在使用DBVisualizer导出整个架构,但它不会“执行”序列。
架构中有许多序列。如何批量导出DDL以生成所有序列?
谢谢!
答案 0 :(得分:3)
使用此选择:
select to_char (dbms_metadata.get_ddl ('SEQUENCE', user_objects.object_name)) as ddl
from user_objects
where object_type = 'SEQUENCE'
答案 1 :(得分:0)
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
列,因为所有者是运行它的用户。