oracle 启动时ORA-32004问题解决

今天启动一个oracle 服务时报了ora-32004异常,但数据库还是打开了,不影响使用,网上搜了一下资料,发现是参数文件中有一个参数在oracle 10g中已经抛弃但该参数设置了的原因,情况如下
SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE instance started.

oracle 更改表或其它对象所有者(modify table schema)

前段时间听到有个网友问有个表在 user1方案里,怎么修改到user2方案

其实普遍的方法是在user2建表 create table xxx as select * from user1.tabname;

也可以exp 从user1/ 再imp user2方案下,这种可以做多个对象的转移,

我在想有没有一种修改基表的方法,轻易的改变方案或所有者,后来成功了,现在分享一下,不建议在生产环境中用
….

oracle 缩小表空间大小(减小数据文件)

已分配好的表空间,可能开始分的很大,后来怎么让它释放掉一部分还不影响已存在的数据?很多人都有这个疑问,方法很多,exp/expdp 导出表空间数据,建个小的表空间,imp/impdp导入,删除原来的表空间;还有可以在原来的表空间直接做,往大了resize 都知道,可以,但往小了resize 可以么?答案是可以的,只要是未使用的空间。下面开始实验
….

ora-30036 异常解决方法

当你的数据库指定的UNDO表空间很少,并执行一个相对大的事务是就会 与这个错误相遇,你的事务产生的大量 rollback segments或UNDO信息在你的UNDO TABLESPACE放不下。

ora-30036:无法按1024扩展段(在撤消表空间”undotbs1″中)

解决方法两种
…..

如何诊断oracle Job不执行原因?(jobs not running)

刚才有网友提出job创建正常就是不执行,目标是每分钟一次执行一次,

job创建语法如下

SQL> variable job1 number;
SQL> begin
dbms_job.submit(:job1,’p_test;’,sysdate,’sysdate+1/24/60′);
end;

不执行,首先我想到了系统参数job_queue_processes ,show parametere job 值为0,果然,alter system set job_queue_processes=10,给job分配10个进程配额,问题解决。

现把其它可能的原因收集分享一下,如下…..

,

查看oracle 最大并发值

如何查看ORACLE的并发值,也就是说在某一秒同时在线的人数

可是查看v$license视图

v$license视图:

里面记录了Oracle最大的并发数以及当前用户的连接数,

SQL> select SESSIONS_CURRENT,SESSIONS_HIGHWATER from v$license;

Oracle+9i&10g编程艺术:深入数据库体系结构 作者tom 下载

在oracle 界你不应该不知道tom

Tom,Thomas Kyte ,一个人支撑 AskTom 的那个家伙。

现在共享一下他的一本经典之作 中文版,不过还是建议有条件的购买正版书,我买了这本书记的90多元吧很厚很受用,语言很通俗,也感谢翻译的人

oracle 与归档日志相关的几个视图

归档日志占据的数据库举足轻重的位置,以下系统视图来了解归档日志情况

V$ARCHIVE
V$ARCHIVED_LOG 已归档日志详单
V$ARCHIVE_GAP 归档日志丢失
V$ARCHIVE_PROCESSES 归档进程信息
V$ARCHIVE_DEST 查看备份路径情况
….

oracle 分析函数实现跨年度比对

用分析函数对比一个只记录时间区间与一个详细时间记录做对比,用到oracle连接sql server…

Script:oracle拆分逗号分隔字符串 实现split

如果一个字符串中有像逗号或其它符号分隔,你想把它折分成列,实现像c#和java中split函数的功能
如’first field, second field , third field’,

拆成

first field

second field

third field

oracle 取随机整数

oracle 取随机数,可以用dbms_random包,取整数可以用ceil,floor,trunc,round等函数

如,

SELECT DBMS_RANDOM.RANDOM FROM DUAL;

产生一个任意大小的随机数

oracle 停止正在运行的job

ORACLE如何停止一个JOB
1 相关表、视图
2 问题描述
为同事解决一个因为网络连接情况不佳时,执行一个超长时间的SQL插入操作。
既然网络状况不好,就选择了使用一次性使用JOB来完成该插入操作。在JOB执行一段时间后,我发现被插入表有些问题(惭愧,当时也没有先检查检查就做了)。准备停止JOB,因为在JOB运行情况下,我的所有修改都会报系统资源忙的错误。
强行KILL SESSION是行不通的,因为过会儿,JOB还会重新启动,如果执行的SQL也被KILL了通过重新启动的JOB还是会被再次新执行的。
3 解决办法
比较好的方法应该是;

oracle查询最占用资源的查询

从V$SQLAREA中查询最占用资源的查询
select b.username username,a.disk_reads reads,
a.executions exec,a.disk_reads/decode(a.executions,0,1,a.executions) rds_exec_ratio,
a.sql_text Statement
from v$sqlarea a,dba_users b
where a.parsing_user_id=b.user_id
and a.disk_reads > 100000
order by a.disk_reads desc;
用buffer_gets列来替换disk_reads列可以得到占用最多内存的sql语句的相关信息。
V$SQL是内存共享SQL区域中已经解析的SQL语句。
….

oracle procedure等对象失效后编译问题

如果procedure 所使用的表结构发生了改变等其它情况,在相应的xxx_objects表的status字段会变为invalid状态,但是如果在调用时 procedure会自动编译,grant失效对象权限给别人时也会自动编译,也是在dba_objects表可以查到最后一次编译的时间last_ddl_time,但并不是说调用就会重编译

sql 计算字符从后向前出现的位置

sql 计算字符从后向前出现的位置,用两个函数,instr,reverse(空格也算一位)

INSTR方法的格式为
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)

默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。但是下标值还是从前向后的只是如果字符偏后效率快些


sql 计算字符在字符串出现了次数

如何用sql 计算在一个字符串中某个字符出现了几次,如 ‘12,34,12,11’可的逗号出现了3次,思路就是总长度减去该字符替换成空后的长度,在ORACLE 11G中出现了REGEXP_COUNT函数更加方便,

REGEXP_COUNT (source_char, pattern [, position [, match_param]])

这里我们用通用的方法length

实验开始

sql varchar字段中是数字的

如果一个表中有个字符串类型的字段,值中有带字母的也有纯数字,如何找出纯数字的呢?今天发现了translate,当然还可以配合其它函数实现更大的功能!

实验开始

SQL> create table test1(id varchar2(5),
2 insert_date date);

linux 查询占用资源前10个进程

机器觉的慢的都快咽气了,怎么办,查出罪魁祸首,迫不得已时,枪毙几个

[oracle@topbox bdump]$ ps -ef|grep “(LOCAL=NO)”|sort -rn -k 8,8|head -10

oracle 9402 1 67 09:18 ? 00:43:09 oracletopbox (LOCAL=NO)

sql 匹配字符串的括号

如何把表中有这样的值 ‘aaa)bbb)ccc)ddd))aa)’,其实括号应该是成对出现,正确的值应该是aaa(bbb)ccc(ddd)(aa)

如何修改?实验开始

SQL> select regexp_replace(‘aaa)bbb)ccc)ddd))aa)’,'([^)]*)([)])([^)]*)([)])’,’\1(\3)’)newval from dual;

oracle 表添加主键 primary key

根据数据库三范式就是每个表建议要有主键,每个字段不可再分,表与之间不存在部分依赖,数据库的优化首先考虑的也是主键,主键会在对应的字段加唯一约束、加not null,建 索引, 演示如何在oracle创建PK主键,及主键使用反转索引。

怎么为表加主键呢

1,建表同时

SQL> create table test13 (id int primary key);

Table created.

,