我在linux上的deb文件中安装了Oracle 10g xe,然后开始使用这个终端命令对其进行配置
sudo /etc/init.d/oracle-xe configure
但是在完成配置后我忘记了密码,所以当我使用上一个命令时,如何在重新安装后重新配置它
已配置Oracle数据库10g快捷版
谢谢,
我正在使用Oracle数据库,我对Drop和Purge命令有点困惑.事实上,对我来说,两者都做同样的事情.从数据库中删除带有模式的表.这两者之间的主要区别是什么?
我试图在oracle 10g数据库中创建一个简单的触发器.这个创建触发器的脚本运行干净.
CREATE OR REPLACE TRIGGER newAlert
AFTER INSERT OR UPDATE ON Alerts
BEGIN
INSERT INTO Users (userID, firstName, lastName, password) VALUES ('how', 'im', 'testing', 'this trigger')
END;
/
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时:
INSERT INTO Alerts(observationID, dateSent, message, dateViewed) VALUES (3, CURRENT_TIMESTAMP, 'Alert: You have exceeded the Max Threshold', NULL);
Run Code Online (Sandbox Code Playgroud)
要激活触发器,我收到以下错误消息:
ORA-04098:触发器'JMD.NEWALERT'无效且重新验证失败(受影响的0行)
我不明白什么导致这个错误.你知道导致这个错误的原因吗?或者为什么会这样?
先感谢您!
-大卫
我最好找一个SQL查询来完成这个,但其他选项也可能有用.
让我先解释一下这个设置.
我们有一台运行在2GB RAM机器上的oracle服务器.Db实例的init参数"sessions"设置为160.
我们在Websphere 6.1上部署了该应用程序.连接池设置为Min 50和Max 150.
当我们在40个用户上运行Load test(并发,使用jMeter)时,一切都很顺利.但是当我们将concurent用户增加到Beyond 60时,Oracle会抛出异常,因为它不在会话中.
我们检查了应用程序是否有任何连接泄漏,但找不到任何连接泄漏.
那么它是否意味着40的并发性是这个设置可以采取的?增加Oracle会话/进程是获得更高并发性的唯一方法吗?
连接池中的数据库会话和连接到底有何关联?根据我的理解,连接不能超过会话,因此将Max Connection池设置为多于会话可能并不重要.那是对的吗 ?
我希望在我们现有的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中创建临时表,但我希望保持干燥.
到目前为止,这就是我所拥有的:
标题:
CREATE OR REPLACE PACKAGE TEST AS
TYPE MEASURE_RECORD IS RECORD (
L4_ID VARCHAR2(50),
L6_ID VARCHAR2(50),
L8_ID VARCHAR2(50),
YEAR NUMBER,
PERIOD NUMBER,
VALUE NUMBER
);
TYPE MEASURE_TABLE IS TABLE OF MEASURE_RECORD;
FUNCTION GET_UPS(
TIMESPAN_IN IN VARCHAR2 DEFAULT 'MONTLHY',
STARTING_DATE_IN DATE,
ENDING_DATE_IN DATE
) RETURN MEASURE_TABLE;
END TEST;
Run Code Online (Sandbox Code Playgroud)
身体:
CREATE OR REPLACE PACKAGE BODY TEST AS
FUNCTION GET_UPS (
TIMESPAN_IN IN VARCHAR2 DEFAULT 'MONTLHY',
STARTING_DATE_IN DATE,
ENDING_DATE_IN DATE
) RETURN MEASURE_TABLE IS
T MEASURE_TABLE;
BEGIN
SELECT ...
INTO T …Run Code Online (Sandbox Code Playgroud) 如何使用sqlplus for Oracle 10g查看存储过程的代码?
当我输入时:
desc daily_update;
Run Code Online (Sandbox Code Playgroud)
它显示了参数,但是当我尝试执行以下操作时:
select * from all_source where name = 'daily_update';
Run Code Online (Sandbox Code Playgroud)
我明白了
没有选择任何行
我究竟做错了什么?
我每次执行程序时都在执行JDBC批量插入(一次插入大约1000行).但是我无法正确处理某些记录引发的异常.
假设,1000条记录中的第100条记录因为数据无效或某些值的大小超出列大小而抛出异常.一旦发生异常,其余的记录就不会被插入,程序就会失败.
我想要的是即使第100条记录抛出异常,其余的插入也应该在我的程序结束之前照常进行.
我无法理解如何实现这一目标.请建议.
编辑:
这是我在我的应用程序中用于批量插入的示例代码.假设结果集有大约1000条记录.
PreparedStatement ps = null;
while(rs.next()){
//Retrieve the value and set it to a Prepared statement
String name = rs.getString("Name");
int age = rs.getInt("Age");
ps.setInt(1, age);
ps.setString(2, name);
//Finally invoke addBatch
ps.addBatch();
}
//Finally call the executeBatch method
ps.executeBatch();
Run Code Online (Sandbox Code Playgroud)
如果第100条记录抛出异常,那么我想仅从第100条第1000条记录触发该进程.是否有某种方式来做到这一点,这样我可以重新开始从中抛出异常的记录过程中起直到再次结束了吗?怎么做到这一点?
在MS SQL Server中,如果我想检查存储过程的结果,我可能会在Management Studio中执行以下操作.
--SQL SERVER WAY
exec sp_GetQuestions('OMG Ponies')
Run Code Online (Sandbox Code Playgroud)
结果窗格中的输出可能如下所示.
ID Title ViewCount Votes
----- ------------------------------------------------- ---------- --------
2165 Indexed View vs Indexes on Table 491 2
5068 SQL Server equivalent to Oracle’s NULLS FIRST 524 3
1261 Benefits Of Using SQL Ordinal Position Notation? 377 2
(3 row(s) affected)
Run Code Online (Sandbox Code Playgroud)
无需编写循环或PRINT语句.
要在Oracle中执行相同的操作,我可能会在SQL Developer中执行以下匿名块
--ORACLE WAY
DECLARE
OUTPUT MYPACKAGE.refcur_question;
R_OUTPUT MYPACKAGE.r_question;
USER VARCHAR2(20);
BEGIN
dbms_output.enable(10000000);
USER:= 'OMG Ponies';
recordCount := 0;
MYPACKAGE.GETQUESTIONS(p_OUTPUT => OUTPUT,
p_USER=> USER,
) ;
DBMS_OUTPUT.PUT_LINE('ID | …Run Code Online (Sandbox Code Playgroud)