一、建立链接服务器
有人喜欢调用系统过程来建立,但我个人对系统过程没有特别的学习 ,所以用的是界面设置,当然有兴趣也可以研究一下的,因为可以把SQL执行导出来。
USE [master]
GO
EXEC master.dbo.sp_addlinkedserver @server = N'TEST2', @srvproduct=N'ORCL', @provider=N'OraOLEDB.Oracle', @datasrc=N'TEST2'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'rpc', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'rpc out', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'query time ......
一、建立链接服务器
有人喜欢调用系统过程来建立,但我个人对系统过程没有特别的学习 ,所以用的是界面设置,当然有兴趣也可以研究一下的,因为可以把SQL执行导出来。
USE [master]
GO
EXEC master.dbo.sp_addlinkedserver @server = N'TEST2', @srvproduct=N'ORCL', @provider=N'OraOLEDB.Oracle', @datasrc=N'TEST2'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'rpc', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'rpc out', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'TEST2', @optname=N'query time ......
示例一:delete from emp;
实例二:truncate table emp;
当使用delete删除时,虽然删除了表中的所有数据,但是没有释放表所占的空间,如果用户确定要删除表中所有数据,使用实例二语句速度更快。delete语句可以回退,但truncate语句操作不能回退,执行的时候要多加注意这一点。 ......
使用子查询插入数据:
示例一:insert into employee (empno,ename,sal,deptno)
select empno,ename,sal,deptno from emp
where deptno=20;
示例二:insert /*+APPEND*/ into employee (empno,ename,sal,deptno)
select empno,ename,sal,deptno from emp
where deptno=20;
尽管执行结果一样,但第二条语句使用/*+APPEND*/来表示采用直接装载方法可以使执行速度加快。
使用子查询修改数据:
示例一:select job,sal,comm from emp where ename='SMITH';
update emp set job='check',sal=2200,comm=200
where ename='SCOTT';
示例二:update emp set (job,sal,comm)=(
select job,sal,comm from emp where ename='SMIT ......
1.回退事务
最好设置一个保存点,例savepoint a,或者执行 exec dbms_transaction.savepoint('a')(执行前需要执行set serveroutput on语句);取消部分事务就可以使用rollback to a,或者执行exec dbms_transaction.rollback_savepoint('a');取消全部事务可以执行rollback,或者exec dbms_transaction.rollback;
2.只读事务
set transaction read only,或者执行exec dbms_transaction.read_only;这时候你再进行查询回查询你执行这条语句时该表中数据的信息,其他用户修改时虽然改变了表中的数据但是不会被你发现。
3.顺序事务
set transaction isolation level serializable;基本上与2条执行一样。 ......
oracle补丁下载地址
DB 2009-10-28 18:00 阅读56 评论0
字号: 大大 中中 小小
Oracle 11g 11.1.0.7
ftp://updates.oracle.com/6890831/p6890831_111070_AIX5L_1of2.zip
ftp://updates.oracle.com/6890831/p6890831_111070_AIX5L_2of2.zip
ftp://updates.oracle.com/6890831/p6890831_111070_HPUX-64_1of2.zip
ftp://updates.oracle.com/6890831/p6890831_111070_HPUX-64_2of2.zip
ftp://updates.oracle.com/6890831/p6890831_111070_HPUX-IA64_1of2.zip
ftp://updates.oracle.com/6890831/p6890831_111070_HPUX-IA64_2of2.zip
ftp://updates.oracle.com/6890831/p6890831_111070_Linux-x86-64.zip
ftp://updates.oracle.com/6890831/p6890831_111070_Linux-x86.zip
ftp://updates.oracle.com/6890831/p6890831_111070_MSWIN-x86-64.zip
ftp://updates.oracle.com/6890831/p6890831_111070_SOLARIS64.zip
ftp://updates.oracle.com/6890831/p6890831_111070_Win32.zip
Oracle 10g 10.2.0.4
ftp://updates.oracle.com/6810189/p6810189_10204_AIX5L.zip
ftp://updates.oracle.com/6810189/p68 ......
索引聚簇表
create cluster emp_dept_cluster
(deptno number(2)) size 1024;
size 1024 表示每个聚簇键值关联大约1024字节的数据,
oracle会在用这个数据库块上通过size计算最多可以放多少个簇
如果块是8KB,那么这个块上最多放7个聚簇键
向聚簇中放数据之前,需要先对聚簇建立索引.
create index emp_dept_cluster_idx on cluster emp_dept_cluster;
加载的方式应彩用一一对应的关系.加载完主表之后再加载从表
什么情况下不能用索引聚簇表
1)如果预料到聚簇中的表会大量修改,索引聚簇表会对DML的性能产生负面影响.
2)非常不适合对单表的全表扫描,因为只能引起对其它表的全表扫描
3)频繁对表进行TRUNCATE和加载,因为聚簇中的表是不能TRUNCATE的
SQL> truncate table dept;
truncate table dept
*
ERROR at line 1:
ORA-03292: Table to be truncated is part of a cluster
如果数据主要用来读,不怎么修改,并且逻辑上与聚簇连接想适合,最好使用索引聚簇表
oracle数据字典就是这样做的
SQL> set autotrace traceonly statistics
SQL> select a.deptno,b.ena ......