文档库 最新最全的文档下载
当前位置:文档库 › oracle常见问题

oracle常见问题

oracle常见问题
oracle常见问题

大家在应用oracle的时候可能会遇到很多看起来不难的问题, 特别对新手来说, 今天我简单把它总结一下, 发布给大家, 希望对大家有帮助! 和大家一起探讨, 共同进步!

对oracle高手来说是不用看的.

1. oracle安装完成后的初始口令?

internal/oracle

sys/change_on_install

system/manager

scott/tiger

sysman/oem_temp

2. oracle9ias web cache的初始默认用户和密码?

administrator/administrator

3. oracle 8.0.5怎幺创建数据库?

用orainst。如果有motif界面,可以用orainst /m

4. oracle 8.1.7怎幺创建数据库?

dbassist

5. oracle 9i 怎幺创建数据库?

dbca

6. oracle中的裸设备指的是什幺?

裸设备就是绕过文件系统直接访问的储存空间

7. oracle如何区分64-bit/32bit 版本???

$ sqlplus / as sysdba

sql*plus: release 9.0.1.0.0 - production on mon jul 14 17:01:09 2003

(c) copyright 2001 oracle corporation. all rights reserved.

connected to:

oracle9i enterprise edition release 9.0.1.0.0 - production

with the partitioning option

jserver release 9.0.1.0.0 - production

sql> select * from v$version;

banner

----------------------------------------------------------------

oracle9i enterprise edition release 9.0.1.0.0 - production

pl/sql release 9.0.1.0.0 - production

core 9.0.1.0.0 production

tns for solaris: version 9.0.1.0.0 - production

nlsrtl version 9.0.1.0.0 - production

sql>

8. svrmgr什幺意思?

svrmgrl,server manager.

9i下没有,已经改为用sqlplus了

sqlplus /nolog

变为归档日志型的

9. 请问如何分辨某个用户是从哪台机器登陆oracle的? select machine , terminal from v$session;

10. 用什幺语句查询字段呢?

desc table_name 可以查询表的结构

select field_name,... from ... 可以查询字段的值

select * from all_tables where table_name like %

select * from all_tab_columns where table_name=?? 11. 怎样得到触发器、过程、函数的创建脚本?

desc user_source

user_triggers

12. 怎样计算一个表占用的空间的大小?

select owner,table_name,

num_rows,

blocks*aaa/1024/1024 "size m",

empty_blocks,

last_analyzed

from dba_tables

where table_name=xxx;

here: aaa is the value of db_block_size ;

xxx is the table name you want to check

13. 如何查看最大会话数?

select * from v$parameter where name like proc%; sql>

sql> show parameter processes

name type value

------------------------------------ ------- ------------------------------ aq_tm_processes integer 1

db_writer_processes integer 1

job_queue_processes integer 4

log_archive_max_processes integer 1

processes integer 200

这里为200个用户。

select * from v$license;

其中sessions_highwater纪录曾经到达的最大会话数

14. 如何查看系统被锁的事务时间?

select * from v$locked_object ;

15. 如何以archivelog的方式运行oracle。

init.ora

log_archive_start = true

restart database

16. 怎幺获取有哪些用户在使用数据库

select username from v$session;

17. 数据表中的字段最大数是多少?

表或视图中的最大列数为1000

18. 怎样查得数据库的sid ?

select name from v$database;

也可以直接查看init.ora文件

19. 如何在oracle服务器上通过sqlplus查看本机ip地址?

select sys_context(userenv,ip_address) from dual;

如果是登陆本机数据库,只能返回127.0.0.1,呵呵

20. unix 下怎幺调整数据库的时间?

su -root

date -u 08010000

21. 在oracle table中如何抓取memo类型字段为空的资料记录?

select remark from oms_flowrec where trim( from remark) is not null ;

22. 如何用bbb表的资料去更新aaa表的资料(有关联的字段)

update aaa set bns_snm=(select bns_snm from bbb where aaa.dpt_no=bbb.dpt_no) where bbb.dpt_no is not null;

23. p4计算机安装方法

将symcjit.dll改为sysmcjit.old

24. 何查询server是不是ops?

select *from v$option;

如果parallel server=true则有ops能

25. 何查询每个用户的权限?

select *from dba_sys_privs;

26. 如何将表移动表空间?

alter table table_name move tablespace_name;

27. 如何将索引移动表空间?

alter index index_name rebuild tablespace tablespace_name;

28. 在linux,unix下如何激活dba studio?

oemapp dbastudio

29. 查询锁的状况的对象有?

v$lock,v$locked_object,v$session,v$sqlarea,v$process ;

查询锁的表的方法:

select s.sid session_id, https://www.wendangku.net/doc/651414435.html,ername, decode(lmode, 0, none, 1, null, 2, row-s (ss), 3, row-x (sx), 4, share, 5, s/row-x (ssx), 6, exclusive, to_char(lmode)) mode_held, decode(request, 0, none, 1, null, 2, row-s (ss), 3, row-x (sx), 4, share, 5, s/row-x (ssx), 6, exclusive, to_char(request)) mode_requested, o.owner||.||o.object_name|| (||o.object_type||), s.type lock_type, l.id1 lock_id1, l.id2 lock_id2 from v$lock l, sys.dba_objects o, v$session s where l.sid = s.sid and l.id1 = o.object_id ;

30. 如何解锁?

alter system kill session…sid,serir#?;

31. sqlplus下如何修改编辑器?

define _editor="<编辑器的完整路经>"-- 必须加上双引号

来定义新的编辑器,也可以把这个写在$oracle_home/sqlplus/admin/glogin.sql 里面使它永久有效。

32. oracle产生随机函数是?

dbms_random.random

33. linux下查询磁盘竞争状况命令?

sar-d

33. linux下查询cpu竞争状况命令?

sar-r

34. 查询当前用户对象?

select *from user_objects;

select *from dba_segments;

35. 如何获取错误信息?

select *from user_errors;

36. 如何获取链接状况?

select * from dba_db_links;

37. 查看数据库字符状况?

select *from nls_database_parameters;

select *from v$nls_parameters;

38. 查询表空间信息?

select *from dba_data_files;

39. oracle的interal用户要口令?

修改sqlnet.ora

sqlnet.authentication_services=(nts)

40. 出现java.exe的解决办法?

一般是将oracleorahomexihttpserver改成手工激活可以的

x是8或9

41. 如何给表、列加注释?

sql>comment on table 表is 表注释;

注释已创建。

sql>comment on column 表.列is 列注释;

注释已创建。

sql> select * from user_tab_comments where comments is not null;

42. 如何查看各个表空间占用磁盘情况?

sql> col tablespace format a20

sql> select b.file_id 文件id号, b.tablespace_name 表空间名,

b.bytes

字节数,

(b.bytes-sum(nvl(a.bytes,0)))

已使用,

sum(nvl(a.bytes,0))

剩余空间,

sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比

from dba_free_space a,dba_data_files b

where a.file_id=b.file_id

group by b.tablespace_name,b.file_id,b.bytes

order by b.file_id

43. 如把oracle设置为mts或专用模式?

#dispatchers="(protocol=tcp) (service=sidxdb)"

加上就是mts,注释就是专用模式,sid是指你的实例名。

44. 如何才能得知系统当前的scn号?

select max(ktuxescnw * power(2, 32) + ktuxescnb) from x$ktuxe;

45. 请问如何在oracle中取毫秒?

9i之前不支持,9i开始有timestamp.

9i可以用select systimestamp from dual;

46. 如何在字符串里加回车?

select welcome to visit||chr(10)||https://www.wendangku.net/doc/651414435.html, from dual ;

47. 中文是如何排序的?

oracle9i之前,中文是按照二进制编码进行排序的。

在oracle9i中新增了按照拼音、部首、笔画排序功能。设置nls_sort值

schinese_radical_m 按照部首(第一顺序)、笔划(第二顺序)排序

schinese_stroke_m 按照笔划(第一顺序)、部首(第二顺序)排序

schinese_pinyin_m 按照拼音排序

48.oracle8i中对象名可以用中文吗?

可以

49. 如何改变win中sql*plus启动选项?

sql*plus自身的选项设置我们可以在$oracle_home/sqlplus/admin/glogin.sql中设置。

50. 怎样修改oracel数据库的默认日期?

alter session set nls_date_format=yyyymmddhh24miss;

or

可以在init.ora中加上一行

nls_date_format=yyyymmddhh24miss

51. 如何将小表放入keep池中?

alter table xxx storage(buffer_pool keep);

52. 如何检查是否安装了某个patch?

check that orainventory

53. 如何使select语句使查询结果自动生成序号?

select rownum,col from table;

54. 如何知道数据裤中某个表所在的tablespace?

select tablespace_name from user_tables where table_name=test;

select * from user_tables中有个字段tablespace_name,(oracle);

select * from dba_segments where …;

55. 怎幺可以快速做一个和原表一样的备份表?

create table new_table as (select * from old_table);

55. 怎幺在sqlplus下修改procedure?

select line,trim(text) t from user_source where name =?a? order by line;

56. 怎样解除procedure被意外锁定?

alter system kill session ,把那个session给杀掉,不过你要先查出她的session id

or

把该过程重新改个名字就可以了。

57. sql reference是个什幺东西?

是一本sql的使用手册,包括语法、函数等等,oracle官方网站的文档中心有下载.

58. 如何查看数据库的状态?

unix下

ps -ef | grep ora

windows下

看服务是否起来

是否可以连上数据库

59. 请问如何修改一张表的主键?

alter table aaa

drop constraint aaa_key ;

alter table aaa

add constraint aaa_key primary key(a1,b1) ;

60. 改变数据文件的大小?

用alter database .... datafile .... ;

手工改变数据文件的大小,对于原来的数据文件有没有损害。

61. 怎样查看oracle中有哪些程序在运行之中?

查看v$sessions表

62. 怎幺可以看到数据库有多少个tablespace?

select*from dba_tablespaces;

63. 如何修改oracle数据库的用户连接数?

修改initsid.ora,将process加大,重启数据库.

64. 如何查出一条记录的最后更新时间?

可以用logminer 察看

65. 如何在pl/sql中读写文件?

utl_file包允许用户通过pl/sql读写操作系统文件。

66. 怎样把“&”放入一条记录中?

insert into a values (translate (at{&}t,at{},at));

67. exp如何加query参数?

exp user/pass file=a.dmp tables(bsempms)

query="where emp_no=\s09394\\" ﹔

68. 关于oracle8i支持简体和繁体的字符集问题?

zhs16gbk可以支

69. data guard是什幺软件?

就是standby的换代产品

70. 如何创建spfile?

sql> connect / as sysdba

sql> select * from v$version;

sql> create pfile from spfile;

sql> create spfile from pfile=e:\ora9i\admin\eygle\pfile\init.ora;

文件已创建。

sql> create spfile=e:\ora9i\database pfileeygle.ora from pfile=e:\ora9i\admin\eygle\pfile\init.ora;

文件已创建。

71. 内核参数的应用?

shmmax

含义:这个设置并不决定究竟oracle数据库或者操作系统使用多少物理内存,只决定了最多可以使用的内存数目。这个设置也不影响操作系统的内核资源。

设置方法:0.5*物理内存

例子:set shmsys:shminfo_shmmax=10485760

shmmin

含义:共享内存的最小大小。

设置方法:一般都设置成为1。

例子:set shmsys:shminfo_shmmin=1:

shmmni

含义:系统中共享内存段的最大个数。

例子:set shmsys:shminfo_shmmni=100

shmseg

含义:每个用户进程可以使用的最多的共享内存段的数目。

例子:set shmsys:shminfo_shmseg=20:

semmni

含义:系统中semaphore identifierer的最大个数。

设置方法:把这个变量的值设置为这个系统上的所有oracle的实例的init.ora 中的最大的那个processes的那个值加10。

例子:set semsys:seminfo_semmni=100

semmns

含义:系统中emaphores的最大个数。

设置方法:这个值可以通过以下方式计算得到:各个oracle实例的initsid.ora 里边的processes的值的总和(除去最大的processes参数)+最大的那个processes×2+10×oracle实例的个数。

例子:set semsys:seminfo_semmns=200

semmsl:

含义:一个set中semaphore的最大个数。

设置方法:设置成为10+所有oracle实例的initsid.ora中最大的processes 的值。

例子:set semsys:seminfo_semmsl=-200

72. 怎样查看哪些用户拥有sysdba、sysoper权限?

sql>conn sys/change_on_install

sql>select * from v_$pwfile_users;

73. 如何单独备份一个或多个表?

exp 用户/密码tables=(表1,…,表2)

74. 如何单独备份一个或多个用户?

exp system/manager owner=(用户1,用户2,…,用户n) file=导出文件

75. 如何对clob字段进行全文检索?

select * from a where dbms_lob.instr(a.a,k,1,1)>0;

76. 如何显示当前连接用户?

show user

77. 如何查看数据文件放置的路径?

col file_name format a50

sql> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;

78. 如何查看现有回滚段及其状态?

sql> col segment format a30

sql> select segment_name,owner,tablespace_name,segment_id,file_id,status from dba_rollback_segs

79. 如何改变一个字段初始定义的check范围?

sql> alter table xxx drop constraint constraint_name;

之后再创建新约束:

sql> alter table xxx add constraint constraint_name check();

80. oracle常用系统文件有哪些?

通过以下视图显示这些文件信息:v$database,v$datafile,v$logfile v$controlfile v$parameter;

81. 内连接inner join?

select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no;

82. 如何外连接?

select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no(+);

select a.* from bsempms a,bsdptms b wherea.dpt_no(+)=b.dpt_no;

83. 如何执行脚本sql文件?

sql>@$path/filename.sql;

84. 如何快速清空一个大表?

sql>truncate table table_name;

85. 如何查有多少个数据库实例?

sql>select * from v$instance;

86. 如何查询数据库有多少表?

sql>select * from all_tables;

87. 如何测试sql语句执行所用的时间?

sql>set timing on ;

sql>select * from tablename;

88. chr()的反函数是?

ascii()

select char(65) from dual;

select ascii(a) from dual;

89. 字符串的连接

select concat(col1,col2) from table ;

select col1||col2 from table ;

90. 怎幺把select出来的结果导到一个文本文件中?

sql>spool c:\abcd.txt;

sql>select *from table;

sql >spool off;

91. 怎样估算sql执行的i/o数?

sql>set autotrace on ;

sql>select * from table;

or

sql>select *from v$filestat ;

可以查看io数

92. 如何在sqlplus下改变字段大小?

alter table table_name modify (field_name varchar2(100));

改大行,改小不行(除非都是空的)

93. 如何查询某天的数据?

select * from table_name where trunc(日期字段)=to_date(2003-05-02,yyyy-mm-dd);

94. sql 语句如何插入全年日期?

create table bsyear (d date);

insert into bsyear

select to_date(20030101,yyyymmdd)+rownum-1

from all_objects

where rownum <= to_char(to_date(20031231,yyyymmdd),ddd);

95. 如果修改表名?

alter table old_table_name rename to new_table_name;

96. 如何取得命令的返回状态值?

sqlcode=0

97. 如何知道用户拥有的权限?

select * from dba_sys_privs ;

98. 从网上下载的oracle9i与市场上卖的标准版有什幺区别?

从功能上说没有区别,只不过oracle公司有明文规定;从网站上下载的oracle 产品不得用于商业用途,否则侵权。

99. 怎样判断数据库是运行在归档模式下还是运行在非归档模式下?

进入dbastudio,历程--〉数据库---〉归档查看。

100. sql>startup pfile和ifile,spfiled有什幺区别?

pfile就是oracle传统的初始化参数文件,文本格式的。

ifile类似于c语言里的include,用于把另一个文件引入

spfile是9i里新增的并且是默认的参数文件,二进制格式

startup后应该只可接pfile

101. 如何搜索出前n条记录?

select * from employee where rownum < n

order by empno;

102. 如何知道机器上的oracle支持多少并发用户数?

sql>conn internal;

sql>show parameter processes ;

103. db_block_size可以修改吗?

一般不可以﹐不建议这样做的。

104. 如何统计两个表的记录总数?

select (select count(id) from aa)+(select count(id) from bb) 总数from dual;

105. 怎样用sql语句实现查找一列中第n大值?

select * from

(select t.*,dense_rank() over (order by sal) rank from employee)

where rank = n;

106. 如何在给现有的日期加上2年?(

select add_months(sysdate,24) from dual;

107. used_ublk为负值表示什幺意思?

it is "harmless".

108. connect string是指什幺?

应该是tnsnames.ora中的服务名后面的内容

109. 怎样扩大redo log的大小?

建立一个临时的redolog组,然后切换日志,删除以前的日志,建立新的日志。

110. tablespace 是否不能大于4g?

没有限制.

111. 返回大于等于n的最小整数值?

select ceil(n)from dual;

112. 返回小于等于n的最小整数值?

select floor(n)from dual;

113. 返回当前月的最后一天?

select last_day(sysdate)from dual;

114. 如何不同用户间数据导入?

imp system/manager file=aa.dmp fromuser=user_old touser=user_new rows=y indexes=y ;

115. 如何找数据库表的主键字段的名称?

sql>select * from user_constraints where constraint_type=p and table_name=table_name;

116. 两个结果集互加的函数?

sql>select * from bsempms_old intersect select * from bsempms_new; sql>select * from bsempms_old union select * from bsempms_new;

sql>select * from bsempms_old union all select * from bsempms_new; 117. 两个结果集互减的函数?

sql>select * from bsempms_old minus select * from bsempms_new;

118. 如何配置sequence?

建sequence seq_custid

create sequence seq_custid start 1 incrememt by 1;

建表时:

create table cust

{ cust_id smallint not null,

...}

insert 时:

insert into table cust

values( seq_cust.nextval, ...)

日期的各部分的常用的的写法

119>.取时间点的年份的写法:

select to_char(sysdate,yyyy) from dual;

120>.取时间点的月份的写法:

select to_char(sysdate,mm) from dual;

121>.取时间点的日的写法:

select to_char(sysdate,dd) from dual;

122>.取时间点的时的写法:

select to_char(sysdate,hh24) from dual;

123>.取时间点的分的写法:

select to_char(sysdate,mi) from dual;

124>.取时间点的秒的写法:

select to_char(sysdate,ss) from dual;

125>.取时间点的日期的写法:

select trunc(sysdate) from dual;

126>.取时间点的时间的写法:

select to_char(sysdate,hh24:mi:ss) from dual; 127>.日期,时间形态变为字符形态

select to_char(sysdate) from dual;

128>.将字符串转换成日期或时间形态:

select to_date(2003/08/01) from dual;

129>.返回参数的星期几的写法:

select to_char(sysdate,d) from dual;

130>.返回参数一年中的第几天的写法:

select to_char(sysdate,ddd) from dual;

131>.返回午夜和参数中指定的时间值之间的秒数的写法: select to_char(sysdate,sssss) from dual;

132>.返回参数中一年的第几周的写法:

select to_char(sysdate,ww) from dual;

虚拟字段

133. currval 和nextval

为表创建序列

create sequence empseq ... ;

select empseq.currval from dual ;

自动插入序列的数值

insert into emp

values (empseq.nextval, lewis, clerk,

7902, sysdate, 1200, null, 20) ;

134. rownum

按设定排序的行的序号

select * from emp where rownum < 10 ;

135. rowid

返回行的物理地址

select rowid, ename from emp where deptno = 20 ;

136. 将n秒转换为时分秒格式?

set serverout on

declare

n number := 1000000;

ret varchar2(100);

begin

ret := trunc(n/3600) || 小时|| to_char(to_date(mod(n,3600),sssss),fmmi"分"ss"秒") ;

dbms_output.put_line(ret);

end;

137. 如何查询做比较大的排序的进程?

select b.tablespace, b.segfile#, b.segblk#, b.blocks, a.sid, a.serial#,

https://www.wendangku.net/doc/651414435.html,ername, a.osuser, a.status

from v$session a,v$sort_usage b

where a.saddr = b.session_addr

order by b.tablespace, b.segfile#, b.segblk#, b.blocks ;

138. 如何查询做比较大的排序的进程的sql语句?

select /*+ ordered */ sql_text from v$sqltext a

where a.hash_value = (

select sql_hash_value from v$session b

where b.sid = &sid and b.serial# = &serial)

order by piece asc ;

139. 如何查找重复记录?

select * from table_name

where rowid!=(select max(rowid) from table_name d

where table_name.col1=d.col1 and table_name.col2=d.col2);

140. 如何删除重复记录?

delete from table_name

where rowid!=(select max(rowid) from table_name d

where table_name.col1=d.col1 and table_name.col2=d.col2);

141. 如何快速编译所有视图?

sql >spool view1.sql

sql >select …alter view …||tname||?

compile;? from tab;

sql >spool off

然后执行view1.sql即可。

sql >@view1.sql;

142. ora-01555 snapshot too old的解决办法

增加minextents的值,增加区的大小,设置一个高的optimal值。

143. 事务要求的回滚段空间不够,表现为表空间用满(ora-01560错误),回滚段扩展到达参数maxextents的值(ora-01628)的解决办法.

向回滚段表空间添加文件或使已有的文件变大;增加maxextents的值。144. 如何加密oracle的存储过程?

下列存储过程内容放在aa.sql文件中

create or replace procedure testccb(i in number) as

begin

dbms_output.put_line(输入参数是||to_char(i));

end;

sql>wrap iname=a.sql;

pl/sql wrapper: release 8.1.7.0.0 - production on tue nov 27 22:26:48 2001 copyright (c) oracle corporation 1993, 2000.all rights reserved.

processing aa.sql to aa.plb

运行aa.plb

sql> @aa.plb ;

145. 如何监控事例的等待?

select event,sum(decode(wait_time,0,0,1)) "prev",

sum(decode(wait_time,0,1,0)) "curr",count(*) "tot"

from v$session_wait

group by event order by 4;

146. 如何回滚段的争用情况?

select name, waits, gets, waits/gets "ratio"

from v$rollstat c, v$rollname d

where https://www.wendangku.net/doc/651414435.html,n = https://www.wendangku.net/doc/651414435.html,n;

147. 如何监控表空间的i/o 比例?

select b.tablespace_name name,b.file_name "file",a.phyrds pyr,

a.phyblkrd pbr,a.phywrts pyw, a.phyblkwrt pbw

from v$filestat a, dba_data_files b

where a.file# = b.file_id

order by b.tablespace_name;

148. 如何监控文件系统的i/o 比例?

select substr(c.file#,1,2) "#", substr(https://www.wendangku.net/doc/651414435.html,,1,30) "name",

c.status, c.bytes,

d.phyrds, d.phywrts

from v$datafile c, v$filestat d

where c.file# = d.file#;

149. 如何在某个用户下找所有的索引?

select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name

from user_ind_columns, user_indexes

where user_ind_columns.index_name = user_indexes.index_name

and user_ind_columns.table_name = user_indexes.table_name

order by user_indexes.table_type, user_indexes.table_name,

user_indexes.index_name, column_position;

150. 如何监控sga 的命中率?

select a.value + b.value "logical_reads", c.value "phys_reads",

round(100 * ((a.value+b.value)-c.value) / (a.value+b.value)) "buffer hit ratio"

from v$sysstat a, v$sysstat b, v$sysstat c

where a.statistic# = 38 and b.statistic# = 39

and c.statistic# = 40;

151. 如何监控sga 中字典缓冲区的命中率?

select parameter, gets,getmisses , getmisses/(gets+getmisses)*100 "miss ratio",

(1-(sum(getmisses)/ (sum(gets)+sum(getmisses))))*100 "hit ratio"

from v$rowcache

where gets+getmisses <>0

group by parameter, gets, getmisses;

152. 如何监控sga 中共享缓存区的命中率,应该小于1% ?

select sum(pins) "total pins", sum(reloads) "total reloads",

sum(reloads)/sum(pins) *100 libcache

from v$librarycache;

select sum(pinhits-reloads)/sum(pins) "hit radio",sum(reloads)/sum(pins) "reload percent"

from v$librarycache;

153. 如何显示所有数据库对象的类别和大小?

select count(name) num_instances ,type ,sum(source_size) source_size , sum(parsed_size) parsed_size ,sum(code_size) code_size ,sum(error_size) error_size,

sum(source_size) +sum(parsed_size) +sum(code_size) +sum(error_size) size_required

from dba_object_size

group by type order by 2;

154. 监控sga 中重做日志缓存区的命中率,应该小于1%

select name, gets, misses, immediate_gets, immediate_misses,

decode(gets,0,0,misses/gets*100) ratio1,

decode(immediate_gets+immediate_misses,0,0,

immediate_misses/(immediate_gets+immediate_misses)*100) ratio2

from v$latch where name in (redo allocation, redo copy);

155. 监控内存和硬盘的排序比率,最好使它小于 .10,增加sort_area_size select name, value from v$sysstat where name in (sorts (memory), sorts(disk));

156. 如何监控当前数据库谁在运行什幺sql语句?

select osuser, username, sql_text from v$session a, v$sqltext b

where a.sql_address =b.address order by address, piece;

157. 如何监控字典缓冲区?

select (sum(pins - reloads)) / sum(pins) "lib cache" from v$librarycache;

select (sum(gets - getmisses - usage - fixed)) / sum(gets) "row cache" from v$rowcache;

select sum(pins) "executions", sum(reloads) "cache misses while executing" from v$librarycache;

后者除以前者,此比率小于1%,接近0%为好。

select sum(gets) "dictionary gets",sum(getmisses) "dictionary cache get misses"

from v$rowcache

158. 监控mts

select busy/(busy+idle) "shared servers busy" from v$dispatcher;

此值大于0.5时,参数需加大

select sum(wait)/sum(totalq) "dispatcher waits" from v$queue where type=dispatcher;

select count(*) from v$dispatcher;

select servers_highwater from v$mts;

servers_highwater接近mts_max_servers时,参数需加大

159. 如何知道当前用户的id号?

sql>show user;

or

sql>select user from dual;

160. 如何查看碎片程度高的表?

select segment_name table_name , count(*) extents

from dba_segments where owner not in (sys, system) group by segment_name

having count(*) = (select max( count(*) ) from dba_segments group by segment_name);

162. 如何知道表在表空间中的存储情况?

select segment_name,sum(bytes),count(*) ext_quan from dba_extents where

tablespace_name=&tablespace_name and segment_type=table group by tablespace_name,segment_name;

163. 如何知道索引在表空间中的存储情况?

select segment_name,count(*) from dba_extents where segment_type=index and owner=&owner

group by segment_name;

164、如何知道使用cpu多的用户session?

11是cpu used by this session

select a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100 value

from v$session a,v$process b,v$sesstat c

where c.statistic#=11 and c.sid=a.sid and a.paddr=b.addr order by value

desc;

165. 如何知道监听器日志文件?

以8i为例

$oracle_home/network/log/listener.log 166. 如何知道监听器参数文件?

以8i为例

$oracle_home/network/admin/listener.ora 167. 如何知道tns 连接文件?

以8i为例

$oracle_home/network/admin/tnsnames.ora 168. 如何知道sql*net 环境文件?

以8i为例

$oracle_home/network/admin/sqlnet.ora 169. 如何知道警告日志文件?

以8i为例

$oracle_home/admin/sid/bdump/sidalrt.log 170. 如何知道基本结构?

以8i为例

$oracle_home/rdbms/admin/standard.sql 171. 如何知道建立数据字典视图?

以8i为例

$oracle_home/rdbms/admin/catalog.sql 172. 如何知道建立审计用数据字典视图?

以8i为例

$oracle_home/rdbms/admin/cataudit.sql 173. 如何知道建立快照用数据字典视图?

以8i为例

$oracle_home/rdbms/admin/catsnap.sql

Oracle常见错误汇总

1.Oracle ORA-01555快照过旧的错误 首先了解Oracle在什么情况下会产生ORA-01555错误: 假设有一张6000万行数据的testdb表,预计testdb全表扫描1次需要2个小时,参考过程如下: 1、在1点钟,用户A发出了select * from testdb;此时不管将来testdb怎么变化,正确的 结果应该是用户A会看到在1点钟这个时刻的内容。 2、在1点30分,用户B执行了update命令,更新了testdb表中的第4100万行的这条记录, 这时,用户A的全表扫描还没有到达第4100万条。毫无疑问,这个时候,第4100万行的这条记录是被写入了回滚段,假设是回滚段UNDOTS1,如果用户A的全表扫描到达了第4100万行,是应该会正确的从回滚段UNDOTS1中读取出1点钟时刻的内容的。 3、这时,用户B将他刚才做的操作提交了,但是这时,系统仍然可以给用户A提供正确的数据, 因为那第4100万行记录的内容仍然还在回滚段UNDOTS1里,系统可以根据SCN到回滚段里找到正确的数据,但要注意到,这时记录在UNDOTS1里的第4100万行记录已经发生了重大的改变:就是第4100万行在回滚段UNDOTS1里的数据有可能随时被覆盖掉,因为这条记录已经被提交了! 4、由于用户A的查询时间漫长,而业务在一直不断的进行,UNDOTS1回滚段在被多个不同的 transaction使用着,这个回滚段里的extent循环到了第4100万行数据所在的extent,由于这条记录已经被标记提交了,所以这个extent是可以被其他transaction覆盖掉的!5、到了1点45分,用户A的查询终于到了第4100万行,而这时已经出现了第4条说的情况, 需要到回滚段UNDOTS1去找数据,但是已经被覆盖掉了,这时就出现了ORA-01555错误。

Oracle常见问题及其解决方法(doc 10页)

Oracle常见问题及其解决方法(doc 10页)

iSQL*Plus URL:http://10.10.43.137:5560/isqlplus Enteprise Manager 10g Database Control URL: http://information:5500/em OracleDBConsoleorcl不能启动,报错误码2解决策略 解决策略一: 修改你的主机参数文件 修改一下: C:\WINDOWS\system32\drivers\etc下的host文件. 如果没有的话就自己加一个IP和你的计算机名对应,如果已有了就把你的IP地址和你的计算机名对应起来. 如: # copyright (c) 1993-1999 microsoft corp. # # this is a sample hosts file used by microsoft tcp/ip for windows. # # this file contains the mappings of ip addresses to host names. each # entry should be kept on an individual line. the ip address should # be placed in the first column followed by the corresponding host name. # the ip address and the host name should be separated by at least one # space. # # additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # for example: # # 102.54.94.97 https://www.wendangku.net/doc/651414435.html, # source server # 38.25.63.10 https://www.wendangku.net/doc/651414435.html, # x client host 127.0.0.1 localhost 10.10.43.137 information 解决策略二: 启动电脑,到登陆界面,电脑报有个服务启动失败,电脑没有新装软件,周六还没有问题,怎么突然报这个错误?于是到事件查看器中看看什么问题,显示是OracleDBConsoleorcl启动失败,到服务里一看,确实没有启动。手动启动一下,报错误码2 我装的是10g,于是到ORACLEproduct10.2.0db_1test_orclsysmanlog目录看一下log里写了什么,打开OracleDBConsoleorclsrvc.log. log最后记录的是: 日志让看emdbconsole.nohup文件,目录里没有这个文件呀。 手动执行一下emctl.bat,于是启动控制台,执行emctl.bat istart dbconsole,报错,ORACLE_SID 没有定义,打开emctl.bat看看,这里是定义环境变量的地方,其中已经设置了这些:if not defined REMOTE_EMDROOT (set ORACLE_HOME=Ec:oracleproduct10.2.0db_1)

Oracle数据库常见异常的诊断方法

目录 第1章 Oracle数据库常见问题诊断方法 (1) 1.1 常见错误篇 (1) 1.1.1 ORA-12571、ORA-03113、ORA-03114、ORA-01041 (1) 1.1.2 ORA-01000 (1) 1.1.3 ORA-01545 (2) 1.1.4 ORA-0165x (2) 1.1.5 ORA-01555 (3) 1.1.6 ORA-04031 (3) 1.1.7 ORA-04091 (3) 1.1.8 ORA-01242、ORA-01113 (4) 1.2 内部错误篇 (4) 1.2.1 ORA-00600【12330】错误 (4) 1.2.2 ORA-00604【xxx】错误 (5) 1.2.3 ORA-00600【3339】错误 (5) 1.2.4 ORA-00600【13004】错误 (5) 1.3 分布式事务篇 (6) 1.3.1 诊断分布式事务 (6) 1.3.2 检查其它节点的事务(DBA_2PC_NEIGHBORS) (6) 1.3.3 通过DBA_2PC_PENDING字典表检查事务的状态 (6) 1.3.4 检查处理结果 (7) 1.3.5 COMMIT FORCE或ROLLBACK FORCE命令 (7) 1.4 OPS或RAC篇 (8) 1.4.1 准备工作 (8) 1.4.2 紧急情况下的状态备份 (8) 1.4.3 OPS设计、配置准则 (9) 1.4.4 OPS常见问题 (9) 1.4.5 诊断分析步骤 (9) 1.5 非OPS篇 (18) 1.5.1 ORACLE数据库系统常见问题:空间方面问题 (18) 1.5.2 ORACLE数据库系统常见问题:性能方面问题 (18) 1.5.3 ORACLE数据库系统常见问题:锁争用方面问题 (19) 1.5.4 ORACLE数据库系统常见问题:内存方面问题 (20) 1.5.5 ORACLE问题分析脚本 (20) 1.5.6 SQL*NET篇 (24) 1.5.7 TNS-12154 Error 或ORA-12154 (24) 1.5.8 NL-00462 Error 或ORA-00462 (25) 1.5.9 NL-00405 Error 或ORA-00405 (26)

oracle操作常见错误

1.[Err] ORA-02438: Column check constraint cannot reference other columns ORA-02438: 列检查约束条件无法引用其它列 --通常可能是constraint 拼写错误 2. [Err] ORA-02250: missing or invalid constraint name 约束条件名缺失或者无效。 比如: alter table tbl_school add s_level number(7) constraint unique; //错误的 ====add s_level number(7) unique; 正确的 4. [Err] ORA-01861: literal does not match format string ORA-01861: 文字与格式字符串不匹配 比如: insert into tbl_school(id,s_name,address,establish_time,style) values(1,'清华','北京','1976-05-05','理'); 日期的输入,要有固定的格式 =====values(1,'清华','北京',to_date('1976-05-01','rrrr-mm-dd'),'理'); 5:select index_name,table_name from user_indexes Where table_name=’s_emp’; 提示错误:为选定行。 ‘’里面的就变成了字符串,是区分大小写的, select index_name,table_name from user_indexes Where table_name=’S_EMP’; 6:Ora-02290【】违反检查约束条件 可能原因:check里面出错,在传值的时候,出现乱码了,只能重建表

Oracle常见问题解决

问题一:注册表相关项被优化软件优化(删除) 对于系统的每一个服务,在注册表中都有所保存: 监听服务的注册表项 HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\OracleOraDb10g_home1TNSListener 里面有一个"ImagePath"项,内容是: D:\server\oracle\product\10.2.0\db_1\BIN\TNSLSNR 这一项可能会在使用优化软件的时候被自动删除 如果被删除了,应该按照下面的方式建立一个新的项 如图: 问题二:网络环境发生改变 Oracle 10g中,如果网络环境发生了改变,有可能原始配置网络无法正常运行,此时必须手动进行网络配置的修改 网络环境的改变,最多的是指计算机名称的改变。 【我的电脑】-【属性】-【计算机名】-【更改计算机名】

计算机名一旦更改,这样一来实际的计算机网络名称已经发生变化,如果在Oracle 11g中,这个问题可以帮助用户自动配置,但在Oracle 10g中必须手动配置 监听服务(OracleOraDb10g_home1TNSListener)就会启动失败 解决办法分两步: 第一步:分别修改D:\server\Oracle\product\10.2.0\db_1\NETWORK\ADMIN目录下的连个文件:tnsnames.ora和listener.ora tnsnames.ora(把红色加粗的地方修改成当前的计算机名) -------------------------------------------------------------------------------- # listener.ora Network Configuration File: D:\server\oracle\product\10.2.0\db_1\network\admin\listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER =

oracle常见等待事件及处理方法

我们可以通过视图v$session_wait来查看系统当前的等待事件,以及与等待事件相对应的资源的相关信息 看书笔记db file scattered read DB ,db file sequential read DB,free buffer waits,log buffer space,log file switch,log file sync 我们可以通过视图v$session_wait来查看系统当前的等待事件,以及与等待事件相对应的资源的相关信息,从而可确定出产生瓶颈的类型及其对象。v$session_wait的p1、p2、p3告诉我们等待事件的具体含义,根据事件不同其内容也不相同,下面就一些常见的等待事件如何处理以及如何定位热点对象和阻塞会话作一些介绍。 <1> db file scattered read DB 文件分散读取(太多索引读,全表扫描-----调整代码,将小表放入内存) 这种情况通常显示与全表扫描相关的等待。当全表扫描被限制在内存时,它们很少会进入连续的缓冲区内,而是分散于整个缓冲存储器中。如果这个数目很大,就表明该表找不到索引,或者只能找到有限的索引。尽管在特定条件下执行全表扫描可能比索引扫描更有效,但如果出现这种等待时,最好检查一下这些全表扫描是否必要。因为全表扫描被置于LRU(Least Recently Used,最近最少适用)列表的冷端(cold end),所以应尽量存储较小的表,以避免一次又一次地重复读取它们。 ================================================== 该类事件的p1text=file#,p1是file_id,p2是block_id,通过dba_extents即可确定出热点对象(表或索引) select owner,segment_name,segment_type from dba_extents

oracle常见问题分析

第一楼目录 故障分类一数据库挂起故障 1 由于ARCHIVE挂起导致数据库挂死 2 NIT文件中SGA区设置太大,导致内存不够用,数据库和系统都挂死 3 由于临时表空间无法扩展导致数据库被挂起 4由于未打补丁导致RMAN备份时将数据库挂起 故障分类二数据库功能/性能异常 5由于BLOB类型的表记录数太多操作又太频繁导致数据库效率急差 6由于未对特大表(达到或超过100万条记录)定期做表分析导致数据库操作特别慢 7由于空间不够导致插入数据时扩展索引失败 8由于REDOLOG破坏导致数据库异常 9由于控制文件被破坏导致数据库无法正常启动 10由于数据文件丢失或破坏导致数据库无法正常启动 11由于空间参数设置不合理导致扩展表空间、索引等失败 12由于时间格式的环境变量设置问题导致话单无法入库 13由于大事务未使用大回滚段导致事务挂起 14由于数据库连接数太多导致服务器进程数多或内存耗尽 15由于使用了MTS方式,导致数据库操作特别慢(包括备份) 16由于存在一个大事务操作,导致数据库性能特别差或产生频繁日志切换 17由于没有COMMIT,导致数据库表被锁住 18索引创建不合理,导致数据库查询特别慢 19 由于BUFFER参数设置不合理导致EXP失败 20由于EXP不向上兼容,语言不兼容,导致不同版本、不同字符集的数据库无法导入 21 由于创建表空间时误将其创建在以‘本地管理’,导致在表空间上的所有对象无法修改其存储参数 22 错误地在系统表空间上建无关的数据文件 23 ORACLE客户端在P4上安装不成功 24由于LISTENER.ORA或TNSNAMES.ORA配置问题导致网络问题 25由于环境变量设置问题导致VERSOIN版本启动问题 26用户数据、表破坏下的数据恢复 27 由于OS层问题导致数据库ORA-600错误 故障分类三将导致数据库安装失败或打补丁失败的情况 28 由于环境变量或没有安装MAKE文件导致数据库安装失败 29 由于/TMP等文件系统设置太小导致数据库无法正常安装 30 HPUX上由于核心参数设置不对导致数据库无法正常启动 31 在64位的ORACLE817上打32的补丁失败 32由于安装备机数据库时是使用的拷贝方式,所以导致在备机上安装补丁失败 33由于安装ORACLE时错误地在$ORACLE_HOME目录下创建LINK,导致将打过补丁后的版本拷贝到备机失败

Oracle常见错误代码的分析与解决

Oracle常见错误代码的分析与解决 作者:chensheng 发文时间:2005.06.15 在使用ORACLE的过程中,我们会经常遇到一些ORACLE产生的错误,对于初学者而言,这些错误可能有点模糊,而且可能一时不知怎么去处理产生的这些错误,本人就使用中出现比较频繁的错误代码一一做出分析,希望能够帮助你找到一个合理解决这些错误的方法,同时也希望你能够提出你的不同看法。毕竟作为一种交流的手段,个人意见难免过于偏颇,而且也必定存在着不足,出错之处在所难免。写这篇文章的目的就是想通过相互之间的交流共同促进,共同进步。 ORA-01650: unable to extend rollback segment NAME by NUM intablespace NAME 产生原因:上述ORACLE错误为回滚段表空间不足引起的,这也是ORACLE数据管理员最常见的ORACLE错误信息。当用户在做一个非常庞大的数据操作导致现有回滚段的不足,使可分配用的回滚段表空间已满,无法再进行分配,就会出现上述的错误。 解决方法:使用“ALTER TABLESPACE tablespace_name ADD DATAFILE filename SIZE size_of_file”命令向指定的数据增加表空间,根据具体情况可以增加一个或多个表空间。当然这与还与你主机上的裸盘设备有关,如果你主机的裸盘设备已经没有多余的使用空间,建议你不要轻意增加回滚段表空间的大小,可使用下列语句先查询一下剩余的tablespace空间有多少: select user_name,sql_text from V$open_cursor where user_name=''; 如果多余的空间比较多,就可以适当追加一个大的回滚段给表空间使用,从而避免上述的错误。你也可以用以下语句来检测一下rollback segment的竞争状况: 和

Oracle常见问题及解决方法(个人遇到问题解决经验)

iSQL*Plus URL:http://10.10.43.137:5560/isqlplus Enteprise Manager 10g Database Control URL: http://information:5500/em OracleDBConsoleorcl不能启动,报错误码2解决策略 解决策略一: 修改你的主机参数文件 修改一下: C:\WINDOWS\system32\drivers\etc下的host文件. 如果没有的话就自己加一个IP和你的计算机名对应,如果已有了就把你的IP地址和你的计算机名对应起来. 如: # copyright (c) 1993-1999 microsoft corp. # # this is a sample hosts file used by microsoft tcp/ip for windows. # # this file contains the mappings of ip addresses to host names. each # entry should be kept on an individual line. the ip address should # be placed in the first column followed by the corresponding host name. # the ip address and the host name should be separated by at least one # space. # # additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # for example: # # 102.54.94.97 https://www.wendangku.net/doc/651414435.html, # source server # 38.25.63.10 https://www.wendangku.net/doc/651414435.html, # x client host 127.0.0.1 localhost 10.10.43.137 information 解决策略二: 启动电脑,到登陆界面,电脑报有个服务启动失败,电脑没有新装软件,周六还没有问题,怎么突然报这个错误?于是到事件查看器中看看什么问题,显示是OracleDBConsoleorcl启动失败,到服务里一看,确实没有启动。手动启动一下,报错误码2 我装的是10g,于是到ORACLEproduct10.2.0db_1test_orclsysmanlog目录看一下log里写了什么,打开OracleDBConsoleorclsrvc.log. log最后记录的是: 日志让看emdbconsole.nohup文件,目录里没有这个文件呀。 手动执行一下emctl.bat,于是启动控制台,执行emctl.bat istart dbconsole,报错,ORACLE_SID 没有定义,打开emctl.bat看看,这里是定义环境变量的地方,其中已经设置了这些:if not defined REMOTE_EMDROOT (set ORACLE_HOME=Ec:oracleproduct10.2.0db_1)

Oracle经验分享-常用报错及解决办法

问题一、监听器未能启动专用的服务器进程 今天通信频道,在更新代码后,出现WEB或PLSQL客户端连接数据库连接不上。重启下数据库和TOMCA T后正常一段后又出现此故障。监听器日志后面都提示:08-1月 -2010 14:10:59 * (CONNECT_DATA=(SID=vnet)(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))) * (ADDRESS=(PROTOCOL=tcp)(HOST=某IP)(PORT=3947)) * establish * fjroom * 12500 TNS-12500: TNS:监听器未能启动专用的服务器进程 TNS-12560: TNS: 协议适配器错误 TNS-00530: 协议适配器错误 PLSQL客户端连接的时候提示: 监听器未能启动专用的服务器进程 原因: ORACLE数据库所在服务器的防火墙被启动,之前是关着(不知被谁启起来的)。而且防火墙仅开放1521端口。 分析: 服务器A安装有:ORACLE数据库和运行WEB程序(连接本台数据库)。同样的WEB 程序在服务器B运行并连接服务器A的数据库。 问题出现在12月31号,应该是防火墙被启起来时候。由于防火墙只开放1521监听器端口。由于ORACLE用到不止一个端口(还有一个随机端口),所有服务器B程序虽然可以监听到ORACLE可就是获取不上数据库的连接!(之前,我查看ORACLE监听日志有从服务器B过来的记录,我错以为服务器B有连接上数据库。另外,服务器B程序访问少,所以我没去在意他是否连接程序)这样服务器B程序可以监听到但获取不到数据库连接,故导致死循环:监听->获取不到连接->再监听->获取不到连接。在监听日志有大量这样连接记录: 08-1月 -2010 12:14:02 * (CONNECT_DATA=(SID=vnet)(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))) * (ADDRESS=(PROTOCOL=tcp)(HOST=某IP)(PORT=4280)) * establish * fjroom * 0 时间过去几个小时候后,便会出现上面所说的故障。 疑问: 如何配置防火墙?不想去改ORACLE数据库相关配置。或者服务器如何把自己的端口全部开放给另外一台服务器。 问题二、请问oracle数据库的日志文件会一直增大吗?如果一直增大肯定不合理,他是什么机制呢? 1、Oracle 数据库默认情况下,在安装的时候,会有三个重做日志文件。 2、当第一个重做日志文件达到一定容量时,就会停止写入,而会转向第二个日志文件。 3、第二个也满时,就会转向第三个,当第三个满时,就会往第一个日志文件中写入。 4、在往这原来的纪录中写入重做日志文件的时候,是否需要对原有的纪录进行备份则是根据用户需求的不同,存在两种处理模式。 一种是不需要数据库进行自动备份,这种模式就叫做非归档模式;

oracle安装及使用常见问题及解决方案

第一部分: 1、win7_oracle11g_64位连接32位PLSQL_Developer 解决思路: 1)下载instantclient-basic-win32-11.2.0.1.0文件并解压。复制到数据库 安装的文件夹下的product文件夹下。 2)然后找到两个文件listener.ora和tnsnames.ora。 在…\product\11.2.0\dbhome_1\NETWORK\ADMIN里面。都复制 到…\product\instantclient_11_2的下面。 注意!!!以后使用的listener.ora和tnsnames.ora文件都是 instantclient_11_2路径下的。 3)然后找到PLSQL_Developer安装的目录,在里面新建一个记事本,写入 以下类似代码: @echo off set path=E:\app\Administrator\product\instantclient_11_2 set ORACLE_HOME=E:\app\Administrator\product\instantclient_11_ 2 set TNS_ADMIN=E:\app\Administrator\product\instantclient_11_2 set NLS_LANG=AMERICAN_AMERICA.AL32UTF8 start plsqldev.exe 注意!!!! 我的instantclient_11_2地址是: E:\app\Administrator\product\instantclient_11_2 而你的跟我的可能不一样,所以要修改成你的instantclient_11_2的路径! 写好后,将你的记事本名称改为start.bat然后点击运行。 如果PLSQL Developer没有打开,请仔细检查你上面的步骤和代码是否 正确,然后在运行start.bat。 4)打开PLSQL_Developer后,取消登陆,进入主界面。

Oracle常见错误

ORA-00911: 无效字符问题和解决 我今天写JDBC插入数据库数据时出现ORA-00911: 无效字符问题, 我把SQL打到控制台上面,然后COPY到SQL PULS中是可以插入数据的, 但是在ECLIPSE中执行就报ORA-00911: 无效字符的错误, 我查了一下, 我的是类似这种的insert into tablea(aaa) values('111'); 把最后面的;去掉,修改为 insert into tablea(aaa) values('111')就可以执行了。 原因:没有找到sql语句中要调用的表(可能根本不存在、可能表明不对,也可能没有区分大小写)。 解决方法:1、打断点,转到定义,在整个解决方案中搜索看sql语句的出处,然后排查具体原因。 第一、不存在:用plsql往里面导入表。 第二、表名不对,修改表的名字。 第三、没有区分大小写: https://www.wendangku.net/doc/651414435.html,/jtmjx/archive/2012/07/03/2574766.html 采用Oracle数据库,使用Powerdesigner设计,生成Sql文件导入后查询出现 “ORA-00942: 表或视图不存在”,很是郁闷,这个问题以前出现过,当初解决了,但因好久没有使用,这次竟然忘了,害得我浪费了好些时间,为了避免再次忘记,将它记下来,同时和大家一起分享。 1、问题产生的原因 Oracle 是大小写敏感的,我们创自己写Sql脚本创建表的时候Oracle会自动将我们的表名,字段名转成大写, eg: createtable T_WindRadar (

wr_id VARCHAR2(64) not null, wr_reciveTime DATE, wr_image BLOB, constraint PK_T_WINDRADAR primarykey (wr_id) ); 但是Oracle 同样支持"" 语法,将表名或字段名加上""后,Oracle不会将其转换成大写eg: createtable "T_WindRadar" ( "wr_id" VARCHAR2(64) not null, "wr_reciveTime" DATE, "wr_image " BLOB, constraint PK_T_WINDRADAR primarykey (wr_id) ); 如果加上了"",那么我们采用一般的SQL语句查询则会产生“ORA-00942: 表或视图不存在”,因此SQL脚本中需要将表名也加上""。 eg: select*from "T_WindRadar"; 这种情况在我们手写SQL的时候一般不会发生,但是我们使用powerdesigner设计数据库的时候,由于不注意会经常出现此类问题,因为Powerdesigner生成的SQL文件默认是加""的。 2、解决的办法 因为我们使用的是Powerdesigner,所以可以不用手工改写SQL脚本,只要设置Powerdesigner重新生成即可。 在PowerDesiger中,在physical data model 中找到菜单中的Database下的Edit current DBMS中, 选择Script->Sql->Format,有一项CaseSensitivityUsingQuote,它的comment 为“Determines if the case sensitivity for identifiers is managed using double quotes”, 表示是否适用双引号来规定标识符的大小写,可以看到右边的values默认值为“YES”,改为“No”,点击【应用】按钮。 这样再生成sql语句时,表和字段名上是没有引号了。

oracle遇到的问题及答案

问题一:Oracle 11G用EXP时,空表不能导出解决方法 第一查询空表到底有多少张,也就是查询为分配分配segment的表有多少张 SQL> select table_name from user_tables where NUM_ROWS=0; TABLE_NAME ------------------------------ DATA_BACKUP EQUIPMENT FEEDBACK_ACCESSORIES SPECIALPIC TASK_THIRD TASK_THIRDBATCH TASK_THIRD_DATA TASK_THIRD_FEEDBACK TESTDATA_THIRD THIRD_ACCESSORIES 已选择10行。 第二查询在当前用户下有总的有多少张表 SQL> select count(*) FROM USER_TABLES; COUNT(*) ---------- 32 第三导出当前用户下的数据 C:\Users\Administrator>exp lcpt/lcpt file=E:\0702bj\lcpt.dmp wner=lcpt log=E 702bj\lcpt.log Export: Release 11.2.0.1.0 - Production on 星期一 7月 2 10:42:07 2012 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Productio With the Partitioning, OLAP, Data Mining and Real Application Testing options 已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集 即将导出指定的用户... . 正在导出 pre-schema 过程对象和操作 . 正在导出用户 LCPT 的外部函数库名 . 导出 PUBLIC 类型同义词 . 正在导出专用类型同义词 . 正在导出用户 LCPT 的对象类型定义 即将导出 LCPT 的对象... . 正在导出数据库链接 . 正在导出序号

Oracle Enterprise Manager常见问题

Oracle Enterprise Manager常见问题 2010-06-03 00:06 Oracle Enterprise Manager(Oracle企业管理器,简称OEM)是通过一组Oracle程序,为管理分布式环境提供了管理服务。OEM包括了一组DBA工具,一个 repository,以及一个图形化显示的控制台。OEM控制台与每一个服务器上的智能化代理(IntelligentAgent)相对应。 智能化代理能够监控系统的特定事件并且执行任务(作业)就象你在系统本地一样。事件和作业的结果会被送回控制台,这样可以在一个地方管理所有的系统。 OEM与Server Manager Motif相比,有以下优点: 1)从适用范围看,OEM可以同时监控管理多个系统上的多个数据库,因而特别适合分布式环境;而Server Manager只能监控管理一个数据库。 2)从管理对象看,OEM可以监控管理节点,数据库和监听进程(listener),而Server Manager只能监控数据库。 3)从适用版本看,OEM可以同时监控管理Oracle7.x和8.x,而从8版开始,Server Manager已不存在。 本文主要介绍一些OEM的常见问题及其解决方法。 Q:OEM数据库工具组的功能是什麽?? A:OEM数据库工具组是一组使DBA能够通过GUI界面管理Oracle数据库的工具。包括以下工具: Data Manager(数据管理器):这工具使你能够象加载数据一样执行数据的export/import。 Schema Manager:这工具使你能够在数据库中管理对象。可以用于创建,修改,和删除 tables,indexes,views,snapshots,sequences等等。 Security Manager(安全性管理器):这工具使你能够管理用户,角色,权限及profiles。 StorageManager(存储管理器):这工具允许你创建和修改表空间,数据文件和回滚段. InstanceManager(实例管理器):这工具允许你关闭,启动实例并且存储和管理数据库参数。 SQL*Worksheet:这工具使你能够运行或创造SQL脚本并且存储在硬盘上。

ORACLE面试常见的问题及回答

1.冷备份和热备份的不同点以及各自的优点 解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘) 2.如果你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢? 解答:重建控制文件,用带backup control file子句的recover命令恢复数据库。 3.如何转换init.ora到spfile? 解答:使用create spfile from pfile命令. 4.解释data block,extent和segment的区别(这里建议用英文术语) 解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent.一个数据库对象拥有的所有extents被称为该对象的segment. 5.给出两个检查表结构的方法 解答:1.DESCRIBE命令 2.DBMS_METADATA.GET_DDL包 6.怎样查看数据库引擎的报错 解答:alert log. 7.比较truncate和delete命令 解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要rollback segment.而Delete是DML操作,需要rollback segment 且花费较长时间.

oracle常见错误及代码

1、ORA-12541:TNS:没有监听器 原因:没有启动监听器或者监听器损坏。若是前者,使用命令net start OracleOraH ome10gTNSListener(名字可能有出入)即可;如果是后者,则使用“Net Configuration Assistant”工具向导之“监听程序配置”增加一个监听器即可(基本不用写任何信息,一路O K。在添加之前可能需要把所有的监听器先删!) 2、ORA-12500:TNS:监听程序无法启动专用服务器进程或ORA-12560:TNS:协议适配器错误 原因:ORACLE的数据库服务没有启动。使用命令net start ORACLESERVICEORA DB(ORADB为数据库名字)即可。如果仍没有解决,请继续向下看。 3、如果数据库服务启动失败,则很有可能是其注册表项值损坏,最好的做法是以下两步: 1)ORADIM -DELETE -SID oradb 删除数据库服务项 2)ORADIM -NEW -SID oradb 新增数据库服务项 注:这个过程中如果出错,就重启计算机! 4、ORA-12154:TNS:能解析服务名 原因:ORACLE的网络服务名没有正确配置。请使用“Net8 Configuration Assistan t”工具向导之“本地网络服务名配置”配置TNS即可。如果仍没有解决,请继续向下看。 5、ORA-1034 :TNS:ORACLE不可用 原因:ORACLE的数据库服务正确启动,但是数据库没有打开! 使用命令: 1)svrmgrl 启动服务管理器

2)connect internal 以internal身份登陆 3)startup 打开数据库 6、ORA-12560:TNS:协议适配器错误(顽固性的) 原因:未知。 解决:必杀技--打开“Windows任务管理器”,杀死ORACLE.exe及ORADIM.exe进程,书写自己的ora_startup.bat,执行之! PS: 1、ora_startup.bat: net start OracleOraHome81TNSListener net start ORACLESERVICEORADB svrmgrl 一般情况下不用,不过有时少不了它的,具体步骤见第5步。 2、ora_shutdown.bat: net stop OracleOraHome81TNSListener net stop ORACLESERVICEORADB 3、ORACLE相关服务名请参见“管理工具”之“服务”中以ORACLE开头的服务名 1、TNS-12154 Error 或ORA-12154 特征:SQL*NET没有找到连接串或别名 原因1:(1)没有找到TNSNAMES.ORA文件,该文件的缺省路径为: windows 95/98 client sql*Net 2.x - ORAWIN95NETWORKADMIN Net8 - ORAWIN95NET80admin

orcel常见问题解决方法

Orcel学习——常见问题解决方法 1、登录oracle过程报错: ORA-12526:TNS:listener:all appropriate instances are in restricted mode。 问题原因: 数据库维护时执行了下面的语句限制用户登陆: Sql代码 ALTER SYSTEM ENABLE RESTRICTED SESSION; 解决办法: Sql代码 ALTER SYSTEM DISABLE RESTRICTED SESSION; 2、设置sga_target非正常值导致ORA-00093 新装了一台oracle服务器 装好后修改参数,结果一不小心 SQL> alter system set sga_target = 1320 scope = spfile; System altered sga_target漏了内存单位M 结果shutdown immediate再startup

SQL> startup; ORA-00093: _shared_pool_reserved_min_alloc must be between 4000 and 0 解决办法 SQL> create pfile = '/oracle/tmp_init.ora' from spfile; File created. SQL> !echo '*.sga_target=200m' >> '/oracle/tmp_init.ora'; SQL> create spfile from pfile = '/oracle/tmp_init.ora'; File created. SQL> startup; ORA-00093: _shared_pool_reserved_min_alloc must be between 4000 and 0 SQL> startup ORA-00093: _shared_pool_reserved_min_alloc must be between 4000 and 0 SQL> exit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options [oracle@CallCenter-Data tmp]$ sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production

oracle中常出现的错误信息及解决方案

Oracle中常出现的错误信息及解决方案错误信息一:ORA-00001 违反唯一约束条件 最常见的问题原因是:主键序列化问题,即ORACLE表主键ID突然从已经存在的ID值开始自动生成,导致违反主键唯一性约束; 解决方案,修改序列值,将序列最小值值设置的大一些。如果在修改的时候出现违反唯一约束,说明你对主键值进行修改时出现重复,或者没加where条件。 错误信息二:oracle ORA-01745: 无效的主机/绑定变量名最常见的原因:sql语句中语法错误太多,例:多写了一个冒号或逗号,或者变量名称使用了oracle关键字 解决方案:审查sql语句,更改为正确的sql语句。 错误信息三:ORA-01460: 转换请求无法实现或不合理 常见原因有一下几种: 1.读入到数据库中的字符过长无法实现。 解决方案:将字符串(只有4000)类型改为clob类型 2.客户端和服务端字符集不一致。

解决方案: step1、通过执行select * from V$NLS_PARAMETERS查看服务端字符集 PARAMETER VALUE NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN NLS_CHARACTERSET ZHS32GB18030 NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR NLS_DUAL_CURRENCY $ NLS_NCHAR_CHARACTERSET UTF8 NLS_COMP BINARY

相关文档
相关文档 最新文档