标签: oracle9i

如何判断Oracle中的物化视图是否正在使用?

我们的Oracle 9i数据库中有一些物化视图,这些视图是很久以前由一个不再在这里工作的人创建的.是否有一种简单(或任何)方法来确定Oracle是否使用这些视图来提供查询?如果它们不再被使用,我们想要摆脱它们.但是我们不想发现这些观点是允许一些随机报告在不到几个小时内运行的事实.我梦想的答案就像是

SELECT last_used_date FROM dba_magic
WHERE materialized_view_name = 'peters_mview'
Run Code Online (Sandbox Code Playgroud)

更棒的是可以告诉我实际的SQL查询使用物化视图的东西.我意识到我可能不得不满足于此.

如果有一个需要10g的解决方案,我们很快就会升级,所以这些答案也会很有用.

oracle materialized-views oracle9i

1
推荐指数
1
解决办法
3192
查看次数

FOR循环中的上限不会在循环中改变,为什么?

我试图改变For循环中上限的值,但循环运行直到在起始中定义的上限.

根据逻辑循环应该是无限的,因为v_num的值总是先于i,但循环执行三次.请解释

这是代码

    DECLARE
    v_num number:=3;
    BEGIN
        FOR i IN 1..v_num LOOP
           v_num:=v_num+1;
           DBMS_OUTPUT.PUT_LINE(i ||'  '||v_num);
     END LOOP;
    END;
Ouput Coming

    1  4
    2  5
    3  6
Run Code Online (Sandbox Code Playgroud)

plsql oracle9i plsqldeveloper

1
推荐指数
1
解决办法
246
查看次数

Oracle数据库偶尔需要手动重启

首先,我要说我的Oracle知识很少.

我们有一个专有的应用程序,可以将数据存储到Oracle 9.2数据库中.我只使用这个软件,因此Oracle每3个月左右.问题是,似乎由于不活动,我将不得不使用以下命令启动数据库/实例:

conn sys as sysdba
<enter password>
startup
Run Code Online (Sandbox Code Playgroud)

如果我在几周内没有使用服务器,我就不必这样做了.我只是好奇这笔交易是什么?这不是什么大不了的事,但它是我可以解决的问题,还是我想解决它?也许这是安全的事情?这种不活动设置在哪里,如果它是什么?

我最感兴趣的是理解,所以信息越多越好.谢谢!

oracle oracle9i

1
推荐指数
1
解决办法
221
查看次数

针对日期列的Oracle SQL Where子句

我有一个DATE列,其中包含日期,但我需要查询它以查找不到30天的记录.

START_DATE
----------
01-AUG-2010
09-AUG-2010
22-AUG-2010
09-SEP-2010
Run Code Online (Sandbox Code Playgroud)

查询:

SELECT START_DATE
 WHERE START_DATE < 30;
Run Code Online (Sandbox Code Playgroud)

我知道在ORACLE SQL中查询很简单,但我做错了.

sql oracle oracle10g oracle9i date-arithmetic

1
推荐指数
1
解决办法
2万
查看次数

插入选择继续错误

我有一些使用的sql脚本

INSERT INTO secondtable 
  (field, field1)
SELECT field, field2 
  FROM table;
Run Code Online (Sandbox Code Playgroud)

我使用oracle 9.x和sqldevelopper.

当我启动它们时,在某些插入上选择我得到外键错误.所以他们没有插入那些工作的人.

当错误出现并且可能显示或记录错误时,是否可以说oracle继续相同?

sql oracle error-handling insert oracle9i

1
推荐指数
1
解决办法
1674
查看次数

Oracle查询未正确显示日期

在Oracle中,列类型为= DATE的表中有一个列(dateColumn)select * from table. ,当我执行以下操作时,特定记录的值显示为'10/03/2010' :

SELECT * 
  FROM table 
 WHERE dateColumn < '01-JAN-11'
Run Code Online (Sandbox Code Playgroud)

什么都没有出现.当我做:

SELECT * 
  FROM table 
 WHERE dateColumn > '01-JAN-11'
Run Code Online (Sandbox Code Playgroud)

记录出现了.为什么这样做?"2010年10月10日"是第10届MArch 2010,所以显然是<2011年1月1日.

sql oracle oracle9i

1
推荐指数
1
解决办法
352
查看次数

在SQL查询中使用CASE语句的意外结果(oracle DB)

我有这个问题

SELECT  
   CASE WHEN EXISTS (SELECT PARM_VALUE 
                       FROM BO_PARM  
                      WHERE (ENTE_CD = '7316') 
                        AND PARM_CD = 'PAGINAZIONE_PROMOZIONI')  
        THEN p2.PARM_VALUE 
        ELSE p1.PARM_VALUE 
    END as RIGHE 
  FROM
       (SELECT PARM_VALUE 
          FROM BO_PARM  
         WHERE (ENTE_CD = '0000' OR ENTE_CD = 'XXXX') 
           AND PARM_CD = 'PAGINAZIONE_PROMOZIONI') p1,
       (SELECT PARM_VALUE 
          FROM BO_PARM  
         WHERE (ENTE_CD = '7316') 
           AND PARM_CD = 'PAGINAZIONE_PROMOZIONI') p2
Run Code Online (Sandbox Code Playgroud)

基本上我想在第二个查询至少有一行时返回第二个查询的值,否则返回第一个查询的结果.现在这些是返回值:

SELECT PARM_VALUE 
  FROM BO_PARM  
  WHERE (ENTE_CD = '7316') 
    AND PARM_CD = 'PAGINAZIONE_PROMOZIONI' //No retrun

SELECT PARM_VALUE 
  FROM BO_PARM  
 WHERE (ENTE_CD = '0000' OR ENTE_CD …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle9i

1
推荐指数
1
解决办法
536
查看次数

Shell脚本中的SQL*PLUS连接问题

我们可以在shell脚本中有多个SQL*PLUS连接吗?

我编写了一个shell脚本,使用SQL*PLUS的COPY命令将表的数据从一个数据库复制到另一个数据库.我没有权限创建Database Link所以,我正在使用COPY命令.

我需要复制大约50个表的数据.当数据集很小时,它会运行并复制所有表的数据.但是当数据集很大时,它会卡住,并且我会在unix机器中获得会话非活动消息.

我考虑拆分语句并将其写成如下:但我收到错误"SP2-0042:未知命令"END1" - 其余行被忽略." 和"SP2-0042:未知命令"END" - 其余行被忽略."

#!/bin/bash
export ORACLE_HOME=/ora00/app/oracle/product/9.2.0.8
export PATH=$PATH:$ORACLE_HOME/bin

args=$#

if [ $args == 1 ]
then
    echo "Shell script started"
else
    echo "Wrong number of arguments"
exit 1  
fi

time_start=`date +%H%M%S`
echo $time_start

    sqlplus -s srcUN/srcPwd@srcSID <<END1       
    COPY from srcUN/srcPwd@srcSID to dstUN/dstPwd@dstSID INSERT tab1 USING SELECT * FROM tab1 WHERE col1 = $1;
    COPY from srcUN/srcPwd@srcSID to dstUN/dstPwd@dstSID INSERT tab2 USING SELECT * FROM tab2 WHERE col1 = $1;
    END1

    sqlplus -s srcUN/srcPwd@srcSID …
Run Code Online (Sandbox Code Playgroud)

oracle shell sqlplus oracle9i

1
推荐指数
1
解决办法
3629
查看次数

打印执行的COMMITTED行数和/或命令数

在Oracle 9i中,在命令行程序中.如何dbms_output.put_line在前一个BEGIN和最后一个之间受影响的行数(更新/删除/插入)COMMIT

另外,如何打印已执行指令的数量(DML,DDL)?

oracle oracle9i oraclecommand

1
推荐指数
1
解决办法
956
查看次数

更改表将列添加为select语句

如何做这样的事......

alter table customer_schedule add (week_number as (TO_CHAR((SCHEDULE_DATE),'iw')) 
Run Code Online (Sandbox Code Playgroud)

其中SCHEDULE_DATE是表中现有的列之一

sql database oracle oracle9i

1
推荐指数
1
解决办法
1万
查看次数