-
在Visual C++下开发Oracle库接口主要有两种方法。一种方法是利用Visual C++提供的多种数据库访问技术,如开放数据库连接ODBC、数据存取对象DAO、对象连接和嵌入数据库OLE DB和ActiveX数据对象ADO等。另一种方法是在Visual C++中嵌入SQL语句,这就是所指的Pro*C/C++(本文简称PROC)。前一种方法由于有MFC 强大的类库支持,熟悉VC编程时则实现方便,且可移植性强;但是,与PROC 相比,应用程序需要经过两层才能和数据库通信接口建立联系,编程相对复杂,执行效率相对较低。PROC支持嵌入式PL/SQL 块等直接调用Oracle 库,将过程化语言和非过程化语言相结合,形成一种更强的开发工具,可开发出满足各种复杂要求的优化应用程序,执行效率高。适合熟悉Oracle技术的人员应用。但是用PROC 开发出的应用程序无法向异构数据库平台移植。
本文详细描述实际利用PROC在Visual C++环境下开发Oracle数据库接口程序的方法和具体操作步骤,并给出了编程实例。叙述以Visual C++ 6.0版和Oracle8i版为例,其他版本可根据实际情况变更。
几个特殊文件
PROC在VC下开发Oracle库接口时,需要用到几个特殊文件。
1、PROC的可执行文件PROCUI. EXE
用Oracle_HOME代表Oracl ......
oracle 分区表的建立方法
Oracle提供了分区技术以支持VLDB(Very Large DataBase)。分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。
Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SEGMENT),可以存放到不同的表空间中。查询时可以通过查询表来访问各个分区中的数据,也可以通过在查询时直接指定分区的方法来进行查询。
分区提供以下优点:
由于将数据分散到各个分区中,减少了数据损坏的可能性;
可以对单独的分区进行备份和恢复;
可以将分区映射到不同的物理磁盘上,来分散IO;
提高可管理性、可用性和性能。
Oracle提供了以下几种分区类型:
范围分区(range);
哈希分区(hash);
列表分区(list);
范围-哈希复合分区(range-hash);
范围-列表复合分区(range-list)。
Oracle的普通表没有办法通过修改属性的方式直接转化为分区表,必须通过重建的方式进行转变,下面介绍三种效率比较高的方法,并说明它们各自的特点。
方法一:利用原表重建分区表。
步骤:
SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, TIME DATE);
表已创建。
SQL> INSERT INTO T ......
--oracle jobs批处理命令参考
qlplus /nolog
connect sys/lee as sysdba
--以下两句在sys(即具有dba权限的用户)用户下执行
show parameter job_queue_processes;
alter system set job_queue_processes=10;
exit
sqlplus /nolog
connect jcy/jcy
ALTER TABLE T_OA_AFFICHE MODIFY (INPUT_TIME DATE);
ALTER TABLE T_OA_AFFICHE MODIFY (MODI_TIME DATE);
--变量
variable job1 number;
--创建job
begin
dbms_job.submit(:job1,'update T_OA_AFFICHE set STATE=0 where (trunc(sysdate)-trunc(INPUT_TIME))>A_VALIDITY;',sysdate,'TRUNC(sysdate+1)');
end;
/
--执行
begin
dbms_job.run(:job1);
end;
/
--变量
variable job2 number;
--创建job
begin
dbms_job.submit(:job2,'update t_oa_affiche set a_validity=a_validity+1 where state=0;',sysdate,'sysdate+1/(24*60)');
end;
/
--执行
begin
dbms_job.run(:job2);
end;
/
exit; ......
基本从来不用left/right join
一个项目被迫要用别人写的 sql
本打算改写一下,提高效率
发现:
【1】
select * from a
left outer join b on a.id= b.id AND ...1...
where ...2...
与
【2】
select * from a , b
where a.id= b.id(+)
AND ...1...
AND ...2...
的一个区别:【1】里的b相当于(select b.* where...1...)
......
1、下载Oracle 10g for Vista版本,下载地址:http://download.oracle.com/otn/nt/oracle10g/10203/10203_vista_w2k8_x86_production_db.zip
2、解压后修改两处refhost.xml文件,分别位于db\Disk1\stage\prereq\db和db\Disk1\stage\prereq\db_prereqs\db,找到以下内容:
<!--Microsoft Windows Vista-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.0"/>
</OPERATING_SYSTEM>
3、增加以下内容即可:
<!--Microsoft Windows 7-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.1"/>
</OPERATING_SYSTEM>
4、原理,Vista的版本为6.0,而Windows7的版本为6.1,Oracle在安装前检测操作系统版本时提示不支持6.1版本,因此无法继续安装。而Windows7的内核和Vista相差不大,因此增加上述配置绕过安装检测即可; ......
1、Oracle里面用户的密码是进行加密保存的,所以只能重新修改生成新的密码.
利用系统管理员(sys)登录,将scott用户的密码修改即可
SQL>conn / as sysdba ;
已连接。
SQL>alter user scott identified by tiger ;
用户已更改。
当然也可以到WEB端进行修改地址如下:
http://localhsot:1158/em(相应的服务必须启动)
登录之后在管理一项中找到管理员管理进行相应的操作即可.
2.系统管理员(sys)的密码丢失解决方法:
在Oralce的安装目录下面(D:\InstallSoftwer\Oracle\database)找到原口令文件(PWDorcl.ora)将其删除
然后利用下面的命令生成新密码文件即可.
SQL>orapwd file=D:\InstallSoftwer\Oracle\database\PWDorcl.ora password=thtwin entries=10 ;
//上面是针对sys用户的,所以不用写用户名了.修改之后的密码就为:thtwin. ......