Welcome ORACLE u datafile u sqldba connect internal

Welcome


ORACLE常见问题分析 u 问题:如果误删了某个datafile,数据库起不来怎么办? u 解决: • sqldba • connect internal • startup mount • alter database datafilename offline drop • alter database open • 备份Tablespace中的数据 Technical Seminar

ORACLE常见问题分析 u 问题:如果误删了redo log文件,数据库起不来怎么办? u 解决: • 如果删掉的日志文件为Inactive –sqldba>startup mount –sqldba>alter database drop logfilename –sqldba>alter database add logfilename –recover database until cancel • CONTINUE Technical Seminar

ORACLE常见问题分析 • CONTINUE –<cancel recovery> –alter database open reset logs • 如果删掉的日志文件为current 或active, 联系 oracle 的技术支持部门,然后采取相应的措施 Technical Seminar

ORACLE常见问题分析 u 问题:如何修改数据库的名字? u 解决: • sqldba>alter database backup controfile to trace; • 在? /rdbms/log目录下,找到最新生成的trace文件 ora_nnnn. trc, nnnn表示一个数字 • Edit该trace文件,找到create controlfile命令 , 存 于 一个文件ccf. sql • 修改旧命令为: create controlfile set database newdbname resetlogs Technical Seminar u CONTINUE

ORACLE常见问题分析 u CONTINUE • 备份所有旧的control file • 编辑initsid. ora, 修改db_name=newdbname • sqldba>startup nomount • sqldba>@ccf • sqldba>alter database open Technical Seminar

ORACLE常见问题分析 u 问题:如何修改SID? u 解决: • 修改环境变量ORACLE_SID = newsid • mv init<oldsid>. ora init<newsid>. ora Technical Seminar

ORACLE常见问题分析 u 问题:DBA如何得知某一user/process所执行的sql语句的 具体内容? u 解决: • select saddr, user_name, sql_text from v$open_cursor where user_name = <user_name> Technical Seminar

ORACLE常见问题分析 u 问题:DBA如何区分v$session中windows client的 osuser? u 解决: • 在oracle. ini文件中加入 USERNAME=<username> 或 USERNAME=<ip address> • sqldba>select saddr, osuser from v$session; • 可通过saddr在v$cursor中查出该用户所执行的SQL语 句 Technical Seminar

ORACLE常见问题分析 u 问题:如何得知tablespace的剩余空间有多少? u 解决: • select sum(bytes), sum(blocks) from sys. dba_free_space where tablespace_name = tbsname Technical Seminar

ORACLE常见问题分析 u 问题:如何为一个Transaction指定Rollback Segment? u 解决: • set transaction use rollback segment rollback_segs u 原则: • OLTP或小的transaction指定到小的rollback segment • 大数据量修改的transaction指定到大的rollback segment • 修改正在进行长查询的table的transaction指定到大的 rollback segment Technical Seminar

ORACLE常见问题分析 u 问题:如何做online backup? u 解决: • database 必须使用archivelog mode • sqldba>alter tablespace <ts_name> begin backup • 使用操作系统命令备份属于该tablespace的datafiles • sqldba>alter tablespace <ts_name> end backup Technical Seminar

ORACLE常见问题分析 u 问题:为什么有时非oracle用户不能使用oracle? u 解决: • 检查? /bin/oracle的mode是否为 4751 • 检查. profile文件中是否设置环境变量 –ORACLE_HOME –ORACLE_SID –ORACLE_TERM –PATH Technical Seminar

ORACLE常见问题分析 u 问题:为什么有时输入的汉字查询出来是问号? u 原因:Client端和Server端字符集设置不一致 u 解决: • 检查Server的字符的设置 select value from nls_database_parameters where parameter=NLS_CHARACTERSET • 使client端的字符集设置与Server端相同 –unix: 环境变量NLS_LANG –windows: 在oracle. ini文件这设置NLS_LANG • NLS_LANG=American_America. zhs 16 cgb 231280 Technical Seminar

ORACLE常见问题分析 u 问题:如何手 进行relink? u 解决: • cd ? /rdbms/lib • make -f oracle. mk install • cd ? /sqlplus/lib • make -f sqlplus. mk install Technical Seminar



ORACLE常见问题分析 u 问题:如果一个rollback segment的状态为Need Recovery 怎么办? u Need Recover • 表示oracle试图回退一个事务表中的没有提交的事务 时失败 u 原因: • 所涉及的目标属于一个offline的datafile或 tablespace • undo涉及的目标被破坏或rollback segment被破坏 u CONTINUE Technical Seminar

ORACLE常见问题分析 u CONTINUE u 解决: • 确认所有的tablespace和datafile都online,如果不 能解决则做以下的步骤 • 在initsid. ora中加入 event=? 0015 trace name context forever level 10 • shutdown数据库然后重新启动 • 在? /rdbms/log找到startup时生成的trace file, 在 trace file中,可找到下列信息: error recover tx(#, #) object # Technical Seminar

ORACLE常见问题分析 u CONTINUE • 根据object #在sys. dba_objects表中查出该 object的 名字 • 将该object drop掉 • 在initsid. ora文件中删去event,shutdown数据库 然后重新启动 • 如果问题仍没有解决,则需恢复rollback segment Technical Seminar

ORACLE常见问题分析 u 问题:如何把一个User的Schema从一个Tablespace移 到另一个Tablespace? u 解决: • 将用户的Schema export出来 • Drop原来的用户 • 在新的Tablespace中重新建用户 • 将用户的Schema import到新建用户中 Technical Seminar

ORACLE常见问题分析 u 问题:如何解决ORA-1547错? u 错误:在某个tablespace中无法申请一个指定size的extent u 原因: • 在Import时无法继续分配Rollback Segment • Tablespace中没有足够的空余连续空间 u 解决 • Import时指定参数Commit=y, 设置大的Buffer • 检查剩余空间 sys. dba_free_space • 增加datafile • 调整storage参数 Technical Seminar

ORACLE常见问题分析 u 问题:如何解决sqlplus注册时出现 Warning: Profile Information are not load? u 原因:Product和User Profile Table 没有生成 u 解决: • sqlplus system/manager • SQL>@? /sqlplus/admin/pupbld. sql Technical Seminar


ORACLE常见问题分析 • CONTINUE • 出现GPF后的解决方法: –reboot –检查文件系统是否有文件被破坏 SCANDISK/CHKDSK –HIMEM. SYS和EMM 386. SYS必须在其他driver之前装载, 而且 不要装载到高端内存 –在autoexec. bat中设置环境变量 SET TEMP=C: TEMP –在autoexec. bat中删除SHARE. EXE, 在SYSTEM. INI中用 VSHARE. 386代替 • CONTINUE Technical Seminar

ORACLE常见问题分析 • CONTINUE –在CONFIG. SYS, 设置: BUFFERS=60, 0 FILES=60 • 如果上述方法不能解决问题,请联系Oracle技术支持部门 Technical Seminar


ORACLE常见问题分析 u 问题:在developer 2000中,如何用ctrl-c中断查询 ? u 解决: • 在oracle. ini文件中加入参数: CNTL_BREAK = ON Technical Seminar

ORACLE常见问题分析 u 问题:如何得知oracle可执行文件连接的sql*net v 1 driver和sql*net v 2 adapter u 解决: • 在$ORACLE_HOME/bin下 –$ drivers oracle driver –$ adapters oracle adapter –$ drivers sqlplus –$ adapters sqlplus Technical Seminar 查sql*net v 1 查sql*net v 2


- Slides: 32