在Oracle DB上将JOB_QUEUE_PROCESSES更改为0会阻止Oracle作业被调度吗?
我在http://download-west.oracle.com/docs/cd/A97630_01/server.920/a96521/jobq.htm找到了一些有关它的信息,主要是以下内容:
JOB_QUEUE_PROCESSES初始化参数控制实例是否启动协调器作业队列进程.如果此参数设置为0,则在数据库启动时不会启动协调程序作业队列进程,因此不会执行任何作业队列作业.JOB_QUEUE_PROCESSES初始化参数还指定可以在实例上并发运行的最大Jnnn进程数.可指定的最大进程数为1000.
但是,我不确定"协调员工作队列"在宏观计划中代表什么.
非常感谢您及时回复.
我想要一个代码示例.
我试试这个:
DECLARE
var NUMBER;
BEGIN
/*N.B. for loop variables in pl/sql are new declarations, with scope only inside the loop */
FOR var IN 0 .. 10 LOOP
DBMS_OUTPUT.put_line(var);
END LOOP;
IF (var IS NULL) THEN
DBMS_OUTPUT.put_line('var is null');
ELSE
DBMS_OUTPUT.put_line('var is not null');
END IF;
END;
Run Code Online (Sandbox Code Playgroud)
没有输出(虽然我知道这不是一个无限循环).为什么这个不打印?
编辑:通过数据库管理器界面修复了非打印代码.
我正在尝试编写一个VB脚本来添加/编辑/删除tnsnames.ora中的一些条目.引用/修改外部文件(比如myProjectOraNames.ora)而不是修改tnsnames.ora会很方便
使用此配置(假设可能),Oracle客户端应引用现有的tnsnames.ora文件和新的myProjectOraNames.ora来获取服务详细信息.
是否有任何选项/配置可以实现此功能?
我已经创建了常规功能.它已成功创建.但是当我运行它时
select reg('awlad','01968688680','545466455','12345') from dual
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误:
ORA-14551: cannot perform a DML operation inside a query
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
CREATE OR REPLACE FUNCTION reg(
name in varchar2,
cellNo in varchar2,
voterId in varchar2,
pass in varchar2
)
RETURN NUMBER
IS
succ NUMBER;
BEGIN
succ:=0;
insert into logInfo values(loginfo_seq.nextval,cellNo,pass,0);
succ:=1;
insert into passInfo values(name,cellNo,voterId);
succ:=2;
RETURN succ;
END;
Run Code Online (Sandbox Code Playgroud) 我有2张桌子,Facilities和Services.
CREATE TABLE Facilities (
facility_id NUMBER(2) NOT NULL,
facility_name VARCHAR2(20) NOT NULL,
CONSTRAINT pk_facil_id PRIMARY KEY (facility_id)
);
CREATE TABLE Services (
service_id NUMBER(2) NOT NULL,
service_name VARCHAR(20) NOT NULL,
service_facility NUMBER(2) NOT NULL,
CONSTRAINT pk_serviceid PRIMARY KEY (service_id)
);
ALTER TABLE Services
add CONSTRAINT fk_servicefacility FOREIGN KEY(service_facility)
REFERENCES Facilities(facility_id);
Run Code Online (Sandbox Code Playgroud)
如果我尝试将记录输入"服务"表,如下所示:
INSERT INTO Services (service_id, service_name, service_facility)
SELECT 06, 'Rooms',
(SELECT facility_id, FROM Facilities WHERE facility_name = 'Hotel')
FROM Dual;
Run Code Online (Sandbox Code Playgroud)
我在7个插入语句中有3个出现错误"缺少表达式".缺少什么表达?
我正在尝试为包装奠定基础,但即使开始也遇到了麻烦.我已经成功创建了一个基本的包规范,并且只想测试包体,但是我无法编译它.规范代码是:
CREATE OR REPLACE PACKAGE synchronize_my_data
AS
PROCEDURE synchronize_data(p_run_date IN date);
END synchronize_my_data;
Run Code Online (Sandbox Code Playgroud)
这是包体代码:
CREATE OR REPLACE PACKAGE BODY synchronize_my_data
IS
PROCEDURE synchronize_data(p_run_date IN date) IS
PROCEDURE process_deletes(p_run_date IN date) IS
BEGIN
dbms_output.put_line('Run Date: ' || to_char(p_run_date, 'MM/DD/YYYY'));
END process_deletes;
BEGIN
process_deletes(p_run_date);
END synchronize_data;
END synchronize_my_data;
Run Code Online (Sandbox Code Playgroud)
我不断收到编译错误,但无法弄清楚代码有什么问题.它似乎是基本代码,我只是遗漏了一些明显的东西吗?
我有一个包含四个表的数据库。图中的关系架构如下:

以下是这些行:

现在,我正在尝试删除具有所有者ID的所有者OW1。由于id是所有者表中的主键,而其他表中的外键则不允许我删除该行。这是我尝试的SQL:
delete from owners
where ownerid = 'OW1' and petid = 'PT1'
Run Code Online (Sandbox Code Playgroud)
它返回:
ORA-02292: integrity constraint (TEST_1.ADDRESSES_OWNERS_FK) violated - child record found
而且我不允许在关系图中将删除规则设置为“ CASCADE”。请帮忙 :(
我在一个表上写了一个触发器,在某个条件下从其他表中删除数据.触发器具有pragma autonomous_transaction,触发器按预期工作.但是,我确实想知道将来是否会出现任何问题,比如说多个用户/来源同时插入数据等等......有什么建议吗?
源表t1:
--------------------------------------------
| user_id | auth_name1 | auth_name2 | data |
--------------------------------------------
| 1 | Name1 | Name2 | d1 |
| 2 | Name3 | Name4 | d2 |
| 3 | Name5 | Name1 | d3 |
--------------------------------------------
Run Code Online (Sandbox Code Playgroud)
目标表t2:
------------------------------------------------
| record_id | identifier | status | data1 |
------------------------------------------------
| 100 | Broken | 11 | Name1 |
| 101 | Reminder | 99 | Name1 |
| 102 | Broken | 99 | Name2 …Run Code Online (Sandbox Code Playgroud) 我已经创建了表项目,如下所示:
CREATE TABLE projects (
project_id NUMBER(10,0) GENERATED BY DEFAULT ON NULL AS IDENTITY ,
project_name VARCHAR2(75 CHAR) NOT NULL
Run Code Online (Sandbox Code Playgroud)
然后,我从旧的MySQL表导入数据时插入了约150,000行。MySQL具有我需要保留的现有ID号,因此我在插入过程中将ID号添加到了SQL中。现在,当我在oracle表中插入新行时,id是一个非常小的数字。您能否告诉我如何将project_id列上的计数器重置为从150,001开始,以免弄乱我现有的任何ID号?基本上我需要以下的oracle版本:
ALTER TABLE tbl AUTO_INCREMENT = 150001;
Run Code Online (Sandbox Code Playgroud)
编辑:Oracle 12c现在支持标识数据类型,允许使用不需要我们创建序列+插入触发器的自动编号主键。
解决方案:经过一些创造性的google搜索词后,我能够在oracle docs网站上找到此线程。这是更改身份下一个值的解决方案:
ALTER TABLE projects MODIFY project_id GENERATED BY DEFAULT ON NULL AS IDENTITY ( START WITH 150000);
Run Code Online (Sandbox Code Playgroud)