SQLServer与Oracle数据同步
我们的项 目使用SQLServer2005进行开发,而且项目中要用到Oracle数据库中的数据,怎么实现多数据库的操作呢?一般来说方案有以下几种。 1.分别建立链接对数据库进行操作,SQLServer可以用ADO.NET,操作Oracle可以用OLEDB或者用System.Data.OracleClient(需要添加引用才能用) 这种方案的优点就是简单,各自写各自的数据库操作代码,缺点就是不能将两个数据库中的表直接进行联合查询,链接Oracle的每台机器必须安装OracleClient才可以使用 2.使用同义词操作Oracle数据库。 这 种方法的具体操作我在以前的文章中已经...
游标的解析过程
游标的解析过程(产生shared cursor) 解析过程: A、包含vpd的约束条件: SQL语句如果使用的表使用了行级安全控制,安全策略生成的约束条件添加到where子句中 B、语法、语义、访问权限检查: 检查SQL语句书写的正确性,对象存在性,用户的访问权限 C、父游标缓存: 将该游标(SQL语句)的文本进行哈希得到哈希值并在library cache寻找相同的哈希值,如不存在则生存父游标且保存在library cache 中,按顺序完成D-F步骤。如果此时存在父游标,则进一步判断是否存在子游标。若存在相同的子游标,则直接调用其子游...
Oracle游标的生命周期
session cursor需要从UGA中分配内存,因此有其生命周期。其生命周期主要包括: 打开游标(根据游标声明的名称在UGA中分配内存区域) 解析游标(将SQL语句与游标关联,并将其执行计划加载到Library Cache) 定义输出变量(仅当游标返回数据时) 绑定输入变量(如果与游标关联的SQL语句使用了绑定变量) 执行游标(即执行SQL语句) 获取游标(即获取SQL语句记录结果,根据需要对记录作相应操作。游标将逐条取出查询的记录,直到取完所有记录) 关闭游标(释放UGA中该游标占有的相关资源,但Library Cache中的游标的执行计划按LRU原...
Oracle共享游标
游标是数据库领域较为复杂的一个概念,因为游标包含了shared cursor和session cursor。两者有其不同的概念,也有不同的表现形式。 共享游标的概念易于与SQL语句中定义的游标相混淆。本文主要描述解析过程中的父游标,子游标以及共享游标,即shared cursor,同时给出了 游标(session cursor)的生命周期以及游标的解析过程的描述。 有关游标的定义,声明,与使用请参考:PL/SQL 游标 有关硬解析与软解析请参考:Oracle 硬解析与软解析 shared cursor 也即是共享游标,是SQL语句在游标解析阶段...
ORA-14037 :解决办法
ORA-14037: 分区 "P2" 的分区界限过高 CREATE TABLE PROVINCE_INFO ( PROVINCE_ID VARCHAR2(8) NOT NULL, PROVINCE_NAME VARCHAR2(40) NOT NULL, CREATE_DT DATE ) PARTITION BY RANGE (PROVINCE_ID)( PARTITION P1 VALUES LESS THAN ('8'), PARTITION P2 VALUES LESS THAN ('9'), PARTITION P3 VALUES LESS THAN ('10'), PARTITION P4 VALUES LESS THAN ('11'), PARTITION P5 VALUES LESS THAN (MAXVALUE) ); 查oracle 错误文档 ORA-14037 ORA-14037 partition bound of partition "string"...
wmsys.wm_concat用法 详解
函数名:wmsys.wm_concat 作用:以逗号分隔连接列的值 oracle 10g引入。使用时直接用wm_concat也可以。 以下介绍一些实际使用的状况。介绍实际Case前先建立一个测试table和一些测试数据。 两张表: employee,prject;属性如下 1)employee: 员工ID号,员工名,部门 测试数据 0001 user1 IT 0002 user2 IT 2)prject:项目ID号,负责的员工ID号 测试数据 PN001 0001 PN002 0001 PN003 0001 PN004 0001 PN010 0002 PN011 0002 对应的SQL如下 [sql] view plaincopy create tab...
group by 和 having区别
sql中的group by 和 having 用法解析 --sql中的group by 用法解析: -- Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。 --它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 --注意:group by 是先排序后分组; --举例子说明:如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术 select DepartmentID as '部门名称', COUNT(*) as '个数' from BasicDepartment group by...
复制数据库表
下面介绍两种复制数据库表的方法 这可以用在备份表的时候 1.在没有目标表的情况下使用 需要注意的是, 这种方法可以自动的创建表,但是不会创建主键. 例如 select 列 into 目标表名 from 源表名 select * into wx from zl 2.在目标表已经存在的情况下使用 这种情况下目标表最好取消自动增长列的 自动增长 ,不会就引起错误. 例如 insert into 表(列) select (列) from 表 select into wx(w,x) select z,l from zl
SQL中group by的用法
首先先贴两条sql,大家看看有啥区别 view plain select * from all_txt A where id=(SELECT id from all_txt view plain where A.key_value = key_value ORDER BY release_time DESC limit 1); view plain select * from (select *,max(release_time) as timea view plain from all_txt group by key_value order by release_time desc) a order by timea desc; 然后说明下表的重要字段为三个id,key_value,release_time 作用是取每个相同key_value中release_time最新的...
最简单的oracle数据导入导出
导出时在dos命令里输入:exp username/password@sid file=d:\exp.dmp full=y username/password分别代表你的用户名和密码 sid表示你的数据库名 导入时:imp username/password@sid file=d:\exp.dmp full=y ignore=y 记得当前用户的权限 用pl/sql进行导入导出: 导出步骤: 1 tools ->export user object 选择选项,导出.sql文件 2 tools ->export tables-> Oracle Export 选择选项导出.dmp文件 导入步骤: 1 tools->import tables->SQL Inserts 导入.sql文件 2 tools->import talbes->Ora...