Microsoft Word - ORACLE数据库维护.doc



Similar documents
ebook10-5

Oracle 4

PowerPoint Presentation

回滚段探究

ebook 96-16

System Global Area, Oracle Background process Oracle, Server Process user process, user process : SQL*PLUS SYSTEM SQL> select name from v$datafile; NA

sql> startup mount 改变数据库的归档模式 sql> alter database archivelog # 打开数据库 sql> alter database open 禁止归档模式 sql> shutdown immediate sql>startup mount sql> al

数 据 库 系 统 基 础 2/54 第 6 章 数 据 库 管 理 与 维 护

untitled

ebook 185-6

Oracle高级复制配置手册_业务广告_.doc

三. 发现表被删除, 开始着手解决 1. 该表所在表空间离线 ( 确保删除表所在位置不会被重写 ) SQL> alter tablespace raw_odu offline; Tablespace altered. 2. 通过 logmnr, 找出被删除的数据 data _object _id 1

季刊9web.indd

RunPC2_.doc

Simulator By SunLingxi 2003

使用SQL Developer

AL-M200 Series

Oracle数据库应用技术4 [兼容模式]

RUN_PC連載_12_.doc

ebook140-9

IP505SM_manual_cn.doc

ebook140-8

untitled

AL-MX200 Series

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

untitled

工程师培训

SQL Server SQL Server SQL Mail Windows NT

Oracle Database 10g: SQL (OCE) 的第一堂課

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

oracle-Ess-05.pdf

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

Basic System Administration

ebook140-11

Chapter 2

Windows 2000 Server for T100

教 学 目 标 描 述 主 要 数 据 库 对 象 创 建 表 描 述 列 定 义 时 可 用 的 数 据 类 型 改 变 表 的 定 义 删 除 改 名 和 截 断 表 描 述 每 个 DML 语 句 插 入 行 到 表 中 更 新 表 中 的 行 从 表 中 删 除 行 描 述 约 束 创 建

Oracle Reports培训教程20.doc

epub 61-2

Data Server_new_.doc

DB2 (join) SQL DB2 11 SQL DB2 SQL 9.1 DB2 DB2 ( ) SQL ( ) DB2 SQL DB2 DB2 SQL DB2 DB2 SQL DB2 ( DB2 ) DB2 DB2 DB2 SQL DB2 (1) SQL (2) S

习题1

ch08.PDF

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

untitled

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

SPFILE的使用

ansoft_setup21.doc

TCP/IP TCP/IP OSI IP TCP IP IP TCP/IP TCP/IP

Microsoft Word - ORA doc

第 11 章 互聯網技術 11.1 互聯 網 和 萬 維 網 的 發 展 歷 史 A. 互聯網的發展 互聯網是由 ARPANET 開 始發展的 1969 年 美國國防部高級研究計劃署 (ARPA) 把部分軍事研究所和大 的電腦連接起來 建造了㆒個實驗性的電腦網絡 稱為 ARPANET 並 列 的功能

Cadence SPB 15.2 VOICE Cadence SPB 15.2 PC Cadence 3 (1) CD1 1of 2 (2) CD2 2of 2 (3) CD3 Concept HDL 1of 1

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

Microsoft Word - template.doc

1

数据库朊务

Oracle高级复制冲突解决机制的研究

ebook46-23

穨IC-1000

目錄... ivv...vii Chapter DETECT

基于UML建模的管理管理信息系统项目案例导航——VB篇

IC-900W Wireless Pan & Tilt Wireless Pan & Tilt Remote Control / Night Vision FCC ID:RUJ-LR802UWG

一步一步教你搞网站同步镜像!|动易Cms

Microsoft Word htm

SL2511 SR Plus 操作手冊_單面.doc

1 SQL Server 2005 SQL Server Microsoft Windows Server 2003NTFS NTFS SQL Server 2000 Randy Dyess DBA SQL Server SQL Server DBA SQL Server SQL Se

untitled

Microsoft Word - PS2_linux_guide_cn.doc

1 o o o CPU o o o o o SQL Server 2005 o CPU o o o o o SQL Server o Microsoft SQL Server 2005

Microsoft Word - SupplyIT manual 3_cn_david.doc

SA-DK2-U3Rユーザーズマニュアル

9 Internet 10 Internet

IBM Rational ClearQuest Client for Eclipse 1/ IBM Rational ClearQuest Client for Ecl

jdbc:hsqldb:hsql: jdbc:hsqldb:hsqls: jdbc:hsqldb:http: jdbc:hsqldb:https: //localhost // :9500 / /dbserver.somedomain.com /an_alias /enrollme

Serial ATA ( Silicon Image SiI3114)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 5 (4) S A T A... 8 (5) S A T A... 10

01 SQL Server SQL Server 2008 SQL Server 6-1 SSIS SQL Server ( master ) ( msdb ) SQL Server ( master ) master 6-1 DTS sysadmin 6-1 sysa

User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2

f2.eps

Guide to Install SATA Hard Disks

Microsoft Word - linux命令及建议.doc

ebook 132-2

用Oracle数据库配置在ISE 2.3的ODBC

Microsoft Word - Functional_Notes_3.90_CN.doc

IT (1) IDE... 2 (2) BIOS IDE RAID... 3 (3) RAID BIOS RAID... 5 (4) R A I D (5) ID E RA ID... 15

经华名家讲堂

未命名

PPBSalesDB.doc

幻灯片 1

软件概述

T

Chap6.ppt

untitled

untitled

11.2 overview

ORACLE Enterprise Linux 6.3下ORACLE11g的安装

目錄

Windows 2000 Server for T100

自动化接口

Transcription:

ORACLE 数 据 库 维 护 ORACLE 数 据 库 维 护 0 1. ORACLE 数 据 库 启 动 与 关 闭 2 1.1 打 开 和 关 闭 数 据 库 ( 手 工 2 1.1.1 sqlplus 连 接 2 1.1.2 打 开 数 据 库 2 1.1.3 启 动 oracle listener 2 1.1.4 关 闭 oracle listener 2 1.1.5 关 闭 数 据 库 2 2. 数 据 库 备 份 3 2.1 冷 备 份 3 2.2 用 exp imp 命 令 做 逻 辑 备 份 3 2.3 用 tar 命 令 做 物 理 备 份 4 2.4 备 份 控 制 文 件 4 2.5 联 机 全 备 份 + 日 志 备 份 5 2.5.1 设 置 5 2.5.2 步 骤 6 2.5.3 恢 复 6 2.5.3.1 磁 盘 全 部 损 坏, 仅 保 存 上 次 联 机 全 备 份 和 每 天 日 志 备 份 6 2.5.3.2 丢 失 某 数 据 文 件 7 2.5.3.3 文 件 损 坏 或 丢 失, 又 无 备 份, 7 2.5.4 注 意 要 点 7 3. 数 据 库 的 扩 充 8 3.1 增 加 一 个 表 空 间 8 3.1.1 创 建 表 空 间 8 3.1.2 增 加 某 个 表 空 间 的 大 小 9 3.2 增 加 oracle 的 用 户, 并 给 用 户 授 权 9 3.2.1 增 加 oracle 的 用 户, 并 给 用 户 授 权 9 3.2.2 增 加 oracle 的 角 色 9 3.2.3 中 断 用 户 同 oracle 的 连 接 9 3.3 表 视 图 索 引 约 束 10 3.3.1 表 和 视 图 10 3.3.1.1 管 理 表 10 3.3.1.1.1 建 立 表 10 3.3.1.1.2 表 的 命 名 规 则 11 3.3.1.1.3 从 其 它 表 中 建 立 表 11 3.3.1.1.4 更 改 表 定 义 11 3.3.1.2 管 理 视 图 13 3.3.1.2.1 建 立 视 图 14 3.3.1.2.2 从 视 图 中 获 得 数 据 14 3.3.1.2.3 插 入 更 新 删 除 数 据 15 3.3.1.2.4 删 除 视 图 15 3.3.2 索 引 15

3.3.2.1 B-Tree 索 引 15 3.3.2.2 位 图 索 引 16 3.3.2.3 修 改 索 引 16 3.3.2.4 重 建 索 引 16 3.3.3 序 列 (Sequences 16 3.3.3.1 创 建 序 列 17 3.3.3.2 删 除 序 列 17 3.4 网 络 管 理 17 3.4.1 Net8 server 端 配 置 18 3.4.1.1 listener.ora 文 件 的 样 本 : 18 3.4.1.2 启 动 listener 19 3.4.2 Net 8 client 端 配 置 19 3.4.3 sqlnet.ora 20 3.4.4 网 络 连 通 性 测 试 20 3.4.5 常 见 NET8 错 误 21 3.4.5.1 服 务 器 端 诊 断 21 3.4.5.2 客 户 端 诊 断 22 3.4.5.3 常 见 错 误 24 4. ORACLE8i 与 系 统 管 理 有 关 的 新 特 性 28 4.1 本 地 化 管 理 表 空 间 28 4.2 FBI 索 引 29 4.3 在 线 索 引 创 建 和 重 建 32 4.4 使 用 可 传 输 的 表 空 间 实 现 数 据 在 数 据 库 间 的 移 动 32 1. ORACLE 数 据 库 启 动 与 关 闭 1.1 打 开 和 关 闭 数 据 库 ( 手 工 1.1.1 sqlplus 连 接 #su - oracle #sqlplus /nolog 1.1.2 打 开 数 据 库 sql> connect sys/oracle as sysdba; sql> startup [nomount mount] 等 待 十 几 秒 左 右, 当 看 到 oracle instances started, database mounted, database opened 的 时 候,oracle 数 据 库 打 开 成 功 备 注 : 打 开 数 据 库 startup 可 带 三 个 参 数, 分 别 是 SQL > startup nomount 仅 启 动 instances SQL > startup mount 启 动 instances, 连 上 (mount 数 据 库 SQL > startup normal 启 动 instances, 连 上 (mount 数 据 库 ( 推 荐 打 开 (open 数 据 库

startup 缺 省 参 数 是 normal 1.1.3 启 动 oracle listener #su - oracle #lsnrctl start 如 果 出 错 检 查 环 境 变 量 是 否 设 好, 及 lsnrctl 文 件 的 内 容 和 执 行 属 性 1.1.4 关 闭 oracle listener #su - oracle #lsnrctl stop 1.1.5 关 闭 数 据 库 sql> connect sys/oracle as sysdba; sql> shutdown 关 闭 数 据 库 ( 推 荐 等 待 几 秒 左 右, 当 看 到 database closed database dismounted oracle instances shut down 的 时 候,oracle 数 据 库 关 闭 成 功 备 注 : 关 闭 数 据 库 shutdown 可 带 三 个 参 数, 分 别 是 SQL > shutdown abort 非 正 常 立 刻 关 机 等 于 忽 然 停 电 SQL > shutdown immediate 做 回 滚 操 作, 立 刻 关 机 SQL > shutdown normal 正 常 关 机 ( 推 荐 shutdown 缺 省 参 数 是 normal 2. 数 据 库 备 份 2.1 冷 备 份 关 闭 数 据 库 时 作 的 备 份 称 为 冷 备 份 关 闭 数 据 库, 将 所 有 和 本 实 例 有 关 的 文 件, 包 括 datafile,controlfile,redolog,archiv ed redolog,initora.ora 等 全 部 备 份 恢 复 时 只 要 将 这 些 文 件 放 回 从 前 的 目 录,startup 数 据 库 即 可 数 据 库 处 于 归 档 非 归 档 状 态 均 可 2.2 用 exp imp 命 令 做 逻 辑 备 份 EXP: 有 三 种 主 要 的 方 式 ( 完 全 用 户 表 1 完 全 : exp system/manager buffer=64000 file=/backup/full.dmp full=y 如 果 要 执 行 完 全 导 出, 必 须 具 有 角 色 EXP_FULL_DATABASE 2 用 户 模 式 : exp system/manager buffer=64000 file=/backup/bill.dmp owner=bill 这 样 用 户 bill 的 所 有 对 象 被 输 出 到 文 件 中 3 表 模 式 : exp system/manager buffer=64000 file=/backup/area.dmp owner=bill tables=area 这 样 用 户 bill 的 表 area 就 被 导 出 到 文 件 中 需 要 注 意 的 参 数 是 Inctype, 这 个 参 数 可 以 取 一 下 三 个 值 : Complete( 全 备 份 : 把 数 据 库 中 所 有 数 据 对 象 导 出 到 dump 文 件 中, 只 有 具 有 Exp_fu ll_database 的 用 户 有 使 用 这 个 参 数 的 权 限 Incremental( 增 量 备 份 : 把 数 据 库 中 所 有 上 次 备 份 后 修 改 的 表 备 份 出 来

Cumulative( 累 计 备 份 : 把 数 据 库 中 所 有 全 备 份 或 者 累 计 备 份 以 后 修 改 的 表 备 份 出 来 IMP: 具 有 三 种 模 式 ( 完 全 用 户 表 1 完 全 : imp system/manager buffer=64000 file=/backup/full.dmp full=y 如 果 要 执 行 完 全 导 入, 必 须 具 有 角 色 IMP_FULL_DATABASE 2 用 户 模 式 : imp system/manager buffer=64000 file=/backup/area.dmp fromuser=bill touser=billbak 文 件 中 用 户 bill 的 所 有 对 象 被 导 入 到 用 户 billbakk 中 必 须 指 定 fromuser touser 参 数 3 表 模 式 : imp system/manager buffer=64000 file=/backup/area.dmp fromuser=bill touser=billbak tables=area 文 件 中 用 户 bill 的 表 area 就 被 导 入 到 用 户 billbak 中 2.3 用 tar 命 令 做 物 理 备 份 1 #su - oracle 2 % tar cvf /dev/rmt0. 把 oracle 路 径 下 所 有 文 件 备 份 到 磁 带 机 上 3 % tar xvf /dev/rmt0 把 备 份 磁 带 上 所 有 文 件 恢 复 进 oracle 当 前 路 径 4 % tar tvf /dev/rmt/0 查 看 磁 带 上 有 些 什 么 文 件 2.4 备 份 控 制 文 件 控 制 文 件 是 Oracle 数 据 库 中 非 常 重 要 的 文 件 它 记 录 着 oracle 数 据 库 的 物 理 结 构 信 息, 比 如 数 据 文 件, 日 值 文 件 的 数 量 和 位 置 等 在 数 据 库 启 动 过 程 中, 需 要 读 取 控 制 文 件 如 果 控 制 文 件 损 坏 或 丢 失, 数 据 库 就 无 法 启 动 因 此, 做 好 控 制 文 件 的 备 份 十 分 重 要 一 般 的 数 据 库 配 置 都 会 有 多 个 控 制 文 件 这 些 控 制 文 件 是 完 全 相 同 的, 分 别 存 放 在 不 同 的 位 置 ( 最 好 在 不 同 的 磁 盘 上, 他 们 之 间 互 为 备 份 数 据 库 启 动 过 程 中, 必 须 保 证 所 有 控 制 文 件 都 是 一 致 的, 否 则 数 据 库 不 能 启 动 在 oracle 数 据 库 的 参 数 文 件 (initsid.o ra 中 指 定 控 制 文 件 的 位 置 如 果 部 分 控 制 文 件 损 坏, 可 以 在 参 数 文 件 中 去 掉 相 应 的 控 制 文 件, 即 可 启 动 数 据 库 每 次 数 据 库 物 理 结 构 发 生 改 变 时, 必 须 及 时 备 份 控 制 文 件 $sqlplus SQL>connect internal SQL>alter database backup controlfile to / /test.ctl ; 也 可 以 把 控 制 文 件 备 份 成 脚 本, 在 必 要 的 时 候 重 建 控 制 文 件 SQL>alter database backup controlfile to trace; 2.5 联 机 全 备 份 + 日 志 备 份 2.5.1 设 置 ORACLE 数 据 库 有 两 种 运 行 方 式 : 一 是 归 档 方 式 (ARCHIVELOG, 归 档 方 式 的 目 的 是 当 数 据 库 发 生 故 障 时 最 大 限 度 恢 复 所 有 已 提 交 的 事 物 ; 二 是 不 归 档 方 式 (NOARCHIVELOG, 恢

复 数 据 库 到 最 近 的 回 收 点 这 两 种 方 式 将 对 备 份 方 法 产 生 较 大 的 影 响 1. 改 变 不 归 档 方 式 为 为 归 档 方 式 2. 关 闭 数 据 库, 备 份 已 有 的 数 据 3. 改 变 数 据 库 的 运 行 方 式 是 对 数 据 库 的 重 要 改 动, 所 以 要 对 数 据 库 做 备 份, 对 可 能 出 现 的 问 题 作 出 保 护 4. 启 动 Instance,Mount 数 据 库 但 不 打 开 数 据 库, 来 改 变 归 档 方 式 #sqlplus sql>connect internal sql>startup mount sql>alter database archivelog; 5. 使 能 自 动 存 档 在 初 始 化 文 件 init*.ora( 一 般 放 ORACLE 根 目 录 的 下 层 目 录 dbs 下 加 参 数 : log_archive_start=true 6. 指 定 存 档 的 重 做 登 录 文 件 名 和 存 放 的 位 置 同 样 是 在 初 始 化 文 件 init*.ora 中 加 入 下 面 的 参 数 : log_archive_format=%s.arc log_archive_dest=/arch12/arch (arch12 是 日 志 文 件 存 放 的 目 录 7. 关 闭 数 据 库, 重 新 启 动 数 据 库, 归 档 方 式 转 换 完 成 8. 可 用 archive log list 查 看 状 态, 去 除 归 档 日 志 功 能 的 命 令 为 alter database noarchivelog 2.5.2 步 骤 联 机 全 备 份 : 数 据 库 处 于 open 状 态, 依 次 对 各 个 表 空 间 备 份 sqlplus "/ as sysdba" SQL>alter tablespace system begin backup; 复 制 此 tablespace 各 个 datafile SQL>alter tablespace system end backup; 注 意 :begin backup 是 对 tablespace 冻 结 写 入,end backup 是 解 除 冻 结, 因 此 复 制 dataf ile 的 过 程 不 宜 过 长 备 份 controlfile SQL>alter database backup controlfile to. ; 日 志 备 份 : sqlplus "/ as sysdba" SQL>alter system archive log stop; 移 去 日 志 目 录 下 的 所 有 archived redolog SQL>alter system archive log start; 2.5.3 恢 复 数 据 库 处 于 shutdown 状 态 2.5.3.1 磁 盘 全 部 损 坏, 仅 保 存 上 次 联 机 全 备 份 和 每 天 日 志 备 份 这 是 最 坏 情 况 解 决 硬 件 故 障, 配 置 系 统 软 件 及 环 境 oracle 用 户, 将 全 备 份 和 日 志 备 份 转 移 至 相 应 目 录, 根 据 initsid.ora 中 controlfile 的 配 置, 将 备 份 控 制 文 件 复 制 到 响 应 目 录 下 sqlplus "/ as sysdba"

SQL>startup mount SQL>recover database until cancel using backup controlfile; 逐 个 确 认 待 恢 复 的 archived redolog, 待 最 后 一 个 完 成 后, 键 入 cancel, 使 恢 复 结 束 SQL>alter database open resetlogs; 注 意 : 由 于 日 志 已 经 重 置, 所 以 应 尽 快 做 一 次 联 机 全 备 份 2.5.3.2 丢 失 某 数 据 文 件 只 要 将 此 文 件 从 上 次 联 机 全 备 份 中 复 制 至 其 目 录, 并 将 自 上 次 联 机 全 备 份 以 来 所 有 日 志 备 份 移 至 归 档 目 录 sqlplus "/ as sysdba" SQL>startup mount SQL>alter database recover datafile path/file ; 或 者 简 单 些 recover database; SQL>alter database open; 2.5.3.3 文 件 损 坏 或 丢 失, 又 无 备 份, 这 种 情 况 只 能 将 此 文 件 脱 机, 将 数 据 exp 出 来, 重 建 表 空 间, 再 imp 进 去 sqlplus "/ as sysdba" SQL>connect internal SQL>startup mount SQL>alter database datafile path/file offline; SQL>alter database open; 2.5.4 注 意 要 点 无 论 有 多 少 把 握, 恢 复 前 先 做 冷 备 份, 此 为 第 一 原 则 不 这 样 做, 便 是 无 路 可 退, 一 旦 失 误, 后 果 十 分 严 重 1.rollback 段 损 坏 这 是 非 常 严 重 的 问 题, 可 在 initora.ora 中 写 入 _corrupted_rollback_segments=(rxx, 启 动 时 避 开 损 坏 的 rollback 段, 这 只 是 权 宜 之 计 如 数 据 库 处 于 archivelog, 应 从 上 一 次 全 备 份 起 利 用 备 份 的 日 志 进 行 恢 复 ; 如 数 据 库 处 于 noarchivelog, 应 尽 快 将 全 部 数 据 e xport 出 来, 重 建 数 据 库, 再 import 进 去 所 有 操 作 之 前, 应 做 冷 备 份 2. 数 据 库 异 常 中 止 处 理 通 过 手 工 shutdown abort 操 作 中 止 数 据 库, 不 会 产 生 大 的 问 题, 通 常 直 接 startup 无 需 使 用 介 质 恢 复 命 令 如 果 由 于 机 器 崩 溃 引 起 的 中 止, 则 情 况 严 重 得 多, 有 可 能 要 使 用 到 上 面 提 到 的 恢 复 方 法, 不 过 这 种 现 象 并 不 多 见 一 般 需 要 显 式 使 用 介 质 恢 复 命 令, 如 下 : sqlplus "/ as sysdba" SQL>startup mount; SQL>recover database; SQL>alter database open; 3. 数 据 库 的 扩 充 3.1 增 加 一 个 表 空 间 3.1.1 创 建 表 空 间 命 令 示 例 : SQL>create tablespace application datafile /usr/oracle/dbs/application.dbf size 3M 针 对 具 体 情 况 增 加 回 滚 和 临 时 表 空 间 命 令 示 例 :

SQL>create rollback segment rbs8 tablespace rbs storage(initial 1m next 4m SQL>CREATE TABLESPACE TEMP DATAFILE "/usr/oracle/dbs/temp.dbf " SIZE 32M REUSE AUTOEXTEND ON NEXT 640K MINIMUM EXTENT 64K DEFAULT STORAGE ( INITIAL 64K NEXT 64K MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0 TEMPORARY; 回 滚 和 临 时 表 空 间 用 完 后, 可 删 除 或 使 它 offline SQL>drop tablespace rbs8; SQL>drop tablespaces billtemp; SQL>alter tablespace rbs offline; SQL>alter tablespace billtemp offline; 3.1.2 增 加 某 个 表 空 间 的 大 小 当 一 个 表 空 间 的 大 小 不 能 满 足 工 作 需 要 时, 应 该 扩 充 表 空 间 举 例 : SQL>alter tablespace system add datafile /usr/oracle/dbs/sys338.dbf size 3M; 3.2 增 加 oracle 的 用 户, 并 给 用 户 授 权 3.2.1 增 加 oracle 的 用 户, 并 给 用 户 授 权 举 例 : SQL>create user newuser identified by userpasswd default tablespace application temporary tablespace billtemp; SQL>grant connect to newuser; SQL>grant resource to newuser; SQL>grant update on emp to newuser; 3.2.2 增 加 oracle 的 角 色 oracle 的 缺 省 角 色 有 connect resource dba 它 是 一 组 可 以 分 配 给 其 它 role 或 用 户 的 权 限 总 和,connect 有 8 个 权 限,resource 有 5 个 权 限,dba 有 77 个 权 限 给 一 般 连 接 用 户 赋 connect, 给 一 般 编 程 人 员 赋 connect 加 resource, 只 有 数 据 库 管 理 员 才 有 dba 的 权 限 1 创 建 一 个 角 色 SQL>create role newrole identified by rolepasswd; 2 给 角 色 赋 权 限 SQL>grant select on all table to newrolle; SQL>grant connect to newrole with admin option; 3.2.3 中 断 用 户 同 oracle 的 连 接 当 oracle 数 据 库 要 关 机 或 某 个 用 户 占 有 的 大 量 的 资 源 需 要 被 释 放 时,dba 需 中 断 用 户 同 o racle 的 连 接 1 SQL>select sid,serial#,username from v$session;

2 SQL>alter system kill session interger1,interger2 ; interger1,interger2 分 别 对 应 于 sid 和 serial# 3.3 表 视 图 索 引 约 束 Oracle 数 据 库 数 据 对 象 中 最 基 本 的 是 表 和 视 图, 其 他 还 有 约 束 序 列 函 数 存 储 过 程 包 触 发 器 等 对 数 据 库 的 操 作 可 以 基 本 归 结 为 对 数 据 对 象 的 操 作 3.3.1 表 和 视 图 Oracle 中 表 是 数 据 存 储 的 基 本 结 构 ORACLE8 引 入 了 分 区 表 和 对 象 表,ORACLE8i 引 入 了 临 时 表, 使 表 的 功 能 更 强 大 视 图 是 一 个 或 多 个 表 中 数 据 的 逻 辑 表 达 式 本 文 我 们 将 讨 论 怎 样 创 建 和 管 理 简 单 的 表 和 视 图 3.3.1.1 管 理 表 3.3.1.1.1 建 立 表 表 可 以 看 作 有 行 和 列 的 电 子 数 据 表, 表 是 关 系 数 据 库 中 一 种 拥 有 数 据 的 结 构 用 CREATE TABLE 语 句 建 立 表, 在 建 立 表 的 同 时, 必 须 定 义 表 名, 列, 以 及 列 的 数 据 类 型 和 大 小 例 如 : CREATE TABLE products ( PROD_ID NUMBER(4, PROD_NAME VAECHAR2(20, STOCK_QTY NUMBER(5,3 ; 这 样 我 们 就 建 立 了 一 个 名 为 products 的 表, 关 键 词 CREATE TABLE 后 紧 跟 的 表 名, 然 后 定 义 了 三 列, 同 时 规 定 了 列 的 数 据 类 型 和 大 小 在 创 建 表 的 同 时 你 可 以 规 定 表 的 完 整 性 约 束, 也 可 以 规 定 列 的 完 整 性 约 束, 在 列 上 普 通 的 约 束 是 NOT NULL, 关 于 约 束 的 讨 论 我 们 在 以 后 进 行 在 建 立 或 更 改 表 时, 可 以 给 表 一 个 缺 省 值 缺 省 值 是 在 增 加 行 时, 增 加 的 数 据 行 中 某 一 项 值 为 null 时,oracle 即 认 为 该 值 为 缺 省 值 下 列 数 据 字 典 视 图 提 供 表 和 表 的 列 的 信 息 :. DBA_TABLES. DBA_ALL_TABLES. USER_TABLES. USER_ALL_TABLES. ALL_TABLES. ALL_ALL_TABLES. DBA_TAB_COLUMNS. USER_TAB_COLUMNS. ALL_TAB_COLUMNS 3.3.1.1.2 表 的 命 名 规 则 表 名 标 识 一 个 表, 所 以 应 尽 可 能 在 表 名 中 描 述 表,oracle 中 表 名 或 列 名 最 长 可 以 达 30 个 字 符 串 表 名 应 该 以 字 母 开 始, 可 以 在 表 名 中 包 含 数 字 下 划 线 # $ 等 3.3.1.1.3 从 其 它 表 中 建 立 表 可 以 使 用 查 询 从 基 于 一 个 或 多 个 表 中 建 立 表, 表 的 列 的 数 据 类 型 和 大 小 有 查 询 结 果 决 定 建 立 这 种 形 式 的 表 的 查 询 可 以 选 择 其 他 表 中 所 有 的 列 或 者 只 选 择 部 分 列 在 CREATE TABLE 语 句 中 使 用 关 键 字 AS, 例 如 : SQL>CREATE TABLE emp AS SELECT * FROM employee TABLE CREATED

SQL> CREATE TABLE Y AS SELECT * FROM X WHERE no=2 需 要 注 意 的 是 如 果 查 询 涉 及 LONG 数 据 类 型, 那 么 CREATE TABLE...AS SELECT... 将 不 会 工 作 3.3.1.1.4 更 改 表 定 义 在 建 立 表 后, 有 时 候 我 们 可 能 需 要 修 改 表, 比 如 更 改 列 的 定 义, 更 改 缺 省 值, 增 加 新 列, 删 除 列 等 等 ORACLE 使 用 ALTER TABLE 语 句 来 更 改 表 的 定 义 3.3.1.1.4.1 增 加 列 语 法 :ALTER TABLE [schema.] table_name ADD column_definition 例 : ALTER TABLE orders ADD order_date DATE; 对 于 已 经 存 在 的 数 据 行, 新 列 的 值 将 是 NULL. 3.3.1.1.4.2 更 改 列 语 法 : ALTER TABLE [schema.] table_name MODIFY column_name new_attributes; 例 : ALTER TABLE orders MODITY (quantity number(10,3,status varchar2(15; 这 个 例 子 中 我 们 修 改 了 表 orders, 将 STATUS 列 的 长 度 增 加 到 15, 将 QUANTITY 列 减 小 到 10,3 ; 修 改 列 的 规 则 如 下 : 可 以 增 加 字 符 串 数 据 类 型 的 列 的 长 度, 数 字 数 据 类 型 列 的 精 度 减 少 列 的 长 度 时, 该 列 应 该 不 包 含 任 何 值, 所 有 数 据 行 都 为 NULL 改 变 数 据 类 型 时, 该 列 的 值 必 须 是 NULL. 对 于 十 进 制 数 字, 可 以 增 加 或 减 少 但 不 能 降 低 他 的 精 度 3.3.1.1.4.3 删 除 数 据 列 优 化 ORACLE 数 据 库, 唯 一 的 方 法 是 删 除 列, 重 新 建 立 数 据 库 在 ORACLE8i 中 有 很 多 方 法 删 除 列, 你 可 以 删 除 未 用 数 据 列 或 者 可 以 标 示 该 列 为 未 用 数 据 列 然 后 删 除 删 除 数 据 列 的 语 法 是 : ALTER TABLE [schema.] table_name DROP {COLUM column_names (column_names}[cascade CONSTRAINS] 要 注 意 的 是 在 删 除 列 时 关 于 该 列 的 索 引 和 完 整 性 约 束 也 同 时 删 除 注 意 关 键 字 CASCADE CONSTRAINS, 如 果 删 除 的 列 是 多 列 约 束 的 一 部 分, 那 么 这 个 约 束 条 件 相 对 于 其 他 列 也 同 时 删 除 如 果 用 户 担 心 在 大 型 数 据 库 中 删 除 列 要 花 太 多 时 间, 可 以 先 将 他 们 标 记 为 未 用 数 据 列, 标 记 未 用 数 据 列 的 语 法 如 下 : ALTER TABLE [schema.] table_name SET UNUSED {COLUM column_names (column_names}[cascade CONSTRAINS] 这 个 语 句 将 一 个 或 多 个 数 据 列 标 记 为 未 用 数 据 列, 但 并 不 删 除 数 据 列 中 的 数 据, 也 不 释 放 占 用 的 磁 盘 空 间 但 是, 未 用 数 据 列 在 视 图 和 数 据 字 典 中 并 不 显 示, 并 且 该 数 据 列 的 名 称 将 被 删 除, 新 的 数 据 列 可 以 使 用 这 个 名 称 基 于 该 数 据 列 的 索 引 约 束, 统 计 等 都 将 被 删 除 删 除 未 用 数 据 列 的 语 句 是 : ALTER TABLE [schema.] table_name DROP {UNUSED COLUM COLUMN CONTINUE} 3.3.1.1.4.4 删 除 表 和 更 改 表 名 删 除 表 非 常 简 单, 但 它 是 一 个 不 可 逆 转 的 行 为

语 法 : DROP TABLE [schema.] table_name [CASCADE CONSTRAINTS] 删 除 表 后, 表 上 的 索 引 触 发 器 权 限 完 整 性 约 束 也 同 时 删 除 ORACLE 不 能 删 除 视 图, 或 其 他 程 序 单 元, 但 oracle 将 标 示 他 们 无 效 如 果 删 除 的 表 涉 及 引 用 主 键 或 唯 一 关 键 字 的 完 整 性 约 束 时, 那 么 DROP TABLE 语 句 就 必 须 包 含 CASCADE CONSTRAINTS 子 串 更 改 表 名 RENAME 命 令 用 于 给 表 和 其 他 数 据 库 对 象 改 名 ORACLE 系 统 自 动 将 基 于 旧 表 的 完 整 性 约 束 索 引 权 限 转 移 到 新 表 中 ORACLE 同 时 使 所 有 基 于 旧 表 的 数 据 库 对 象, 比 如 视 图 程 序 函 数 等, 为 不 合 法 语 法 :RENAME old_name TO new_name; 例 :SQL> RENAME orders TO purchase_orders; 3.3.1.1.4.5 截 短 表 TRUNCATE 命 令 与 DROP 命 令 相 似, 但 他 不 是 删 除 整 个 数 据 表, 所 以 索 引 完 整 性 约 束 触 发 器 权 限 等 都 不 会 被 删 除 缺 省 情 况 下 将 释 放 部 分 表 和 视 图 空 间, 如 果 用 户 不 希 望 释 放 表 空 间,TRUNCATE 语 句 中 要 包 含 REUSE STORAGE 子 串 TRUNCATE 命 令 语 法 如 下 : TRUNCATE {TABLE CLUSTER} [schema.] name {DROP REUSE STORAGE} 例 :SQL> TRUNCATE TABLE t1; 3.3.1.2 管 理 视 图 视 图 是 一 个 或 多 个 表 中 的 数 据 的 简 化 描 述, 用 户 可 以 将 视 图 看 成 一 个 存 储 查 询 (stored query 或 一 个 虚 拟 表 (virtual table. 查 询 仅 仅 存 储 在 oracle 数 据 字 典 中, 实 际 的 数 据 没 有 存 放 在 任 何 其 它 地 方, 所 以 建 立 视 图 不 用 消 耗 其 他 的 空 间 视 图 也 可 以 隐 藏 复 杂 查 询, 比 如 多 表 查 询, 但 用 户 只 能 看 见 视 图 视 图 可 以 有 与 他 所 基 于 表 的 列 名 不 同 的 列 名 用 户 可 以 建 立 限 制 其 他 用 户 访 问 的 视 图 3.3.1.2.1 建 立 视 图 CREATE VIEW 命 令 创 建 视 图, 定 义 视 图 的 查 询 可 以 建 立 在 一 个 或 多 个 表, 或 其 他 视 图 上 查 询 不 能 有 FOR UPDATE 子 串, 在 早 期 的 ORACLE8i 版 本 中 不 支 持 ORDER BY 子 串, 现 在 的 版 本 中 CREATE VIEW 可 以 拥 有 ORDER BY 子 串 例 : SQL> CREATE VIEW TOP_EMP AS SELECT empno EMPLOYEE_ID,ename EMPLOYEE_NAME,salary FROM emp WHERE salary >2000 用 户 可 以 在 创 建 视 图 的 同 时 更 改 列 名, 方 法 是 在 视 图 名 后 立 即 加 上 要 命 名 的 列 名 重 新 定 义 视 图 需 要 包 含 OR REPLACE 子 串 SQL> CREATE VIEW TOP_EMP (EMPLOYEE_ID,EMPLOYEE_NAME,SALARY AS SELECT empno,ename,salary FROM emp WHERE salary >2000 如 果 在 创 建 的 视 图 包 含 错 误 在 正 常 情 况 下, 视 图 将 不 会 被 创 建 但 如 果 你 需 要 创 建 一 个 带 错 误 的 视 图 必 须 在 CREATE VIEW 语 句 中 带 上 FORCE 选 项 如 :CREATE FORCE VIEW ORDER_STATUS AS SELECT * FROM PURCHASE_ORDERS WHERE STATUS= APPPOVE ;

SQL>/ warning :View create with compilation errors 这 样 将 创 建 了 一 个 名 为 ORDER_STATUS 的 视 图, 但 这 样 的 视 图 的 状 态 是 不 合 法 的, 如 果 以 后 状 态 发 生 变 化 则 可 以 重 新 编 译, 其 状 态 也 变 成 合 法 的 3.3.1.2.2 从 视 图 中 获 得 数 据 从 视 图 中 获 得 数 据 与 从 表 中 获 得 数 据 基 本 一 样, 用 户 可 以 在 连 接 和 子 查 询 中 使 用 视 图, 也 可 以 使 用 SQL 函 数, 以 及 所 有 SELECT 语 句 的 字 串 3.3.1.2.3 插 入 更 新 删 除 数 据 用 户 在 一 定 的 限 制 条 件 下 可 以 通 过 视 图 更 新 插 入 删 除 数 据 如 果 视 图 连 接 多 个 表, 那 么 在 一 个 时 间 里 只 能 更 新 一 个 表 所 有 的 能 被 更 新 的 列 可 以 在 数 据 字 典 USER_UPDATETA BLE_COLUMNS 中 查 到 用 户 在 CREATE VIEW 中 可 以 使 用 了 WITH 子 串 WITH READ ONLY 子 串 表 示 创 建 的 视 图 是 一 个 只 读 视 图, 不 能 进 行 更 新 插 入 删 除 操 作 WITH CHECK OPTION 表 示 可 以 进 行 插 入 和 更 新 操 作, 但 应 该 满 足 WHERE 子 串 的 条 件 这 个 条 件 就 是 创 建 视 图 WHERE 子 句 的 条 件, 比 如 在 上 面 的 例 子 中 用 户 创 建 了 一 个 视 图 TOP_EMP, 在 这 个 视 图 中 用 户 不 能 插 入 salary 小 于 200 0 的 数 据 行 3.3.1.2.4 删 除 视 图 删 除 视 图 使 用 DROP VIEW 命 令 同 时 将 视 图 定 义 从 数 据 字 典 中 删 除, 基 于 视 图 的 权 限 也 同 时 被 删 除, 其 他 涉 及 到 该 视 图 的 函 数 视 图 程 序 等 都 将 被 视 为 非 法 例 :DROP VIEW TOP_EMP; 3.3.2 索 引 索 引 是 一 种 可 以 提 高 查 询 性 能 的 数 据 结 构, 在 这 一 部 分 我 们 将 讨 论 索 引 如 何 提 高 查 询 性 能 的 ORACLE 提 供 了 以 下 几 种 索 引 : B-Tree 哈 希 (hash 位 图 (bitmap 等 索 引 类 型 基 于 原 始 表 的 索 引 基 于 函 数 的 索 引 域 (Domain 索 引 实 际 应 用 中 主 要 是 B-Tree 索 引 和 位 图 索 引, 所 以 我 们 将 集 中 讨 论 这 两 种 索 引 类 型 3.3.2.1 B-Tree 索 引 B-Tree 索 引 是 最 普 通 的 索 引, 缺 省 条 件 下 建 立 的 索 引 就 是 这 种 类 型 的 索 引 B-Tree 索 引 可 以 是 唯 一 或 非 唯 一 的, 可 以 是 单 一 的 ( 基 于 一 列 或 连 接 的 ( 多 列 B-Tree 索 引 在 检 索 高 基 数 数 据 列 ( 高 基 数 数 据 列 是 指 该 列 有 很 多 不 同 的 值 时 提 供 了 最 好 的 性 能 对 于 取 出 较 小 的 数 据 B-Tree 索 引 比 全 表 检 索 提 供 了 更 有 效 的 方 法 但 当 检 查 的 范 围 超 过 表 的 10% 时 就 不 能 提 高 取 回 数 据 的 性 能 正 如 名 字 所 暗 示 的 那 样,B-Tree 索 引 是 基 于 二 元 树 的, 由 枝 干 块 (branch block 和 树 叶 块 (leaf block 组 成, 枝 干 块 包 含 了 索 引 列 ( 关 键 字 和 另 一 索 引 的 地 址 树 叶 块 包 含 了 关 键 字 和 给 表 中 每 个 匹 配 行 的 ROWID CREATE UNIQUE INDEX scott.ord_ord_no_idx ON scott.ord(ord_no REVERSE PCTFREE 30 STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50 TABLESPACE indx01;

3.3.2.2 位 图 索 引 位 图 索 引 主 要 用 于 决 策 支 持 系 统 或 静 态 数 据, 不 支 持 行 级 锁 定 位 图 索 引 可 以 是 简 单 的 ( 单 列 也 可 以 是 连 接 的 ( 多 列, 但 在 实 践 中 绝 大 多 数 是 简 单 的 位 图 索 引 最 好 用 于 低 到 中 群 集 (cardinality 列, 在 这 些 列 上 多 位 图 索 引 可 以 与 AND 或 OR 操 作 符 结 合 使 用 位 图 索 引 使 用 位 图 作 为 键 值, 对 于 表 中 的 每 一 数 据 行 位 图 包 含 了 TRUE(1 FALSE(0 或 NULL 值 位 图 索 引 的 位 图 存 放 在 B-Tree 结 构 的 页 节 点 中 B-Tree 结 构 使 查 找 位 图 非 常 方 便 和 快 速 另 外, 位 图 以 一 种 压 缩 格 式 存 放, 因 此 占 用 的 磁 盘 空 间 比 B-Tree 索 引 要 小 得 多 CREATE BITMAP INDEX scott.ord_region_id_idx ON scott.ord(region_id PCTFREE 30 STORAGE(INITIAL 200K NEXT 200K PCTINCREASE 0 MAXEXTENTS 50 TABLESPACE indx01; 3.3.2.3 修 改 索 引 ALTER INDEX scott.ord_region_id_idx ALLOCATE EXTENT (SIZE 200K DATAFILE DISK6/indx01.dbf ; 重 建 索 引 对 于 频 繁 更 新 的 表, 索 引 会 变 得 层 次 很 深, 效 率 变 低 这 时 需 要 重 建 索 引 ALTER INDEX scott.ord_region_id_idx REBUILD TABLESPACE indx02; 3.3.3 序 列 (Sequences Oracle 序 列 是 一 个 连 续 的 数 字 生 成 器 序 列 常 用 于 人 为 的 关 键 字, 或 给 数 据 行 排 序 否 则 数 据 行 是 无 序 的 像 约 束 一 样, 序 列 只 存 在 于 数 据 字 典 中 序 列 号 可 以 被 设 置 为 上 升 下 降, 可 以 没 有 限 制 或 重 复 使 用 直 到 一 个 限 制 值 3.3.3.1 创 建 序 列 创 建 序 列 使 用 SET SEQUENCE 语 句 CREATE SEQUENCE [schema] sequence KEYWORD KEYWORD 包 括 下 面 的 值 : KEYWORD 描 述 START WITH 定 义 序 列 生 成 的 第 一 个 数 字, 缺 省 为 1 INCREMENT BY 定 义 序 列 号 是 上 升 还 是 下 降, 对 于 一 个 降 序 的 序 列 INCREMENT BY 为 负 值 MINVALUE 定 义 序 列 可 以 生 成 的 最 小 值, 这 是 降 序 序 列 中 的 限 制 值 缺 省 情 况 下 该 值 为 NOMINVALUE,NOMINVALUE, 对 于 升 序 为 1, 对 于 降 序 为 -10E26. MAXVALUE 序 列 能 生 成 的 最 大 数 字 这 是 升 序 序 列 中 的 限 制 值, 缺 省 的 MAXVALUE 为 NOMAXVALUE,NOMAXVALUE, 对 于 升 序 为 10E26, 对 于 降 序 为 -1

CYCLE 设 置 序 列 值 在 达 到 限 制 值 以 后 可 以 重 复 NOCYCLE 设 置 序 列 值 在 达 到 限 制 值 以 后 不 能 重 复, 这 是 缺 省 设 置 当 试 图 产 MAXVALUE+1 的 值 时, 将 会 产 生 一 个 异 常 CACHE 定 义 序 列 值 占 据 的 内 存 块 的 大 小, 缺 省 值 为 20 NOCACHE 在 每 次 序 列 号 产 生 时 强 制 数 据 字 典 更 新, 保 证 在 序 列 值 之 间 没 有 间 隔 当 创 建 序 列 时,START WITH 值 必 须 等 于 或 大 于 MINVALUE 3.3.3.2 删 除 序 列 删 除 序 列 使 用 DROP SEQUENCE 语 句 DROP SEQUENCE sequence_name 3.4 网 络 管 理 3.4.1 Net8 server 端 配 置 3.4.1.1 listener.ora 文 件 的 样 本 : CONNECT_TIMEOUT_LISTENER = 0 LOGGING_LISTENER = OFF LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = # Local connections. (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC(KEY = icache (DESCRIPTION = # General TCP connections. (ADDRESS = (PROTOCOL = TCP(HOST = dbsvr(port = 1521 # For secure connections over SSL, uncomment the following lines. # # (DESCRIPTION = # Secure TCP connections. # (ADDRESS = # (PROTOCOL = TCPS(HOST = dbsvr(port = 2484 # # (DESCRIPTION = # IIOP Connections.

(PROTOCOL_STACK = (PRESENTATION = GIOP (SESSION = RAW (ADDRESS = (PROTOCOL = TCP(HOST = dbsvr(port = 2481 # For secure IIOP connections over SSL, uncomment the following lines. # # (DESCRIPTION = # Secure IIOP Connections. # (PROTOCOL_STACK = # (PRESENTATION = GIOP # (SESSION = RAW # # (ADDRESS = (PROTOCOL = TCPS(HOST = dbsvr(port = 2482 # SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = s450 (ORACLE_HOME = /home1/ias/app/oracle/product/1.0.2 (SID_NAME = s450 (SID_DESC = (ORACLE_HOME = /home1/ias/app/oracle/product/1.0.2 (SID_NAME = icache_extproc (PROGRAM = extproc 3.4.1.2 启 动 listener 在 响 应 的 端 口 上 设 置 并 启 动 listener 手 工 启 动 listener: 1. >lsnrctl start 查 看 状 态 2. >lsnrctl status 3.4.2 Net 8 client 端 配 置 Net 8 client 端 常 用 的 配 置 方 法 为 tns 方 式 使 用 图 形 配 置 工 具 进 行 配 置 开 始 -> 程 序 ->Oracle-> Network Administration->Net8 Assistant. 1 选 本 地 -> 概 要 文 件 加 入 tnsnames

2 选 本 地 -> 服 务 命 名 新 建 一 个 连 接 串, 包 括 主 机 名 端 口, 协 议 3 选 文 件 -> 保 存 网 络 配 置 直 接 配 置 $ORACLE_HOME/network/admin/tnsnames.ora 1. 备 份 tnsnames.ora 2. 按 照 示 例 对 连 接 串 做 拷 贝 3. 改 变 连 接 串 的 名 字, 主 机 名, 端 口, 协 议,SID 等 参 数 4. 保 存 文 件 nttest = (DESCRIPTION= (ADDRESS= (PROTOCOL=tcp (HOST=localserver (PORT=1521 (CONNECT_DATA=(sid=oradb 3.4.3 sqlnet.ora 3.4.4 网 络 连 通 性 测 试 sqlplus tnsping ping,netstat 1. sqlplus system/manager @gis 注 意 :gis 是 刚 才 设 置 的 新 的 连 接 串 2. 在 客 户 端 >Tnsping gis, 并 且 检 查 tnsnames.ora 中 的 配 置 是 否 与 server 端 的 $ORACLE_HOME/network/admin/listen er.ora 中 的 配 置 是 否 一 致 1. Ping server IP 地 址, 查 看 网 络 连 通 性 3.4.5 常 见 NET8 错 误 故 障 排 除 是 每 个 系 统 管 理 人 员 必 要 面 对 的 工 作 下 面 给 出 几 种 故 障 分 析 和 排 除 方 法 3.4.5.1 服 务 器 端 诊 断 任 务 1: 数 据 库 系 统 是 否 启 动 确 定 数 据 库 系 统 是 否 已 启 动, 只 要 用 SQL*PLUS 登 录 即 可 : SQLPLUS system/manager 如 果 收 到 下 面 信 息, 则 数 据 库 还 不 能 用 ORA-1017: invalid U/P

ORA-1034: Oracle not available 任 务 2: 执 行 绕 弯 测 试 为 了 确 认 listener.ora, tnsnames.ora sqlnet.ora 文 件 的 存 在, 有 效 要 在 服 务 器 端 UNIX 在 : $ORACLE_HOME/network/admin Windows NT 在 :ORACLE_HOME\network\admin a. 这 些 文 件 是 否 在 工 作 b. TNS_ADMIN 变 量 有 效 性 使 用 Net8 Assistant 进 行 绕 弯 测 试 : 1. 启 动 Net8 Assistant: 在 UNIX, 从 $ORACLE_HOME/bin. 目 录 来 运 行 netasst 在 NT, choose Start > Programs > Oracle - HOME_NAME >Network Administration > Net8 Assistant. 2. 在 导 航 器 扩 展 Directory 或 Local > Service Naming. 3. 选 择 net service name 或 database service. 4. 选 命 令 > Test Net Service. 3.4.5.2 客 户 端 诊 断 当 服 务 器 已 经 通 过 一 般 的 SQL*PLUS 测 试 和 绕 弯 测 试 后, 可 以 进 行 客 户 端 的 测 试, 步 骤 如 下 : 1. 检 查 所 安 装 的 协 议 是 否 与 服 务 器 端 一 致 ; 在 UNIX, 可 以 运 行 $ORACLE_HOME/bin 目 录 下 的 adapters 来 确 认 结 果 显 示 : Installed Net8 Tranport Protocols are: IPC TCP/IP BEQueath SSL RAW... 2. 检 查 所 有 Net8 软 件 在 客 户 端 已 经 安 装 3. 确 认 客 户 端 机 器 $ORACLE_HOME/network/admin 目 录 下 的 tnsnames.ora 和 sqlnet.ora 文 件 的 内 容 : a. 当 前 的 工 作 目 录 b. TNS_ADMIN 环 境 变 量 在 NT 中, 如 果 TNS_ADMIN 环 境 变 量 没 有 注 册, 就 要 进 行 注 册 c. 用 FTP, TELNET 及 PING 检 查 网 络 的 连 接 情 况 4. 用 TNSPING TRCROUTE 实 用 程 序 或 Net8 Assistant 进 行 测 试 TNSPING:

tnsping net_service_name [count] CDS. net service name: 在 tnsnames.ora 或 名 字 服 务 上 得 使 用 如 : NIS 或 DCE 的 count ( 可 选 : 实 验 次 数 例 1: 使 用 spotdb 服 务 名 进 行 测 试 : tnsping spotdb 可 能 提 示 : TNS Ping Utility for SunOS: Copyright (c Oracle Corporation 1998. All rights reserved. Attempting to contact (ADDRESS=(PROTOCOL=TCP(HOST=spot(PORT=1521 OK (50msec 例 2: 用 TNSPING 测 试 10 次 : tnsping stprd 10 可 能 提 示 : TNS Ping Utility for SunOS: Copyright (c Oracle Corporation 1998. All rights reserved. Attempting to contact (ADDRESS=(PROTOCOL=TCP(HOST=spot(PORT=1521 OK (290 msec OK (100 msec OK (70 msec OK (70 msec OK (60 msec OK (70 msec OK (70 msec OK (80 msec OK (180 msec OK (340 msec 5. 如 果 连 接 失 败, 可 以 进 行 下 面 操 作 : 查 找 原 因 用 下 面 站 点 与 Oracle 联 系 : http://support.oracle.com 与 Oracle Worldwide Support 联 系 3.4.5.3 常 见 错 误 ORA-12154: TNS:could not resolve service name 原 因 : 在 tnsnames.ora,net8 不 能 定 位 到 服 务 器 上

措 施 : 1. 确 定 tnsnames.ora 文 件 存 在 2. 确 定 不 要 有 多 个 tnsnames.ora 3. 确 认 tnsnames.ora 文 件 的 服 务 名 的 正 确 性 4. 确 认 不 要 有 多 个 sqlnet.ora 5. 如 果 使 用 域 名, 确 认 sqlnet.ora 包 含 NAMES.DEFAULT_DOMAIN 参 数 如 果 该 参 数 不 存 在, 必 须 在 连 接 字 串 中 指 定 域 名 如 果 没 有 使 用 域 名, 而 NAMES.DEFAULT_DOMAIN 参 数 存 在, 则 删 掉 它 或 注 释 掉 6. 如 果 从 对 话 框 进 行 连 接, 要 带 @ 号 7. 启 动 客 户 端 的 跟 踪 功 能, 再 连 接 ORA-12198: TNS:could not find path to destination ORA-12203:TNS:unable to connect to destination 原 因 : 在 客 户 端 找 不 到 目 标 数 据 库 措 施 : 1. 所 输 入 的 网 络 服 务 名 是 否 正 确 2. 确 认 tnsnames.ora 文 件 中 的 ADDRESS 参 数 是 否 正 确 3. 确 认 tnsnames.ora 文 件 是 否 在 正 确 的 目 录 上 4. 确 认 远 程 监 听 器 是 否 启 动 : 输 入 : lsnrctl lsnrctl> status listener_name listener_name 缺 省 LISTENER. 如 果 没 有 启 动, 则 启 动 : lsnrctl> start listener_name 5. 如 果 从 对 话 框 连 接, 不 要 忘 记 加 @ 号 ORA-12203: TNS:unable to connect to destination ORA-12203 是 一 般 的 错 误, 可 以 检 查 $ORACLE_HOME/network/log 目 录 的 sqlnet.log 文 件 原 因 : 所 安 装 的 协 议 不 正 确 可 能 与 下 面 原 因 一 样 : ORA-12203 ORA-12538 ORA-00508 措 施 : 检 查 安 装 的 Oracle 协 议 在 UNIX 下, 运 行 $ORACLE_HOME/bin 目 录 下 的 adapters 程 序 应 该 输 出 : Installed Net8 Tranport Protocols are:

IPC TCP/IP BEQueath SSL RAW... ORA-12203 原 因 : 不 正 确 的 服 务 名 HOST 或 SERVICE 正 确? PORT 正 确? ORA-12203 另 外 原 因 : Net8 在 tnsnames.ora 文 件 中 没 有 找 到 服 务 描 述 符 措 施 : 用 下 面 命 令 确 认 数 据 库 是 否 在 运 行 : lsnrctl lsnrctl> status listener_name listener_name 不 是 必 须 的, 缺 省 LISTENER 如 果 系 统 提 示 没 有 运 行, 则 用 下 面 命 令 启 动 : lsnrctl> start listener_name 2. 确 认 tnsnames.ora 文 件 的 正 确 位 置 ORA-12203 另 外 原 因 : 目 标 系 统 的 监 听 没 有 工 作 措 施 : 确 包 远 程 系 统 的 监 听 在 工 作, 输 入 : lsnrctl lsnrctl> status listener_name 如 果 确 实 没 有 工 作, 则 输 入 : lsnrctl> start listener_name ORA-12203 另 外 原 因 : 存 在 潜 在 的 事 务 问 题 措 施 : 确 保 实 用 程 序 支 持 目 前 的 网 络 协 议, 如 TCP/IP 用 PING 试 ORA-12203 另 外 原 因 : tnsnames.ora 文 件 没 有 放 对 地 方 ( 目 录 Action: 确 保 tnsnames.ora 文 件 在 正 确 的 位 置 ORA-12203 另 外 原 因 : TCP/IP 地 址 (HOST=server_name 参 数 TCP/IP 或 SPX 地 址 参 数 (SERVICE=tns_application 与 客 户 端 不 一 致 措 施 : 确 认 这 些 参 数 使 用 相 同 的 名 字 对 于 TCP/IP, 确 保 listener.ora 文 件 的 HOST 和 tnsnames.ora 文 件 指 到 相 同 的 名 字 或 名 字 转 换 到 相 同 的 IP 地 址 对 于 SPX, 在 客 户 端 的 名 字 必 须 相 同

ORA-12224: TNS:no listener 原 因 : 由 于 监 听 没 有 工 作 而 连 接 请 求 不 能 完 成 措 施 : 1. 确 认 支 持 的 目 标 地 址 与 数 据 库 之 一 匹 配 2. 检 查 版 本 问 题 ORA-12533: TNS:illegal ADDRESS parameters 原 因 : 在 tnsnames.ora 文 件 的 ADDRESS 节 指 定 不 正 确 措 施 : 根 据 ADDRESS 语 法 进 行 改 正 ORA-12545: TNS:name lookup failure 原 因 : 远 程 节 点 不 能 连 接 措 施 : 1. tnsnames.ora 文 件 的 ADDRESS 和 listener.ora 文 件 的 正 确 性 2. 确 认 远 程 节 点 已 经 启 动 输 入 : lsnrctl lsnrctl> status listener_name 如 果 没 有 启 动, 则 输 入 : lsnrctl> start listener_name ORA-12560: TNS:protocol adapter error 原 因 : 监 听 不 能 启 动 措 施 : 1. 调 整 后 再 运 行 2. 分 析 跟 踪 文 件 的 内 容 ORA-3113: TNS:End of file on communication channel 原 因 : 一 个 无 法 预 料 文 件 结 束 在 通 信 通 道 里 被 处 理 可 能 是 通 信 连 接 被 临 时 地 停 止 了 措 施 : 需 要 修 改 发 射 次 数 等 ORA-3121: No interface driver connection -function not performed 原 因 :SQL*NET 版 本 引 起 措 施 : 不 要 使 用 下 面 前 缀 进 行 连 接 : T: X: P: 4. ORACLE8i 与 系 统 管 理 有 关 的 新 特 性

Oracle8i 引 入 了 几 项 崭 新 的 特 性, 可 简 化 对 ORDBMS 的 管 理, 并 使 其 更 易 操 作 和 使 用 4.1 本 地 化 管 理 表 空 间 在 Oracle8I 以 前, 表 空 间 的 使 用 状 况 都 是 通 过 数 据 字 典 来 完 成 的, 称 为 Dictionary- Managed Tablespace. 在 Oracle8I 推 出 以 前, 这 一 直 都 是 唯 一 的 表 空 间 管 理 方 式 自 从 O racle8i 以 后,Oracle 又 增 加 了 一 种 新 的 表 空 间 管 理 方 式 :Locally Managed Tablespace( 本 地 化 管 理 的 表 空 间 在 传 统 的 数 据 字 典 管 理 的 表 空 间 里,Oracle 在 数 据 字 典 的 表 里 面 记 录 了 每 个 表 空 间 的 每 个 区 的 使 用 状 况 : 每 当 一 个 区 被 使 用 或 被 释 放 时,Oracle 都 在 数 据 字 典 里 面 更 新 相 应 的 信 息, 并 产 生 相 应 的 redo 信 息 在 Oracle8I 里, 这 仍 然 是 默 认 的 表 空 间 管 理 方 式 在 Oracle8I 的 版 本 中,Oracle 推 出 了 一 种 全 新 的 表 空 间 管 理 方 式 : 本 地 化 管 理 的 表 空 间 所 谓 本 地 化 管 理, 就 是 指 Oracle 不 再 利 用 数 据 字 典 的 表 来 记 录 Oracle 表 空 间 里 面 的 区 的 使 用 状 况, 而 是 在 每 个 表 空 间 的 数 据 文 件 的 头 部 加 入 了 一 个 记 录 块, 在 其 中 记 录 每 个 区 的 使 用 状 况 每 当 一 个 区 被 使 用, 或 者 被 释 放 以 供 重 新 使 用 时,Oracle 都 会 更 新 数 据 文 件 头 部 的 这 个 记 录, 反 映 这 个 变 化 本 地 化 管 理 的 表 空 间 的 创 建 过 程 : 语 法 :CREATE TABLESPACE 表 空 间 名 字 DATAFILE 数 据 文 件 详 细 信 息 [EXTENT MANAGEMENT { DICTIONARY LOCAL {AUTOALLOCATE UNIFORM [SIZE INTETER [K M] ] } } ] 解 释 : 关 键 字 EXTENT MANAGEMENT LOCAL 指 定 这 是 一 个 本 地 化 管 理 的 表 空 间 对 于 系 统 表 空 间, 只 能 在 创 建 数 据 库 的 时 候 指 定 EXTENT MANGEMENT LOCAL, 因 为 它 是 数 据 库 创 建 时 建 立 的 第 一 个 表 空 间 若 为 DICTIONARY, 则 表 明 这 是 一 个 传 统 的 数 据 字 典 管 理 的 表 空 间, 这 是 个 默 认 选 项 当 选 择 了 LOCAL 关 键 字, 即 表 明 这 是 这 是 一 个 本 地 化 管 理 的 表 空 间 后, 还 可 以 继 续 选 择 更 细 的 管 理 方 式 : 是 AUTOALLOCATE 还 是 UNIFORM. 若 为 AUTOALLOCATE, 则 表 明 让 Oracle 来 决 定 区 块 的 使 用 办 法 ; 若 选 择 了 UNIFORM, 则 还 可 以 详 细 指 定 每 个 区 块 的 大 小, 若 不 加 指 定, 则 为 每 个 区 使 用 1M 大 小 是 本 地 化 管 理 的 表 空 间 还 是 创 建 数 据 字 典 管 理 的 表 空 间 只 能 在 创 建 表 空 间 的 时 候 指 定 在 表 空 间 已 经 创 建 以 后, 则 不 能 再 把 本 地 化 管 理 的 表 空 间 和 数 据 字 典 管 理 的 表 空 间 再 相 互 转 换 在 创 建 临 时 表 空 间 时, 也 可 以 在 CREATE TEMPORARY TABLESPACE 中 指 定 EXT ENT MANAGEMENT LOCAL 来 指 定 这 是 一 个 本 地 化 管 理 的 表 空 间 本 地 化 管 理 表 空 间 的 优 点 : 1. 本 地 化 管 理 的 表 空 间 避 免 了 递 归 的 空 间 管 理 操 作 而 这 种 情 况 在 数 据 字 典 管 理 的 表 空 间 是 经 常 出 现 的, 当 表 空 间 里 的 区 的 使 用 状 况 发 生 改 变 时, 数 据 字 典 的 表 的 信 息 发 生 改 变, 从 而 同 时 也 使 用 了 在 系 统 表 空 间 里 的 回 滚 段 2. 本 地 化 管 理 的 表 空 间 避 免 了 在 数 据 字 典 相 应 表 里 面 写 入 空 闲 块 已 使 用 块 的 信 息, 从 而 减 少 了 数 据 字 典 表 的 竞 争 3. 区 的 本 地 化 管 理 自 动 跟 踪 表 空 间 里 的 空 闲 块, 减 少 了 手 工 合 并 自 由 空 间 的 需 要 4. 表 空 间 里 的 区 的 大 小 可 以 选 择 由 Oracle 系 统 来 决 定, 或 者 由 数 据 库 管 理 员 指 定 一 个 统 一 的 大 小 5. 从 由 数 据 字 典 来 管 理 空 闲 块 改 为 由 数 据 文 件 的 头 部 记 录 来 管 理 空 闲 块, 这 样 避 免 产 生 回 滚 信 息, 不 再 使 用 系 统 表 空 间 里 的 回 滚 段 因 为 由 数 据 字 典 来 管 理 的 话, 它 会 把

相 关 信 息 记 在 数 据 字 典 的 表 里, 从 而 产 生 回 滚 信 息 由 于 这 种 表 空 间 的 以 上 特 性, 所 以 它 支 持 在 一 个 表 空 间 里 边 进 行 更 多 的 并 发 操 作, 并 减 少 了 对 数 据 字 典 的 依 赖 当 然 本 地 化 管 理 的 表 空 间 也 不 是 对 所 有 的 数 据 库 和 数 据 库 对 象 都 是 适 用 的 首 先, 它 不 能 指 定 存 储 特 性, 无 STORAGE 子 句 可 供 使 用 其 次, 它 不 适 用 于 存 储 较 小 的 数 据 库 对 象 总 的 来 说,oracle8I 提 供 了 这 种 全 新 的 表 空 间 管 理 方 式, 给 了 我 们 更 多 的 选 择 对 于 用 来 存 储 大 对 象 的 表 空 间 和 临 时 表 空 间 来 说, 用 本 地 化 管 理 的 表 空 间 组 织 方 式 不 失 为 一 个 较 好 的 选 择 4.2 FBI 索 引 Oracle8i 的 很 重 要 的 一 个 新 特 性 就 是 增 加 了 function-based index 这 种 索 引 类 型 ( 后 面 简 称 为 FBI 有 了 这 个 特 性 后,Oracle DBA 就 可 以 在 索 引 中 使 用 函 数 或 者 表 达 式 了 这 些 函 数 可 以 使 Oracle 自 己 的 函 数, 也 可 以 使 用 户 自 己 的 PL/SQL 函 数 等 DBA 在 SQL 语 句 调 优 的 过 程 中 遇 到 的 一 个 很 常 见 的 问 题 就 是, 如 何 优 化 那 些 在 WHERE 子 句 中 使 用 了 函 数 的 语 句 因 为 在 以 前, 在 WHERE 子 句 中 使 用 函 数 会 使 在 这 个 表 上 创 建 的 索 引 没 法 利 用, 从 而 难 以 提 高 这 个 语 句 的 性 能 例 子 : 使 用 基 于 成 本 的 优 化 器, 索 引 为 标 准 的 B 树 索 引, 建 立 在 SURNAME 列 上 SQL>create index non_fbi on sale_contacts (surname; SQL>analyze index non_fbi compute statistics; SQL>:analyze table sale_contacts compute statistics; SQL>SELECT count(* FROM sale_contacts WHERE UPPER(surname = ELLISON ; Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=1 Bytes=17 1 0 SORT (AGGREGATE 2 1 TABLE ACCESS (FULL OF SALES_CONTACTS (Cost=3 Card=16 Bytes=272 从 SQL*PLUS 的 autotrace 产 生 的 执 行 路 径 可 以 看 到, 虽 然 我 们 在 WHERE 子 句 中 用 到 的 S URNAME 列 上 创 建 了 索 引, 但 是 仍 然 执 行 的 是 全 表 扫 描 如 果 这 张 表 很 大 的 话, 这 回 消 耗 大 量 的 时 间 现 在 我 们 试 着 建 立 一 个 FBI 索 引 : SQL>create index fbi on sale_contacts (UPPER(surname; SQL>analyze index fbi compute statistics; SQL>analyze table sale_contacts compute statistics; SQL>SELECT count(* FROM sale_contacts WHERE UPPER(surname = ELLISON ; Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=17 1 0 SORT (AGGREGATE 2 1 INDEX (RANGE SCAN OF FBI (NON-UNIQUE (Cost=2 Card=381

Bytes=6477 从 SQL*Plus 返 回 的 执 行 计 划 我 们 可 以 看 到, 这 次,Oracle 对 表 不 再 全 表 扫 描, 而 是 先 扫 描 索 引, 因 为 优 化 器 可 以 知 道 FBI 索 引 得 存 在 使 用 FBI 索 引 所 能 够 带 来 的 性 能 提 升 取 决 于 表 的 大 小 表 中 重 复 记 录 的 量 在 WHERE 子 句 中 使 用 的 列 等 因 素 有 一 点 需 要 清 楚,FBI 索 引 并 不 真 正 在 索 引 里 边 存 储 了 表 达 式 的 结 果, 而 是 使 用 了 一 个 " 表 达 树 "(expression tree 由 优 化 器 来 对 SQL 语 句 中 的 表 达 式 进 行 解 析, 并 且 和 FBI 索 引 上 面 的 表 达 式 进 行 对 比 这 里,SQL 函 数 的 大 小 写 时 敏 感 的 因 此 要 求 SQL 语 句 中 使 用 的 函 数 和 创 建 FBI 索 引 得 时 候 的 那 个 SQL 函 数 的 大 小 写 一 致, 否 则 无 法 利 用 这 个 FBI 索 引 因 此, 在 编 程 的 时 候 要 有 一 个 良 好 的 编 程 风 格 Init.ora 里 边 需 要 修 改 的 参 数 下 面 这 几 个 参 数 必 须 在 init.ora 里 边 指 定 : QUERY_REWRITE_INTEGRITY = TRUSTED QUERY_REWRITE_ENABLED = TRUE COMPATIBLE = 8.1.0.0.0 (or higher 授 权 : 要 使 一 个 用 户 能 够 创 建 FBI 索 引, 他 必 须 被 授 予 以 下 权 限 :CREATE INDEX 和 QUERY REWRITE, 或 者 CREATE ANY INDEX 和 GLOBAL QUERY REWRITE 这 两 个 权 限 索 引 的 使 用 者 必 须 能 够 有 那 个 FBI 索 引 上 使 用 的 那 个 函 数 的 执 行 权 限 如 果 没 有 相 应 的 权 限, 那 么 这 个 FBI 索 引 得 状 态 将 变 成 DISABLED(DBA_INDEXES 如 果 那 个 FBI 索 引 得 状 态 是 DISABLED, 那 么 DBA 可 以 这 样 来 处 理 : A: 删 除 并 重 建 B:ALTER INDEX index_name ENABLED 这 个 Enabled 只 能 对 FBI 索 引 使 用 C:ALTER INDEX UNUSABLE; 注 意 : 如 果 一 个 查 询 中 使 用 到 了 这 个 索 引, 但 是 这 个 FBI 索 引 的 状 态 是 DISABLED, 但 是 优 化 器 选 择 了 使 用 这 个 索 引, 那 么 将 会 返 回 一 个 Oracle 错 误 例 子 : ORA error: ERROR at line 1: ORA-30554: function-based index MYUSER.FBI is disabled. 而 且, 一 旦 这 个 FBI 索 引 的 状 态 是 Disabled, 那 么 这 张 表 上 所 有 涉 及 索 引 列 的 DML 操 作 也 将 失 败 除 非 这 个 索 引 得 状 态 变 成 UNUSABLE, 而 且 在 初 始 化 参 数 里 边 指 定 SKIP_UNUS ABLE_INDEXES 为 TRUE 一 些 例 子 : SQL>CREATE INDEX expression_ndx ON mytable ((mycola + mycolc * mycolb; SQL>SELECT mycolc FROM mytable WHERE (mycola + mycolc * mycolb <= 256; 复 合 索 引 的 例 子 : SQL>CREATE INDEX example_ndx ON myexample (mycola, UPPER(mycolb, mycolc; SQL>SELECT mycolc FROM myexample

WHERE mycola = 55 AND UPPER(mycolb = JONES ; 限 制 和 规 则 总 结 : 对 于 下 面 这 些 限 制, 不 能 创 建 FBI 索 引 : a LOB 列 b REF c Nested table 列 d 包 含 上 面 数 据 类 型 的 对 象 FBI 索 引 必 须 遵 守 下 面 的 规 则 : a 必 须 使 用 基 于 成 本 的 优 化 器, 而 且 创 建 后 必 须 对 索 引 进 行 分 析 b 不 能 存 储 NULL 值 因 为 任 何 函 数 在 任 何 情 况 下 都 不 能 返 回 NULL 值 c 如 果 一 个 用 户 定 义 的 PL/SQL 例 程 失 效 了, 而 且 这 个 例 程 被 FBI 索 引 用 到 了, 那 么 相 应 的 这 个 FBI 索 引 会 变 成 DISABLED d 创 建 FBI 索 引 得 函 数 必 须 是 确 定 性 的 即, 对 于 指 定 的 输 入, 总 是 会 返 回 确 定 的 结 果 e 索 引 的 属 主 如 果 没 有 了 在 FBI 索 引 里 面 使 用 的 函 数 的 执 行 权 限, 那 么 这 个 FBI 索 引 会 变 成 DISABLED. f 在 创 建 索 引 得 函 数 里 面 不 能 使 用 SUM 等 总 计 函 数 g 要 把 一 个 DISABLED 了 的 索 引 重 新 变 成 ENABLED, 这 个 函 数 必 须 首 先 是 ENABLED 的 才 可 以 4.3 在 线 索 引 创 建 和 重 建 索 引 创 建 与 重 建 在 Oracle8i 中 可 联 机 实 现, 而 不 必 中 断 对 基 表 可 能 实 施 插 入 更 新 或 删 除 操 作 创 建 与 重 建 索 引 是 一 件 非 常 耗 时 的 工 作, 尤 其 当 基 表 很 大 时 在 Oracle8i 之 前, 在 索 引 创 建 与 重 建 期 间, 不 允 许 对 其 基 表 进 行 任 何 DML 操 作 在 线 创 建 索 引 : CREATE INDEX EMP_NO ON EMP (EMPNO TABLESPACE INDEX1 PCTFREE 10 STORAGE (INITIAL 1M NEXT 1M PCTINCREASE 0 ONLINE; 在 线 重 建 索 引 : ALTER INDEX EMP_NO REBUILD ONLINE; 注 : 在 线 索 引 构 建 期 间, 尽 管 能 UPDATE( 更 新 基 表, 但 根 据 Oracle 的 建 议, 最 好 不 要 采 取 会 影 响 到 大 部 分 数 据 行 的 操 作 4.4 使 用 可 传 输 的 表 空 间 实 现 数 据 在 数 据 库 间 的 移 动 对 于 可 传 输 的 表 空 间 这 一 特 性 来 说, 允 许 我 们 把 一 个 或 多 个 表 空 间 从 一 个 数 据 库 移 动 或 复 制 到 另 一 个 数 据 库 可 传 输 的 表 空 间 有 下 面 几 点 限 制 : 源 和 目 标 数 据 库 必 须 处 于 同 一 个 硬 件 平 台 源 和 目 标 数 据 库 的 数 据 库 块 大 小 必 须 一 样, 而 且 必 须 采 用 同 一 个 字 符 集 如 果 表 空 间 名 和 目 标 数 据 库 上 的 表 空 间 名 雷 同, 这 个 表 空 间 就 不 能 被 传 输 到 目 标 数 据 库

数 据 库 表 空 间 迁 移 的 基 本 过 程 是 : 令 表 空 间 为 只 读, 并 复 制 相 应 的 数 据 文 件, 然 后 利 用 E XP/IMP, 从 数 据 字 典 中 卸 载 元 数 据, 并 把 它 装 载 到 目 标 数 据 库 表 空 间 迁 移 前 首 先 要 检 测 待 迁 移 的 表 空 间 是 否 自 包 含 我 们 可 以 通 过 执 行 内 置 的 PL/SQL 过 程 DBMS_TTS.TRANSPORT_SET_CHECK 判 断 表 空 间 是 否 自 包 含 : EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK( SALEDAT,SALESIDX,TRUE; SELECT * FROM TRANSPORT_SET_VOILATIONS; 其 中, SALEDAT,SALESIDX 是 表 空 间 名 若 TRANSPORT_SET_VOILATIONS 没 有 记 录, 则 说 明 待 迁 移 的 表 空 间 是 自 包 含 以 下 是 表 空 间 迁 移 的 操 作 步 骤,1-5 步 操 作 在 源 数 据 库 表 空 间 操 作 完 成,6 7 8 步 在 目 的 数 据 库 表 空 间 操 作 完 成 1. 用 数 据 库 管 理 员 (INTERNAL 身 份 登 录 ORACLE,(CONNECT INTERNAL/****** 2. 将 源 tablsspace_name 表 空 间 置 为 READ ONLY, 使 得 表 空 间 下 的 数 据 文 件 置 为 READ ONLY 状 态, 可 以 进 行 操 作 系 统 级 的 拷 贝,(ALTER TABLESPACE tablsspace_name READ ONLY 如 果 是 生 产 系 统 请 注 意 选 择 好 进 行 此 操 作 的 时 间 3. 利 用 EXP 工 具 进 行 数 据 库 表 空 间 的 迁 移,(EXP INTERNAL/****** FILE=filename.DMP LOG=logname.LOG TRANSPORT_TABLESPACE=Y TABLESPACES=tablsspace_name BUFFER=1024000 4. 将 待 迁 移 的 表 空 间 下 的 所 有 数 据 文 件 进 行 操 作 系 统 级 的 拷 贝, 复 制 到 目 的 数 据 库 操 作 系 统 硬 盘 下 5. 将 源 tablsspace_name 表 空 间 置 为 READ WRITE, 使 得 表 空 间 下 的 数 据 文 件 置 为 READ WRITE 状 态,(ALTER TABLESPACE tablsspace_name READ WRITE 6. 在 目 的 数 据 库 上 建 立 相 应 的 用 户 user_name 并 赋 予 CREATE SESSION 权 限 7. 在 目 的 数 据 库 上 利 用 IMP 工 具 进 行 数 据 库 表 空 间 的 迁 移,(IMP INTERNAL/****** FILE=filename.DMP LOG=logname.LOG TRANSPORT_TABLESPACE=Y TABLESPACES=tablsspace_name DATAFILES=datafile_name1,datafile_name2 8. 在 目 的 数 据 库 上 将 目 的 tablsspace_name 表 空 间 置 为 READ WRITE, 使 得 表 空 间 下 的 数 据 文 件 置 为 READ WRITE 状 态,(ALTER TABLESPACE tablsspace_name READ WRITE