oracle傻瓜手册v20.docx

上传人:b****4 文档编号:3507043 上传时间:2022-11-23 格式:DOCX 页数:96 大小:131.46KB
下载 相关 举报
oracle傻瓜手册v20.docx_第1页
第1页 / 共96页
oracle傻瓜手册v20.docx_第2页
第2页 / 共96页
oracle傻瓜手册v20.docx_第3页
第3页 / 共96页
oracle傻瓜手册v20.docx_第4页
第4页 / 共96页
oracle傻瓜手册v20.docx_第5页
第5页 / 共96页
点击查看更多>>
下载资源
资源描述

oracle傻瓜手册v20.docx

《oracle傻瓜手册v20.docx》由会员分享,可在线阅读,更多相关《oracle傻瓜手册v20.docx(96页珍藏版)》请在冰豆网上搜索。

oracle傻瓜手册v20.docx

oracle傻瓜手册v20

ORACLE傻瓜手册

TobeDBAornottobe,thatisNOTthequestion.----Arron

作者允许自由散发此文档,但对其进行的任何修改应通知作者,以便于维护版本。

作者email:

zhou_arron@

Oracle8以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.0

2000/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傻瓜手册1

1安装6

1.1通用设置6

1.2UnixWare77

1.2.1Oracle87

1.3HP-UX8

1.3.1Oracle88

1.4Linux9

1.4.1kernel2.0&glibc2.09

1.4.2kernel2.2&glibc2.19

1.4.3kernel2.4&glibc2.210

1.5Solaris11

2创建13

2.1Oracle8&8i13

2.1.1工具创建13

2.1.2手工创建13

2.1.3MTS(multi-threadedserver)14

2.1.4调整临时表空间15

2.1.5调整回滚表空间15

2.1.6调整日志15

2.1.7调整用户表空间16

2.1.8创建用户17

2.1.9创建数据对象17

2.1.10创建只读用户18

2.1.11启动及关闭数据库实例19

2.1.12网络配置19

2.2Oracle9i21

2.2.1手工创建21

2.2.2创建用户表空间22

3初始化文件配置23

3.1Oracle8&8i23

3.2Oracle9i25

4工具26

4.1sqlldr26

4.2exp27

4.3imp28

4.4sqlplus29

4.4.1命令行参数29

4.4.2提示符命令29

4.4.3SET选项30

4.4.4例子30

5备份及恢复32

5.1export与import方式32

5.2冷备份32

5.3联机全备份+日志备份32

5.3.1设置32

5.3.2步骤33

5.3.3恢复33

5.4注意要点34

6数据库优化35

6.1通用设置35

6.1.1硬件配置35

6.1.2应用配置35

6.1.3日常性能监控36

6.2实战分析36

6.2.1总体分析37

6.2.2详细分析37

6.3专题分析39

6.3.1巨表查询39

6.3.2对比测试41

6.3.3上下载数据44

6.3.4回滚空间快照陈旧(snapshottooold)46

7常用技巧48

7.1增加、更改和删除域48

7.2删除冗余记录49

7.3更改字符集49

7.4表数据迁移50

7.5成批生成数据50

7.6注意要点51

8嵌入式SQL(C)53

8.1编译53

8.2SQL语句54

8.2.1内部类型与宿主类型对应54

8.2.2连接和断开54

8.2.3事务55

8.2.4标准SQL语句55

8.2.5动态SQL语句55

8.2.6数组操作56

8.3编程框架58

8.3.1总体原则58

8.3.2单线程和多线程59

8.3.3开发工具60

9OCI—OracleCallInterface61

9.1连接和断开61

9.1.1句柄层次61

9.1.2连接流程61

9.1.3断开流程62

9.2SQL语句62

9.2.1事务62

9.2.2无结果集的sql语句63

9.2.3有结果集的sql语句63

9.2.4LOB65

9.3编程框架67

9.3.1总体原则67

9.3.2sql语句68

9.3.3函数69

10附录—MYSQL72

10.1安装配置72

10.2管理72

10.2.1初始调整72

10.2.2建立用户对象73

10.3开发73

10.3.1连接和断开73

10.3.2无结果集的sql语句74

10.3.3有结果集的sql74

10.3.4错误处理75

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,使每一个用户都获得环境变量设置

umask022

ORACLE_BASE=/opt/oracle

ORACLE_HOME=$ORACLE_BASE/product/{版本号}(如8.0.5,8.1.7,9.2.0等)

ORACLE_SID=oradb

ORACLE_TERM=ansi#仅与Oracle8字符界面安装有关

ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data#字符集支持

NLS_LANG=American_America.{ZHS16CGB231280(Oracle8支持)|ZHS16GBK(Oracle8i支持)|ZHS16GB18030(Oracle9i支持)}

NLS_DATE_FORMAT=YYYYMMDDHH24MISS

LD_LIBRARY_PATH=$ORACLE_HOME/lib:

$LD_LIBRARY_PATH#动态连接路径,Unixware中要确保/usr/ucb/lib在/usr/ccs/lib之后出现

TMPDIR=/tmp#安装中Oracle会在此目录下存储相当数量的文件,所以TMPDIR所在的磁盘分区要确保空闲空间的大小,至少在1G左右

PATH=$PATH:

$ORACLE_HOME/bin

exportORACLE_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=YYYYMMDDHH24MISS

Oracle的date类型过于灵活,为统一时间格式,利于编程,应将时间的输入输出格式限定为14位字符串,如”20000101235959”

据oracle文档,此参数可按照session,操作系统用户环境,init.ora由高到低的优先级顺序设置,依次覆盖。

相关系统表:

v$nls_parametersv$nls_valid_values

X-Window

Oracle8的安装程序是光盘mount点/bin/orainst,使用字符界面,不用考虑X-Window。

Oracle8i和9i使用光盘mount点/runInstaller进行安装,它是用Java编写的图形界面,对中文处理有问题,所以应在进入X-Window前确保语言(LANG)和地域(LC_ALL,LC_TYPE,…)环境变量不是中文。

LANG=C

LC_ALL=C

安装选项

Oracle8i的主要软件包在安装选项Enterprise中,但并不包括proc,必须进行第二次安装,可选择安装选项Client中的programmer。

Oracle9i的主要软件包在安装选项Enterprise安装选项中,但并不包括proc,必须进行第二次安装,一定要选择安装选项Client中的Administrator。

runInstaller的稳定性欠佳,建议每次安装结束后,先退出,再进行下一次安装。

1.2UnixWare7

1.2.1Oracle8

确认操作系统的交换分区swap不少于350M

认为该打的补丁统统打上,宁滥毋缺。

UnixWare7.0.1必须打的补丁为ptf7033,ptf7051,ptf7052,ptf7068,ptf7096。

将/etc/default/login中的ulimit设为大于2113674(稍大一点即可,太大会有问题)

将/etc/conf/node.d/async中的600改为666

修改以下核心参数

核心参数

必需值

解释

SHMMAX

2147483647

共享内存段最大尺寸

SHMMNI

100

系统共享内存段标识最大数目

SHMSEG

15

每个进程所能使用最大共享内存段数目

SEMMNI

100

核心信号量标识最大数目

SEMMSL

150

每个信号量标识包含的信号量个数

SCORLIM

0X7FFFFFFF

Core文件最大尺寸

HCORLIM

0X7FFFFFFF

SDATLIM

0X7FFFFFFF

进程堆最大尺寸

HDATLIM

0X7FFFFFFF

SVMMLIM

0X7FFFFFFF

进程最大映射地址

HVMMLIM

0X7FFFFFFF

SFSZLIM

0X7FFFFFFF

进程文件最大偏移量

HFSZLIM

0X7FFFFFFF

SFNOLIM

128

进程能打开的最大文件个数

HFNOLIM

2048

NPROC

20+(8*MAXUSERS)

MAX:

125000

ARG_MAX

1,048,576

NPBUF

100

I/O缓冲区数目

MAXUP

1000

用户同时使用的最大进程个数

STRTHRESH

0X500000

流能使用的最大字节数

为优化应用系统修改以下核心参数

核心参数

参考值

解释

MSGMAX

8192

消息最大尺寸

MSGMNB

81920

消息队列尺寸

MSGMNI

2048

系统能并存的最大消息队列数目

MSGSSZ

16384

MSGTQL

4096

系统能并用的消息头数目

SEMMNI

1024

SEMMSL

150

也可通过编辑/etc/conf/cf.d/stune达到同样效果

重新连接内核,重起或运行/etc/conf/bin/idbuild–B

修改核心参数SEMMAP时,注意要同时修改/etc/conf/mtune.d/ipc中相应的MAX值

建立/var/opt/oracle,使oracle成为此目录属主

mountoracle光盘,通常mount目录为/SD-CDROM_1

root用户,ORACLE_OWNER=oracle,执行光盘上orainst中oratab.sh,建立/var/opt/oracle/oratab

安装时,选custom方式,安装时不建立数据库,字符集可选SimplifiedChinese

1.3HP-UX

1.3.1Oracle8

流程大致与unixware相同,调整kernel参数可通过sam,选择/KernelConfiguration/Actions/ApplyTunedParameterSet/OLTPDatabaseServerSystem,另外为提高I/O能力,还需调整以下参数:

核心参数

参考值

解释

bufpages

61992

缓冲页

dbc_max_pct

10

动态缓存占内存最大百分比

dbc_min_pct

10

动态缓存占内存最小百分比

nbuf

设定共享库目录SHLIB_PATH,不是LD_LIBRARY_PATH

SHLIB_PATH=$SHLIB_PATH:

$ORACLE_HOME/lib;exportSHLIB_PATH

1.4Linux

1.4.1kernel2.0&glibc2.0

代表产品为RedHatLinux5.1。

Oracle8在RedHat5.1上能成功安装,安装软件包为805ship.tgz

一般不会在RedHat5.1上安装Oracle8i以上的版本

修改共享内存最大尺寸限制:

在系统初始化脚本/etc/rc.d/rc.sysinit中加入:

echo2147483648>/proc/sys/kernel/shmmax

重启计算机。

这样做避免了Oracle分配的共享内存碎片化,对提高效率有好处。

原$ORACLE_HOME/precomp/admin/pcscfg.cfg中sys_include有误,使proc预处理pc程序失败,安装结束后,应设为:

sys_include=(/usr/include,/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include)(视gcc版本而定)

1.4.2kernel2.2&glibc2.1

代表产品为RedHatLinux6.2。

修改共享内存最大尺寸限制:

在系统初始化脚本/etc/rc.d/rc.sysinit中加入:

echo2147483648>/proc/sys/kernel/shmmax

重启计算机。

这样做避免了Oracle分配的共享内存碎片化,对提高效率有好处。

原$ORACLE_HOME/precomp/admin/pcscfg.cfg中sys_include有误,使proc预处理pc程序失败,安装结束后,应设为sys_include=(/usr/include,/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include)(视gcc版本而定)

1.4.2.1Oracle8

本来已经很少有人在LinuxKernel2.2的系统中安装Oracle8.0.5,但笔者实在怀念8.0.5纯粹的文本界面和与之相处的无数不眠之夜,故收录如下:

Oracle8在kernel为2.2.x的linux中是无法正常运行的,运行可执行文件如svrmgrl,sqlplus时会导致“Segmentationfault”,原因在于这些linux使用了默认的libc2.1,与Oracle8程序重连接所需的libc2.0不兼容。

Oracle的补丁程序其实是将Oracle可执行程序的重连接脚本中libc位置重新定位到libc2.0上去,并用旧版的gcc,ld重新连接可执行文件。

为此必须先在系统中安装兼容库和相应工具。

这是权宜之计,而且仅对RedHat有效。

root用户

rpm–ivhtcl-8.0.3-20.i386.rpmOracle的IntelligentAgent要使用

rpm–ivhcompat-binutils-5.2-2.9.1.0.23.1.i386.rpm

rpm–ivhcompat-glibc-5.2-2.0.7.1.i386.rpm

rpm–ivhcompat-egcs-5.2-1.0.3a.1.i386.rpm

rpm–ivhcompat-egcs-c++-5.2-1.0.3a.1.i386.rpm

rpm–ivhcompat-libs-5.2-1.i386.rpm

版本号可略有差异

oracle用户安装Oracle8.0.5但不创建instance,如选择安装文档,则会产生如下错误:

Awriteerroroccurredwhiletrytocopy‘/home/oracle/setup_oracle/unixdoc/server.805/install/lnx_server.805.map’to‘/oracle/product/8.0.5/doc/server.805/install/lnx_server.805’(Nosuchfileordirectory).

这是安装程序的一个bug—不能创建目录。

可进入$ORACLE_HOME/doc,mkdir–pserver.805/install,再选择Retry

cd~/patch

glibcpatch.sh

经过一段时间后,看到“AppliedglibcpatchforOracle8.0.5.xsuccessfully”,表明补丁成功。

此时就能成功创建instance。

1.4.2.2Oracle8i

推荐使用典型安装,否则会产生难以预料的错误。

1.4.3kernel2.4&glibc2.2

代表产品为RedHatLinux7.3,SuSELinux7.3。

1.4.3.1Oracle8i

与Oracle8在RedHatLinux6.2上安装所遇到的问题一样,Oracle8i使用的glibc2.1与操作系统自带的glibc2.2不能兼容,解决的方法也一样,要安装glibc2.1的兼容库,并重新连接Oracle各组件。

除非万不得已,不建议使用兼容方式,因此省略安装步骤,可参阅网上有关文档。

1.4.3.2Oracle9i

RedHat7.3

修改共享内存最大尺寸限制:

在系统初始化脚本/etc/rc.d/rc.sysinit中加入:

echo2147483648>/proc/sys/kernel/shmmax。

修改信号量参数:

在系统初始化脚本/etc/rc.d/rc.sysinit中加入:

echo25032000100128>/proc/sys/kernel/sem。

这4个参数依次为SEMMSL(每个用户拥有信号量最大数量),SEMMNS(系统信号量最大数量),SEMOPM(每次semop系统调用操作数),SEMMNI(系统信号量集最大数量),事实上只有

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1