我有点理解物化观点并且之前曾与他们合作过.最近出现了一个问题,为什么特定的报告没有显示最新的数据,我调查了这个问题.显然,他们之前有一个临时表加载了crontab并稍后切换到物化视图.
当我使用以下查询查看数据库时(表的名称已更改):
SELECT * FROM all_objects WHERE object_name = 'TEMP_DATA';
Run Code Online (Sandbox Code Playgroud)
这实际上显示了同一模式中的两个对象:一个表和另一个物化视图
OWNER OBJECT_NAME OBJECT_TYPE DATA_OBJECT_ID LAST_DDL_TIME TIMESTAMP
SCHEMA TEMP_DATA TABLE 110623 08/06/2013 15:38 2013-08-06:14:53:01
SCHEMA TEMP_DATA MATERIALIZED VIEW 10/30/2015 00:00 2013-08-06:14:56:33
Run Code Online (Sandbox Code Playgroud)
并且,当我尝试更改表重命名时,它表示物化视图无法重命名.
我的问题是,物化视图是否实际上创建了一个具有相同名称的表,如果是这样,当我在SELECT哪里做数据来自(表或MView)?
或者它只是早期的剩余表?如果是这样,Oracle是否允许具有相同名称的不同类型的对象?(我真的很难过,因为我认为每个对象都必须有一个独特的名字!).
而且好奇,如果它们是2个对象,则在下面的SQL中使用哪一个:
SELECT * FROM TEMP_DATA;
Run Code Online (Sandbox Code Playgroud)
任何洞察它,非常感谢.
更新基于@Alex和@Husqvik的回复:在Mview定义中,我看到如下:
BUILD IMMEDIATE
REFRESH COMPLETE
START WITH TO_DATE('06-Nov-2015','dd-mon-yyyy')
NEXT trunc(sysdate) + 1
WITH PRIMARY KEY
Run Code Online (Sandbox Code Playgroud)
这是否意味着它应该每天更新(明天这里)?START WITH会在明天更新后改为07年11月吗?
并且,它会自动刷新吗?如果是,它什么时候刷新?
有没有什么可以阻止它刷新,因为用户抱怨他们没有在使用这个MView的报告中看到最新的数据,这就是为什么我首先要看这个?
这是MView的完整DDL:
DROP MATERIALIZED VIEW SCHEMA.TEMP_DATA;
CREATE MATERIALIZED VIEW SCHEMA.TEMP_DATA
TABLESPACE ITS_DATASPACE
PCTUSED 0
PCTFREE 10
INITRANS …Run Code Online (Sandbox Code Playgroud) 我想了解PBNI的必要性.我想接受你的看法.我看到它是在Java JNI之后制作的.使用Java具有的安全模型,我可以理解他们为什么需要JNI.
但是使用PB,我们不能访问所有的Windows API吗?此外,我们总是可以调用外部DLL中的函数.有了这个,单独的PBNI需要什么?我知道,我在这里遗漏了一些东西.什么类型的应用程序/库将使用PBNI作为简单的DLL或Activex组件.
此外,我正在使用PB 10.这是继续在11和12及以后?
我感谢您对此技术的任何反馈,意见或建议.再次感谢您的投入.
山姆
我正在重构一个用PowerBuilder和Java编写的现有应用程序,它运行在Sybase EA Server(Jaguar)上.我正在构建一个小框架来包装EA Server中可用的Jaguar API函数.其中一个类是使用Monitoring该类从EA Server获取运行时统计信息.
MonitoringEA Service API中的一个类提供了Jaguar运行时监控统计信息(实际的类是C++; EA Server在Java中为这些提供了包装,因此可以通过CORBA访问它们),而不需要太多细节.
以下是我班级的简化版本.(我创建了一个超类,我继承了它来获取组件,连接缓存,HTTP等的统计信息).
public class JagMonCompStats {
...
public void dumpStats(String type, String entity) {
private String type = "Component";
private String entity = "web_business_rules";
private String[] header = {"Active", "Pooled", "invoke"};
// This has a lot more keys, simplified for this discussion
private static short[] compKeys = {
(short) (MONITOR_COMPONENT_ACTIVE.value),
(short) (MONITOR_COMPONENT_POOLED.value),
(short) (MONITOR_COMPONENT_INVOKE.value)
};
private double[] data = null;
...
/* Call to Jaguar API */ …Run Code Online (Sandbox Code Playgroud)