当前位置:首页 » 数据仓库 » oracle数据库如何执行sql语句
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

oracle数据库如何执行sql语句

发布时间: 2022-04-04 06:59:46

㈠ oracle中怎样执行.sql文件

建议使用plsql工具来连接Oracle数据库进行表操作,这样很方便的,就像使用sqlserver一样方便

㈡ 如何将oracle数据库的sql语句执行结果保存到一个sql文件中

set feedback off heading off term off
set pages 0 trim on trims on lines 32767 long 999999
set echo off
spool result.sql
Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;
spool off
把以上部分放入一个脚本文件中再执行,会在当前目录下生成你要的文件result.sql

㈢ oracle怎么直接执行sql语句

Oracle可以使用SQL Plus进行执行,但是可视化不够,建议使用另外一个查询辅助工具PLSQL Developer,使用PLSQL Developer工具里面各种可视化都很好看出查询出数据的结果以及可以用这个工具分析SQL的执行分析。

㈣ C#怎么执行oracle数据库的SQL语句

如果是一般的查询语句,C#SQL SERVER怎么做的,和ORACLE也是一样的;2个的区别主要在于储存过程(SQL SERVER能做的和ORACLE就不能这么做,动不动就报错);我最近也在研究C#怎么调用ORACLE存储过程,但是实例太少了(只完成了插入更新操作的存储过程),查询的哪个没实现,如果你会这方面的话可以交流一下

㈤ oracle 怎么运行SQl脚本

连接数据库SQL> connect / as sysdba
运行脚本SQL> @/admin/XX.sql 这里的/adminXX.sql 是绝对路径名, linux系统的话要注意 目录权限问题,windows就不用。

㈥ Oracle数据库的sqlplus可以直接执行SQL语句吗

Oracle中的sqlplus可以执行sql语句。

执行步骤如下:

1、首先要使电脑的oracle的服务和监听处于开启状态,如图:

㈦ 如何在oracle中运行sql语句

楼上是在命令行方式下运行的。
你可以直接运行SQLPLUS,这个去你安装目录里面找吧(别说你找不着).
你如果没有修改默认密码的话,可以使用如下几个账号中的一种登录ORACLE,但它们的权限和和角色拥有的表都是不一样的。这部分你可以去查书。默认用户名和密码如下:
sys change_on_install
system manager
scott tiger
前面是用户名,空格后是密码。
有什么不明白的,请继续跟贴。。。

㈧ 如何打开oracle数据库使用sql语句

可使用第三方工具,如,plsql,可自行下载。

然后,在oracle安装目录下配置tnsname.ora文件

oracle10g为例,

路径为:~oracleproct10.2.0db_1 etworkADMIN

加入以下内容:

本地实例名=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=主机IP或主机名)(PORT=端口号))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=服务名)
)
)

然后,打开plsql,在数据库选中要连接的数据库,并填写用户名及密码

㈨ Oracle中如何定时执行一条SQL语句

通过网上查询,找到一种方案,就是先在oracle里面对要定时的sql写成存储过程,再用DBMS_scheler对存储过程进行定时执行。

在数据库中新建了一个表MY_JOB_TEST

在数据库中新建了一个表MY_JOB_TEST

在数据库中新建了一个表MY_JOB_TEST

在PLSQL中,执行下面语句模拟存储过程的调用,执行后要点提交才有反应

[sql] view plain

  • BEGIN

  • INSERTINTOMY_JOB_TEST(NUM)VALUES(1);

  • END;


  • 然后下面建立一个存储过程JOB_TEST

    (注意,这里用户需要CREATE JOB权限,可以用超级管理员用户执行下面语句给指定用户赋予该权限)

    [sql] view plain

  • GrantCreateJobTo指定用户名



  • [sql] view plain

  • SQL>CREATEORREPLACEPROCEDURE

  • JOB_TEST

  • BEGIN

  • INSERTINTOMY_JOB_TEST(NUM)VALUES(1);

  • END;


  • (此处要执行存储过程不能用exec JB_TEST,这种执行方式只能在命令行中使用)
  • 使用DBMS_SCHEDULER进行定时,这里为每分钟执行一次

    [sql] view plain

  • SQL>BEGIN

  • DBMS_SCHEDULER.CREATE_JOB(

  • job_name=>'SCHEDULER_TEST',

  • job_type=>'STORED_PROCEDURE',

  • job_action=>'JOB_TEST',

  • start_date=>sysdate,

  • repeat_interval=>'FREQ=MINUTELY;INTERVAL=1');

  • END;


  • 但是这样子定时任务并不会执行。
  • 我们可以用下面的命令查看一下scheler的状态

    [plain] view plain

  • SQL>SELECT*FROMUSER_SCHEDULER_JOBS;

  • 此时我们可以看到enable的状态是false的,因此我们需要去启动定时任务
  • [plain] view plain

  • SQL>BEGIN

  • DBMS_SCHEDULER.ENABLE('SCHEDULER_TEST');


  • dbms_scheler.enable('j_test'); --启用jobs
    dbms_scheler.disable('j_test'); --禁用jobs
    dbms_scheler.run_job('j_test'); --执行jobs
    dbms_scheler.stop_job('j_test'); --停止jobs
    dbms_scheler.drop_job('j_test'); --删除jobs


    然后再查询job的enable装态,发现为true了。

    然后查看MY_JOB_TEST表,发现每分钟会往里面添加记录。

    当需要修改定时任务或者调度的其他属性时,可以用下面的

  • dbms_scheler.set_attribute('调度名','调度属性','调度值');



  • 至此,定时任务完成。

㈩ 监听oracle数据库的执行sql语句的方法

#!/usr/bin/sh
export ORACLE_HOME=/oracle/app/proct/9.2.0
export NLS_LANG=american_america.ZHS16GBK
export PATH=$ORACLE_HOME/bin:$PATH

sqlplus -S "sasdda/asdasd@asdasd" <<EOF
set lines 180 pages 43 echo off feedback off
col sid format 99999
col event format a28
col machine format a15
col sql_text format a80
col user_name format a15
col object_name format a40
col owner format a15
col opname format a30

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select sysdate run_date from al;

select a.sid,event,wait_time "waited",seconds_in_wait "time",b.sql_address,c.sql_text
from v$session_wait a,v$session b,v$sqlarea c
where a.sid=b.sid
and b.sql_address=c.address
and (event not like 'SQL*Net%'
and event not like 'rdbms%'
and event not like '%timer%');

SELECT /*+ rule */ lpad(' ', decode(l.xisn, 0, 3, 0)) || l.oracle_username user_name,
o.owner, o.object_name, o.object_type, s.sid, s.serial#
FROM v\$locked_object l, dba_objects o, v\$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid
ORDER BY o.object_id, xisn DESC;

select /*+ rule */ decode(request, 0, 'holder:', 'waiter:') holder,
l.sid, l.id1, l.id2, l.lmode, l.request, l.type, l.ctime, l.block,q.sql_text
from v\$lock l, v\$session s, v\$sqlarea q
where l.sid=s.sid
and s.sql_address=q.address
and s.sql_hash_value=q.hash_value
and (l.id1, l.id2, l.type) in
(select id1, id2, type from v\$lock where request > 0)
order by id1, request;

select lp.sid,lp.elapsed_seconds "elapsed",lp.opname,lp.sql_address,s.sql_text
from v\$session_longops lp , v\$sql s
where lp.elapsed_seconds>5
and lp.sql_address=s.address
and time_remaining>0;

EXIT
EOF

我把我以前的sql抓取脚本发给你坐个参考,可以自己写一个crontab脚本,把上面语句甩到脚本里面,自己制定抓取语句时间就行了,如果是10g或11g的库,你自己在改一下语句。