文章数: Oracle技术
Windows XP上IIS ASP使用Oledb方式连接Oracle10g数据库,提示错误:
ADODB.Connection (0x800A0E7A)
未找到提供程序。该程序可能未正确安装。
Error Type:
ADODB.Connection (0x800A0E7A)
Provider cannot be found. It may not be properly installed.
...
java虚拟机版本为1.4.2。启动java的数据库应用,立即报ORA-00600错。 ksedmp: internal or fatal error ORA-00600: internal error code, arguments: [ttcgcshnd-1], [0], [], [], [], [], [], [] trace文件部分内容: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production With the Partitioning, OLAP...
有一个建好的数据,Oracle 9.2.0.4 for linux,字符集是缺省的WE8ISO8859P1,没有改成ZHS16GBK. 库中暂时没有任何数据。 由于字符集不是超集/子集关系,无法通过ALTER DATABASE CHARACTER SET修改字符集。 当时时间紧张,就没有重建数据库,而是直接修改prop$表,将NLS_CHAR字符集改为ZHS16GBK。 update props$...
最近在数据库服务器上增加了硬盘,将其作为归档日志和数据库备份的专用盘。先是直接将log_archive_dest_1指向新的磁盘。后来想想不安全:万一这块盘坏了,如果未及时处理,数据库岂不会停顿了?能否设置成:首先往 /u02 中归档,如果/u02硬盘坏,就往另一个地方归档? 查资料得到以下设置方法: alter system...
两台业务数据库,A中表上有触发器,通过数据库链database link向B中表实时同步insert/delete/update数据。两台数据库一直运行正常,同步也正常。 突然想到B库down后,A的触发器执行会不会有什么问题? 于是看了触发器代码,代码捕获了所有的异常,因此不会造成DML动作的失败。 shutown...
在SQL*PLUS中执行oradebug wakeup <pid> 其中SMON的<pid>这样获得: SELECT pid FROM v$process WHERE addr = ( SELECT paddr FROM v$bgprocess WHERE name = 'SMON' );
当然是选择在系统业务量小的窗口时间; 为了不阻塞其它会话对表的DML,应使用 ONLINE 选项; 制定NOLOGGING选项,避免产生大量日志(但表空间级别如果设定为LOGGING,则nologging设置无效); 加上COMPUTE STATISTICS,以便同时得到统计数据; CREATE INDEX ... ONLINE NOLOGGING COMPUTE STATISTICS;...
环境ORACLE9204 CURSOR_SHARING=EXACT select t.termid from w_mohis t where t.receive between to_date('2008-01-03 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and to_date('2008-01-03 23:59:59', 'yyyy-mm-dd hh24:mi:ss') and t.srvtype = 1 ORACLE选择了利用srvtype 的索引。 select t.termid from w_mohis...
一个存储过程平时执行正常,刚才执行出ORA-06508错误。百思不得其解,好像没有什么不正常的地方啊! 后来找到了答案。...
在授权resource角色的同时,ORACLE自动(硬编码)向用户授予unlimited tablespace系统权限! 但 unlimited tablespace 并不属于 resource 角色! 验证: 查看dba_sys_privs,没发现resource这个预定义角色有unlimted tablespace 系统特权。 select * from dba_sys_privs where grantee = 'RESOURCE';
两个月以前,将cursor_sharing修改为similar,目的是共享SQL,减少hard parse。 最近将大表进行调整,重新进行分区,但以前运行正常的统计程序的执行计划就变得比较怪--总之一言难尽。 一怒之下,将cursor_sharing改回了exact。虽然会因此增加hard parse CPU,但整个世界都变得可控了。
曾经遇到过视图查询的问题:按索引字段NUMBATCHID 查询,但却不全走索引! 这个视图其实是对两个表BZ和PUSH的联合查询。虽然BZ/PUSH两个表上都有对 NUMBATCHID 字段的索引,但不知为何只在PUSH上走索引,BZ表上不走索引,而走FTS!!! 当时估计是由于BZ表 NUMBATCHID 字段的分布太不平均,导致优化器估计错误。...
在sqlplus/admin/glogin.sql中加入 set termout off define gname=idle column global_name new_value gname select lower(user) || '@' ||substr(global_name,1,decode(dot,0,length(global_name),dot-1)) global_name from (select global_name,instr(global_name,'.') dot from global_name); set sqlprompt...
SQL> column plan_plus_exp format a50 SQL> select count(*) from the_gateway; Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1) 1 0 SORT (AGGREGATE) 2 1 TABLE ACCESS (FULL) OF 'THE_GATEWAY' (Cost=2 C ard=63)...
今天又看到一个ORACLE数据库修改CURSOR_SHARING参数:从EXACT修改为SIMILAR。原因当然是开发人员没有使用绑定变量的意识;另外好像还有shared pool内存分配的问题。 这是一个很大的生产系统,版本是HP UNIX + 9208。 希望不要带来什么异常...
今天早上发现 STATSPACK JOB执行报错 Fri Nov 2 19:00:04 2007 Errors in file /data/oracle/admin/ora9i/bdump/ora9i_j002_26004.trc: ORA-12012: error on auto execute of job 146 ORA-00001: unique constraint (PERFSTAT.STATS$SQL_SUMMARY_PK) violated ORA-06512: at "PERFSTAT.STATSPACK",...
SQL*PLUS为了得到执行计划,实际上是另外执行了一条EXPLAIN PLAN FOR xxx语句。 一个是SELECT ... 语句,另一个是EXPLAIN PLAN FOR SELECT ...语句,因此产生不同的执行计划,也不应该算是什么不能理解的事情。 参见:几乎相同的SQL,一样的执行计划,不同的Statistics http://www.itpub.net/879573.html
trace发现SQL*PLUS为了得到执行计划,实际上是另外执行了一条 EXPLAIN PLAN FOR xxx语句。
当cursor_sharing=similar时,一条语句和加上了 EXPLAIN PLAN FOR 的类似语句在v$sql中的记录是有细微差别的:
分别执行以下SQL后,
select 23 from dual;
explain plan for select 23 FROM dUAL;
...
听说字典管理的表空间会出现连续的空间碎片,而本地管理的则不会出现。但我发现NEWPLATFORM表空间由四个文件组成,最后一个文件最后有4个free space,中间并没有任何数据段。但为何DBA_FREE_SPACE不显示为一个free space呢? SQL> select EXTENT_MANAGEMENT from dba_tablespaces 2 where tablespace_name =...
SQL> create table a1(a char, constraint PK_A1 primary key(a) using index tablespace indx) tablespace users; 表已创建。 SQL> select table_name, index_name, tablespace_name from user_indexes 2 where TABLE_NAME = 'A1'; TABLE_NAME INDEX_NAME TABLESPACE_NAME ---------- ----------...
有个大表,数据3.8G,一个索引2.2G。需要将数据和索引分别移动到新建立的表空间。 首先 ALTER TABLE BIG_TABLE MOVE tablespace TS_1。 执行时长 812.75 seconds 然后 ALTER INDEX I_BG1 REBUILD tablespace TS_2。 执行时长 1325.343 seconds...
今天truncate table user_his后,发现段空间并没有释放。 select * from user_segments where segment_name = upper('user_his') 结果:blocks = 25600 原因 :truncate 并不能回收全部的空间,在该表MIN_EXTENTS下的区间是不能回收的。 记得该表的initial extent很大。具体数据已经不可考了。 找到一个...
执行DDL(如CREATE TABLE),数据控制语句(如GRANT)或会话控制语句(如ALTER SESSION)。PL/SQL不允许静态执行这些语句; 更多的代码灵活性。例如,我们想在运行时根据实际需求来生成SELECT语句的WHERE子句;或者选择不同的schema的table; DBMS_SQL不支持对象和集合的操作。 语法: EXECUTE IMMEDIATE...
向来对这个问题的理解很模糊。今天仔细看了手册,明白了这个问题。 会话首次引用包时,会分配session私有的数据空间,存放公有变量,还要加载包代码,并运行一次包的初始化部分。 在会话过程中,包的公有变量一直有效,并持续到会话结束。因此,公有变量是会话期有效的,可以用于跨事务维护数据。 Packaged public...
函数能被SQL语句调用,存储过程不能。为了能够被SQL语句调用,函数必须遵循purity规则,这些规则能控制函数的副作用: 当从SELECT语句或是并发的INSERT、UPDATE、DELETE语句中调用函数时,它不能修改任何数据表。 当从INSERT、UPDATE或DELETE语句中调用函数时,它不能查询或修改这些语句所能影响到的数据表。...
dba_users中的password字段 环境:v8.1.7 v9.2.0.4 1)即使密码相同,不同用户的加密后密码也不同; 2)同一个用户下,修改为相同的密码时,加密后的密码也相同。 Q. orapwd文件中的sys密码和 dba_users字典中的sys密码 A: 是相同的(一致的)。修改数据库sys密码,orapwd文件中的也会被一起修改。
client连接数据库,其密码都是加密后传输的;首次登录失败,如果ORA_ENCRYPT_LOGIN为false,则会尝试第二次明文登录。client上的 ORA_ENCRYPT_LOGIN 是为了向后兼容而保留的参数。 不是sqlnet.ora参数,而是 environment variable (windows上为registry)....
涉及到多模式设计下,程序的调用者权限VS执行者权限的问题。 1. 调用者权限(AUTH_ID CURRENT_USER)的优点 调用者权限的子程序能让我们重用代码并将程序逻辑集中化。它们对于那些在不同的模式中存储数据的应用程序来说特别有用。这种情况下,多个用户可以使用一份代码来管理他们的数据。...
[ authid { current_user | definer(默认值) }] 用户拥有的role权限在普通存储过程是不可用的 eg. create table权限是通过对resource的角色进行授权的。 但是用户调用存储过程时,这些权限是不可见的,一般需要显式地给用户授予系统权限,如grant create table to scott....
EXP不处理以下保留的模式名 ORDSYS MDSYS CTXSYS ORDPLUGINS LBACSYS EXP一般不要以 AS SYSDBA 启动 EXP FULL EXPORT 会导出SYSTEM,但不会导出SYS用户,也不应导出保留的模式名如ORDSYS MDSYS CTXSYS EXP 导出的中文字符转换问题,要从两个方面来看:...
------------------------------------------------- IMP 可能遇到的错误 ------------------------------------------------- 1. 与role有关的错误 IMP-00003: ORACLE error 1925 encountered ORA-01925: maximum of 30 enabled roles exceeded 说明: 如果该user建立一个角色时,Oracle自动会将这个角色以WITH...
------------------------------------------------- EXP 可能遇到的错误 ------------------------------------------------- 1. 与数据库版本有关的错误 不能用oracle9.2的exp导出oracle8i的数据 会提示:找不到视图 解决办法: <<Oracle.对IMP_EXP的简介.htm>> 在8i上执行9.2的 CATEXP.SQL...
------------------------------------------------- 如何 user import? ------------------------------------------------- 获取表空间定义脚本和用户定义脚本, 预先创建所有的表空间; 预先创建所有的用户; 预先创建相关的角色 逐一对每个用户执行 user import !...
------------------------------------------------- 关于 full export DMP 文件内容 ------------------------------------------------- 进行 v9.2 full export 时,dmp文件中包含了: . 除 SYSTEM 表空间以外的所有表空间定义 . sys/system 用户的口令 . 其它用户的定义,但不包括这些保留模式名 ORDSYS MDSYS...
------------------------------------------------- 关于exp/imp ------------------------------------------------- !如果导入用户数据前,用户的表已经存在(用脚本创建之), 那么导入时,即使选择IGNORE=Y“忽略对象已存在的错误”,imp也可能失败; 失败的原因应该是 imp...
user 导入模式: # linux上的命令脚本 export v_USER=HUSER imp userid="'/ as sysdba'" buffer=409600 ignore=N fromuser=$v_USER touser=$v_USER file=full-070921.dmp log=log-$v_USER.txt exp的一个参数: COMPRESS import into one extent (Y)...
数据库中SQL hard parse太高。耐着性子将所发现的问题SQL提交给相关人员进行修改,改为binding 的方式... 但还是有大量的SQL无法修改, 整个系统中的多版本SQL还是很多! 无奈之下,昨天只好修改 cursor_sharing 参数,从EXACT到SIMILAR Wed Oct 10 17:25:48 2007 ALTER SYSTEM SET cursor_sharing='SIMILAR'...
rdbms/admin/sql.bsq 用途:CREATE DATABASE过程中,Oracle会调用$ORACLE_HOME/rdbms/admin/sql.bsq脚本来创建数据字典。 据说可以通过手工修改sql.bsq文件来更改数据库字典对象参数,从而实现特殊要求数据库的创建或测试自定义库。 一篇讨论bootstrap$和数据库open过程之间关系的帖子...
1、先说简单的--v$sqltext中有内存中完整的sql语句,SQL被piece字段分割成64字节的片断,但没有该语句的统计信息,比如执行次数等。 2、v$sql与v$sqlarea这两个视图都包含统计信息,比较容易混淆: v$sql与v$sqlarea的源都是一个:X$KGLCURSOR SELECT view_definition FROM v$fixed_view_definition WHERE...
要放长假了,决定做一个数据库全备。 为什么直到现在才做?因为鄙人这个所谓DBA,其实跟业务系统开发紧密相关,抽不出时间做DBA该做的事情。 我每天都要祈祷:RAID5不要同时坏两块盘。在祈祷声中,日子就这么一天天过着。 本来向用RMAN来着,却发现RMAN不听使唤!无奈还是用cp吧。...
select count(*) into num_count from (select 1 from dual where exists (select 1 from the_table where the_column = v_valud)); 你瞧得起这样的程序员吗? 另外:强烈鄙视只写代码不写注释的所谓程序员!
perfstat帐号能通过dba_tables视图查询到所有用户的表,想当然地以为也能通过all_tables查询到所有用户的表。 恰好被查询用户有相当一部分表授权给了PUBLIC,因此用perfstat帐号初步查询all_tables时,能查询到一些表,就以为查询没有错误。...
有100个文件,编号从1到100,文件名为log1.txt到log100.txt。在有些程序中,排序存在问题,如log1.txt的下一个文件不是log2.txt,而是log10.txt。 为了适应这些程序的排序方式,需要将文件编号修改为001到100,也就是将文件名模式从log1.txt, log2.txt, log3.txt... 修改为 log001.txt, log002.txt, log003.txt....
为了优化ORACLE SQL语句,需要跟踪会话。明明很简单的操作,可是一直都没有产生TRACE文件:( 无比郁闷中,最后发现被跟踪的是测试系统进程的会话,可是却在操作生产系统的程序。 都是 想当然 、 不细心 惹的祸啊!谨记! 将就将就,将本贴放在ORACLE分类下吧。
for 9i document: Oracle9iR2.Database.Concepts Backup and Recovery Concepts Recovery Manager Reference Oracle9i Database Administrator's Guide Oracle9i Database Performance Tuning Guide and Reference 谨记!特别是第一篇!
DUMP(expr[,return_fmt[,start_position[,length]]]) Purpose DUMP returns a VARCHAR2 value containing the datatype code, length in bytes, and internal representation of expr. The returned result is always in the database character set. The argument return_fmt specifies the format of...
如果session被kill,那么v$session的paddr将指向一个虚拟地址,就需要通过如下语句查询出被kill会话对应的进程信息,然后再去kill进程。 -- 查询死进程(无session对应的进程) -- 注意:要去掉查询结果中的 D000 S000 等进程 select addr, pid, spid, username, serial#, terminal, program, background from...
-- 供管理员查找所有会话的详细信息 select p.spid SRV_PID, p.USERNAME SRV_USER, p.TERMINAL SRV_TERM, p.PROGRAM SRV_PROG, s.SID, s.SERIAL#, s.USERNAME DB_USER, s.LOGON_TIME, s.STATUS, s.OSUSER CLI_USER, s.PROCESS CLI_PID, s.MACHINE CLI_HOST, s.TERMINAL CLI_TERM, s.PROGRAM CLI_PROG from v$process...
关系是 1 : 0~n 如:会话结束后,进程可以保留; 又如:一个进程可以产生两个会话(另一个来统计前一个的 v$sesstat) SQL*PLUS: DISCONNECT 更准确的叫法是 DESTROY_ALL_SESSIONS CONNECT 更准确的叫法是 CREATE_SESSION 自己的一些理解:...
9i: 如果是以 * AS SYSDBA/SYSOPER (*代表/或SYS或SYSTEM) 身份登录,则
select userenv('SESSIONID') from dual
返回 0
audsid是什么?为何SYSDBA/SYSOPER 用户的SESSION的audsid=0?
另外,如果以普通的SYSTEM登录,userenv('SESSIONID')非0。
还不知道答案。待续...
v$session.PROCESS: Operating system client process ID (Client side) 是连接数据库的客户端程序的进程号 如果是WINDOWS...
在输入SQL语句时,常常会忘记列的名字,只好取消已经完成的输入,然后DESC TABLE_NAME,然后重新输入SQL. 一个简易的办法是输入回车另起一行,在新行上首先输入#字符,然后紧跟一条SQL*PLUS命令(注意不是SQL语句),回车后,系统会首先显示SQL*PLUS命令的执行结果,然后返回被中断的SQL语句,提示继续输入。 附:...
对比方法(WINDOWS平台): 首先设置一个内存参数,如large_pool_size,启动ORACLE,然后通过procexp看Virtual Size 调整内存参数,再看Virtual Size的变化 我调整的是large_pool_size参数: 第一次设置为4M,Virtual Size=234312K 第二次设置为16M,Virtual Size=246600K Virtual Size Delta=12288K=12M...
总容易忘记这个写法,故记上一笔以备不测 select level lv from dual connect by level < n; 8i不支持select level from dual connect by level < n的语法; 9i新引入,但却有问题; 10g中问题解决 真是没想到啊。 现在可以明确9i存在的问题:在SQL*PLUS中查询select level from dual connect by...
原来一直以为双引号只是一个普通的字符,没有任何作用。 今天在论坛中看到一篇帖子 http://www.itpub.net/842234.html ,谈的是 oracle中单引号(')与双引号("),才发现错了。 做个简单的总结: 1)一般来说,字符串中的双引号仅仅被当作一个普通字符进行处理。此时,双引号不需要成对出现: SQL> select...
好像没有判断一个字符是全角还是半角的函数。 但有转换函数:TO_MULTI_BYTE(string) 和 TO_SINGLE_BYTE(string)。还有一个TRANSLATE(string, from, to)也可以派上用场。 SQL> select to_multi_byte('abc123(),./;'':"[]{}|') from dual; TO_MULTI_BYTE('ABC123(),./;'':"[]{}|')...
Q: 服务如何选择启动参数文件SPFILE或PFILE? 测试: 在windows 平台上,通过服务启动数据库,或者通过oradim启动数据库时, 启动程序会查看 ORA_ORCL_PFILE 注册项的设置。 如果设置正确,则通过 PFILE 启动系统;否则会根据下面的搜索次序来决定。 参考资料: 关于pfile和spfile的关系...
从 Mon Aug 6 11:13:21 2007 开始,数据库出现了很多00600错误 ksedmp: internal or fatal error ORA-00600: internal error code, arguments: [ttcgcshnd-1], [0], [], [], [], [], [], [] 数据库版本 ORACLE 9204 for linux TRACE内容如下: Current SQL statement for this session: SELECT VALUE FROM...
JAVA应用程序频繁连接数据库,需要跟踪。 可以从v$session跟踪会话,也可以从listener.log查看连接记录。 但是v$session看到的Program和Module都是“JDBC Thin Client”, listener.log记录的是CID=(PROGRAM=)(HOST=__jdbc__)(USER=) 这是为什么呢? 查看全文
关于UPDATE语句 一般的update语句格式比较简单,由where过滤子句和set子句组成。 当where和set都需要关联一个表进行查询时,整个update执行时,就需要对被关联的表进行两次扫描,显然效率比较低。 查看全文
1)IN EXISTS 查询的有关hint HASH_SJ NL_SJ MERGE_SJ HASH_AJ NL_AJ MERGE_AJ 2)如果子查询中是正常表(或者临时表),执行计划一般会走HASH JOIN (SEMI) 可是如果是table()表,执行计划一般NESTED LOOPS (SEMI)。 如此则效率会较低;可以进行 /*+ HASH_SJ */ 提示 查看全文
A B 两表做连接 1)正常连接时,如果对于A表中的一条记录,B表有两条匹配的记录,则A表的记录会返回2次。 2)半连接的特点 3)两者何时等价? 查看全文
想传入查询参数到存储过程中,但参数代表一个集合。不知该如何实现。 首先是参数用什么类型?然后是在PL/SQL中查询语句的条件该如何写? 期望的SQL查询是类似这样的: select * from aaa where col1 in (v1, v2, v3, v4) 查看全文
UNDO表空间一直增大到23GB,空间快满了,忍无可忍,按照 http://www.eygle.com/archives/2005/11/oracle_howto_shrink_undo_tablespace.html 新建并切换到该新UNDO表空间,然后删除表空间及文件 DROP TABLESPACE "UNDOTBS" INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS...
ORA-01722 invalid number很容易理解,无须多言,一般发生在显式的to_number()类型转换的参数错误时。 前几天我也遇到了一个由于直觉作怪而差点被忽略了的ORA-01722错误。 查看全文