网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > 入门基础 > Oracle新手入门: Oracle问答精选  

Oracle新手入门: Oracle问答精选

2005-09-06  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  Q: 如 何 使 用 Cost Based 优 化 器 优 化 查 询 操 作?
  A: Oracle Server 提 供 了 基 于 成 本(Cost Based) 和 基 于 规 则(Rule Based) 两 种 优 化 器, 简 称 为 CBO 和 RBO, 用 于 确 定 查 询 操 作 的 执 行 计 划。 Cost Based 优 化 器 将 计 算 各 种 执 行 计 划 的 开 销, 然 后 选 出 最 低 成 本 的 执 行 计 划。 可 使 用 下 列 方 法 选 择 使 用 CBO: 方 法 1: 在 INIT<sid>.ORA 文 件 中 设 置 参 数 OPTIMIZER_MODE=choose
  方 法 2: 在 Session 级 设 置  OPTIMIZER_GOAL=FIRST_ROWS 或 ALL_ROWS 例 如: alter session set optimizer_goal=first_rows; 方 法 3: 在 查 询 语 句 中 使 用 Hint, 包 括 CHOOSE,ALL_ROWS,FIRST_ROWS 等。
  
  Q: 如 何 确 定 某 个 查 询 使 用 了 哪 一 种 优 化 器?
  A: 使 用 EXPLAIN PLAN 命 令 生 成 该 查 询 语 句 的 执 行 计 划, 然 后 检 查 PLAN_TABLE 表 中 POSITION 字 段, 如 果 值 为 Null, 说 明 使 用 了 Rule Based 优 化 器; 否 则 表 明 使 用 了 Cost B ased 优 化 器。 例 如:
  SELECT decode(nvl(position,-1),-1, 'RBO','CBO')
  FROM plan_table
网管u家u.bitsCN.com

  WHERE id=0;
  
  Q: 我 的 查 询 上 周 的 性 能 很 好, 为 什 么 现 在 查 询 速 度 很 慢?
  A: 这 是 由 于 执 行 计 划 被 改 变 而 造 成 的, 下 列 因 素 将 会 改 变 一 个 执 行 计 划:
  1) INIT<sid>.ORA 文 件 中 的 参 数 OPTIMIZER_MODE 被 改 变 2) 表 上 定 义 或 改 变 了 并 行 查 询 度 3) 使 用 ANALYZE 命 令 重 新 分 析 了 表, 而 且 使 用 了 ESTIMATE 方 式, 因 这 种 方 式 选 择 不 同 的 百 分 比 可 产 生 不 同 的 分 析 结 果。
  4) DB_FILE_MULTIBLOCK_READ_COUNT 参 数 被 修 改。
  5) SORT_AREA_SIZE 参 数 被 修 改
  
  Q: 为 什 么 我 的 执 行 计 划 不 是 最 好 的?
  A: CBO 是 依 赖 表 的 一 些 统 计 信 息 来 选 择 出 最 低 成 本 的 执 行 计 划, 当 这 些 统 计 信 息 不 准 确 时, 产 生 的 计 划 便 可 能 不 是 最 佳 的。 因 而 应 使 用 ANALYZE 命 令 及 时 对 表 进 行 分 析 统 计。
  
  Q: 当 使 用 ESTIMATE 方 式 对 表 进 行 分 析 时, 选 用 什 么 百 分 比 最 好?
  A: 经 测 试 证 明, 使 用 5% 的 的 比 例 较 好。 即 提 高 了 分 析 效 率, 又 保 证 分 析 结 果 的 准 确 性。
网管网www.bitscn.com

  
  Q: 如 何 在 Oracle8 数 据 库 中 创 建 Partition Table?
  A: 使 用 CREATE TABLE 命 令, 并 指 定 Partition Key 和 每 个 Partition 的 分 区 范 围, Partition 名 为 可 选 项, 如 未 指 定, 系 统 将 自 动 产 生 Partition 名。 例 如: CREATE TABLE emp
  (EMPNO NUMBER(5),
  ...)
  PARTITION BY RANGE(EMPNO),
  emp_p1 VALUES LESS THAN (2000),
  emp_p2 VALUES LESS THAN (4000)
  emp_p3 VALUES LESS THAN (MAXVALUE);
  
  Q: Partition Table 有 何 限 制?
  A: 1) 数 据 类 型 限 制:
  Partition Table 不 能 包 含 LONG、 LONG RAW、 LOB 及 OBJECT 类 型 的 字 段 2) Cluster 不 能 被 分 区 3) Bitmap 索 引: Bitmap 索 引 必 须 是 LOCAL 索 引, 不 能 是 GLOBAL 索 引 4) 优 化 器:
  Oracle8 中 Cost Based 优 化 器 支 持 Partitions, 而 Rule Based 优 化 器 对 Partitions 不 敏 感, 无 法 通 过 Partitions 获 得 性 能 的 提 高。
  5) Partition Tables 不 能 跨 多 个 数 据 库, 所 有 的 Partition 必 须 存 在 于 一 个 数 据 库 中
  
  Q: 如 何 建 立 一 个 与 现 存 数 据 库 相 同, 但 不 包 含 数 据 的 空 库?
网管论坛bbs_bitsCN_com

  A: 对 全 库 作 Export 或 Import 时, 使 用 参 数 ROWS=Y
  例 如: exp system/manager full=Y rows=N file=full.dmp
  imp system/manager full=Y rows=N file=full.dmp
  
  Q: 当 Exporting Procedures 和 Packages 时, 是 否 会 改 变 其 时 间 标 签 (Timestamp) ?
  A: 不 改 变, 这 是 为 避 免 不 必 要 的 重 编 译。
  
  Q: Exp 的 参 数 VOLSIZE 能 否 用 于 所 有 的 平 台?
  A: VOLSIZE 只 能 用 于 UNIX 系 统, 将 数 据 exporting 至 外 部 介 质 上(如 磁 带)
  
  Q: 如 何 通 过 SQL*PLUS 往 表 中 插 入 " ' ", 如 往 表 中 插 入 i'm.
  A: 在 SQL*PLUS 中 , 我 们 可 以 用 chr(39) 来 表 示 " ' ", 例 如 :
  sql>create table test (col1 varchar2(10));
  sql>insert into test values('i'||chr(39)||'m');
  sql>select * from test;
  col1
  -----
  i'm
  
  Q: 在 win95 或 windows NT 上 运 行 oracle Net8 Assistant 或 Net8 Easy Configuration 时 报 错 "unhandled exception error in Java.exe"
  A:oracle Net8 Assistant 或 Net8 Easy Configuration 调 用 了 Java, 而 Java 在 win95 或 windows NT 上 运 行 对 系 统 的 分 辨 率 和 颜 色 都 有 要 求 . 应 把 系 统 的 分 辨 率 调 到 大 于 640x480, 把 系 统 的 颜 色 调 到 大 于 256 色 但 不 能 设 置 成 true color. 网管论坛bbs_bitsCN_com
  
  Q: 安 装 oracle 8 for windows NT 4.0 需 要 NT 的 那 种 service pack?
  A: 安 装 oracle 8 for windows NT 4.0 需 要 NT 的 service pack 3.
  
  Q:Delphi3.0 是 否 支 持 oracle8?
  A:Delphi3.0 只 有 oracle 7 的 driver, 所 以 不 支 持 oracle 8.
  Delphi4.0.x 有 oracle 8 的 driver, 所 以 支 持 oracle 8.
  
  Q: 怎 样 在 oracle 7 和 oracle 8 之 间 export/import 数 据 ?
  A: 必 须 先 在 oracle 8 数 据 库 上 以 internal 或 sys 用 户 运 行 catexp7.sql
  svrmgr>connect internal
  svrmgr>@?/rdbms/admin/catexp7.sql
  
  Q: 怎 样 为 远 程 用 户 设 置 "internal" 的 口 令 ?
  A: 先 在 数 据 库 端 的 init<sid>.ora 文 件 中 设 置
  remote_login_passwordfile=exclusive
  并 且 为 oracle owner 设 置 环 境 变 量
  ORA_<SID>_PWFILE=orapw<sid>.pwd
  然 后 以 oracle owner 运 行 以 下 命 令
  $cd $ORACLE_HOME/dbs
  $orapwd file=orapw<sid>.pwd password=<passwd> entries=5
  
  Q: 如 何 手 工 安 装 sqlplus 的 help facility? 网管联盟bitsCN@com
  A: 以 oracle 用 户 运 行 以 下 命 令
  $cd $ORACLE_HOME/bin
  $SYSTEM_PASS=system/manager;export SYSTEM_PASS
  $helpins
  
  Q: 如 何 查 出 前 台 正 在 发 出 的 sql 语 句?
  A: 先 查 出 正 在 运 行 的 前 台 程 序 的 sid:
  sql>select sid,serial#,username,program
  from v$session
  where status='ACTIVE';
  然 后 根 据 上 面 得 到 的 sid, 可 查 出 正 在 运 行 的 前 台 程 序 发 出 的 sql 语 句 :
  sql>select user_name,sql_text
  from v$open_cursor
  where sid=xx;
  
  Q: 在 oracle 8 中 如 何 使 用 shared library 来 编 译 pro*c 程 序 ?
  A: 首 先 以 oracle owner 创 建 shared library
  $cd $ORACLE_HOME/rdbms/lib
  $make -f ins_rdbms.mk client_sharedlib
  然 后 设 置 LIBPATH 环 境 变 量 ( 有 的 平 台 用 LD_LIBRARY_PATH, 请 参 见 手 册 ):
  $LIBPATH=$ORACLE_HOME/lib;export LIBPATH
  最 后 编 译 你 的 pro*c 程 序 :
  $make -f demo_proc.mk build OBJS=yourprog.o EXE=yourprog
  
  Q: 在 数 据 库 一 级 设 置 SQL Trace 网管u家u.bitsCN.com
  A: 在 init.ora 中 加 入 参 数 sql_trace=true. 然 后 重 新 启 动 数 据 库。
  
  Q: 在 SQL*PLUS 中 对 某 一 session 设 置 SQL trace.
  A: sql*plus>alter session set sql_trace true;
  在 产 生 Trace 之 后, 使 用 如 下 命 令 关 闭 Trace.
  sql*plus>alter session set sql_trace false;3:
  
  Q: 在 PL/SQL 中 设 置 和 关 闭 SQL Trace.
  A: dbms_session.set_sql_trace(true);
  dbms_session.set_sql_trace(false);
  如 果 你 不 能 发 现 这 个 package, 首 先 用 SYS 用 户 执 行
  dbmsutil.sql 这 个 脚 本。
  
  Q: 怎 样 设 置 redo log 文 件 的 大 小。
  A: 设 置 redo log 文 件 的 原 则 就 是 要 保 证 30 分 钟 之 内 进 行 log switch.
  log switch 的 信 息 被 记 录 在 alertSID.log 中。
  -------------------------------------------------------
  Mon May 5 13:53:31 1997
  Thread 1 advanced to log sequence 68
  Current log#2 seq# 68 mem# 0: /u05/dbs/log2ween.dbf
  -------------------------------------------------------
  
网管网www.bitscn.com

  如 果 两 次 switch 的 时 间 是 10 分 钟, 你 需 要 增 加 redo log 文 件
  到 三 倍 的 尺 寸。
  如 果 两 次 switch 的 时 间 是 15 分 钟, 你 需 要 增 加 redo log 文 件
  到 两 倍 的 尺 寸。
  如 果 两 次 switch 的 时 间 超 过 30 分 钟, 你 不 需 要 需 要 增 加 redo
  log 文 件 的 尺 寸。
  
  同 时 设 置 CHECK_POINT_INTERVAL 大 于 redo log 文 件 的 大 小。
  
  Q: 怎 样 检 查 是 否 一 个 数

TAGs精选   问答   Q:   A:   设置   优化   计划   执行   查询    
 上一篇:Database 10g:忘掉我以前的功能   下一篇:新手入门:学好Oracle的六条总结
相关文章列表
Oracle新手入门: Oracle问答精选 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.Oracle初学者必知的100个问题
2.Oracle入门教程,新手必读
3.我的oracle9i学习笔记
4.怎样修改查看Oracle字符集
5.oracle的nvl函数的用法
6.常用数据库比较
7.Oracle数据库基本知识及问题解决
8.使用 Oracle Data Mining
9.Oracle弱智900问二
10.入门基础——Oracle快速入门
最新推荐文章:
1.在Oracle数据库中如何使用超过2G的内存-
2.一步完成封装编译-入门基础
3.如何成为Oracle应用程序DBA-入门基础
4.特定的条件下同样可以灵活易用-入门基础
5.Oracle数据库10g垃圾表的最新方法-入门基
6.使用SQL Server数据库嵌套子查询-入门基
7.Oracle failsafe与rac两者之间的不同之处
8.Oracle数据库10g新特性中的闪回查询-入门
9.Oracle 10g schedule job的常用操作-入门
10.重建Oracle数据库控制文件的简单方法-入
网管论坛交流:
·不疯魔不成活
·令你大开眼界的真正标准化机房,已整理重
·为赈灾,女孩舍身拍“裸照”
·Windows Server 2003服务器群集创建和配
·exchange2k3全套官方资料
·双儿一周岁了。。。特殊的礼物来啦。。
·存储备份技术版块守则
·无盘技术交流区守则
·DOS命令基础大全之命令详解<作者吐血
·Windows XP 操作系统默认设置需要注意的