当前位置:首页 >> IT认证 >>

ORACLE数据常见问题处理-指南


常见问题处理指南 数据库篇 数据库篇

文件版本 编写人 编写时间

V0.90 余新和 2008-6-19

北京市天元网络技术股份有限公司 本文档属北京市天元网络技术股份有限公司所有 未经允许,不可全部或部分发表、复制或使用于任何目的。

常见问题处理指南-数据库篇+v0.90

北京市天元网络技术股份有限公司

文件修改记录

修改日期

版本号

修改内容

修改人

审核人

批准人/ 批准人/日期

i

常见问题处理指南-数据库篇+v0.90 目 录 1 2 3

北京市天元网络技术股份有限公司

文档目的................................................................. 2 适用范围................................................................. 2 Solaris................................................. 错误!未定义书签。 错误!未定义书签。 3.1 3.2 3.3 3.4 SUN 主机问题 ....................................................... 2 SUN 阵列问题 ...................................... 错误!未定义书签。 错误!未定义书签。 SUN 带库问题(含 NBU) ............................... 错误!未定义书签。 错误!未定义书签。 SUN 双机问题 ...................................... 错误!未定义书签。 错误!未定义书签。

I

常见问题处理指南-数据库篇+v0.90 1 文档目的

北京市天元网络技术股份有限公司

指导项目组人员处理常见的 ORACLE 问题及数据库信息查询 2 适用范围 项目组人员、项目经理、用户 3 3.1 数据库 数据库(oracle)常见问题处理 数据库(oracle)常见问题处理 (oracle)常见问题

3.1.1 通过 pid 查找会话的详细信息
可以按照如下步骤查找某个进程的详细会话信息。 可以按照如下步骤查找某个进程的详细会话信息 (os 的 pid----------v$process 的 spid v$session 的 addr-----v$process 的 paddr) 1.通过 ps -ef|grep ora 或者 prstat 或者 top 查找 pid 本例通过 ps -ef|grep ora 找到进程 13000 2.--通过操作系统的 pid 查找 sid select sid from v$session where paddr=(select addr from v$process where spid=&spid); ---------------- Enter value for spid: 13000 old 2: where paddr=(select addr from v$process where spid=&spid) new 2: where paddr=(select addr from v$process where spid=13000) SID ---------134 3. select serial#,username,status,machine,program,LOGON_TIME from v$session where sid= ‘&sid‘ SQL> / Enter value for sid: 134 old 1: select serial#,username,status,machine,program,LOGON_TIME from v$session wher e sid=‘&sid‘ new 1: select serial#,username,status,machine,program,LOGON_TIME from v$session whe re sid=‘134‘ SERIAL# USERNAME STATUS MACHINE PROGRAM LOGON_TIME ---------- ------------------------------ -------- ------------------------------ ----------------------------------------------------------5228 OPTIMIZE INACTIVE WORKGROUP\METARNET-DENGMI w3wp.exe Jul 03 2006 11:52: 04

查询耗资源的 语句的方法: 查询耗资源的 SQL 语句的方法 2

常见问题处理指南-数据库篇+v0.90 1、把使用 CPU 资源比较高的 pid 放到下面语句中:

北京市天元网络技术股份有限公司

select sid,serial#,username,program,sql_hash_value, to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') as login_time from v$session where paddr in ( select addr from v$process where spid=19328);

2、把查询到 sql_hash_value 的值放到下面的语句中: select sql_text from v$sqltext_with_newlines where hash_value =2708444771 order by piece; 查询是否有相同的语句在对同一数据进行删除操作: 查询是否有相同的语句在对同一数据进行删除操作:
select s.username, s.program, s.machine ,s.sid ,sql_text,last_load_time from v$session s ,v$sql x where s.sql_address = x.address AND s.sql_hash_value = x.hash_value and (sql_text like 'delete%alarminfo%' or sql_text like 'DELETE%alarminfo%') order by s.username, s.sid

select spid from v$process where addr = (select paddr from v$session where sid=209);

环境下修改归档日志目录的方法 3.1.2 在 spfile 环境下修改归档日志目录的方法 -- 注 意 , 与 pfile 环 境 下 的 修 改 方 法 不 同 .pfile 环 境 下 直 接 vi $ORACLE_HOME/dbs/init$ORACLE_SID.ora 就可以了. 修改步骤如下: 1,查看当前归档日志目录 SQL> archive log list 数据库日志模式 存档模式 自动存档 启用 存档终点 /u02/archive 最早的概要日志序列 116090 下一个存档日志序列 116092 当前日志序列 116092 2,修改数据库归档日志目录为"/u03/archive" SQL> alter system set log_archive_dest_1=‘LOCATION=/u03/archive‘ scope=spfile; 3,重启数据库生效

3

常见问题处理指南-数据库篇+v0.90
SQL> shutdown immediate SQL> startup 4,验证 SQL> archive log list 数据库日志模式 存档模式 自动存档 启用 存档终点 /u03/archive 最早的概要日志序列 116092 下一个存档日志序列 116094 当前日志序列 116094 5,修改完毕

北京市天元网络技术股份有限公司

3.1.3 oralce 导出错误 ora-00003
现象描述: oracle 数据库从客户端导出服务器端某个表,产生 ora-00003 错误;从服务器端本机导出时,发生 ora-00091 错误。 原因分析: 现象 1: 9205 以前的版本导出其后版本的表, 用 且此表中有带 LOB 字段时, 也会出现 exp-00003 错误。 现象 2:oracle 用户的环境变量语言集和 oralce 数据库中的环境变量语言集不相同。 临时解决方案: 现象 1:使用 9205 以上的版本进行导出。 永久解决方案: 现 象 1 : 更 改 数 据 库 服 务 器 端 的 oracle 系 统 视 图 EXU9TNE 的 定 义 , 该 视 图 定 义 为: $cat $ORACLE_HOME/rdbms/admin/catexp.sql CREATE OR REPLACE VIEW EXU9TNE (tsno, fileno, blockno, length) AS SELECT ts#, segfile#, segblock#, length FROM sys.uet$ WHERE ext# = 1 以 sys 用户登录数据库服务器重新建立该视图: CREATE OR REPLACE VIEW EXU9TNE (tsno, fileno, blockno, length) AS SELECT ts#, segfile#, segblock#, length FROM sys.uet$ WHERE ext# = 1 UNION ALL select * from sys.exu9tneb 注意:不要随意改动 Oracle 系统视图,执行完后,应立刻恢复。切记! ! 现象 2: 查看 oracle 的环境变量语言集: a、数据库服务器字符集: select * from nls_database_parameters b、客户端字符集: select * from nls_instance_parameters c、将 oracle 用户的环境变量(.profile 文件或.cshrc 文件)字符集改成和数据库服务器字符集一样。 通常我们设定为:chinese_china.ZHS16GBK 的安装、 3.1.4 Statspack 的安装、配置与使用 安装前准备 A.首先是系统参数的确认: job_queue_processes:为了建立自动任务,执行数据收集,该参数要大于 0 timed_statistics:为了收集操作系统计时信息等,需要将其设置为 TRUE B.建议最好是单独的为 perfstat 用户(即安装 statspack 要建的用户)单独建立数据表空间和临时表空 间,数据表空间至少要有 100M 的空闲空间,否则创建 statspack 对象会失败,如果打算长期使用 statspack,可以考虑建稍大些的数据表空间。 安装

4

常见问题处理指南-数据库篇+v0.90

北京市天元网络技术股份有限公司

A.安装脚本 安 装 的 脚 本 所 在 目 录 是 $ORACLE_HOME/rdbms/admin , 在 oracle8.1.6 版 本 安 装 脚 本 是 statscre.sql,之后 8.1.7 版本开始就是 spcreate.sql,安装所需用户在 9i 之前的需要 internal 或者拥 有 sysdba 权限的用户,9i 需要的用户是 sys(9i 已经不存在 internal 用户了) 执行安装脚本如下: SQL> @$ORACLE_HOME/rdbms/admin/spcreate B.在安装过程中,需要填写 perfstat 用户的密码,并且选择 perfstat 用户的数据表空间和临时表空间, 安装完成之后,察看相应的.lis 文件检查安装是否正确无误,有问题可以通过 spdrop.sql 完成 statspack 的卸载,重新运行 spcreate.sql 完成 statspack 的安装。 测试 最简单的 statspack 报告生成,运行两次 statspack.snap,然后运行 spreport.sql 生成一个基于两个时 间点的报告。如果是 8.1.7.3 之前版本的 Oracle,需要修改 spcpkg.sql,要将 substr 修改为 substrb, 如下位置: select l_snap_id , p_dbid , p_instance_number , substr(sql_text,1,31) à substrb(sql_text,1,31) 建立简单的 statspack 报告过程如下: SQL> execute statspack.snap PL/SQL procedure successfully completed. SQL> execute statspack.snap PL/SQL procedure successfully completed. SQL> @$ORACLE_HOME/rdbms/admin/spreport Spreport 的执行过程中会列出需要选择的快照, 你需要填写该报告描述的开始和结束的快照序号, 并填写 报告的文件名,当然可以不填,使用默认的报告文件名,默认的会生成在目录 $ORACLE_HOME/rdbms/admin 中 这样就可以验证 statspack 已经正确的安装完成了 自动收集 statspack 快照 正常在真正的环境下,我们是需要连续的采样一段时间,这样生成的 statspack 才能更好的反映系统的现 状,我们是可以通过 spauto.sql 来自动收集数据的。 主要可能会设计到修改如下部分的内容 variable jobno number; variable instno number; begin select instance_number into :instno from v$instance; dbms_job.submit(:jobno, ‘statspack.snap;‘, trunc(sysdate+1/24,‘HH‘), ‘trunc(SYSDATE+1 /24,‘‘HH‘‘)‘, TRUE, :instno);

5

常见问题处理指南-数据库篇+v0.90

北京市天元网络技术股份有限公司

commit; end; / 主要是修改 1/24 这个值,目前是一个小时自动收集一次数据,如果要改动为半个小时收集一次数据就修 改为 1/48,同理,进行或大或小的修改。 执行后,可以在 spauto.lis 文件中看到当前自动收集数据的 job 号等信息。当想要生成 statspack 报告 的时候,只要选择任何两个不跨越停机时间的快照序号就可以了。注意,statspack 是不能跨越停机的。

3.1.5 oracle 表空间操作
建立表空间 CREATE TABLESPACE data01 DATAFILE ‘/oracle/oradata/db/DATA01.dbf‘ SIZE 500M UNIFORM SIZE 128k; #指定区尺寸为 128k,如不指定,区尺寸默认为 64k 删除表空间 DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES; 一、建立表空间 CREATE TABLESPACE data01 DATAFILE ‘/oracle/oradata/db/DATA01.dbf‘ SIZE 500M UNIFORM SIZE 128k; #指定区尺寸为 128k,如不指定,区尺寸默认为 64k 二、建立 UNDO 表空间 CREATE UNDO TABLESPACE UNDOTBS02 DATAFILE ‘/oracle/oradata/db/UNDOTBS02.dbf‘ SIZE 50M #注意:在 OPEN 状态下某些时刻只能用一个 UNDO 表空间,如果要用新建的表空间,必须切换到该 表空间: ALTER SYSTEM SET undo_tablespace=UNDOTBS02; 三、建立临时表空间 CREATE TEMPORARY TABLESPACE temp_data TEMPFILE ‘/oracle/oradata/db/TEMP_DATA.dbf‘ SIZE 50M 四、改变表空间状态 1.使表空间脱机 ALTER TABLESPACE game OFFLINE; 如果是意外删除了数据文件,则必须带有 RECOVER 选项 ALTER TABLESPACE game OFFLINE FOR RECOVER; 2.使表空间联机

6

常见问题处理指南-数据库篇+v0.90
ALTER TABLESPACE game ONLINE; 3.使数据文件脱机 ALTER DATABASE DATAFILE 3 OFFLINE; 4.使数据文件联机 ALTER DATABASE DATAFILE 3 ONLINE; 5.使表空间只读 ALTER TABLESPACE game READ ONLY; 6.使表空间可读写 ALTER TABLESPACE game READ WRITE; 五、删除表空间

北京市天元网络技术股份有限公司

DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES; 六、扩展表空间 首先查看表空间的名字和所属文件 select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name; 1.增加数据文件 ALTER TABLESPACE game ADD DATAFILE ‘/oracle/oradata/db/GAME02.dbf‘ SIZE 1000M; 2.手动增加数据文件尺寸 ALTER DATABASE DATAFILE ‘/oracle/oradata/db/GAME.dbf‘ RESIZE 4000M; 3.设定数据文件自动扩展 ALTER DATABASE DATAFILE ‘/oracle/oradata/db/GAME.dbf AUTOEXTEND ON NEXT 100M MAXSIZE 10000M; 设定后查看表空间信息 SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE, (B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE" FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C

7

常见问题处理指南-数据库篇+v0.90

北京市天元网络技术股份有限公司

WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLE SPACE_NAME; 查询表空间相关信息的 SQL: 1.查看表空间及文件大小(含 undo 表空间) set linesize 300 set pagesize 500 col file_name format a200 col TABLESPACE_NAME for a35 select tablespace_name,file_id,status,bytes/1024/1024 FileSizeM,file_name from dba_data_files order by tablespace_name; 2.查看表空间大小及利用率 set linesize 200 set pages 2000 col TABLESPACENAME for a30 select substr(a.TABLESPACE_NAME,1,30) TablespaceName, sum(a.bytes/1024/1024) as "Totle_size(M)", sum(nvl(b.free_space1/1024/1024,0)) as "Free_space(M)", sum(a.bytes/1024/1024)-sum(nvl(b.free_space1/1024/1024,0)) as "Used_space(M)", round((sum(a.bytes/1024/1024)-sum(nvl(b.free_space1/1024/1024,0))) *100/sum(a.bytes/1024/1024),2) as "Used_percent%" from dba_data_files a, (select sum(nvl(bytes,0)) free_space1,file_id from dba_free_space group by file_id) b where a.file_id = b.file_id(+) group by a.TABLESPACE_NAME order by "Used_percent%"; 3.查看临时表空间对应的文件名和大小 col file_name for a50 col TABLESPACE_NAME for a20 select FILE_NAME,TABLESPACE_NAME,BYTES,USER_BYTES from dba_temp_files; 4.查看临时表空间对应的文件名和大小 4-1 set lines 200 set pages 2000 SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS, USED_SPACE "USED_SPACE(M)",ROUND(NVL(USED_SPACE,0)/SPACE*100,2) "USED_RAT E(%)", NVL(FREE_SPACE,0) "FREE_SPACE(M)" FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLO CKS) BLOCKS FROM DBA_TEMP_FILES GROUP BY TABLESPACE_NAME) D, (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE,ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACE FROM V$TEMP_SP ACE_HEADER GROUP BY TABLESPACE_NAME) F WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+ ); 4-2 set lines 200 set pages 2000 select tablespace_name, file_id, bytes_used, bytes_free from v$temp_space_header ; 5.查看用户所使用的临时表空间 select username,default_tablespace,temporary_tablespace from dba_users;

3.1.6 ORACLE 数据库中汉字显示乱码问题的探讨
1 引言 ORACLE 数据库作为业界领先的数据库产品,近年来在国内大中型企业中得到了广泛的应用。虽然 ORACLE 数据库产品本身在本地化方面已做得相当成熟,但还是有不少用户反应汉字显示乱码的问题。如 对同一数据库不同的用户对同一表中的 username 查询却得出了不同的结果: “ORACLE??????”和 “ORACLE 中国有限公司”,显然结果中将中文字符显示为乱码,那么为什么呢?字符集的设置不当是影响 ORACLE 数据库汉字显示的关键问题。

8

常见问题处理指南-数据库篇+v0.90

北京市天元网络技术股份有限公司

2 关于字符集 字 符 集 是 ORACLE 为 适 应 不 同 语 言 文 字 显 示 而 设 定 的 。 用 于 汉 字 显 示 的 字 符 集 主 要 有 ZHS16CGB231280、ZHS16GBK、US7ASCII 和 UTF-8 等。字符集同时存在于服务器端和客户端。 服 务 器 端 字 符 集 是 在 安 装 ORACLE 时 指 定 的 , 字 符 集 登 记 信 息 存 储 在 ORACLE 数 据 库 字 典 的 V$NLS_PARAMETERS 表中;而客户端字符集是在系统注册表(WINDOWS 系统)或在用户的环境变量 (UNIX 系统)中设定的。 3 字符集的构成与设定 字符集的构成与设定方式分为客户端与服务器端两种: (1)客户端字符集的构成与设定。客户端的字符集是由当前用户的环境变量 NLS_LANG 设定的。环境 变量 NLS_LANG 的构成: NLS_LANG=language_territory.charset 其中, language 指定服务器消息的语言 territory 指定服务器的日期和数字格式 charset 指定字符集 三个成分可以任意组合,例如: AMERICAN_AMERICA.US7SCII SIMPLIFIED CHINESE_CHINA.ZHS16GBK AMERICAN_AMERICA. ZHS16GBK 客户端字符集的设定方法针对不同操作系统设定方法稍有不同:WINDOWS 系统是在注册表项: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\NLS_LANG 中设定;UNIX 系统是在当前 用户的环境变量中设定,如在当前用户的 profile 文件中增加一行如下代码: NLS_LANG=SIMPLIFIED Chinese_CHINA.ZHS16GBK;export NLS_LANG (2)服务端字符集的构成与设定。服务端字符集的构成体现在数据字典表 V$NLS_PARAMETERS 的 NLS_LANGUAGE 、 NLS_TERRITORY 、 NLS_CHARACTERSET 三 项 取 值 上 , 其 中 NLS_CHARACTERSET 的 取 值 就 是 具 体 的 数 据 库 字 符 集 。 如 利 用 查 询 语 句 SQL>SELECT * FROM V$NLS_PARAMETERS; 可得到如下结果: PARAMETER VALUE -----------------------------------------------------------NLS_LANGUAGE SIMPLIFIED CHINESE NLS_TERRITORY CHINA …… NLS_CHARACTERSET ZHS16GBK …… 即当前数据库使用的字符集是 ZHS16GBK。 数据库服务端的字符集是在创建数据时设定的。但可通过如下方法对已设定的字符集进行修改: 方法一:重建数据库。建立数据库时将数据库的字符集设定为所需字符集。 方法二:修改 SYS.PROPS$表。即用 SYS 用户登陆 ORACLE 后,利用下面语句修改相应的字符集并 提交: SQL>UPDATE PROPS$ SET VALUE$=’ZHS16GBK‘ WHERE NAME=’NLS_CHARACTERSET’; SQL>COMMIT; 通过此种方法来更改数据库字符集,只对更改后的数据有效,即数据库中原来的数据仍以原字符集被存 储。 另外,有的还利用 CREATE DATABASE CHARACTER SET ZHS16GBK 命令暂时的修改字符集,当 重启数据库后,数据库字符集将恢复原来的字符集。 4 常见的汉字乱码问题及解决方案 要在客户端正确显示 ORACLE 数据库中的汉字信息,首先必须使客户端的字符集与服务器端的字符集 一致;其次是加载到 ORACLE 数据库的数据字符集必须与服务器字符集一致。据此,汉字显示乱码的问题 大致可以分为以下几种情况: (1)客户端字符集与服务器端字符集不同,服务器端字符集与加载数据字符集一致。这种情况是最常见 的,只要把客户端的字符集设置正确即可。具体解决方案: 第一步:查询 V$NLS_PARAMETERS 得到服务端的字符集: SQL>SELECT * FROM V$NLS_PARAMETERS; PARAMETER VALUE ----------------------------------------------------NLS_LANGUAGE SIMPLIFIED CHINESE NLS_TERRITORY CHINA …………………… NLS_CHARACTERSET ZHS16GBK

9

常见问题处理指南-数据库篇+v0.90

北京市天元网络技术股份有限公司

…………………… 第二步: 根据服务端的字符集设定客户端的字符集, 设定方法参见客户端的字符集的设定方式。 UNIX 以 系统为例,可在当前用户的 profile 文件中增加如下两行: NLS_LANG=SIMPLIFIED Chinese_CHINA.ZHS16GBK export NLS_LANG (2)客户端字符集与服务器端字符集相同,服务器端字符集与加载数据字符集不一致。这种情况一般发 生在 ORACLE 版本升级或重新安装数据库时选择了与原来数据库不同的字符集, 而恢复加载的备份数据仍 是按原字符集卸出的场合。另一种情况是加载从其它使用不同字符集的 ORACLE 数据库卸出的数据。在这 两种情况中,不管客户端字符集与服务器端字符集是否一致都无法正确显示汉字。具体解决方案: 方案一:按服务端字符集的修改方法修改服务端字符集与加载数据字符集一致,然后导入数据。 方案二:利用数据格式转储,避开字符集带来的问题。即先将加载数据倒入到与其字符集一致的数据库 中,然后再将数据要么按文本格式导出(数据量较小的情况下) 要么通过第三方工具(如 , POWER BUILDER,ACCESS,FOXPRO 等)倒出数据,最后将倒出的数据导入到目标数据库中。 (3)客户端字符集与服务器端字符集不同,服务端字符集与输入数据字符集不同。这种情况是在客户端 字符集与服务器端字符集不一致时,从客户端输入了汉字信息。输入的这些信息即便是把客户端字符集更 改正确,也无法显示汉字。解决方案:修改客户端字符集与服务端字符集一致后,重新输入数据。 5 结束语 根据 ORACLE 官方文档的说明,一旦数据库创建后,数据库的字符集是不能改变的。因此,提前考虑 自己的数据库将选用哪一种字符集是十分重要的。数据库字符集选择的一般规则是将数据库字符集设定为 操作系统本地字符集的一个超集,同时数据库字符集也应该是所有客户字符集的超集。如同样是中文环境, 在选择 ZHS16CGB231280 还是 ZHS16GBK 时,我们更多的情况是选择 ZHS16GBK,因为它包含了 ZHS16CGB231280 字符集。

3.1.7 处理临时表空间满或者过大的步骤
一、临时解决办法: 重启数据库,临时表空间的使用率将会自动清空 永久解决办法(针对数据文件是文件系统方式) : 1、创建临时表空间 2--temp2 create temporary tablespace TEMP2 TEMPFILE ‘绝对路径/temp02.dbf‘ SIZE 2000M; 2、将默认的临时表空间指向临时表空间 2 alter database default temporary tablespace temp2; 3、删除旧的临时表空间--temp drop tablespace temp including contents and datafiles; 4、重新创建临时表空间--temp create temporary tablespace TEMP TEMPFILE ‘绝对路径/temp.dbf‘ SIZE 5000M; 5、将默认临时表空间指回 alter database default temporary tablespace temp; 6、删除临时表空间 2--temp2 drop tablespace temp2 including contents and datafiles; 7、退出 SQL,df -k 检查文件系统使用情况 注意:新的临时表空间大小推荐 5G,可以根据实际情况进行调整。 二、如何监控临时表空间的使用: 1、通过以下 sql 可得到临时表空间增经最大使用情况: select d.tablespace_name,space "sum_space(m)",blocks sum_blocks,used_space "used_space(m)", round(nvl(used_space, 0) / space * 100, 2) "used_rate(%)",nvl(free_space, 0) "free_space(m)" from (select tablespace_name,round(sum(bytes) / (1024 * 1024), 2) space,sum(blocks) blocks from dba_temp_files group by tablespace_name) d, (select tablespace_name,round(sum(bytes_used) / (1024 * 1024), 2) used_space, round(sum(bytes_free) / (1024 * 1024), 2) free_space

10

常见问题处理指南-数据库篇+v0.90

北京市天元网络技术股份有限公司

from v$temp_space_header group by tablespace_name) f where d.tablespace_name = f.tablespace_name(+) 2、但这种情况并不能表示目前临时表空间的使用情况,比如某临时表空间已经使用了 100%,该操 作完毕后,临时表空间的 HWM 标志没有被回收,所以如果想知道当前的临时表空间使用,需要通过 v$sort_usgae 来确定(视图 v$sort_usage 显示 oracle 在如何使用和分配临时段的): select sum(blocks*8192)/1024/1024 from v$sort_usage; select v$sort_usage; username,session_addr,sqladdr,sqlhash,segtype,extents,blocks from

3、可以根据 session_addr 查询 v$session 得到当前登录用户的 session 信息, 可以通过 sqladdr 和 sqlhash 查询 v$sqltext 查询这条语句的详细信息,下面的语句可以比较好的监控正在使用的临时段的 信息 : select se.username ,se.sid ,su.extents ,su.blocks * to_number(rtrim(p.value)) as Space ,tablespace ,segtype ,sql_text from v$sort_usage su ,v$parameter p ,v$session se ,v$sql s where p.name = 'db_block_size' and su.session_addr = se.saddr and s.hash_value = su.sqlhash and s.address = su.sqladdr order by se.username, se.sid 4、通过查询 V$SORT_SEGMENT 来看 temp segment 是 free 还是 being used select TABLESPACE_NAME,TOTAL_BLOCKS,USED_BLOCKS,FREE_BLOCKS v$sort_segment; from

3.1.8 oracle 误删除数据的快速处理方法
1.查出和你删除数据时所对应的前一个 FIRST_CHANGE#(scn 号) select * from v$log_history; 2.构造临时表,将数据恢复到临时表中 create table 临时表 as select * from 删除表 where 1=0; insert into 临时表 select * from 删除表 as of scn scn 号 insert into 删除表 select * from 临时表

3.1.9 solaris 开机自动启动 oracle 数据库和监听
1、root 用户创建/etc/init.d/dbora 文件:文件内容为 #!/bin/sh ORA_HOME=oracle 的 home 目录 ORA_OWNER=oracle case "$1" in ‘start‘) # Start the Oracle databases and listener su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart" & su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" &

11

常见问题处理指南-数据库篇+v0.90

北京市天元网络技术股份有限公司

;; ‘stop‘) # Stop the Oracle databases and listener su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" & su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut" & ;; esac 2、做好软连接(S100 和 K100 数字可自己设定) ln -s /etc/init.d/dbora /etc/rc2.d/S100oracle ln -s /etc/init.d/dbora /etc/rc0.d/K100oracle 3、修改/var/opt/oracle/oratab 中"N"为"Y",允许 oracle 自动启动。 如何提高大表 大表的性能 3.1.10 如何提高大表的性能 原因分析: 1、数据量太大,需要备份删除部分数据 2、建表时索引没设计好,或索引丢失 解决方案: 1、检查是否使用了正确的索引 A、与开发确认:设计该表时,所用的主键是那个字段,唯一索引是哪些字段,非唯一索引是哪些字 段。也可以跟其它项目组的此表做下索引比较来确定,前提是比较的此表结构和涉及的应用应该一样 B、查出没有建的或当初设计有误的索引字段后,可灵活运用下面的语句来创建: 删除主键 例: SQL>alter table 表名 drop primary key; 删除(非)唯一索引 例: SQL> drop index idx_bb; 创建主键 例: SQL>alter table 表名 add primary key(ne_id,port_id,start_time,stop_time); 创建唯一索引 例: SQL>create unique index index_name on 表 名 (ne_id, start_time, stop_time) tablespace rperfdbs; 创建非唯一索引 例:create index index_name on 表名(a is not null,b); 2、重建此表的索引: A、查询某表所有索引及每个索引使用的字段 SQL>select index_name,column_name from user_ind_columns where table_name =‘alarminfo‘ order by index_name; B、alter index 索引名称(index_name) rebuild; 说明:1 和 2 都是关于索引的操作,如果此表一直在使用,不能进行创建、重建等操作,需要停掉所 有与该表有关的应用; 做此操作请先跟项目组确认是否能停应用, 否则会提示: ora-00054 资源正忙, 要求指定 NOWAIT 错误,不停应用的情况不要实施,否则有可能会导致故障发生。 3、对这个表进行分析,分析后性能可能会有所提高,语句为: analyze table alarminfo estimate statistics; 清楚表分析数据: 查询是否对表做过分析 select * from user_tables where num_rows is not null 删除统计数据(delete statistics) ,也就把上面查询出来的表的统计信息删除 analyze table ALARMINFO ; analyze table channel delete statistics; ... 如果不再分析的话,优化器就选择 RBO,不选择 CBO 4、如果此表数据量比较大,alarminfo 表只保存两到三个月的数据就行了,前面月份的可以建临时 表来存放,如 08 年 1 月的就建个 alarminfo0801 表来存放,然后就从 alarminfo 表中删除 1 月份 的数据,这样性能也会提高。

12

常见问题处理指南-数据库篇+v0.90 3.1.11 oracle 数据库 imp 导入过慢的处理

北京市天元网络技术股份有限公司

数据库导入过慢,可以由如下步骤和方面进行分析解决: 1、使用 top 查看当前导入源和导入目的机器的系统资源使用情况,看看是否 CPU 占用率太高,可用内存 和 Swap 空间太小,或者使用 vmstat 查看磁盘的负荷是否很大?这些因素都有可能从系统的层面造成导 入速度的瓶颈; 2、导出确认系统正常,资源充分后,就要检查 Oracle 的一些相关参数配置了。 首先确认所使用的 dmp 文件是正常无警告并可用的;源库和目的库的字符集都要一致;其次导入导出遵 循的基本原则就是使用低版本(包括大版本,也包括小版本)的导入导出工具进行操作;如果能将数据库 的归档关闭, 也可以使速度得到提升; 目的库的表空间 (包括导入涉及到的用户表空间、 临时表空间和 undo 表空间)是否够用。 3、导入语句也很重要。buffer 给大一些,ignore=y buffer=40960000, 一秒至少应该是 10w 记录; 先导表结构,再导数据(在源库中创建新的表空间和用户即可,没必要为用户创建表和各种约束条件、索 引等等) ;必要的时候,加上 commit=y 参数(在回滚段够大的情况下,不用加 commit=y 参数,频繁 提交会影响效率) ;如果是按用户导入,前后用户名不相同,那么注意要限制用户对表空间的使用配额;最 后加入 feedback 选项, 可以以一个点一个点的显示插入的行数, 可以看出来是不是死了或者是不是很慢。

3.1.12 归档日志操作 1、 2、 3.1.13 Rman 的恢复目录创建 校验归档日志:crosscheck arhivelog all;(一般手工删除归档日志后要做一 次校验)

Oracle 自带的例子参考$ORACLE_HOME/rdbms/demo 目录下的*.rcv 脚本。 一、RMAN 简介 RMAN 可以用来备份和恢复数据库文件、归档日志和控制文件,也可以用来 执行完全或不完全的数据库恢复。RMAN 有三种不同的用户接口:COMMAND LINE 方式、GUI 方式(集成在 OEM 中的备份管理器)、API 方式(用于集成到第三 方的备份软件中)。具有如下特点: 1)功能类似物理备份,但比物理备份强大 N 倍,从下面的特点可以看到; 2)可以压缩空块; 3)可以在块水平上实现增量; 4)可以把备份的输出打包成备份集,也可以按固定大小分割备份集; 5)备份与恢复的过程可以自动管理; 6)可以使用脚本(存在 Recovery catalog 中) 7)可以做坏块监测 二、相关术语解释 1)Backup sets 备份集 备份集顾名思义就是一次备份的集合,它包含本次备份的所有备份片,以 oracle 专有的格式保存。一个备份集根据备份的类型不同,可能构成一个完全 备份或增量备份。 2)Backup pieces 备份片 一个备份集由若干个备份片组成。每个备份片是一个单独的输出文件。一个 备份片的大小是有限制的;如果没有大小的限制, 备份集就只由一个备份片构 成。备份片的大小不能大于你的文件系统所支持的文件长度的最大值。 3)Image copies 映像备份 映像备份不压缩、不打包、直接 COPY 独立文件(数据文件、归档日志、控
13

常见问题处理指南-数据库篇+v0.90

北京市天元网络技术股份有限公司

制文件),类似操作系统级的文件备份。而且只能 COPY 到磁盘,不能到磁带。 可以作为增量备份的 0 级,一般用来备份控制文件。 4)Full backup 全备份 全备份是指对数据文件中使用过的数据块进行备份, 没有使用过的数据块是 不做备份的,也就是说,RMAN 进行备份是进行压缩的。 5)Incremental backup 增量备份 增量备份是指备份数据文件中自从上一次同一级别的或更低级别的备份以 来被修改过的数据块。与完全备份相同,增量备份也进行压缩。增量备份虽然概 念很好,备份也很简单,但恢复起来却是另外一回事,不仅麻烦而且容易出错, 所以实际中越来越少使用,到了 Oracle 9i 已经建议不再使用,以后版本会逐渐 取消对增量备份的支持。 6)Recovery catalog 恢复目录 恢复目录用于记录 RMAN 使用过程中的控制信息,恢复目录应该经常被同步 (这在后面会讲到)。尽管我们可以使用 nocatalog 方式来使用 RMAN,此时控 制信息记录在目标数据库的控制文件中,但这样毕竟不安全,因为一旦目标数据 库的控制文件损坏就意味着所有的 RMAN 备份失效。同样的道理恢复目录应该建 立在另外一个数据库中,在下面的例子中我们称作“目录数据库”。 三、创建恢复目录 1、在目录数据库中创建恢复目录所用表空间 SQL> create tablespace rmants datafile 'c:\oracle\product\10.2.0\oradata\site1\rmants.ora' size 20M ; 表空间已创建。 2、在目录数据库中创建 RMAN 用户并授权 SQL> create user rman identified by rman default tablespace rmants temporary tablespace temp quota unlimited on rmants; 用户已创建 SQL> grant recovery_catalog_owner to rman ; SQL> grant connect,resource to rman ; 授权成功。 3、在目录数据库中创建恢复目录 C:\>rman catalog rman/rman 恢复管理器:版本 8.1.7.0.0 - Production RMAN-06008:连接到恢复目录数据库 RMAN-06428:未安装恢复目录 RMAN>create catalog tablespace rmants; RMAN-06431:恢复目录已创建 4、注册目标数据库到恢复目录 注意哦,这里我的目标数据库使用的服务名称是 site1,意思为要使用 RMAN 进行备份的数据库 C:\>rman target sys/river@site1
14

常见问题处理指南-数据库篇+v0.90

北京市天元网络技术股份有限公司

恢复管理器: Release 10.2.0.1.0 - Production on 星期三 3 月 29 10:05:30 2006 Copyright (c) 1982, 2005, Oracle. All rights reserved. 连接到目标数据库: SITE1 (DBID=1922429480) RMAN> connect catalog rman/rman@site1 连接到恢复目录数据库 RMAN> register database; 注册在恢复目录中的数据库 正在启动全部恢复目录的 resync 完成全部 resync

安装时内核设置要点 3.1.14 安装时内核设置要点 1、 solaris: a.内存与 SWAP 大小设置关系

RAM Between 1024 MB and 2048 MB Between 2049 MB and 8192 MB More than 8192 MB
b.

Swap Space 1.5 times the size of RAM Equal to the size of RAM 0.75 times the size of RAM

Parameter(solaris10 以 Replaced by Resource Control(solaris10) ( ) 下用) noexec_user_stack NA

Recommended Value 1 100 256

semsys:seminfo_semmni project.max-sem-ids semsys:seminfo_semmsl

process.max-sem-nsems

shmsys:shminfo_shmmax project.max-shm-memory 4294967295 shmsys:shminfo_shmmni project.max-shm-ids
2、 AIX a.shell 限制

100

Shell Limit (As Shown in smit) Soft FILE size Soft CPU time Soft DATA segment Soft STACK size
Enter the following command: # smit chuser

Recommended Value -1 (Unlimited) -1 (Unlimited) -1 (Unlimited) -1 (Unlimited)

To view the current value specified for these shell limits, and to change them if necessary:

15

常见问题处理指南-数据库篇+v0.90

北京市天元网络技术股份有限公司

In the User NAME field, enter the user name of the Oracle software owner, for example oracle. Scroll down the list and verify that the value shown for the soft limits listed in the previous table is -1. If necessary, edit the existing value. When you have finished making changes, press F10 to exit.

b. Configure System Configuration Parameters
Enter the following command: # smit chgsys Verify that the value shown for Maximum number of PROCESSES allowed per user is greater than or equal to 2048. If necessary, edit the existing value. When you have finished making changes, press F10 to exit.

3.1.15 添加主机 IP 3.1.16 添加主机 IP 3.1.17 添加主机 IP 3.1.18 添加主机 IP

16


相关文章:
Oracle 存储双活配置指南
Oracle 存储双活配置指南_计算机软件及应用_IT/...Oracle 服务,没有考虑到这个共享存储的故障问题。而...它的使用环境做了扩展,提出了 跨数据中心的解决方案...
Oracle数据库部署指南
密级:公开 Oracle 数据库 操作指南 1 声明 公司对...启用“一般用途或事务处理”选项,单击“下一步”...上面可能有点问题,因为有的表已经存在,然后它就报...
Oracle数据库安装及运维工作指南
Oracle 数据库安装及运维工作指南 金蝶软件(中国)有限公司 K3 CLOUD 基础系统部 2017-04-10 张华福 本文主要强调 ORACLE 数据库服务器环境的安装软件及版本,以及...
AnyBackup 6.0 Oracle单机备份恢复指南
AnyBackup 6.0 Oracle单机备份恢复指南_计算机软件及应用_IT/计算机_专业资料。...恢复参数文件,无需指定数据库的状态; 恢复参数文件后的处理: 1、查看数据库是...
Oracle企业管理器使用指南
Oracle企业管理器使用指南,很多人都不用,但是很好用,能解决很多问题 ...(服务器) 、数据库、侦听程序(listener)以及其他安装在这些结点上的 Oracle ...
金蝶云星空K3 Cloud V7.2_Oracle数据库安装及运维...
以确保数据库以比较健壮的状态投入生产, 尽量避免已知的问题影响生产库的运营。 ...解决方法如下演示(文档 ID 1378747.1) : [oracle@rac11 /backup/soft/opatch...
oracle数据泵批量备份操作指南
oracle数据泵批量备份操作指南_计算机软件及应用_IT/计算机_专业资料。一、oracle 数据自动备份数据泵,e:\vob\dbbak 指的是文件存储路径,可以修改;expdp 后的 avic...
Oracle_APEX开发指南
Oracle_APEX开发指南_计算机软件及应用_IT/计算机_专业资料。Oracle ERP APEX开发...对于客户浏览器发送的URL请求解析成pl/sql调用,数据处理 pl/sql调用,并将...
Oracle之APEX深入开发指南
Oracle之APEX深入开发指南_计算机软件及应用_IT/计算机_专业资料。内容概括全面,...对于客户浏览器发送URL请求解析成pl/sql调用,数据处理 pl/sql调用,并将...
oracle健康检查巡检指南
oracle健康检查巡检指南_计算机软件及应用_IT/计算机_...为了防止例程故障, 每个数据库的例程都有相关 的...解决碎片的唯一方法就是删除并 且重新创建对象。在...
更多相关标签: