Oracle11g是目前Oracle较新版本,除了传统的
数据库服务外,也提供了界面友好的链接工具。考虑到Oracle
数据的稳定和性能方面的优势,在需要处理大量数据的系统中,可以考虑使用Oracle作为数据库。\x0d\x0a一:Oracle11g的安装过程(Windows版本)很简单,步骤为:\x0d\x0a 1. 首先从Oracle官方网站上下载Oracle11g数据库,大约为1.7G。解压后,setup.ext就可以开始安装\x0d\x0a 2. 在安装开始的时候,会要求填写一些信息。需要注意两项:\x0d\x0a 1)SID。这应该是安装的数据库的ServiceID,在数据库安装成功后,在Window的服务中会多一项OracleServiceSID的服务,这里的SID就是在安装时填写的字符串。因此在连接数据库的时候都需要有SID信息,比如使用JDBC连接的时候。\x0d\x0a 2)密码。这里的密码是系统管理员的密码(sys,sysdba)。\x0d\x0a 3. 接下来就可以按照界面提腔姿并示安装了,安装过程中会检查电脑配置,如果符合要求就可以继续安装。\x0d\x0a 4. 安装结束后,会生成一个database config的界面,上面有安装的数据库的sid, port等信息。(可以把这个界面保存起来,防止以后忘记相关信息)\x0d\x0a二:Oracle的连接\x0d\x0a 安装完成后,就可以连接数据库了,连接Oracle可以通过SQLPlus,SQLDeveloper,建议可以使用SQLDeveloper,因为它界面不错。在程序->Oracle11g->应用开发程序 下面有SQLDeveloper,第一次启动时,需要设置java.exe的路径(SQLDeveloper应该是JAVA开发的),之后就可以看到连接界面了。接下来需要填写连接信息,第一次连接时,必须先通过sysdba进行连接,所以要使用安装时设置的密码,其它信息如下:\x0d\x0a 1)需要选择登录身份为系册老统管理员 2)sid安装时设置的sid值 3)端口号一般默认是1521\x0d\x0a 注意在连接的时候,需要确保在服务中的OracleServiceSID和OracleOraDb11g_home1TNSListener是打开的\x0d\x0a 填好伍迹上面的信息就可以登录了。如果要创建自己的数据库,需要下面几个过程:\x0d\x0a 1.创建表空间,语句如下:\x0d\x0a CREATE TABLESPACE SampleTableSpace \x0d\x0a DATAFILE 'D:/app/Administrator/oradata/orcl/tableFile.dbfsize 8192M reuse\x0d\x0a AUTOEXTEND ON NEXT 8192M MAXSIZE unlimited\x0d\x0a EXTENT MANAGEMENT local\x0d\x0a 2.创建一个用户,并默认为SampleTableSpace表空间\x0d\x0a CREATE USER SampleUser IDENTIFIED BY Password\x0d\x0a DEFAULT TABLESPACE SampleTableSpace\x0d\x0a 3.为用户授权:\x0d\x0a GRANT connect, resource TO SampleUser \x0d\x0a 注意,接下来的 *** 作必须在SampleUser的连接中进行,步骤如下:\x0d\x0a 1.在SQLDeveloper中新建一个连接,并使用刚才创建的SampleUser信息进行登录\x0d\x0a 2.接下来在SampleUser的连接中就可以使用sql进行各种 *** 作,这些 *** 作都会在SampleTableSpace中进行。\x0d\x0a三: 数据导入导出\x0d\x0a Oracle提供数据导入和导出功能.命令为imp/exp,可以在cmd下运行,它们可以将数据库中的表或其它对象导出为.dmp文件,或者将dmp文件导入,具体使用方法可以google一下,应该比较好用。\x0d\x0a \x0d\x0a上面是之前使用Oracle11g时的一些经验,如果有不正确的地方,也请大家补充。Oracle是目前应用最广泛的数据库系统 一个完整的数据库系统包括系统硬件 *** 作系统 网络层 DBMS(数据库管理系统)
应用程序与数据 各部分之间是互相依赖的 对每个部分都必须进行合理的配置 设计和优化才能实现高性能的数据库系统 本文讨论笔者使用Oracle开发局域网中 小型数据库应用中 系统硬件的选择与使用 应用数据库系统设计与开发方面的一些心得和建议 应用数据库系统包含应用数据库和应用两方面的内容 应用数据库就是生产数据库 与系统数据库相对 系统硬件的选择与使用 与数据库系统密切相关的硬件主要有CPU 内存 集群 存储设备等 这里不对集群进行讨论 CPUCPU的数目和速度直接影响数据库 *** 作的速度 Oracle数据库提供并行查询选项 允许SQL *** 作以协同方式在多个CPU上执行 可以很大程度的发挥多CPU的性能 为系统添加CPU前 首先要对应用程序的SQL代码做优化 提高应纤裤猛用程序的效率 质量低劣的应用可能会引起CPU资源的无谓的消耗 其次 要了解 *** 作系统对CPU数目的限制及系统的可扩展性 在系统CPU资源已定的情况下 要对各类应用进行分析 在保证关键应用正常运行的前提下 尽可能将大量占用CPU资源的应用放在系统相对空闲的时候进行 良好的工作调度可以有效减少对CPU的竞争使用 加快系统的响应时间 内存数据库系统中 应保证有足够大的内存 在UNIX系统中 如果系统的物理内存小于 GB 可将交换区的大小设为内存的 倍 否则 可设为内存的 倍 交换区要放在磁盘速度最快的硬盘上 Oracle 的SGA区大小直接关系到数据库 *** 作的性能 一般来说 SGA区的大小可设为系统可用内存的 %到 % SGA区过多占用系统内存反而会降低性能 在应用系统运行中 应定期监测系统的内存使用情况 对关键应用进行分析 根据应用适时调整SGA区各部分的大小 Oracle i可在不重新启动毁桥数据库的情况下修改SGA区的参数 实时改变SGA区的大小 存储设备在网络时代 信息资源的积累和广泛应用对数据存储技术的发展提出了更大的挑战 数据存储模式从传统的总线连接模式进入了网络存储模式 但存储设备依然是硬盘 磁带(带库) 磁盘阵列 在中 小型数据库应用中传统存储模式仍占主导地位 磁盘I/O是数据库 *** 作的瓶颈之一 磁盘的合理选择和使用在数据库系统中显得尤为重要 在最初做数据库系统规划时 应充分考虑到系统的容量和预期的增长 尽可能为以后的扩展留足空间 在硬盘和磁盘阵列的选择与使用中 应注意以下几点 ·选择支持热插拔功能的硬盘 这样在出现硬盘Oracle 平台应用数据库系统的设计与开发失败时 可以在系统正常运行的情况下更换硬盘 ·不要选择太大的硬盘 切记对Oracle 应用程序 ~ GB大小的硬盘是比较合适的 最好购买大量纯败的中小型硬盘 这样在配置RAID时可提供更大的灵活性 ·如果选用了磁盘阵列 对于Oracle数据库应用 如果经费能够支持 RAID + 是最佳的配置方法 在RAID 中 读 *** 作性能得到了一定的改善 但写性能损失很大 如果某个硬盘失败 硬盘重建的工作量非常大 RAID 适用于DSS(决策支持系统)应用 对OLTP(联机事物处理)应用不太合适 ·在实现RAID时 要正确地选择分条的大小 决定分条大小的三个主要因素是 应用程序的特性(DSS OLTP 批处理) *** 作系统与数据库的数据块大小 磁盘阵列中的硬盘数目 数据库的数据块大小应是 *** 作系统数据块大小的整数倍 同样分条大小也必须是 *** 作系统数据块大小的整数倍 如果使用裸设备 分条大小应是 *** 作系统物理数据块的大小 分条可按照水平方向进行 也可按照垂直方向进行 水平分条跨越每个硬盘控制器进行 垂直分条跨越整个硬盘集合进行 分条集合中的成员数应不大于硬盘控制器数 OLTP应用程序 数据访问的数据量不大 一般可选择 KB 或 KB 的分条大小 而DSS应用程序访问的数据量大 可考虑使用 KB KB或 KB的分条大小 应用数据库的设计与开发 Oracle数据库软件安装和配置完成后 就进入了应用数据库的设计阶段 应用数据库设计包括逻辑设计与物理设计 合理的逻辑设计会大大提高数据库的性能 增强数据库的可维护性 在设计中根据应用 抽象出实体关系模型 将实体关系图映射为标准化(数据完整 与应用无关 存储优化)的关系模型(数据库对象) 当前有一些辅助工具(Oracle Designer等)来实现实体关系图到SQL代码的映射 数据库的物理设计就是数据库对象的存储设计 即如何为数据库对象分配存储空间 在进行数据库对象的设计前 数据库的管理和开发人员对应用和应用的数据及其应用关系要有一个详尽的理解 根据应用进行数据库对象的规划和设计 大概包含以下几个方面 ·确定需建立的数据库用户 明确用户的系统权限和表空间限额 为用户设计资源限制profile ·确定应用数据应分多少个表进行设计 各表分别属于的用户 各用户对各个表的 *** 作权限 ·明确各表的结构 确定表的主键及约束 ·明确哪些表是应用运行的关键表 哪些是事务表 ·分析哪些表是主表 哪些表是从表 确定表和表之间的外键约束 选择合适的表作为表连接的驱动表 ·根据应用 确定在哪些表上对哪些列建立合适的索引 ·根据表和索引的设计 确定要创建的表空间和回滚段 为表空间和回滚段选择合适的磁盘 尽可能创建本地管理的表空间 减少数据库空间管理方面的工作 ·明确需要编写的触发器及过程 ·为数据库对象选择备份和恢复策略 在数据库设计阶段 有时未必能完全确定合适的数据库对象的特征 应用设计和开发中还可能发现不合适的地方 需要回过头来进行调整和修改 但设计阶段的工作越细致 出现问题的可能性就越小 工作的效率就越高 创建数据库对象时 要根据数据库对象的特点 结合存储设备的大小 数量及速度等 对数据库对象分类进行存储 最大限度地消除或减少资源竞争 在数据库对象创建时主要应遵循以下原则 ·应用数据应放在单独的表空间 不要将应用数据放在系统表空间 为防止无意的使用系统表空间 将应用用户的系统表空间限额设为 ·索引和表应放在位于不同硬盘上的不同的表空间 这样会提高数据库 *** 作的速度 ·需要同时被访问的表要分开存放 利于并发访问的实施 ·如果磁盘数量有限 可把不常联合访问的表放在相同的磁盘上 ·预分配的原则 创建数据库对象(表空间 回滚段 表 索引等)时 根据对象的情况设置合适的storage参数非常重要 创建对象设计时 对对象的容量和预期的增长有一个估计 这样才能确定存储参数的大小 一般来说 应预先给表和索引等数据库对象分配足够的空间 数据库段不要太多地做动态扩展 因为会影响数据库性能 一个段(segment)由一个区(extent)构成是最理想的 initial 参数可以稍大一点 如果可能 可设为最大容量的大小 initial必须是db_block_size的整数倍 next参数的设置比较灵活 根据应用进行相应的设置 但也必须是db_block_size的整数倍 为了减少数据库碎片的产生 pctincrease参数应该尽量设为 更新 *** 作比较少的段 pctfree要设置得小一点 更新 *** 作很多的段要设置得大一些 inittrans和freelists的值要相等 大小与并发事务数相关 ·分而治之的原则 大的数据库表和索引可考虑进行分区存放 不同的分区可位于不同的磁盘上 更好地均衡I/O Oracle可以只对表的某些分区进行查询 这样会提高查询的速度 可对分区进行数据的删除 装载 还可以移动分区 对表的管理和控制具有更大的灵活性 可以有更多的策略选择 更好地执行备份和恢复 *** 作 注意 对某些分区进行 *** 作后 在Oracle i下必须重建全局索引 ·大小和增长趋势类似的表最好放在相同的表空间 可以有效控制硬盘碎片的产生 提高空闲块的可重用性 ·相同备份和恢复策略的表最好放在同一个表空间 这样有助于备份和恢复工作的完成 ·对响应时间要求苛刻的应用所访问的对象放在速度快的磁盘上 数据库应用系统的设计与开发 应用设计不论使用何种工具或语言来开发应用程序 都需要进行应用的全面设计 应用设计包括 首先 分析应用要完成的功能 确定应用类型 是OLTP(联机事务处理)系统 DSS(决策支持)系统还是批处理系统 其次 了解应用在何时由谁使用 应用访问的数据 应用程序用到的组件 应用被要求的响应时间等 在设计前 必须对这些问题尽量进行解答 这对应用设计特别是大规模的应用设计非常重要 第三 根据上面的资料 确定应用的体系结构 是采用client/server两层架构的方式 还是采用browser/server多层架构的方式实现一个开放的分布式应用系统 如何对应用服务器进行选择与配置 第四 将应用按功能划分为一个或多个应用程序 明确应用程序的具体功能 类型 组成 使用时间及高峰时间 事务的流量 用户组成 访问的数据库对象等 确定应用程序间的关联和互 *** 作特性 对各个应用程序的执行时间合理地进行安排 第五 对应用程序进行模块化设计 选择实现应用的数据库组件和开发语言及工具 应用开发在应用开发阶段 根据应用的不同 实现的方法和步骤会有很大的差异 这里只讨论以下在应用开发中需要重点注意的几个问题 ) 在开发会话关键型应用程序时 尽可能使用Pro*C/C++或OCI 在编写后备实例和数据库失败恢复等需要进行数据库重新连接的代码时 用Pro*C/C++ 或OCI比用PL/SQL要容易实现 在Oracle / i中 OCI可以实现透明应用程序失败恢复(TAF) 编写数据库 *** 作繁重的应用程序 使用OCI OCI程序对数据库的访问是通过调用OCI库函数实现的 能够直接到达系统内核 比Pro*C/C++速度更快 ) 在开发会话关键型应用程序时 尽量实现失败检查和恢复能力 如指定后备数据库或实例 终止出错客户进程等 ) 编写代码时 要考虑应用程序的可维护性 尽量将应用程序独立于数据库的变化 可使用视图 相对变量类型定义(%TYPE) 记录型变量定义(%ROWTYPE) 采用表驱动的应用程序设计模式 ) 进行充分的单元测试和模块测试 为应用集成打下坚实的基础 ) 对关键表 *** 作的应用程序实现要特别当心 必要的话 在应用中对关键表先做备份 应用成功执行后再删除备份表 ) 编码结束后 应对代码进行优化 前面提到过 代码优化在数据库应用中非常重要 很高比例的性能问题与编码拙劣的应用程序有关 ) 定期对应用 *** 作的数据库对象增长的情况进行监控 避免因空间不足引起的应用程序的失败 ) 对应用的数据定时进行整理 有些应用中 存放在数据库表中的数据只要求保存一段时间 就需要定时对数据进行删除 如果手工进行删除 *** 作 工作量很大 可以用Oracle提供的作业来完成 unix系统下可用cron进程来实现 笔者在工作中经常使用cron来做数据的定时删除 根据应用要求 编制Pro*C/C++程序 编写Shell脚本调用应用程序 将Shell脚本提交给cron进程 注意 在Shell脚本中必须设置相应的Oracle环境变量 如ORACLE_BASE ORACLE_HOME NLS_LANG LD_LIBRARY_PATH PATH等 用户环境文件中的定义是无效的 )对于大量删除 *** 作的应用程序 如果表是分区存放的 可对数据分区执行截断(truncate) *** 作 截断 *** 作执行速度快并且不会产生碎片 但截断后可能需要进行重建索引的工作 对大量的数据做删除(delete) *** 作 会引起数据库回滚段的急剧增长 建议根据删除数据量为这类应用创建特殊的专用回滚段 为专用回滚段指定合适的storage参数 平常 专用回滚段可以是离线的(offline) 在事物开始前 使专用回滚段在线(online) 指定事物使用专用回滚段 事物结束后再使专用回滚段离线 笔者使用的部分代码 (Pro*C/C++) 如下所示 EXEC SQL WHENEVER SQLERROR goto ErrorEXEC SQL CONNECT :uidEXEC SQL ALTER ROLLBACK SEGMENT RBS_SPEC ONLINEEXEC SQL SET TRANSACTION USE ROLLBACK SEGMENT RBS_SPECEXEC SQL DELETE FROM WHERE EXEC SQL ALTER ROLLBACK SEGMENT RBS_SPEC OFFLINE 结束语 Oracle数据库是一个功能强大的数据库系统 适用于各种各样的应用系统 系统规模可大可小 应用设计或简单或复杂 因此在使用过程中要根据各自不同的应用进行设置与调整 以上是笔者在使用Oracle进行应用开发过程中一点心得和体会 写出来与大家共勉 谢谢 lishixinzhi/Article/program/Oracle/201311/17271
在使用C++连接数据库的时候,你可乎嫌以选择ODBC或者ADO等方式,但是OTL连接数据库确实挺方便的,它所有的代码都放在一个头文件otlv4.h中,我们在写程序的时候直接将头文件包含进来,就可以调用其中的类中的函数进行数据岩局库的连接,增删改查等 *** 作。最近一直在使用Oracle数据库,这次就使用OTL连接Oracle数据库,Oracle数据库提供一个调用的接口(OCI),是Oracle公司开发的一个应用程序开发工具,是一个通过访问Oracle数据库的服务器,控制各类sql语句的执行,进而创建应用程序接口(API),OTL就是通过OCI对Oracle数据库进行 *** 作。
下面就是我写过的一个实际例子,比较简单,只是为了登录数据库,并不进行其他 *** 作,主要目的是学会使用OTL:
1. 所需文件:
首先我们应该从网上下载OTL的源码也就是 otlv4.h 这个头文件。
然后打开Oracle的安装目录E:\product\11.2.0\dbhome_1\OCI 找到oci文件夹将整个文件夹拷贝出来,文件夹中包含include文件夹和lib文件夹。
2.示例:
打开VS2008创建一个MFC工程,名称为mfc_one. (其它的就不多说了,这个都很清楚),然后打开工程目录,将OCI这个文件夹直接拷贝到工程目录下,在工程岁枣手目录下新建一个文件夹OTL,将otlv4.h这个头文件放进这个文件夹中。
接下来就是配置项目属性,将文件包含进来,在mfc_oneDlg.h和mfc_oneDlg.cpp中都需要将otlv4.h这个头文件包含进去 (#include"otlv4.h"
评论列表(0条)