我希望在我们现有的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应用程序中引入了某种形式的日志记录,如何实现它,特别是如何控制它,我真的很想听听您的经验.
朋友们,
我通过另一个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调用?
是吗?还是我完全错过了这一点?
我已经使用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) 朋友们,
我正在使用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) 朋友们,
如果我想了解Oracle 11gR2数据库的新功能,我可以使用" 新功能指南".
是否有这样的指南列出了我不应再使用的功能,功能,参数等,因为它们已被取代或弃用?
如果没有这样的指南,我怀疑,你怎么做才能找出下一版本数据库中已弃用的内容?
在我的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
提前致谢.

我正在学习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) 我想让一个文本项不可见.在属性我没有找到这个功能,我将文本项目调整到非常小的尺寸,但它仍然可见.
我无法删除该项目,因为我需要它.
在表格中有数据,就像这一样
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次.现在需要交换/更改/更新苹果到橙色和橙色到苹果.
oracle ×7
oracle10g ×4
sql ×3
oracleforms ×2
plsql ×2
api ×1
django ×1
django-1.6 ×1
eclipse ×1
mysql ×1
oracle-apex ×1
oracle11g ×1
os.path ×1