http://hi.baidu.com/fyears/blog/item/5ef68ac3feb9a45db219a836.html
select object_id,session_id,locked_mode from v$locked_object;
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
alter system kill session 'sid,serial#';
ORACLE里锁有以下几种模式:
0:none
1:null 空
2:Row-S 行共享(RS):共享表锁
3:Row-X 行专用(RX):用于行的修改
4:Share 共享锁(S):阻止其他DML操作
5:S/Row-X 共享行专用(SRX):阻止其他事务操作
6:exclusive 专用(X):独立访问使用
数字越大锁级别越高, 影响的操作越多。
一般的查询语句如select ... from ... ;是小于2的锁, 有时会在v$locked_object出现。
select ... from ... for update; 是2的锁。
当对话使用for update子串打开一个游标时,
所有返回集中的数据行都将处于行级(Row-X)独占式锁定,
其他对象只能查询这些数据行,不能进行update、delete或select...for update操作。
insert / update / delete ... ; 是3的锁。
......
oracle变量类型
标量类型
varchar2(n) 用于定义可变长度的字符串 n用于指定字符串的最大长度 其最大值为32767字节 必须指定n
char(n) 用于定义固定长度的字符串 其中n用于指定字符串的最大长度,其最大值为32767 如果不指定n 默认是1
number(p,s)该数据类型用于定义固定长度的整数和浮点数,其中p表示精度,用于指定数字的总位数,s表示标度,用于指定小数点后的数字位数如number(6,2)最大是4位
DATE 该数据类型用于定义日期和时间数据,其数据长度为固定长度(7字节)。给date变量赋值时。数据必须要与日期格式和日期语言匹配
TIMESTAMP 该数据类型是9i新增加的数据类型,它用于定义日期和时间数据 与date不同在于不仅会显示日期,而且还会显示时间和上下午标记
LONG和LONG RAW LONG数据类型御用定义变长字符串,类似于varchar2数据类型,但其字符串的最大长度为32760;LONG RAW数据类型用于定义二进制数据
BOOLEAN 该数据类型用于定义布尔变量,其变量的值为true,false或null,该数据类型是pl/sql数据类型,表列不能采用该数据类型
BINARY_INTEGER 用于定义整数 数值范围在-214748367和2147483647之间 该数据类型是pl/sq ......
简单描述一下在windows的同一用户下,安装Oracle的9i、10g和11g的方法。
Oracle在windows平台下的安装是所有平台中最简单的,基本上不需要进行任何额外的处理就可以成功的安装,可以说没有什么技术含量。
不过在同一台机器的同一个用户上同时安装两个不同版本的数据库就需要一定的技巧了。这里简单描述一下在同时安装Oracle的9i、10g和11g需要注意的问题。
首先,安装版本需要从低到高。也就是说先安装9i的数据库,然后安装10g的数据库,最后安装11g的数据库。
第二,ORACLE_BASE可以指定同一个目录,ORACLE_HOME需要指定不同的目录。采用OFA可以很轻松的解决这个问题。
第三,在低版本的数据库安装完成后,最好通过任务管理区关闭所有的Oracle相关的任务,然后在安装高版本的数据库。否则安装过程中,可能会和已经安装的服务出现冲突,比如LISNTER服务。
在三个数据库安装全部完成后,设置任务管理器中Oracle相关的任务,确保除了数据库服务外,其他低版本的服务都处于手工状态,只将高版本的服务处于自动状态。
由于安装的先后顺序,高版本的ORACLE_HOME/bin目录在PATH变量的前面,也就是说,如果执行sqlplus、rman ......
(1) varchar2(n):该数据类型用于定义可变长度的字符串,其中 n 用于指定字符串的最大长度,其最大值为 32767 字节。当使用该数据类型定义变量是,必须注意,在PL/SQL块中使用该数据类型操纵varchar2表列时,其数值的长度不应该超过 4000 字节。
......
package cn.edu.bit.test;
import java.sql.*;
public class Jdbc {
public static void main(String[] args)
{
try{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
System.out.println("注册成功");
String URL = "jdbc:oracle:thin:localhost:1521:orcl";
String user = "username"; //连接数据库的用户名
String password = "password";//连接数据库的密码
Connection conn = DriverManager.getConnection(URL, user, password);
System.out.println("连接成功");
Statement st;
st = conn.createStatement();
ResultSet rs;
rs = st.executeQuery("select * f ......
PB自带的REPLACE语句用着总有些不习惯。今天同事在做数据迁移中,用到替换功能,根据不同的登录用户,选择该用户下的表。所以,我就用ORACLE的函数来实现它。其实挺简单的,就是一个PB动态SQL语句的例子而已。下面是个例子,SQL语句自已拼装好。注意拼装的SQL语句末尾不要习惯的加“;”,那样是错误的。
string ls_sql,ls_value
ls_sql = "SELECT REPLACE('MIGRATIONRULE','MIGRATIONRULE','SHANGHAI.MIGRATIONRULE') AS AA from DUAL"
DECLARE self_replace DYNAMIC CURSOR FOR SQLSA ;
PREPARE sqlsa from :ls_sql ;
OPEN DYNAMIC self_replace ;
FETCH self_replace INTO :ls_value;
CLOSE self_replace; ......