truncate empty table ora-02266, why? cause

oracle 不允许truncate 一个启用外键引用的父表,因为truncate 不会触发任何trigger和任何constraint验证,当然它也不会关心子表是不是真的为空或是不是没有参照。

DBMS_SHARED_POOL包 创建与使用

DBMS_SHARED_POOL 是从10.2开始提供的包,可以访问shared_pool中的对象,功能检查大于批定大小的对象,加入/移除shared_pool对象,11.1再完善..

Script: Procedure 启用/禁用表上全部外键

一个充满外键的表中DML,因为验证的原因会浪费很多额外时间,如果在确保数据的合法性的前提下先禁用外键约束,操作完后再启用,可以提高你的DML速度,下面一个procedure启用/禁用表上的全部外键。

ORA-600 [25016] internal error when ALTER DATABASE OPEN ORA-01092

sql>ALTER DATABASE OPEN;
ALTER DATABASE OPEN
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced

Script: tom’s printtab code你值得拥有

–Tom Kyte’s printtab code
比如一个查询的列很多,在命令行窗口下看的很乱,就可以用tom的printtab转换成列打印出来

10046跟踪drop tablespace

这两天一个库因操作了基表的dictionary出错,测试一下正常的drop tablespace做了哪些操作

ORA-00600 [kghfrempty:ds] internal error issue

—- Error Stack Dump —–
ORA-00600: 内部错误代码, 参数: [kghrcdepth:ds], [0x7FFE37407008], [], [], [], [], [], [], [], [], [], []
—– SQL Statement (None) —–
Current SQL information unavailable – no cursor.

Script: oracle procedure error 生成txt日志文件

前天有网友问题这个问题,今天测试一把,需求应该是如果producre存储过程运行出错,可以写错误日志到OS的文本文件,这样系统管理员就可以看到,无需分配数据库权限.

AWR 之table scans (short tables)

Verify that your KEEP pool is sized properly to cache frequently referenced tables and indexes. Moving frequently-referenced tables and indexes to SSD or the WriteAccelerator will significantly increase the speed of small-table full-table scans.

impdp 挂起 tatement suspended, wait error to be cleared

ORA-39083: Object type INDEX failed to create with error:
ORA-30032: the suspended (resumable) statement has timed out
ORA-01659: unable to allocate MINEXTENTS beyond 59 in tablespace ICMETBS
ORA-39125: Worker unexpected fatal error in KUPW$WORKER.UNLOAD_METADATA while calling DBMS_METADATA.FETCH_XML_CLOB

AWR中的physical writes

investigate moving your high-write datafiles to a smaller data buffer to improve the speed of the database writer process.

AWR 中的consistent gets – examination

“Consistent gets – examination” is different than regular consistent gets. It is used to read undo blocks for consistent read purposes, but also for the first part of an index read and hash cluster I/O

10gR2 commit_write

从10g r2开始在commit时控制redo 如何写的方式提供了几个参数,虽然可以提示性能但也要考虑到它的ACID的缺陷

QUERIES NOT SHARED WHEN CURSOR_SHARING=FORCE (并未共享游标)

前天有个朋友问我了个问题发现v$sqlarea 中文本相同的sql还有很多记录,也就是并未共享游标,也许很多人知道当cursor_sharing=force,可以尽可能的减小hard parse,记住是min,并不是完全防止硬解析,因为解析也很浪费资源

oracle user default role

通过grant 授于用户的角色,在用户登录时默认是全部继承的,除非是用alter user 显示的修改,指定用户连接后默认的角色有哪些,但是用户也可以使用后使用set role再附加已授权的但没启用的角色用于当前session

plsql 轻松得到insert,delete,update更新记录数

今天刚好有人问我这个问题 记录一下,在plsql中有时做几个dml操作但又想知道整个过程的操作的记录数,那可以用SQL%ROWCOUNT变量轻松实现,无论是不是拼的sql,不

cast multiset,nested table,object datatype column

昨看tom的书偶然发现了cast multiset这奇怪语法,回来试一下,主要是为了告诉查询返回是一个set集合,向嵌套表或varray column插入数据使用

Oracle11g新特性:只读表(read only table)

Oracle11g推出了一个新的特性,可以将table置于read only状态,处于该状态的table的不能执行DML操作和某些DDL操作。在Oracle11g之前的版本,只能将整个tablespace或者database置于read only状态。对于table的控制则只能通过权限来设定。

oracle cluster tables 聚簇表

I/O往往是一个事务最浪费请求时间的过程,磁盘I/o的代价是非常大的,因为数据库请求一个磁盘文件中的BLOCK,在read的过程中必须等待物理I/O操作成功完成。

Script: sql 金额数字转换大写(1to壹)

在打印的单中涉及金额的地方,常规都是有中文大写,避免修改。
1001.23¥ 转成 壹仟零壹元贰角叁分