【问题标题】:Attempting to install utPLSQL 3.1.10尝试安装 utPLSQL 3.1.10
【发布时间】:2020-12-20 21:13:09
【问题描述】:

我从 github 下载了 utPLSQL.zip,解压缩了存档,打开了与 zip 捆绑在一起的用户指南,并开始按照手动安装过程进行操作。

我正在使用 Oracle 18c XE、SQL Developer 20.2 和 utPLSQL 3.1.10。 我正在使用sqlplus执行脚本,使用命令登录:sqlplus '/ as sysdba'

前三个脚本运行良好:

@create_utplsql_owner.sql <schema name> <password> users;
@install.sql <schema name>;
@install_ddl_trigger.sql <schema name>

第四个脚本:

@create_synonyms_and_grants_for_public.sql <schema name>;

失败,但有以下例外: 在用户 PUBLIC 的模式中为 UTPLSQL 对象创建同义词 为 .ut 创建公共同义词 ut * 第 1 行的错误: ORA-00955: 名称已被现有对象使用

有人遇到过这种情况吗? 我尝试恢复到 utPLSQL 3.1.9 但遇到了同样的问题...

谢谢!

【问题讨论】:

  • 错误很明显。在运行脚本之前删除同义词。

标签: oracle utplsql


【解决方案1】:

我第一次安装 utPLSQL 失败了。 我删除了打算用作测试存储库的模式, 这就是这个特殊问题开始的时候。

深入研究 utPLSQL 安装脚本和一些 Oracle 文档,我发现删除模式不会从 DBA_SYNONYMS 表中删除所述模式的公共同义词。

运行安装脚本:install.sql 创建几个同义词,所有者在哪里。

运行安装脚本:create_synonyms_and_grants_for_public.sql 创建大量公共同义词。

删除架构以重置和重新安装 utPLSQL 只会删除所有者所在的同义词 - 必须手动删除公共同义词。 该脚本完成了这项工作并允许进行全新安装:

declare
    sqq varchar2(250);
    v_code varchar2(250);
    v_errm varchar2(250);

    cursor del_syns is
        SELECT synonym_name
        FROM DBA_SYNONYMS
        WHERE table_owner = 'C##UNIT_TEST_REPOSITORY';

begin

  FOR syn_name IN del_syns
  LOOP
    sqq := 'drop public synonym ' || syn_name.synonym_name || ' force';
    dbms_output.put_line(sqq);
    execute immediate sqq;
  END LOOP;

EXCEPTION
    when others then
        v_code := SQLCODE;
        v_errm := SUBSTR(SQLERRM, 1, 64);
        DBMS_OUTPUT.PUT_LINE ('------- Error code ' || v_code || ': ' || v_errm);

end;

【讨论】:

    【解决方案2】:

    请按照这些说明在您的系统上安装 utPLSQL 3.1.10。

    1. 解压文件夹后,转到名为 SOURCE 的文件夹并在 SQL Developer 中打开 create_utplsql_owner.sql(您可以简单地将该文件拖到已打开的 SQL Developer Worksheet 和用户架构中系统数据库)。您可以按F5,脚本将执行以下代码并要求您插入utPLSQL的新架构所有者的名称,默认输入ut3,第二个输入是密码(ut3),第三个是表空间:默认是用户。
    2. 转到 install.sql 文件,拖到 SQL Developer 并按 F5
    3. create_synonyms_and_grants_for_public.sql 这个脚本将允许您与其他用户共享框架, 如果你想在另一个用户模式上运行 utPLSQL,你可以使用 create_user_grants.sqlcreate_user_synonyms (第一个参数是所有者 UT3,第二个是可以执行框架功能的用户,如 UT3 用户)。
    4. 安装框架后,连接到 UT3 架构并编写此代码以检查框架是否安装成功。 - 测试 执行 ut.run(); 如果您看到类似程序已成功完成,而您看不到实际输出,则可以通过设置 set serveroutput on 来解决该问题;

    希望我的解释对你有帮助,请写反馈或询问是否有任何误解:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-14
      • 2014-01-02
      • 2015-03-10
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多