Archive for ‘Oracle’ Category

FAT32引起的ORA-01653错误

昨天同事在执行一个存储过程时报如下错误:
ERROR at line 1: ORA-06502: PL/SQL: numeric or value error ORA-06512: at “D_INSIGHT.CREATE_EXTEND_TABLE”, line 53
ORA-01653: unable to extend table D_INSIGHT.DMS_DSR_MAIN by 128 in tablespace USERS ORA-27059: skgfrsz: could not reduce file size
OSD-04005: SetFilePointer() failure, unable to read from file O/S-Error: (OS 112) There is not enough space on the disk.
ORA-06512: at line 1
查看了一下该表对应的表空间(该表空间为LMT,段空间管理为自动),发现文件使用率已经达到99.92%,文件大小为4G,但检查该表空间的数据文件,发现已经设置为自动扩展,文件大小限制为32767MB,再检查硬盘分区,还有4GB的空间,那就奇怪了,按道理 oracle 会自动扩展文件大小来增加空间…再看一下错误信息:OSD-04005: [...]

SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色

今天执行autotrace时,出现如下错误:
SQL> set autotrace on
SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色
SP2-0611: 启用STATISTICS报告时出错
SQL> show user
USER 为”D_INSIGHT” –D_INSIGHT为普通用户
检查dba_role_privs:
SQL> conn sys/xxx@dd as sysdba
已连接。
SQL> select * from dba_role_privs where grantee=’D_INSIGHT’;
GRANTEE GRANTED_ROLE ADM DEF
—————————— —————————————————— —
D_INSIGHT PLUSTRACE NO NO
SQL>

Oracle事件列表

oracle 常见事件如下:
10000 control file debug event, name ‘control_file’
10001 control file crash event1
10002 control file crash event2
10003 control file crash event3
10004 control file crash event4
10005 trace latch operations for debugging
10006 testing - block recovery forced
10007 log switch debug crash after new log select, thread %s
10008 log switch debug crash after new log header write, thread [...]

Data block的物理结构

载自:http://epub.itpub.net/9/9.htm
1.Data block物理结构图:

如何得到存储过程/函数的参数列表?

昨天一同事问我, oracle 中如何得到存储过程和函数的参数列表?
在SQL SERVER 2000中,可以通过查询INFORMATION_SCHEMA.PARAMETERS来实现:
SELECT
SPECIFIC_NAME,
PARAMETER_NAME,
DATA_TYPE,
PARAMETER_MODE
FROM INFORMATION_SCHEMA.PARAMETERS
ORDER BY SPECIFIC_NAME
SPECIFIC_NAME PARAMETER_NAME DATA_TYPE PARAMETER_MOD
———————————————- —————————— ——————- ————————
sp_QueryPONumDetailMaterialInfo @MaterialID varchar IN
sp_QueryPONumDetailMaterialInfo @StoredID varchar IN
sp_QueryPONumInfo @CustomerID char IN
sp_QueryPONumInfo @PONum varchar IN
sp_QueryPriceInfo @CustomerID char IN
sp_QueryPriceInfo @MaterialID varchar IN
sp_QueryStoredInfo @StoredID char IN
sp_QuerySubBomInfo @BomID varchar IN
sp_QueryUserAuth @LogonID varchar IN
sp_QueryUserAuth @Password varchar IN
sp_SelectSubBomInfo @BomID varchar IN
sp_SelectSubBomInfo @ProductNo varchar IN
sp_SelectSubBomInfo @CustomerID char IN
sp_SelectSubBomInfo @OrderTotal numeric [...]

如何将EXP出来的数据IMP到不同表空间

前几天部门经理在IMP数据时想将数据导入到不同于原系统的表空间去,却发现怎么也不成功,数据还是导入到原来的表空间。
我看了一下,他在新系统上创建的这个用户授予了CONNECT,RESOURCE,DBA等角色,而且这个用户有UNLIMITED TABLESPACE这个系统权限。
总的来说, oracle 并没有提供什么参数让你将数据导入到指定的表空间中,数据默认还是导入到它原来所在的表空间。你可以用IMP 的SHOW参数可以看到其创建脚本中会指定TABLESPACE参数,而这个值是原系统该对象所在的表空间,跟你用户默认的表空间是没有关系的,如下:
“CREATE TABLE “EMPLOYEES” (”EMPLOYEE_ID” NUMBER(6, 0), “FIRST_NAME” VARCHAR2″
“(20), “LAST_NAME” VARCHAR2(25) NOT NULL ENABLE, “EMAIL” VARCHAR2(25) NOT NU”
“LL ENABLE, “PHONE_NUMBER” VARCHAR2(20), “HIRE_DATE” DATE NOT NULL ENABLE, “”
“JOB_ID” VARCHAR2(10) NOT NULL ENABLE, “SALARY” NUMBER(8, 2), “COMMISSION_PC”
“T” NUMBER(2, 2), “MANAGER_ID” NUMBER(6, 0), “DEPARTMENT_ID” NUMBER(4, 0)) ”
“PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL [...]

IMP-00010: 不是有效的导出文件,标题验证失败

今天美国那边发了个dmp文件过来,要求将数据恢复到苏州这边的server,但执行imp时发生如下错误:
IMP-00010: 不是有效的导出文件,标题验证失败
IMP-00000: 未成功终止导入
我的imp版本是9205,目标数据库也是9205,而美国那边的dmp文件未告诉我版本
在google上查找了一下,大概有两种情况:
1.imp/exp的版本不对,也就是说低版本的导出,可以用高版本的导入,但高版本导出不能用低版本的导入,这个版本不只是指imp/exp的版本,也是指数据库的版本
2.可能你在用ftp download时未设置binary的传输方式,导致文件损坏
用UltraEdit-32打开dmp文件可看到版本信息,美国传过来的dmp文件的信息如下:
XPORT:V10.02.01

从中可以看出其版本是10.02.01

所以我执行imp时报错是因为版本问题,后来用10g的imp导入到10g的数据库就成功了

ORA-12535: TNS: 操作超时

今天在server上安装了10g的数据库,listener都已经配好,客户端也能tnsping,但连接的时候报如下错误:
SQL> connect sys@ocdb as sysdba
请输入口令:
ERROR:
ORA-12535: TNS: 操作超时
Server的OS是windows 2003 enterprise edition
检查了一下windows 2003的防火墙,有开放1521端口,也把 oracle .exe这个程序开放了,怎么还是没办法连接呢?在防火墙中检查了一下 oracle .exe这个选项,发现其指向9i的目录,而我新增加的数据库是10g的!原来是忘记把10g的 oracle .exe文件添加进去了:(
把10g的 oracle .exe文件也添加进去,客户端就可以连上了:)

ORA-12500: TNS: 监听程序无法启动专用服务器进程

今天因项目需要,在server上安装了9i跟10g两个版本的数据库,接着用9i的listener去监听9i和10g两个版本的数据库,在客户端用OEM或sqlplus去连接10g的数据库时报如下错误:
SQL> connect sys@ocdb as sysdba
请输入口令:
ERROR:
ORA-12500: TNS: 监听程序无法启动专用服务器进程
用tnsping是可以ping通的。
查了相关资料,大概都是讲oracleservice<sid>服务没起来,但我的service却是起来的,后来想了想会不会是用低版本的listener去监听高版本的数据库造成的呢?
做个测试:
当用9i的listener时,可以连接9i的数据库,但不能连接10g的数据库
改成用10g的listener时,两个版本的db都可以连接
所以估计就是由于listener的版本造成的

Oracle工具篇之Tkprof

Tkprof工具可用来格式化sql trace产生的文件,让你更容易看懂trace的内容
用法:
tkprof tracefile outputfile [explain= ] [table= ] [print= ] [insert= ] [sys= ] [sort= ]
参数说明:
tracefile:你要分析的trace文件
outputfile:格式化后的文件
explain=user/password@connectstring
table=schema.tablename
这两个参数是一起使用的,通过连接数据库对在trace文件中出现的每条sql语句查看执行计划,并将之输出到outputfile中
注意,该table必须是数据库中不存在的,如果存在会报错

Page 5 of 8«12345678»

    搜索本站

    站点日历

    7月 2010
    « 4    
     1234
    567891011
    12131415161718
    19202122232425
    262728293031  

    订阅本站

    文章分类

    最新日志

    热点文章

    日志存档

    常用标签