Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 将10G升级为11g清单_Oracle_Oracle11g_Oracle10g_Upgrade - Fatal编程技术网

Oracle 将10G升级为11g清单

Oracle 将10G升级为11g清单,oracle,oracle11g,oracle10g,upgrade,Oracle,Oracle11g,Oracle10g,Upgrade,10g平台上有大量的存储过程。(近500个SP) 每个SP可能有循环、提取等功能 我想问一下,是否有一种很酷的方法来控制当前运行在10g上的所有SP,并保证它在11G上工作 我有一个开发服务器1,它是10g,另一个开发服务器是11g。 我可以用它们来证明上述建议 例如,我知道在10g上,如果使用循环,那么在循环期间update语句不会影响循环数据,而是影响11g。 我可能需要考虑更多的情况。如果你有什么高明的想法,请告诉我,否则我会一个接一个地手动检查,时间很长,有时人的控制可能很弱 重要提示:

10g平台上有大量的存储过程。(近500个SP) 每个SP可能有循环、提取等功能

我想问一下,是否有一种很酷的方法来控制当前运行在10g上的所有SP,并保证它在11G上工作

我有一个开发服务器1,它是10g,另一个开发服务器是11g。 我可以用它们来证明上述建议

例如,我知道在10g上,如果使用循环,那么在循环期间update语句不会影响循环数据,而是影响11g。 我可能需要考虑更多的情况。如果你有什么高明的想法,请告诉我,否则我会一个接一个地手动检查,时间很长,有时人的控制可能很弱


重要提示:据说,如果您从一个或多个表中选择一些数据,并且在循环中使用这些数据,那么在反循环过程中,如果您在循环大小写之间更新并提交,则会影响游标中选定的数据。(@11g),但在@10g版本中不会发生这种情况。如果你听到这样的话,请纠正我

案例

CREATE TABLE vty_musteri(
  musterino    NUMBER  NOT NULL,
  subeadi      VARCHAR2(61),
  kayitzamani  VARCHAR2(20)
);

INSERT INTO vty_musteri (musterino, subeadi, kayitzamani )
  VALUES (12345, 'AMSTERDAM', '05/30/2012 15:11:13');
COMMIT;



CREATE UNIQUE INDEX vty_musteri_idx ON vty_musteri (musterino);

SELECT * FROM vty_musteri;


CREATE OR REPLACE PROCEDURE krd_upd_silseomusteri_sp(RC1 in out  SYS_REFCURSOR) AS
  v_musterino NUMBER := 12345;

BEGIN

 OPEN RC1 FOR
    SELECT  m.musterino, m.subeadi, m.kayitzamani
      FROM vty_musteri m
     WHERE m.musterino = v_musterino;


   update vty_musteri
     set subeadi     = 'PORTO',
         kayitzamani = (SELECT TO_CHAR(SYSDATE, 'MM/DD/YYYY HH24:MI:SS')
                          FROM dual)
   where musterino = v_musterino;

  COMMIT;
毕竟,在PLSQL上运行此测试:

    DECLARE
       --test
       vRecTip   SYS_REFCURSOR;
       TYPE vRecTipK IS RECORD(
          musterino   NUMBER,
          subeadi     VARCHAR2(61),
          kayitzamani VARCHAR2(20)

          );
       v_SeoTip vRecTipK;
    BEGIN

       krd_upd_silseomusteri_sp(rc1 => vRecTip);

       IF vRecTip%ISOPEN THEN
          LOOP
             FETCH vRecTip
                INTO v_SeoTip;
             EXIT WHEN vRecTip%NOTFOUND;

             dbms_output.put_line('The Value : ' || v_SeoTip.musterino || ' - ' || v_SeoTip.subeadi || ' - ' || v_SeoTip.kayitzamani);

          END LOOP;
       END IF;
       COMMIT;
    END;   
END;
如果你在10g上运行,你会看到阿姆斯特丹,但在11G上,它是波尔图

修复它;我在sp中添加了如下提示:

  SELECT /*+ full(m)*/ m.musterino, m.subeadi, m.kayitzamani

这不是很奇怪吗?任何获得阿姆斯特丹的替代建议?

基本PLSQL结构的工作原理应该完全相同。以下列出了一些陷阱:


基本PLSQL结构的工作原理应该完全相同。以下列出了一些陷阱:


在迁移过程中,我们偶然发现了一件事,那就是那些本不应该在10.x上工作的查询(但无论如何都是这样的)在11.x上不再工作

如果查询中有歧义的列引用,则会发生这种情况

大概是这样的:

SELECT name,
       f.some_col,
       b.other_col
FROM foo f, 
  JOIN bar b ON f.id = b.fid
如果两个表中都存在列
name
,则10.x将运行该语句-这是一个错误


这个bug(BugID:6760937)已经修复,并使语句(正确地)在11.x中失败。我们在迁移过程中偶然发现的一件事是,本不应该在10.x上工作的查询(但无论如何)在11.x上不再工作

如果查询中有歧义的列引用,则会发生这种情况

大概是这样的:

SELECT name,
       f.some_col,
       b.other_col
FROM foo f, 
  JOIN bar b ON f.id = b.fid
如果两个表中都存在列
name
,则10.x将运行该语句-这是一个错误

这个bug(BugID:6760937)已经修复,并在11.x中使语句(正确地)失败

修复它;我在sp中添加了如下提示:

选择/+完整(m)/m.musterino、m.subeadi、m.Kayizamani

修复它;我在sp中添加了如下提示:


选择/+full(m)/m.musterino、m.subeadi、m.kayizamani

最近我已经完成了到Oracle 11g的迁移。他几乎没有遇到什么前所未有的问题。我写了一篇关于这个的博客文章。看看。

最近我已经完成了到Oracle 11g的迁移。他几乎没有遇到什么前所未有的问题。我写了一篇关于这个的博客文章。看看。

你真的应该为你的应用程序准备一个测试套件。如果你发布了一个在10g和11g中表现不同的测试用例示例,我们可能会提供一些帮助。从你的解释中不清楚你在描述什么问题。我把它放在上面。请参阅添加的注释。您应该为您的应用程序准备一个测试套件。如果您发布了一个在10g和11g中表现不同的测试用例示例,我们可能会提供一些帮助。从你的解释中不清楚你在描述什么问题。我把它放在上面。请参阅添加的注释。据说,如果您从一个或多个表中选择一些数据,并且如果您在循环中使用这些数据,那么在反循环过程中,如果您在循环大小写之间进行更新和协调,则会影响光标中的所选数据。(@11g),但在@10g版本中不会发生这种情况。如果你听到这样的话,请纠正我…据说如果你从一个或多个表中选择一些数据,并且如果你在循环中使用它,那么在反循环过程中,如果你在循环大小写之间更新和协调,它会影响游标中所选的数据。(@11g),但在@10g版本中不会发生这种情况。如果你听到这样的话,请纠正我。。。