分享
 
 
 

ORACLE数据库傻瓜手册

王朝oracle·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

ORACLE傻瓜手册

To be DBA or not to be, that is NOT the question.---- Arron

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

Oracle是一头恐龙,而且随着版本号的不断上升,体系越来越庞大,功能越来越复

杂,以至于变成了一座偶像,使许多IT技术人员心存畏惧。然而偶像终究是要打碎的,

技术的生命力只有在人民心中才能延续成长。笔者从事过一段时间的Oracle数据库管理

和开发,深感Oracle文档虽全,但过于琐碎芜杂,实用的精华淹没于细节罗列的大海之

中,不能迅速有效地投入应用,而且缺少实践经验的总结。高手牛人疏于为文,知识由

于没有共享流传而不能起到倍增的效果,令我等后辈不得不重起炉灶,惨淡经营,期间

的经验教训虽可宝贵,却实出无奈。笔者虽愚,愿尽力而为,集思广益,累积成文。希

望能借助大家的合力,将有关Oracle的知识化繁为简,化神秘为普及,从而提高软件应

用项目的水平。

作者:周云飞 email:zhou_arron@163.com

Oracle8以8.1.5为界分为普通版本和internet版本。普通版版本号8.0.x,接触较多的是8.0.5;internet版版本号包括8.1.5(Release 1),8.1.6(Release 2),8.1.7(Release 3)。普通版简称Oracle 8,internet版简称Oracle 8i。如果不作特别说明,文中凡出现Oracle 8i均指8.1.7版。

Oracle9i目前出到第二版,版本号为9.2,简称Oracle 9i。如果不作特别说明,文中凡出现Oracle 9i均指9.2版。

本手册介绍Oracle配置的基本方法,描述的是"所然"而不是"所以然"。全部操作以命令行方式出现,不涉及GUI(只有白刃战才是真正的战斗)。鉴于大家对Windows已经十分熟悉,同时为了避免Windows和Unix两种截然不同的使用和开发风格给描述带来的复杂性,所以本手册不介绍在Windows上的Oracle(上帝的归上帝,恺撒的归恺撒)。

文中所有例子以oradb作为数据库实例名,数据库用户dbuser,口令oracle。如果不作特别说明,关于Oracle 8i所有的例子都在Solaris 8 Intel Platform+Oracle 8iR3上通过,关于Oracle 9i所有的例子都在RedHat Linux 7.3+Oracle 9iR2上通过。附录文件sample.tar包含全部示例,简称附录。

大量使用表emp作为例子(参见附录08_proc/proc/single/emp.sql):

create table emp

(

no number(12) not null,

name char(20) not null,

age number(6) not null,

duty char(1) not null,

salary number(12) not null,

upd_ts date not null,

primary key (no)

);

开发中对应emp表结构,定义其宿主结构(参见附录08_proc/proc/single/db.h):

typedef struct

{

double no;

char name[21];

int age;

char duty[2];

double salary;

char upd_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安装中RedHat 6.x+Oracle 8.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

重新安排内容,增加Oracle 9i安装配置、OCI开发、mysql安装配置开发,补充数据库优化、PROC开发

ORACLE傻瓜手册 1

1 安装 6

1.1 通用设置 6

1.2 UnixWare7 7

1.2.1 Oracle 8 7

1.3 HP-UX 8

1.3.1 Oracle8 8

1.4 Linux 9

1.4.1 kernel 2.0 & glibc 2.0 9

1.4.2 kernel 2.2 & glibc 2.1 9

1.4.3 kernel 2.4 & glibc 2.2 10

1.5 Solaris 11

2 创建 13

2.1 Oracle 8 & 8i 13

2.1.1 工具创建 13

2.1.2 手工创建 13

2.1.3 MTS(multi-threaded server) 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.2 Oracle 9i 21

2.2.1 手工创建 21

2.2.2 创建用户表空间 22

3 初始化文件配置 23

3.1 Oracle 8 & 8i 23

3.2 Oracle 9i 25

4 工具 26

4.1 sqlldr 26

4.2 exp 27

4.3 imp 28

4.4 sqlplus 29

4.4.1 命令行参数 29

4.4.2 提示符命令 29

4.4.3 SET选项 30

4.4.4 例子 30

5 备份及恢复 32

5.1 export与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 回滚空间快照陈旧(snapshot too old) 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.2 SQL语句 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

9 OCI-Oracle Call Interface 61

9.1 连接和断开 61

9.1.1 句柄层次 61

9.1.2 连接流程 61

9.1.3 断开流程 62

9.2 SQL语句 62

9.2.1 事务 62

9.2.2 无结果集的sql语句 63

9.2.3 有结果集的sql语句 63

9.2.4 LOB 65

9.3 编程框架 67

9.3.1 总体原则 67

9.3.2 sql语句 68

9.3.3 函数 69

10 附录-MYSQL 72

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 有结果集的sql 74

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的名称。

$ groupadd dba

$ useradd -g dba -d /home/oracle -m -s /bin/bash oracle

确定oracle 系统的根目录ORACLE_BASE,如/opt/oracle,所有的软件和配置都在这个目录下展开,虽然并非一定需要如此,但这是一个良好的习惯。同时确定软件安装的起始点ORACLE_HOME,通常在ORACLE_BASE下。

修改oracle用户的.profile,加入以下各行,或者修改/etc/profile,使每一个用户都获得环境变量设置

umask 022

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

export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_TERM ORA_NLS33 NLS_LANG NLS_DATE_FORMAT LD_LIBRARY_PATH TMPDIR

参见profile。

注意:

NLS_LANG=American_America.ZHS16CGB231280(ZHS16GBK)

"American"指显示信息时所用的语言,窃以为凭大家的英语水平足够应付,如改为SIMPLIFIED CHINESE,在不带中文支持的终端上就没人能看懂了。

"America"指地区

"ZHS16CGB231280"指Client工具使用的字符集,一般使用"ZHS16CGB231280",Oracle8i已支持到"ZHS16GBK"

NLS_DATE_FORMAT=YYYYMMDDHH24MISS

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

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

相关系统表:

v$nls_parameters v$nls_valid_values

X-Window

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

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

LANG=C

LC_ALL=C

安装选项

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

Oracle 9i的主要软件包在安装选项Enterprise安装选项中,但并不包括proc,必须进行第二次安装,一定要选择安装选项Client中的Administrator。runInstaller的稳定性欠佳,建议每次安装结束后,先退出,再进行下一次安装。

1.2 UnixWare7

1.2.1 Oracle 8

确认操作系统的交换分区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成为此目录属主

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

root用户,ORACLE_OWNER=oracle,执行光盘上or

[1] [2] [3] [4] [5] [6] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有