精华内容
下载资源
问答
  • 只有update无法执行,其他语句可以执行,其实是因为记录锁导致的,在oracle数据库中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关闭连接,oracle就会将这条提交的记录锁住。可通过下面两步...

    原因:

    只有update无法执行,其他语句可以执行,其实是因为记录锁导致的,在oracle数据库中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关闭连接,oracle就会将这条提交的记录锁住。可通过下面两步解决:

    1、查询锁定记录

    SELECT s.sid, s.serial# FROM v$locked_object lo, dba_objects ao, v$session s WHERE ao.object_id = lo.object_id AND lo.session_id = s.sid;

    2、删除锁定记录

    ALTER system KILL session 'sid,serial#';

    OK问题解决。

    展开全文
  • Oracle数据库update语句执行卡住

    千次阅读 2018-07-12 13:23:10
    问题开发的时候debug到一条update的sql语句时...原因和解决方法这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制...


    问题

    开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果。但是奇怪的是执行其他的select语句却是可以执行的。

    原因和解决方法

    这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关闭连接,oracle就会将这条提交的记录锁住。由于我的java程序中加了事务,之前debug到一半的时候我强制把工程终止了,这样就导致没有执行事务提交,所以oracle将代码中update那一条的记录锁了。可通过下面两步解决:

    1.首先查询锁定记录

    SELECT s.sid, s.serial# FROM v$locked_object lo, dba_objects ao, v$session s WHERE ao.object_id = lo.object_id AND lo.session_id = s.sid; 
    • 1

    2.然后删除之

    ALTER system KILL session 'SID,serial#'
    展开全文
  • 在实际工作中,一张表,我们可能...本篇文章,以Mysql数据库表为原表,通过PowerDesigner工具将其转化成Oracle数据库建表语句。 1、以 student(学生表)为例,Mysql数据库中建表语句如下所示。需要注意的是,...

     

          在实际工作中,一张表,我们可能需要在Mysql数据库中建表,又要在Oracle数据库中建表。表中每个字段的数据类型、中文注释、是否可为NULL 问题,非常影响我们建表的效率。本篇文章,以Mysql数据库表为原表,通过PowerDesigner工具将其转化成Oracle数据库建表语句。

     

    1、以 student(学生表)为例,Mysql数据库中建表语句如下所示。需要注意的是,若要相对完美的将Mysql数据库表转换成Oracle数据库表,需要严格按照以下Mysql数据库表结构方式,标点符号都不能多、不能少。

     

         1.1、表名、字段名,需要去除 ` 符号  ;

         1.2、若字段定义过程中有 ' COLLATE utf8mb4_bin '  关键字,去掉 ;

         1.3、若字段定义过程中缺少 'NOT NULL'、 'DEFAULT NULL', 请添加 ;

     

    -- 去掉的字符:`
    -- 去掉的字符:COLLATE utf8mb4_bin 
    -- stu_name varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '性别',
    
    CREATE TABLE student (
      id int(8) NOT NULL COMMENT '主键',
      stu_name varchar(255) DEFAULT NULL COMMENT '学生姓名',
      stu_sex varchar(8) DEFAULT NULL COMMENT '性别',
      stu_age int(4) DEFAULT NULL COMMENT '学生年龄',
      stu_class varchar(255) DEFAULT NULL COMMENT '学生班级',
      stu_address varchar(255) DEFAULT NULL COMMENT '家庭住址',
      stu_mother varchar(255) DEFAULT NULL COMMENT '学生母亲姓名',
      stu_m_age varchar(255) DEFAULT NULL COMMENT '学生母亲年龄',
      stu_m_phone varchar(255) DEFAULT NULL COMMENT '学生母亲电话',
      stu_father varchar(255) DEFAULT NULL COMMENT '学生父亲姓名',
      stu_f_age varchar(255) DEFAULT NULL COMMENT '学生父亲年龄',
      stu_f_phone varchar(255) DEFAULT NULL COMMENT '学生父亲电话',
      create_date datetime DEFAULT NULL COMMENT '创建日期',
      update_date datetime DEFAULT NULL COMMENT '更新日期',
      start_date datetime DEFAULT NULL COMMENT '入学时间',
      stop_date datetime DEFAULT NULL COMMENT '毕业时间',
      PRIMARY KEY (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表';
    
    

     

     

    2、 打开 PowerDesigner 软件, 选择 文件 ---> 反向工程 ---> Database ,如下图1所示。

     

                                                                                        图1

     

     

    3、 之后,会弹出 New Physical Date Model 窗口。 在该窗口 "常规" 选项界面, 由于我们是将Mysql数据库中表转成Oracle数据库中表,所以 "DBMS" 行选择 "MySQL 5.0" 选项,如图2所示。

     

                                                                                        图2

     

     

    4、之后,会弹出 "Database Reverse Engineering Options" 窗口, 在该窗口点击 "Add Files (Ctrl + N)" 图标,选择Mysql数据库student表sql脚本,如图3、 图4所示。

     

                                                                                        图3

     

                                                                                        图4

     

     

    5、由步骤4操作后,PowerDesigner 软件界面如下图5所示。

     

                                                                                        图5

     

     

    6、在 PowerDesigner 软件上,选择 "数据库" ---> "Change Current DBMS..." 选项,如下图6所示。 

     

                                                                                        图6

     

     

    7、之后,会弹出 "Change DBMS" 窗口。 由于我们是将Mysql数据库表转化成Oracle数据库表,在这里 "New 数据库管" 一行选择 "ORACLE Version 11g" 。 "Current 数据库管" 直接手动输入:ORACLE Version 11g  ,如下图7所示。

     

                                                                                        图7

     

     

    8、使用快捷键: Ctrl + G,调用出 "Database Generation" 窗口,选择生成Oracle建表语句文件的路径,并对文件进行命名,如下图8所示。

     

                                                                                        图8

     

     

    9、之后,会弹出 "Generated Files" 窗口,由log日志、生成的sql脚本文件可知,程序运行成功。点击 "Generated Files" 窗口中的 "关闭(C)" 按钮后,会弹出 "结果列表" 窗口,该窗口无实际意义,直接关闭。 如下图9、图10所示。

     

                                                                                        图9

     

                                                                                        图10

     

     

    10、打开生成好的SQL脚本,删除语句: constraint PK_STUDENT primary key (id) , 并删除一个多余的逗号。如下图11所示。  

     

                                                                                        图11

     

     

    11、将SQL脚本中所有的英文半角双引号去掉,可使用NotePad++工具直接替换。如下图12所示,在下图12中,我将转成Oracle建表语句的 student 表名改成了 student003. 因为在我的Oracle数据库中,已经存在了 student 表,这次为了测试检验,故在此将表名更换。

     

                                                                                        图12

     

     

    12、在SQL语句中,添加给表建立中文注释的命令、添加给表建立主键的命令。命令如下所示,截图如图13所示。

    
    -- 新增命令,给表命名。
    COMMENT ON TABLE student IS '学生表';
    
    -- 新增命令,给表添加主键。
    alter table student add constraint pk_student primary key(id);
    
    

     

                                                                                        图13

     

     

    13、经过上述处理之后,SQL脚本即可放到PL/SQL软件中直接运行使用。 图14、 图15、 图16 是效果展示图。

    Mysql数据库表转成Oracle数据库表的SQL语句如下所示:

    /*==============================================================*/
    /* DBMS name:      ORACLE Version 11g                           */
    /* Created on:     2020/2/14 22:29:28                           */
    /*==============================================================*/
    
    
    drop table student003 cascade constraints;
    
    /*==============================================================*/
    /* Table: student003                                             */
    /*==============================================================*/
    create table student003 
    (
       id                 INTEGER              not null,
       stu_name           VARCHAR2(255)        default NULL,
       stu_sex            VARCHAR2(8)          default NULL,
       stu_age            INTEGER              default NULL,
       stu_class          VARCHAR2(255)        default NULL,
       stu_address        VARCHAR2(255)        default NULL,
       stu_mother         VARCHAR2(255)        default NULL,
       stu_m_age          VARCHAR2(255)        default NULL,
       stu_m_phone        VARCHAR2(255)        default NULL,
       stu_father         VARCHAR2(255)        default NULL,
       stu_f_age          VARCHAR2(255)        default NULL,
       stu_f_phone        VARCHAR2(255)        default NULL,
       create_date        DATE                 default NULL,
       update_date        DATE                 default NULL,
       start_date         DATE                 default NULL,
       stop_date          DATE                 default NULL
    );
    
    -- 新增命令,给表命名。
    COMMENT ON TABLE student003 IS '学生表';
    
    -- 新增命令,给表添加主键。
    alter table student003 add constraint pk_student003 primary key(id);
    
    
    comment on column student003.id is
    '主键';
    
    comment on column student003.stu_name is
    '学生姓名';
    
    comment on column student003.stu_sex is
    '性别';
    
    comment on column student003.stu_age is
    '学生年龄';
    
    comment on column student003.stu_class is
    '学生班级';
    
    comment on column student003.stu_address is
    '家庭住址';
    
    comment on column student003.stu_mother is
    '学生母亲姓名';
    
    comment on column student003.stu_m_age is
    '学生母亲年龄';
    
    comment on column student003.stu_m_phone is
    '学生母亲电话';
    
    comment on column student003.stu_father is
    '学生父亲姓名';
    
    comment on column student003.stu_f_age is
    '学生父亲年龄';
    
    comment on column student003.stu_f_phone is
    '学生父亲电话';
    
    comment on column student003.create_date is
    '创建日期';
    
    comment on column student003.update_date is
    '更新日期';
    
    comment on column student003.start_date is
    '入学时间';
    
    comment on column student003.stop_date is
    '毕业时间';
    
    

     

                                                                                        图14

     

                                                                                        图15

     

                                                                                        图16

     

    姊妹篇文章: PowerDesigner,如何将Oracle数据库建表语句转化成Mysql数据库建表语句。     

     

     

    展开全文
  • oracle数据库update循环执行语句

    千次阅读 2011-02-14 15:40:00
     update tb_pnt_cust_551 t3  set t3.id_card = p_id_table(i);  commit;  end loop; end; /  --------------------------------------------------------------------------------------------------------...

    --由于数据量比较大每次执行一个小时时报回滚段已满

    --这里有两种方法来分批处理

    1、declare
      maxrows number default 5000;
      p_id_table dbms_sql.Varchar2_Table;
      cursor acnt_first_cur is
        select t2.cert_number
              from tb_pnt_cust_551 t,party_centification t2
             where t.pty_id = t2.party_id
               and t2.cert_type = 1
               and t2.latn_id = 551
               and rownum < 2;
    begin
      open acnt_first_cur;
      loop
        exit when acnt_first_cur%notfound;
        fetch acnt_first_cur bulk collect
          into p_id_table limit maxrows;
        forall i in 1 .. p_id_table.count
          update tb_pnt_cust_551 t3
             set t3.id_card = p_id_table(i);
        commit;
      end loop;
    end;
    /

     --------------------------------------------------------------------------------------------------------------

    2、begin
    for i in 1..1000 loop
    update tb_pnt_cust_551 t
       set t.id_card =  (select cert_number from
           (select t2.party_id,max(t2.cert_number) cert_number
              from party_centification t2
             where t2.cert_type = 1
               and t2.latn_id = 551
             group by t2.party_id)
             where t.pty_id = t2.party_id ) t1
      where rownum < 1000
        and t.id_card is null;end loop;
    end;
    /

    展开全文
  • Oracle数据库无法执行update语句 今天修改项目功能,发现程序走到执行sql语句的时候就不走了,也不报错。没办法,直接去数据库服务器执行sql吧,发现一直在执行根本停不下来,百度得知执行了update或者insert语句后...
  • Oracle数据库MERGE语句

    万次阅读 2018-07-15 17:44:06
    一、使用背景 当需要对一个表根据不同条件分别进行INSERT、UPDATE以及DELETE操作时,可以使用MERGE(融合,合并)语句。MERGE语句可以根据不同条件获取要插入、更新或删除到表中的数据行,然后从1个或多个数据源头...
  • Oracle数据库SQL语句操作记录

    千次阅读 2015-12-22 10:15:56
    Oracle数据库SQL语句操作,包括创建用户并分配表空间权限、表操作、触发器序列、SQL基本操作、一些基础函数的操作等。
  • Oracle数据库常用语句

    万次阅读 2019-04-01 22:07:48
    1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server — 创建备份数据的 device USE master EXEC sp_addumpdevice ‘disk‘, ‘testBack‘, ‘c:...
  • oracle数据库基本语句

    千次阅读 2018-08-13 10:28:18
    备份数据库 导出用户的表 : exp username/password@orcl file=c:\backup.dmp owner=(system,sys) 导出指定的表 : exp username/password@orcl file=c:\back.dmp tables=(xxx,'表名') 按过滤条件导出: exp ...
  • oracle数据库中的update语句的用法

    万次阅读 2017-06-27 18:41:24
    测试   1、set一个字段 在表t_test中设置第二条记录(bs为2)的password为'***'。 update t_test t  ... set t.password = '***'  ...在表t_test中设置第一条记录(bs为1)的password为'*'、remark...update t_test t
  • 执行UPDATE语句的步骤: 如果数据和回滚数据不在数据库高速缓冲区中,则Oracle服务器进程将把它们从数据文件中读到数据库高速缓冲区中。 Oracle服务器进程在要修改的数据行上加锁(行一级的锁,而且是在内存的数据...
  • 而且,这是Oracle数据库所特有的功能。 我在设计多服务器、多线程数据库同步操作时,最开始是采用的如下方式: // 如果更新成功了,则i=1,否则i=0 int i = "update config t set t.flag =1 where t.key=...
  • 前几天我在oracle中执行update语句的时候,报“string literal too lang”错误,根据字面意思,就是说该字段字符串太长了,可是这个字段的数据类型是clob类型,是可以容纳这个字符串的,然后在网上查到,即使该字段...
  • 数据库 update后where语句中的IN、EXISTS的效率测试
  • SQL语句的分类 1.1 通用分类 SQL(Structure Query Language):结构化查询语言 DDL:数据定义语言:定义数据库,数据表的结构,自动提交事务:create(创建)、drop(删除)、alter(修改)、truncate(删除数据...
  • oracleupdate语句更新字段

    千次阅读 2019-09-27 09:02:58
    如需要修改下列数据:...update student set sname = '李四', sage = 20, sbirthday = to_date('2010-01-01', 'yyyy-mm-dd'), saddress = '广州市越秀区' where sid = 1; 如果字段非常多,这样写就稍微麻烦...
  • 1.开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果。但是奇怪的是执行其他的select语句却是可以执行的。 2.在plsql中执行以下...
  • oracle中,in后面的参数个数超过1000个的sql语句拼装
  • 81.Oracle数据库SQL开发之 修改表内存——使用UPDATE语句 欢迎转载,转载请标明出处: UPDATE语句用于修改表中行的内容。UPDATE语句中,要指定以下信息: l 表名 l WHERE子句,指定要修改的哪些行 l 要修改的列...
  • Oracle执行update语句卡住不动

    千次阅读 2018-03-31 12:28:32
    一.问题探究 开发的时候debug到一条update的sql语句时程序就不动了,然后我就...这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如...
  • oracle执行update语句卡住不动

    万次阅读 多人点赞 2016-02-23 19:52:09
    问题开发的时候debug到一条update的sql语句时...原因和解决方法这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关
  • 最全的oracle数据库语句大全总结

    千次阅读 2019-07-07 11:21:29
    最全的oracle数据库语句大全总结 包含你见到的所有常见语句; 包含表的创建,删除,修改字段名,修改属性; 包含记录的增删改查; 包含所有记录的各种查询及内连接外连接; 以下所有例子都用person表和student表为例...
  • 案例:今天在上班时在Plsql/develop客户端执行删除语句,但奇怪的是前几次的delete语句还可以用,但不一会在执行是就不行了:一直显示在执行中。。。。 delete from t_pass_city where id='2' 处理方法: ...
  • Oracle数据库经典sql语句

    千次阅读 多人点赞 2018-05-03 01:00:01
    经典sql语句 本文章将详细介绍oracle数据操作中的一些详细的sql 基本sql 字符函数 数学函数 日期时间处理函数 聚合函数 基础sql 以下主要列出来常用的sql --新建表: create table table_name( id ...
  • Oracle 数据库常用操作语句大全

    千次阅读 2018-05-26 20:18:49
    /* 文档摘自 https://www.cnblogs.com/1312mn/p/7799732.html  */一、Oracle数据库操作1、创建数据库 create database databasename2、删除数据库 drop database dbname3、备份数据库完全备份 exp demo/...
  • 更新timestamp数据类型的字段,分别需要用to_...UPDATE table set 字段名= to_timestamp('2020-04-01 23:59:59999000','YYYY-MM-DD HH24:MI:SSFF') WHERE CODE ='id'; 2020-04-01 23:59:59999000 数据库里 ...
  • Oracle UPDATE 语句

    万次阅读 2015-06-18 17:10:31
    我估计,只要是知道SQL 语句的人都会用UPDATE 语句,可是大部分人不知道UPDATE 语句有两种写法,首先,考虑下面的情况: CREATE TABLE STUDENT ( ID INT,---学号 NAME VARCHAR(20) NOT NULL,---姓名 BIRTHDAY DATE--...
  • Oracle数据库常用Sql语句大全

    千次阅读 多人点赞 2018-07-14 11:35:59
    一、数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句)INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 134,049
精华内容 53,619
关键字:

oracle数据库update语句