oracle查询锁表及解锁,修改表字段名与复制表结构和数据的方法

在Oracle中查询锁表及解锁:

锁表查询的代码有以下的形式:

select count(*) from v$locked_object;
select * from v$locked_object;

查看哪个表被锁:

select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;

查看是哪个session引起的:

select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time; 

杀掉对应进程:

执行命令:alter system kill session'32,241';其中32为sid,241为serial#.

在Oracle中修改表字段名:

假设字段有数据,则改为nvarchar2(20)可以直接执行:

alter table tb modify (name nvarchar2(20));

若不能修改则用下面

alter table sft_bfwo rename column bfwoid to wid;
alter table sft_bfwo add bfwoid char(16);
update sft_bfwo set bfwoid=trim(wid);
alter table sft_bfwo drop column wid;

在Oracle中复制表结构和表数据:

复制表结构及其数据:

create table table_name_new as select * from table_name_old

只复制表结构:

create table table_name_new as select * from table_name_old where 1=2;

或者:

create table table_name_new like table_name_old

只复制表数据:

如果两个表结构一样:

insert into table_name_new select * from table_name_old

如果两个表结构不一样:

insert into table_name_new(column1,column2...) select column1,column2... from table_name_old

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • Oracle通过sqlplus连接数据库的方式

    通过sqlplus可以连接数据库根据用户权限进行数据或者设定操作,这篇文章介绍一下常用的连接方式. 环境准备 使用Oracle的精简版创建docker方式的demo环境,详细可参看: https://www.jb51.net/article/153533.htm 方式1(本机): / as sysdba 在oracle服务器,可以直接通过操作系统权限认证,使用sysdba方式登陆,前提是你可以登入服务器,并且拥有此权限. oracle@e871d42341c0:~$ id uid=1000(or

  • Oracle相关组件版本信息的介绍

    这系列文章将介绍一下Oracle的基础知识,将会使用docker下运行的oracle11g的精简版进行说明.这篇文章介绍一下oracle的版本确认方法. 环境准备 使用Oracle的精简版创建docker方式的demo环境,详细可参看: https://www.jb51.net/article/153533.htm v$version视图 通过确认v$version视图的BANNER信息可以确认Oracle各组件的版本信息 SQL> select * from v$version; BANNER

  • Oracle连续相同数据的统计

    有些事情始终是需要坚持下去的... 今天复习一下之前用到的连续相同数据的统计. 首先,创建一个简单的测试表,这里过程就略过了,直接上表(真的是以简单为主,哈哈-) 第一种写法row_number(): SELECT val,COUNT(*) FROM (SELECT ID,val, row_number() OVER(ORDER BY ID)-row_number() OVER(PARTITION BY val ORDER BY ID) x FROM LCY ) GROUP BY val,x O

  • Oracle密码过期如何取消密码180天限制及密码180天过期,账号锁住的问题

    Oracle密码过期,取消密码180天限制 1.进入sqlplus模式 sqlplus / as sysdba; 2.查看用户密码的有效期设置(一般默认的配置文件是DEFAULT) SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME'; 3.将密码有效期由默认的180天修改成"无限制",修改之后不需要重启动数据库,会立即生效 ALTER PROFILE DEFA

  • Oracle全角数字转换半角数字

    数据库表 test 字段 id name age 全角数字:1234 半角数字:1234 length和lengthb的区别: length(1234) 4 lengthb(1234) 8 to_single_byte函数用法: to_single_byte(1234) 1234 查找所有全角的数字: select age from test where lengthB(age) >4 替换全角的为半角的: update test t1 set t1.age = (select to_singl

  • ibatis结合oracle批量插入三种方法的测评

    第一种 < insert id =" insert_table " parameterClass ="java.util.List" > <![CDATA[ insert into sj_test( col1 , col2 , col3 ) values ]]> < iterate conjunction ="," > <![CDATA[ (#test[]. col1 #, # test []. col2

  • Oracle基础:通过sqlplus执行sql语句后的结果进行判断

    这篇文章介绍一下如何对sqlplus执行的sql语句结果进行判断. 环境准备 使用Oracle的精简版创建docker方式的demo环境,详细可参看: https://www.jb51.net/article/153533.htm 常见问题 在sqlplus中执行sql语句,如果直接使用命令行的方式调用时会碰到两个问题: 问题1: 需要进行交互性的输入 问题2:结果的判断不能通过返回值来确认 解决方式 在脚本调用里,解决方式如下 问题1可以通过前文提到的Here Document来解决. 问题2

  • Oracle数据库自动备份脚本分享(超实用)

    前言 众所周知数据是应用的核心部分,程序坏了换台机器重新发布就可以,但数据一旦丢失,造成的损失将不可挽回,程序发布到生产后,数据的备份便显得尤为重要,由于不一定所有的服务均有资金完成高级的备份如RAC和DG,在我们只有一台数据库服务器的,暂时采取最简单的备份策略,export出dmp进行保存. 一.备份脚本 1.初始化变量,记录开始日志 #变量 sysname=填写自己的系统名称 syspath=/home/oracle/databak/$sysname v_date=$(date '+%Y%m

  • oracle常用分析函数与聚合函数的用法

    今天是2019年第一天,在此祝大家新年快乐,梦想还在路上,让我们继续加油! 应之前的计划,今天完成这篇记录,也借此记录自己的成长. 一.几个排名函数的语法和用法: rank ( )  over ([partition by col]  order by col ) dense_rank ( )  over ([partition by col] order  by col ) rownumber ( )  over ( [partition by col] order by col ) rank

  • Oracle数据库url连接最后一个orcl代表的是配置的数据库SID

    今天生产上项目启动访问 一个数据库的时候,出现了 ORA-12505, TNS:listener does not currently know of SID given in connect desc . 后面看了下,我的数据库配置为: driverClassName=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@158.58.88.102:1521:eskdb username=root password=aaa111 然后看了下

随机推荐