AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-106906

Jason Krs's questions

Martin Hope
Jason Krs
Asked: 2018-04-13 14:21:32 +0800 CST

如何规避 Oracle Forms 中的 ORA-01775 循环同义词链?

  • 0

我想我有一个数据库问题...不一定是 Oracle Forms (10g)...让我解释一下...

我正在尝试实现这个 Oracle Forms Menu Security Configuration当我这样做时,它说我得到 ORA - 01775“同义词循环链”......因为我不知道是什么同义词造成了问题,我想知道你们怎么能帮我解决这个问题......也许有一个DBA脚本可以解决这个问题......

更新

Oracle 数据库跟踪日志显示罪魁祸首 SQL 是:

select ROLE GRPNAME ,FLAG GRPFLG from FRM50_ENABLED_ROLES order by ROLE desc 并且FRM50_ENABLED_ROLES是从这里的第 1 步创建的

该语句在我在 SQL*PLUS 中执行的地方正确执行

oracle
  • 1 个回答
  • 1949 Views
Martin Hope
Jason Krs
Asked: 2018-01-27 09:13:55 +0800 CST

Oracle DBAI 理论:实例崩溃后 Oracle 数据库真的不可能损坏吗?

  • 3

我正在研究一些 DBA 的东西,我遇到过实例故障/恢复。

假设用户 A执行 DML,用户 B也执行 DML。

在这一点上,我相信可以安全地假设 DB 缓冲区缓存包含更改的表块和撤消段,并且日志缓冲区包含新表块值和新撤消段值的重做信息。

  • 情况 1:没有用户发出 aCOMMIT并且 DBWn 和实例崩溃没有写入磁盘。结果:数据库未损坏。就好像他们的 DML 从未发生过一样。

  • 情况 2:只有用户 A发出 a COMMIT。用户 B未提交的更改被写入磁盘,然后实例崩溃。LGWR 将在重做日志中写入足够的数据,尤其是用户 B的撤消段,以便恢复的回滚阶段使数据库再次保持一致

  • 情况 3:没有用户发出 aCOMMIT 但他们更改的表块已经足够旧,可以让 DBWn 将它们写入磁盘。然后砰!实例崩溃。如何SMON执行回滚以清除此处数据文件中的脏块?特别是因为这里的重做日志中没有它们的撤消段值。

oracle recovery
  • 1 个回答
  • 134 Views
Martin Hope
Jason Krs
Asked: 2017-11-21 14:09:08 +0800 CST

仅限 oracle 从业者:在 11g 中发送 pdf 附件邮件时 UTL_ENCODE 失败

  • 0

经过大量的尝试和错误,我能够发送一封带有 UTL_SMPT 的电子邮件。我在下面的代码中,在以前的版本中,我使用了一个原始文件和 T_BLOB p_attach_file,它发送了一个 32 K 不可读的 PDF 作为附件。不错。但是 PDF 大于 32 K,而且我希望能够阅读它,所以我使用了原始版本的代码。但它不起作用。它说 UTL_ENCODE 在 FOR 循环中失败。

错误代码是

在此处输入图像描述

下面是我到目前为止所做的完整代码

**我读取 BLOB 的代码 **

CREATE DIRECTORY PDF_DIR as 'c:\doc\';

create table tmpblob(x varchar2(200), y blob);

DECLARE
v_file_loc BFILE;
v_diagram_loc BLOB;
v_diagram_size INTEGER;
BEGIN
  v_file_loc := BFILENAME('PDF_DIR','doc.pdf');
  v_diagram_size := DBMS_LOB.GETLENGTH(v_file_loc);
  DBMS_OUTPUT.PUT_LINE('Pdf size: ' || v_diagram_size);
  DBMS_OUTPUT.PUT_LINE('Inserting Pdf Diagram Row');
  INSERT INTO tmpblob (x,y)
  VALUES (' ', EMPTY_BLOB )
  RETURNING y INTO v_diagram_loc;
  DBMS_OUTPUT.PUT_LINE('Loading Content of PDF ');
  DBMS_LOB.LOADFROMFILE(v_diagram_loc, v_file_loc, v_diagram_size);
  COMMIT;
  EXCEPTION
  WHEN OTHERS
  THEN
  DBMS_OUTPUT.PUT_LINE('OTHERS Exception ' || sqlerrm);
END; 

DECLARE
 -- l_name images.name%TYPE := 'site_logo.gif';
  l_blob tmpblob.y%TYPE;
BEGIN
  SELECT y
  INTO   l_blob
  FROM   tmpblob;

  send_mail(p_to          => '[email protected]',
            p_from        => '[email protected]',
            p_subject     => 'Test Message',
            p_text_msg    => 'This is a test message.',
            p_attach_name => 'doc.pdf',
            p_attach_mime => 'application/pdf',
            p_attach_blob => l_blob,
            p_smtp_host   => '192.168.50.1');
END;

SEND_MAIL 过程:来源 => oracle-base

CREATE OR REPLACE PROCEDURE send_mail (p_to          IN VARCHAR2,
                                       p_from        IN VARCHAR2,
                                       p_subject     IN VARCHAR2,
                                       p_text_msg    IN VARCHAR2 DEFAULT NULL,
                                       p_attach_name IN VARCHAR2 DEFAULT NULL,
                                       p_attach_mime IN VARCHAR2 DEFAULT NULL,
                                       p_attach_blob IN BLOB DEFAULT NULL,
                                       p_smtp_host   IN VARCHAR2,
                                       p_smtp_port   IN NUMBER DEFAULT 25)
AS
  l_mail_conn   UTL_SMTP.connection;
  l_boundary    VARCHAR2(50) := '----=*#abc1234321cba#*=';
  l_step        PLS_INTEGER  := 12000; -- make sure you set a multiple of 3 not higher than 24573
BEGIN
  l_mail_conn := UTL_SMTP.open_connection(p_smtp_host, p_smtp_port);
  UTL_SMTP.helo(l_mail_conn, p_smtp_host);
  UTL_SMTP.mail(l_mail_conn, p_from);
  UTL_SMTP.rcpt(l_mail_conn, p_to);

  UTL_SMTP.open_data(l_mail_conn);

  UTL_SMTP.write_data(l_mail_conn, 'Date: ' || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || UTL_TCP.crlf);
  UTL_SMTP.write_data(l_mail_conn, 'To: ' || p_to || UTL_TCP.crlf);
  UTL_SMTP.write_data(l_mail_conn, 'From: ' || p_from || UTL_TCP.crlf);
  UTL_SMTP.write_data(l_mail_conn, 'Subject: ' || p_subject || UTL_TCP.crlf);
  UTL_SMTP.write_data(l_mail_conn, 'Reply-To: ' || p_from || UTL_TCP.crlf);
  UTL_SMTP.write_data(l_mail_conn, 'MIME-Version: 1.0' || UTL_TCP.crlf);
  UTL_SMTP.write_data(l_mail_conn, 'Content-Type: multipart/mixed; boundary="' || l_boundary || '"' || UTL_TCP.crlf || UTL_TCP.crlf);

  IF p_text_msg IS NOT NULL THEN
    UTL_SMTP.write_data(l_mail_conn, '--' || l_boundary || UTL_TCP.crlf);
    UTL_SMTP.write_data(l_mail_conn, 'Content-Type: text/plain; charset="iso-8859-1"' || UTL_TCP.crlf || UTL_TCP.crlf);

    UTL_SMTP.write_data(l_mail_conn, p_text_msg);
    UTL_SMTP.write_data(l_mail_conn, UTL_TCP.crlf || UTL_TCP.crlf);
  END IF;

  IF p_attach_name IS NOT NULL THEN
    UTL_SMTP.write_data(l_mail_conn, '--' || l_boundary || UTL_TCP.crlf);
    UTL_SMTP.write_data(l_mail_conn, 'Content-Type: ' || p_attach_mime || '; name="' || p_attach_name || '"' || UTL_TCP.crlf);
    UTL_SMTP.write_data(l_mail_conn, 'Content-Transfer-Encoding: base64' || UTL_TCP.crlf);
    UTL_SMTP.write_data(l_mail_conn, 'Content-Disposition: attachment; filename="' || p_attach_name || '"' || UTL_TCP.crlf || UTL_TCP.crlf);

    FOR i IN 0 .. TRUNC((DBMS_LOB.getlength(p_attach_blob) - 1 )/l_step) LOOP
      UTL_SMTP.write_data(l_mail_conn, UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(DBMS_LOB.substr(p_attach_blob, l_step, i * l_step + 1))));
    END LOOP;

    UTL_SMTP.write_data(l_mail_conn, UTL_TCP.crlf || UTL_TCP.crlf);
  END IF;

  UTL_SMTP.write_data(l_mail_conn, '--' || l_boundary || '--' || UTL_TCP.crlf);
  UTL_SMTP.close_data(l_mail_conn);

  UTL_SMTP.quit(l_mail_conn);
END;
/
oracle oracle-11g-r2
  • 1 个回答
  • 276 Views
Martin Hope
Jason Krs
Asked: 2017-09-14 11:19:21 +0800 CST

实体关系图和应用程序功能

  • 6

似乎我正在处理的应用程序的核心功能不过是associative entities。因此,一对多关系产生的“元数据”只会(以一种方式或另一种方式)为我们的应用程序功能提供关联实体。

现在我们有一个实体关系图 (ERD),它有很多一对多(超过 10 个表)和一个关联实体。它对那个模型或应用程序有什么看法?

它是否可改进,即,如果 ERD 被改进以添加更多关联实体,应用程序是否可以规避更多功能?

关联实体很少是否意味着应用程序的功能不会丰富?

其他注意事项

我想知道的是:如果项目范围声明导致 ERD 只有一个多对多关系和一打一对多关系,那么这是否意味着该项目没有解决很多问题(功能)只是将大量数据数字化?

我认为少了多对多,他们一开始只会镜像(除非我们为其他目的创建连接查询......)。

或者简单地说:大量的多对多关联是否意味着该软件在功能上会比较少的多对多更丰富(不包括连接查询在这个想法中)?

database-design erd
  • 1 个回答
  • 699 Views
Martin Hope
Jason Krs
Asked: 2017-01-06 23:22:36 +0800 CST

Oracle共享服务器模式下,什么是虚电路?

  • 3

我读到共享服务器模式允许调度程序进程使用两个新的 SGA 结构:队列(请求和响应)和 UGA(这只是 PGA 在 SGA 中“刷新”)

因此,单个调度程序可以处理多个客户端连接。

我的问题是我看到了一个我不明白的表达:“虚电路”。它是做什么的,它的具体位置在哪里?

oracle
  • 1 个回答
  • 831 Views
Martin Hope
Jason Krs
Asked: 2017-01-04 15:33:04 +0800 CST

为什么ORACLE缓存恢复在实例恢复时会创建未提交的块?

  • 2

以下摘自一本ORACLE书

在缓存恢复期间,Oracle 重放自上次检查点以来联机重做日志文件中的事务。在此前滚操作期间,已提交和未提交的更改都应用于数据文件。在前滚操作结束时,数据文件将具有已提交的更改、写入数据文件以释放缓冲区高速缓存空间的未提交更改以及前滚操作应用的未提交更改。一旦缓存恢复完成,就可以打开数据库。

上面粗体的句子是我不明白的。重做日志文件如何生成未提交的数据,因为它的所有信息都在 COMMIT 之后记录?

进一步说

在实例恢复的事务恢复阶段,Oracle 应用撤消块来回滚数据块中未提交的更改,这些更改要么是在实例崩溃之前写入的,要么是在缓存恢复期间由前滚操作进行的。

我知道如果在没有事先提交(如果可能的话)的情况下将脏块写入磁盘,在事务恢复期间,可以使用撤消块将它们回滚。但是如何使用撤消块来回滚在缓存恢复期间通过重放重做日志引入的未提交的更改(无论如何这些更改是什么......)?

嗯,我不明白,因为联机重做日志应该只包含已提交的信息,但在实例恢复期间会创建未提交的信息。

oracle recovery
  • 1 个回答
  • 959 Views
Martin Hope
Jason Krs
Asked: 2016-12-30 06:21:30 +0800 CST

您能帮助消除 ORACLE 时间戳与本地时区的混淆吗?

  • 1

下面是ORACLE的描述TIMESTAMP WITH LOCAL TIME ZONE

...存储在数据库中的数据被规范化为数据库时区,并且时区偏移量不作为列数据的一部分存储。当用户检索数据时,Oracle在用户的本地会话时区中返回它。

将存储在数据库中的数据标准化为数据库时区意味着什么?标准化...如何?

如果它被规范化,为什么它不与服务器的时区而不是用户的本地会话时区相应地返回......它是如何“会话”而不是“服务器”?

oracle
  • 2 个回答
  • 3988 Views
Martin Hope
Jason Krs
Asked: 2016-12-22 08:57:53 +0800 CST

Oracle 如何关闭和卸载数据库?

  • 1

我正在阅读 Oracle 12c 概念手册。然后我意识到有些事情不是“技术上”解释的。以下是第 13.2.2.2 段的摘录:

当数据库作为 SHUTDOWN 的一部分使用 ABORT 以外的任何选项关闭时,Oracle 数据库将 SGA 中的数据写入数据文件和联机重做日志文件。接下来,数据库关闭联机数据文件和联机重做日志文件…… 数据库关闭后,Oracle 数据库卸载数据库以解除其与实例的关联。

从技术上讲,我不明白上面以粗体显示的那两个句子会发生什么。有任何想法吗?

我不知道整个过程,但我相信当文件关闭时,操作系统或程序会将其从 RAM 中删除。我不能将其与上面的粗体句子完全一致。

oracle database-internals
  • 1 个回答
  • 787 Views
Martin Hope
Jason Krs
Asked: 2016-12-20 15:41:05 +0800 CST

为什么 alert.log 不在 oracle 12c (12.1.0) 中的 BACKGROUND_DUMP_DEST 指示的路径中

  • 0

只需这样做: startup open;

然后 show parameter background_dump

我机器上的 show 命令的结果是: /ora01/app/oracle/product/12.1.0/db_1/rdbms/log

所以当我去那个位置时,那里没有警报日志。

然后我去 $ORACLE_BASE/diag/rdbms/<db_name>/<oracle_sid>/trace 那里找到警报日志。

所以我的问题是为什么 Background_DUMP_DEST 不包含警报日志的正确路径?

oracle oracle-12c
  • 1 个回答
  • 4481 Views
Martin Hope
Jason Krs
Asked: 2016-09-30 03:58:24 +0800 CST

显示 con_name 在 SQLDeveloper 中不起作用

  • 0

我输入show con_name;了 sqlDeveloper,但结果是以下错误:SP2-0158: unknown SHOW option "con_name"... 其他命令也Show user; 可以正常工作。我在sqlplus中试过,没有问题。

知道这里发生了什么吗?

ps:我在 Linux 上使用 Oracle 12c

oracle oracle-sql-developer
  • 1 个回答
  • 2581 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve