ORACLE数据库配置完全实战手册【版本日期:2010.12.18China】################################################################################TobeDBAornottobe,thatisNOTthequestion.----Arron作者允许自由散发此文档,但对其进行的任何修改应通知作者,以便于维护版本。作者email:zhou_arron@163.comOracle8以8.1.5为界分为普通版本和internet版本。普通版版本号8.0.x,接触较多的是8.0.5;internet版版本号包括8.1.5(Release1),8.1.6(Release2),8.1.7(Release3)。普通版简称Oracle8,internet版简称Oracle8i。如果不作特别说明,文中凡出现Oracle8i均指8.1.7版。Oracle9i目前出到第二版,版本号为9.2,简称Oracle9i。如果不作特别说明,文中凡出现Oracle9i均指9.2版。本手册介绍Oracle配置的基本方法,描述的是“所然”而不是“所以然”。全部操作以命令行方式出现,不涉及GUI(只有白刃战才是真正的战斗)。鉴于大家对Windows已经十分熟悉,同时为了避免Windows和Unix两种截然不同的使用和开发风格给描述带来的复杂性,所以本手册不介绍在Windows上的Oracle(上帝的归上帝,恺撒的归恺撒)。文中所有例子以oradb作为数据库实例名,数据库用户dbuser,口令oracle。如果不作特别说明,关于Oracle8i所有的例子都在Solaris8IntelPlatform+Oracle8iR3上通过,关于Oracle9i所有的例子都在RedHatLinux7.3+Oracle9iR2上通过。附录文件sample.tar包含全部示例,简称附录。大量使用表emp作为例子(参见附录08_proc/proc/single/emp.sql):createtableemp(nonumber(12)notnull,namechar(20)notnull,agenumber(6)notnull,dutychar(1)notnull,salarynumber(12)notnull,upd_tsdatenotnull,primarykey(no));开发中对应emp表结构,定义其宿主结构(参见附录08_proc/proc/single/db.h):typedefstruct{doubleno;charname[21];intage;charduty[2];doublesalary;charupd_ts[15];}emp_t;修改历史:2000/07版本1.02000/09版本1.1增加Linux安装,export,import使用,数据库监控及优化(utlbstat,utlestat,分析session),语言时间环境变量设置,Oracle8.0.5手工建库脚本(wei_dick提供,稍加修改)2000/10版本1.2修改Linux安装中RedHat6.x+Oracle8.1.6、数据库优化中配置文件和session分析、常用技巧中下载上传文本资料和访问他机数据库;增加创建数据库实例中资料字典参考、常用技巧中删除冗余记录、应用开发,常见错误感谢liu_freeman,jiao_julian,huang_miles等人对开发工具所作的努力2001/03版本1.3修改安装部分、init.ora配置、常用技巧、应用开发;增加手工建库、MTS配置;重写开发工具感谢li_bo的大力帮助2001/09版本1.4修改数据库优化,使之较系统化;增加应用开发中多线程下的数据库连接2002/04版本1.5修改数据库优化、多线程条件下数据库编程;分离附录的程序范例2002/12版本2.0重新安排内容,增加Oracle9i安装配置、OCI开发、mysql安装配置开发,补充数据库优化、PROC开发ORACLE傻瓜手册11安装61.1通用设置61.2UnixWare771.2.1Oracle871.3HP-UX81.3.1Oracle881.4Linux91.4.1kernel2.0&glibc2.091.4.2kernel2.2&glibc2.191.4.3kernel2.4&glibc2.2101.5Solaris112创建132.1Oracle8&8i132.1.1工具创建132.1.2手工创建132.1.3MTS(multi-threadedserver)142.1.4调整临时表空间152.1.5调整回滚表空间152.1.6调整日志152.1.7调整用户表空间162.1.8创建用户172.1.9创建资料对象172.1.10创建只读用户182.1.11激活及关闭数据库实例192.1.12网络配置192.2Oracle9i212.2.1手工创建212.2.2创建用户表空间223初始化文件配置233.1Oracle8&8i233.2Oracle9i254工具264.1sqlldr264.2exp274.3imp284.4sqlplus294.4.1命令行参数294.4.2提示符命令294.4.3SET选项304.4.4例子305备份及恢复325.1export与import方式325.2冷备份325.3联机全备份+日志备份325.3.1设置325.3.2步骤335.3.3恢复335.4注意要点346数据库优化356.1通用设置356.1.1硬件配置356.1.2应用配置356.1.3日常性能监控366.2实战分析366.2.1总体分析376.2.2详细分析376.3专题分析396.3.1巨表查询396.3.2对比测试416.3.3上下载数据446.3.4回滚空间快照陈旧(snapshottooold)467常用技巧487.1增加、更改和删除域487.2删除冗余记录497.3更改字符集497.4表数据迁移507.5成批生成资料507.6注意要点518嵌入式SQL(C)538.1编译538.2SQL语句548.2.1内部类型与宿主类型对应548.2.2连接和断开548.2.3事务558.2.4标准SQL语句558.2.5动态SQL语句558.2.6数组操作568.3编程框架588.3.1总体原则588.3.2单线程和多线程598.3.3开发工具609OCI—OracleCallInterface619.1连接和断开619.1.1句柄层次619.1.2连接流程619.1.3断开流程629.2SQL语句629.2.1事务629.2.2无结果集的sql语句639.2.3有结果集的sql语句639.2.4LOB659.3编程框架679.3.1总体原则679.3.2sql语句689.3.3函数6910附录—MYSQL7210.1安装配置7210.2管理7210.2.1初始调整7210.2.2建立用户对象7310.3开发7310.3.1连接和断开7310.3.2无结果集的sql语句7410.3.3有结果集的sql7410.3.4错误处理75/******************************************************************************/####################################################(若跳转不成功,请复制到浏览器或联系Q)=7437120468MetalinkSharing/**************************************************/1安装所有参见内容都在附件01_install_02_create_03_init/下。1.1通用设置文件系统swap创建文件系统时应考虑Oracle对swap的需要,大约每个oracle服务进程将占用10-20Mswap空间,通常操作系统建议2倍于内存的swap空间,数据库系统可能要求更多些。操作系统用户和环境变量Oracle文档要求为数据库系统的管理和使用建立3个或更多的组,但这个需求是可以忽略的,实践中并没有体现其必要性。为简化操作起见,只建立dba组,即拥有更新软件和管理最高权限(SYSDBA)的操作系统用户组,此组称为OSDBA,属于此组的用户可以SYSDBA身份登录进任何一个数据库实例,简单的,只建立一个用户,习惯上使用oracle的名称。$groupadddba$useradd–gdba–d/home/oracle–m–s/bin/bashoracle确定oracle系统的根目录ORACLE_BASE,如/opt/oracle,所有的软件和配置都在这个目录下展开,虽然并非一定需要如此,但这是一个良好的习惯。同时确定软件安装的起始点ORACLE_HOME,通常在ORACLE_BASE下。修改oracle用户的.profile,加入以下各行,或者修改/etc/profile,使每一个用户都获得环境变量设置umask022ORACLE_BASE=/opt/oracleORACLE_HOME=$ORACLE_BASE/product/{版本号}(如8.0.5,8.1.7,9.2.0等)ORACLE_SID=oradbORACLE_TERM=ansi#仅与Oracle8字符接口安装有关ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data#字符集支持NLS_LANG=American_America.{ZHS16CGB231280(Oracle8支持)|ZHS16GBK(Oracle8i支持)|ZHS16GB18030(Oracle9i支持)}NLS_DATE_FORMAT=YYYYMMDDHH24MISSLD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH#动态连接路径,Unixware中要确保/usr/ucb/lib在/usr/ccs/lib之后出现TMPDIR=/tmp#安装中Oracle会在此目录下存储相当数量的档,所以TMPDIR所在的磁盘分区要确保空闲空间的大小,至少在1G左右PATH=$PATH:$ORACLE_HOME/binexportORACLE_BASEORACLE_HOMEORACLE_SIDORACLE_TERMORA_NLS33NLS_LANGNLS_DATE_FORMATLD_LIBRARY_PATHTMPDIR参见profile。注意:NLS_LANG=American_America.ZHS16CGB231280(ZHS16GBK)“American”指显示信息时所用的语言,窃以为凭大家的英语水平足够应付,如改为SIMPLIFIEDCHINESE,在不带中文支持的终端上就没人能看懂了。“America”指地区“ZHS16CGB231280”指Client工具使用的字符集,一般使用”ZHS16CGB231280”,Oracle8i已支持到”ZHS16GBK”NLS_DATE_FORMAT=YYYYMMDDHH24MISSOracle的date类型过于灵活,为统一时间格式,利于编程,应将时间的输入输出格式限定为14位字符串,如”20000101235959”据oracle文檔,此参数可按照session,操作系统用户环境,init.ora由高到低的优先级顺序设置,依次覆盖。相关系统表:v$nls_parametersv$nls_valid_valuesX-WindowOracle8的安装程序是光盘mount点/bin/orainst,使用字符接口,不用考虑X-Window。Oracle8i和9i使用光盘mount点/runInstaller进行安装,它是用Java编写的图形接口,对