Q&A.GIF (2298 字节)

Home
Q 我创建了一个sequence,但这个sequence经常跳号,如何解决
A sequence在cache方式下,当flush shared-pool时会产生跳号现象。 对于不允许跳号的sequence,Oracle建议您将sequence改为nocache, 即不产生跳号现象。
命令为 :alter sequence <sequence-name>nocache;
Q: 我调整了数据库参数process后,数据库不能启动,应如何解决?
A: 在unix系统中,调整参数process后,应调整unix系统的信号量参数。在大多数unix系统中,参数名为semmns,每个process会占用一个信号量.

semmns的计算公式为:SEMMNS>processes+instance_processes+system
processes=数据库参数processes的值。
instance_processes=5(smon,pmon,dbwr,lgwr,arch)
system=系统所占用信号量。系统所占用信号量可用下列命令查出:ipcs-sb
其中列NSEMS显示系统已占用信号量。

Q: 怎样知道用户用了哪个rollback段?
A:  可使用如下查询:
A:select r.namee,nvl(s.username,‘no transaction')username from V$lock 1,
V$session s,v$rollname r where 1.sid=s.sid
and trunc(1.idl(+)/65536)=r.usn
and 1.type(+)'TX';  这个查询会列出使用了哪个rollback段。
Q: 在客户端如何设置日期的显示格式?
A: 你需要设置NLS_DATE_FORMA环境变量,例如:
                                        NLS-DATE-FORMAT=DD/MM/YY
Q: 在WINDOWS NT上如何删除ORACLE SERVICE?
A: 运行在REGEDIT,选择HKEY_LOCAL_MACHINE---->SYSTEM--->CURRENTCONTROLSET--->SERVICES,   然后选中需要删除的SERVICE, 将其删除。
Q: 在FORMS50中如何加一个formula item?
A: 首先在layout editor中加一个test item,然后在它的属性中选择Calculation---Formula,
输入需要的公式。
Q: 在WEB SERVER3.0中如忘记ADMIN LISTENER的口令怎么办?
A: 在$ORAWEB_ADMIN/ows/website30/httpd_<nachine name>/admin/config目录下有一个svadmin.cfg文件,此文件记录了ADMIN的口令,你可以修改它。
Q 在Form应用中,如何在子From中退出整个应用?
A: 为了达到这个效果,需定义3个Triggers:
1.在intial form中,定义When_New_Form_Instance Trigger
   :global.quit_all:'N'
2.在应用的每个From中,定义When_Window_Activated Trigger
  IF:global.quit-all='Y'THEN
   EXIT_FORM;
  END IF;
3.在退出应用的button中,定义When_Button_Pressed Trigger
   :global.quit_all:='Y';
   EXIT_FORM;
Q: DEV2k1.3升级到2.0,原来在1.3中的应用如何加上2.0中缺省的icon?
A: 在DEV2k1.3中开发应用,缺省不带icon,而在DEV2k 2.0中开发的应用,缺省带icon;要想原来在1.3中的应用加上2.0中缺省的icon,在DEV2k中打开原来的应用,设置from特性,将menu module设置为DEFAULT&SMARTBAR,再运行这个应用时,它会加上2.0中缺省的icon.
Q: 当在oracle forms runtime中COMMIT一个显性INSERT,UPDATE orDELETE DML SQL语句时报错“FRM-40401:No changes to save.”或“FRM-40405:No changes to apply”?
A: 在oracle forms中,COMMIT语句等效于COMMIT-FORM语句,它导致oracle forms去检查相应blck的状态。当Forms发现所有block都有效并且没有改变需要commit时,这个错误就会出现。
请使用FORMS_DDL BUILT-IN来commit:
insert into table values ('value2');
FORMS_DDL('COMMIT');
Q: 用户被锁住的方法
A: 当一个用户抱怨他被锁住了,DBA首先要做的是各作废了解他在锁定的点执行的操作,并确定用户是否真的被锁住了。下列查询会返回当前被锁住的用户列表:
select a.username, a.sid, a.serial#, b.id1, c.sql_text
   from v$session a, v$lock b, v$sqltext c
   where a.lockwait = b.kaddr
   and a.sql_address = c.address
   and a.sql_hash_value = c.hash_value;
USERNAME SID SERIAL# ID1 SQL_TEXT
SCOTT 11 9 131080 update
plsql_user.s_employee
set salary = 5000

   结 果 显 示 SCOTT 是 在 做 UPDATE 时 被 锁 住 了。 下 一 步 是 确 定 谁 锁 住 了 该 用 户, 而 这 个 用 户 又 在 做 何 操 作。 你 可 以 执 行 下 列 查 询:
   select a.username, a.sid, a.serial#, b.id1, c.sql_text
   from v$session a, v$lock b, v$sqltext c
   where b.id1 in
   (select distinct e.id1
   from v$session d, v$lock e
   where d.lockwait = e.kaddr)
   and a.sid = b.sid
   and c.hash_value = a.sql_hash_value
   and b.request = 0;

USERNAME SID SERIAL# ID1 SQL_TEXT
PLSQL_USER 10 26 131080 update s_employee
set salary = 10000

  结 果 显 示 是 由 于 PLSQL_USER 和 SCOTT 对 同 一 TABLE 做 UPDATE 而 锁 住 了 SCOTT。 当 你 有 了 这 些 信 息, 就 可 以 通 过 KILL SESSION, 释 放 锁。 例 如 我 们 可 以 用 下 面 的 命 令 来 杀 死 PLSQL_USER 的 SESSION。
   alter system kill session '10,26';

Q: 如 何 建 立 一 个 与 现 存 数 据 库 相 同, 但 不 包 含 数 据 的 空 库?   
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: 能 否 使 某 些 host 不 能 通 过 SQL*NETV2 访 问 oracle server?
A: 可 以 通 过 编 辑 $ORACLE_HOME/network/admin/protocol.ora
   文 件 来 使 某 些 host 可 以 通 过 SQL*NETV2 来 访 问 oracle server 而 另 一 些 host 不 能 通 过 SQL*NETV2 来 访 问 oracle server (SQL*NETV2.1 及 以 上 版 本 ).
   例 如 : protocol.ora:
   tcp.validnode_checking=yes
   tcp.invited_nodes=(138.3.39.150)
   这 样 只 有 138.3.39.150 才 能 通 过 SQL*NETV2 访 问 oracle server, 其 他 host 通 过 SQL*NETV2 对 oracle server 的 访 问 都 会 被 拒 绝 .
   又 例 如 :protocol.ora
   tcp.validnode_checking=yes
   tcp.excluded_nodes=(138.3.39.150)
   这 样 138.3.39.150 通 过 SQL*NETV2 对 oracle server 的 访 问 就 会 被 拒 绝 , 而 其 他 host 则 可 以 访 问 oracle server.
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. 
Q: 安 装 oracle 8 for windows NT 4.0 需 要 NT 的 那 种 service pack?  
A: 安 装 oracle 8 for windows NT 4.0 需 要 NT 的 service pack 3. 
Q: 怎 样 在 oracle 7 和 oracle 8 之 间 export/import 数 据 ?  
必 须 先 在 oracle 8 数 据 库 上 以 internal 或 sys 用 户 运 行 catexp7.sql
   svrmgr>connect internal
   svrmgr>@?/rdbms/admin/catexp7.sql  
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;