【问题标题】:How can I get all sequences in an Oracle database?如何获取 Oracle 数据库中的所有序列?
【发布时间】:2014-02-12 19:48:25
【问题描述】:

我可以运行任何命令来获取所有序列吗? 我正在使用 Oracle 11g。我正在使用 Toad for Oracle 连接到它。我可以直观地看到 Toad 中的序列,但我想知道它的命令行。

【问题讨论】:

    标签: sql database oracle sequence toad


    【解决方案1】:
    select sequence_owner, sequence_name from dba_sequences;
    
    
    DBA_SEQUENCES -- all sequences that exist 
    ALL_SEQUENCES  -- all sequences that you have permission to see 
    USER_SEQUENCES  -- all sequences that you own
    

    请注意,根据定义,由于您是从USER_SEQUENCES 返回的所有序列的所有者,因此USER_SEQUENCES 中没有SEQUENCE_OWNER 列。

    【讨论】:

    • 我收到以下错误:第 1 行错误 ORA-00942:表或视图不存在
    • 这个对我有用:select * from all_sequences;
    • 是的,这就是为什么我提到所有三个视图,DBA/ALL/USER_SEQUENCES。每个人都可以访问 USER_ 和 ALL_ 视图,但不一定是 DBA_ 视图。这取决于您的本地安全策略。需要明确的是,如果您无权访问 DBA_ 视图,那么您真的无法回答“我如何获取数据库中存在的所有序列?”的问题
    • USER_SEQUENCES 没有“SEQUENCE_OWNER”列,因此查询将导致select * from USER_sequences;select sequence_name from USER_sequences;
    • 没错,洛伦佐。这就是为什么我实际上提到它是我的答案。见最后一行。
    【解决方案2】:

    您可能没有 dba_sequences 的权限。所以你总是可以这样做:

    select * from user_sequences;
    

    【讨论】:

    • 不,你不能。问题是“我可以运行任何命令来获取所有序列吗?” USER_SEQUENCES 只为您提供您拥有的序列。 ALL_SEQUENCES 只为您提供您有权访问的序列。要正确(且完全)回答问题,您需要 DBA_SEQUENCES。如果您无权访问 DBA_SEQUENCES,则无法回答问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多