小编Ian*_*ter的帖子

PL/SQL日志记录 - 如何控制?

我希望在我们现有的Oracle应用程序中引入一个日志框架来替换DBMS_OUTPUT的使用.

该框架将主要用于帮助调试,并将详细说明诸如启动x过程,参数细节,结束过程x等等.它还应具有为所有或仅一个程序单元,各种级别的跟踪打开的功能实际上什么是标准的日志记录功能.

实现这些要求应该相对简单,但是我希望您的帮助是如何最好地关闭此功能.我想要实现的是在关闭跟踪时可能遇到的最小性能.希望大多数时候都应该这样!

由于应用程序使用10g版本2,我最初喜欢在条件编译中包装日志记录机制的外观,以便在正常操作期间甚至看不到日志记录框架.不幸的是,我不得不勉强放弃这个想法,因为大多数应用程序是使用独立的程序和函数构建的,因此启用日志记录功能可能会使大量代码无效.

我已经看了几个现有的opensource和其他框架\功能的灵感:

log4plsql(http://log4plsql.sourceforge.net/)

APC 在这里的审查 特别是在可接受的影响下让我关注.

OraLog项目(http://oralog.sourceforge.net)

自2007年以来没有更新

PL/VISION(这里)

看起来很旧,自Oracle 8i以来没有变化?

问汤姆仪器(这里)

更新01/04/2014 Tom Kyte现在推荐Tyler Muth的Logger

如果您已经在Oracle应用程序中引入了某种形式的日志记录,如何实现它,特别是如何控制它,我真的很想听听您的经验.

oracle instrumentation plsql oracle10g

20
推荐指数
2
解决办法
3万
查看次数

了解Table和Transaction API之间的差异

朋友们,

我通过另一个SO问题找到的Ask Tom 线程提到了Table和Transactional API,我试图理解它们之间的区别.

表API(TAPI)是无法访问基础表的地方,并且有"getters"和"setter"来获取信息.

例如,要选择一个地址,我会:

   the_address := get_address(address_id);
Run Code Online (Sandbox Code Playgroud)

代替:

   select the_address
   from some_table
   where identifier = address_id
Run Code Online (Sandbox Code Playgroud)

然后要更改地址,我将调用另一个负责更改的TAPI:

   ...
   change_address(address_id, new_address);
   ...
Run Code Online (Sandbox Code Playgroud)

事务API(XAPI)再次没有直接访问权限来修改表中的信息,但我可以从中进行选择?(这是我的理解有点朦胧的地方)

要选择一个地址我会:

   select the_address
   from some_table
   where identifier = address_id
Run Code Online (Sandbox Code Playgroud)

然后改变它我会打电话

   ...
   change_address(address_id, new_address);
   ...
Run Code Online (Sandbox Code Playgroud)

因此,我可以在TAPI和XAPI之间看到的唯一区别是从数据库中检索记录的方法,即Select与PL/SQL调用?

是吗?还是我完全错过了这一点?

oracle api plsql design-patterns

11
推荐指数
2
解决办法
4747
查看次数

在PL/SQL中完成问题的解决方案在SQL中会是什么样子?

我已经使用PL/SQL和SQL编写了一个问题解决方案,我不禁想到它可以在SQL中100%完成,但我正在努力开始.

这是两个表的结构(如果有帮助,创建它们的脚本就在问题的最后)

表t1(主键是显示的两列)

ID    TYPE
1     A
1     B
1     C

2     A
2     B

3     B
Run Code Online (Sandbox Code Playgroud)

Type列是表T2的外键,其中包含以下数据:

表t2(主键是Type)

Type    Desc
A       xx

B       xx

C       xx
Run Code Online (Sandbox Code Playgroud)

因此,鉴于T1中的数据,我需要的结果是:

对于ID 1,因为它具有外键表中的所有类型,我将返回文字"全部"

对于ID 2,因为它有两种类型我想返回"A&B"(注意分隔符)

最后对于ID 3,因为它有一种类型,我只想返回"B"

正如这里所承诺的那样,脚本可以创建所有提到的对象.

create table t2(type varchar2(1),
                description varchar2(100)
                )                
/

insert into t2
values ('A', 'xx')
/

insert into t2
values ('B', 'xx')
/

insert into t2
values ('C', 'xx')
/

alter table t2 add constraint t2_pk primary key (type)
/

create table t1 (id number(10),
                 type …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle10g

7
推荐指数
1
解决办法
577
查看次数

使用Oracle SQL生成嵌套XML

朋友们,

我正在使用Oracle 10g,我需要使用以下xml格式的SQL从表生成结果:

<RESULTS>
    <ROW>
        <EMPNO>7839</EMPNO>
        <ENAME>KING</EMPNO>
        <SUBROWS>
            <ROW>
                <EMPNO>7369</EMPNO>
                <ENAME>SMITH</EMPNO>
                ... Rest of the EMP table records
                excluding KING
            </ROW>
        </SUBROWS>
    </ROW>
</RESULTS>
Run Code Online (Sandbox Code Playgroud)

规则是显示在外部行中选择的记录,子行应包含除外部行中显示的记录之外的所有其他记录.记录没有层次结构.

在上面的示例中,在外部行中选择了King,因此子行应包含来自emp的所有记录,不包括King.

这个查询给了我需要的结果集:

select e.empno,
       e.ename,
       cursor(select empno,
                     ename
              from emp where empno <> 7839) 
from emp e 
where empno = 7839
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用以下方法从此生成XML时:

select xmlelement("RESULTS",
           xmlagg(xmlelement("ROW",
                      xmlelement("EMPNO", empno),
                      xmlelement("ENAME", ename),
                          cursor(SELECT xmlagg(xmlelement("SUBROWS",  xmlelement("ROW",
                                                     xmlelement("EMPNO", empno),
                                                     xmlelement("ENAME", ename)
                                                                                )
                                                           )
                                               )
                                  FROM emp 
                                  WHERE empno <> 7839
                                  )                            
                            )

                 )
                 )                 
from emp 
where empno = 7839 …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle10g

7
推荐指数
1
解决办法
2万
查看次数

将Oracle Forms转换为Apex - 是否值得考虑Apex Forms迁移工具?

朋友们,

我正在考虑将Oracle Forms(10g)应用程序迁移到APEX(3.2.1),并查看可以让我进入可以在APEX中获得Oracle表单"第一次切割"的阶段的选项.

通过阅读本指南以及本附录并掌握了几个示例表单(最终在修改xml文件以创建应用程序之后),我们必须掌握Forms迁移工具.转换的结果令人失望.通过在Apex中从头开始开发页面,我可以更快地获得更好的结果.

我很欣赏Apex Forms迁移工具处于初期阶段,我正在使用第一个版本,但除了一些伪项目管理功能之外,我很难看到使用它的任何好处.

我错过了什么吗?有没有人能够使用这个工具来达到可接受的结果?

提前致谢.

oracleforms oracle10g oracle-apex

5
推荐指数
1
解决办法
3088
查看次数

您如何在新版本的Oracle中找到已弃用的功能?

朋友们,

如果我想了解Oracle 11gR2数据库的新功能,我可以使用" 新功能指南".

是否有这样的指南列出了我不应再使用的功能,功能,参数等,因为它们已被取代或弃用?

如果没有这样的指南,我怀疑,你怎么做才能找出下一版本数据库中已弃用的内容?

oracle oracle11g

5
推荐指数
1
解决办法
3053
查看次数

如何设置STATIC_ROOT和MEDIA_ROOT所以使用的路径不是硬编码的?

在我的settings.py文件中STATIC_ROOT,MEDIA_ROOT两者当前都指向硬编码位置.例如,STATIC_ROOT路径是:

/home/ian/projectname/mysite/appname/static
Run Code Online (Sandbox Code Playgroud)

我知道在部署项目时会出现问题.

环顾四周,我可以看到我需要利用,os.path但无数的例子让我困惑.

我试图查看设置此文件的不同排列(或获取用于设置BASE_DIR的示例值)但是因为屏幕截图显示我遗漏了一些东西,因为它抱怨文件值.

如果需要我使用Django 1.6

提前致谢.

在此输入图像描述

django django-settings os.path django-1.6

5
推荐指数
1
解决办法
3995
查看次数

Eclipse启动时出错,现在我的包浏览器为空

我正在学习Java,使用Head First Java书和Eclipse的组合.一切顺利,直到今晚!

当我今晚开始使用Eclipse时,我看到了一条错误消息,我没有注意(我知道!我知道!)并且确认之后项目资源管理器是空的,它曾用于包含我的Head First项目!

快速"谷歌"后,我找到了workspace.metadata.log,错误如下所示.

我使用的Eclipse版本是:20100218-1602,我使用的唯一插件是egit.

任何帮助将非常感激.

!SESSION 2010-06-08 19:24:33.841 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.5.0_22
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_GB
Framework arguments:  -product org.eclipse.epp.package.java.product
Command-line arguments:  -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.java.product

!ENTRY org.eclipse.ui.workbench 4 2 2010-06-08 19:24:36.475
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.ui.workbench".
!STACK 1
org.eclipse.ui.WorkbenchException: Content is not allowed in prolog.
    at org.eclipse.ui.XMLMemento.createReadRoot(XMLMemento.java:121)
    at org.eclipse.ui.XMLMemento.createReadRoot(XMLMemento.java:64)
    at org.eclipse.ui.internal.Workbench$49.run(Workbench.java:1895)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.ui.internal.Workbench.restoreState(Workbench.java:1890)
    at org.eclipse.ui.internal.WorkbenchConfigurer.restoreState(WorkbenchConfigurer.java:183)
    at org.eclipse.ui.application.WorkbenchAdvisor$1.run(WorkbenchAdvisor.java:781)
Caused by: org.xml.sax.SAXParseException: Content is …
Run Code Online (Sandbox Code Playgroud)

eclipse

4
推荐指数
1
解决办法
7643
查看次数

如何使项目在Oracle Forms中不可见?

我想让一个文本项不可见.在属性我没有找到这个功能,我将文本项目调整到非常小的尺寸,但它仍然可见.

我无法删除该项目,因为我需要它.

oracle oracleforms

2
推荐指数
1
解决办法
6838
查看次数

在oracle中的同一列中交换名称

在表格中有数据,就像这一样

ID      NAME
1   Apple
2   Apple
3   Apple
4   orange
5   orange
6   orange
7   Apple
8   Apple
9   Apple
10  orange
11  orange
12  orange
Run Code Online (Sandbox Code Playgroud)

数据可能超过1000次.现在需要交换/更改/更新苹果到橙色和橙色到苹果.

mysql sql oracle

2
推荐指数
1
解决办法
53
查看次数