因此,我们有一个运行Win 2008 R2服务器的Oracle 11g实例.虽然我知道甲骨文和微软的关系可能并不太好,但它已经到了甲骨文大约50%的内存消耗,并且永远不会释放它的情况,所以我不时会将服务退回到冲洗它.我一直试图找到是否有一种替代方法可以在不必反弹服务的情况下以某种方式释放这种记忆,但到目前为止还没有运气.
有没有其他人遇到过这种情况,并找到了通过其他手段冲洗内存的方法?任何输入将不胜感激!
以下是此实例上spfile/parameters的当前分配...如果您有基于可用内存的任何建议设置,请告诉我您需要的内容,我可以提供其他信息.非常感谢您对此的意见.
archive_lag_target integer 0
db_flashback_retention_target integer 1440
fast_start_io_target integer 0
fast_start_mttr_target integer 0
memory_max_target integer 10368319488
memory_target integer 10368319488
parallel_servers_target integer 64
pga_aggregate_target integer 0
sga_target integer 0
Run Code Online (Sandbox Code Playgroud) 我正在考虑在Oracle数据库中实现队列,基本上使用表作为队列,并且我正在尝试决定如何防止多个会话同时插入表中并弄乱排序.
是否是LOCK TABLE mytable IN EXCLUSIVE MODE阻止多个会话插入表的唯一方法?
编辑:
"队列"可能不是正确的术语.更多的列表,其中元素之间的相对顺序是重要的.我正在考虑Java的ArrayList的顺序.
在Oracle SQL中,我希望找到所有用户名,其姓氏包含一些特定字符,如('Z','X','D','F')或包含来自'A-F'的某些字符范围.
我试过这个:
SELECT user_last_name
FROM userbase
WHERE user_last_name LIKE '%A%' OR user_last_name LIKE '%F%' .
Run Code Online (Sandbox Code Playgroud)
那么我该怎么做呢.
我写了有问题的facebook,虽然它与它没有直接关系,因为它是我先生给出的例子.
更新:我尝试了上面的代码,它适用于很多OR,但我们如何定义一些范围来搜索像IN('Z','X','D','F')或IN('A- F')
为什么这会给我错误?
CREATE OR REPLACE trigger customerLineCount
BEFORE insert on cust_line
for each row
when(new.cust_id > 0)
DECLARE
lineCount number;
BEGIN
select count (*) into lineCount
from (cust_line inner join customer
on cust_line.cust_id = customer.cust_id)
where (customer.cust_id = :new.cust_id)
if :new.gender = "m" and lineCount = 3 THEN
dbms_output.put_line ('Error! User already has 3 lines');
elseif :new.gender = "f" and lineCount = 1 THEN
dbms_output.put_line ('Error! User already has 1 line');
end if;
END customerLineCount;
/
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我需要一个具有以下条件的查询.
我有以下列的表
任何人都可以告诉我如何为这种情况编写SQL查询?
我有一个包含两个变量的包,它们具有如下常量值.
person_name CONSTANT VARCHAR2 (15) := 'Adam';
person_city CONSTANT VARCHAR2 (15) := 'Houston';
Run Code Online (Sandbox Code Playgroud)
这个包变量在我的数据库中用于存储过程,其他包等.
现在我希望这些变量具有基于正在调用的客户端服务器的值.我把所有这些都保存在如下表格中
Server Parameter Value
Server1 person_name Adam
Server1 person_city Houston
Server2 person_name Victor
Server2 person_city Dallas
Run Code Online (Sandbox Code Playgroud)
因此,当从server1引用/调用package/SP时,我希望我的person_name和person_city默认为Adam和Houston.类似地,当从server2引用/调用包/ SP时,我希望我的person_name和person_city是Victor和Dallas.
如何才能做到这一点?无论如何在oracle方面,调用特定SP或使用包变量的客户端?我写了一个函数来获取如下的值.
in package,
person_name CONSTANT VARCHAR2 (15) :=GETPARAMVALUE(person_name);
person_city CONSTANT VARCHAR2 (15) :=GETPARAMVALUE(person_city);
Run Code Online (Sandbox Code Playgroud)
在函数中,我将查询表
select * from parameterstable where parameter = (function's input) and servername = ????
Run Code Online (Sandbox Code Playgroud)
我怎么知道这里的服务器名称?
任何帮助/提示将不胜感激.谢谢
我第一次运行查询时,运行了 17 分钟。我第二次运行它时,性能没有改变。但是当我第二天早上运行它时,查询只在一秒钟内运行。
我的问题在这里:
为什么性能发生了变化?
鉴于数据库缓存数据,我如何衡量查询真正需要多长时间运行?
如果数据存储在缓冲区缓存中,如何在不使用数据库管理员帐户的情况下清除缓存?
我曾尝试克隆该表并用与旧表相同的数据填充它,但查询仍然运行得更快。
我正在使用SQL和PL/SQL.
我有一个单列"名称"的表.此列中的数据是以分号分隔的字符串.我想计算每一行中的元素数量.
例如,如果表中有两行,一行的字符串为"smith; black; tiger",另一行的字符串为"x; y",我希望查询的结果为第一行的3和2为第二排.
如何编写一个SQL查询来计算单独的值列表中的元素数量?
oracle ×8
sql ×5
concurrency ×1
insert ×1
memory-leaks ×1
oracle10g ×1
oracle11g ×1
package ×1
performance ×1
plsql ×1
regex ×1
triggers ×1