1) Instance in RESTRICTED SESSIONS mode?
Check if the instance is in restricted sessions mode:
select instance_name,logins from v$instance;
If logins=RESTRICTED, then:
alter system disable restricted session;
^-- Checked!
2) JOB_QUEUE_PROCESSES=0
Make sure that job_queue_processes is > 0
show parameter job_queue_processes
^-- Checked!
3) _SYSTEM_TRIG_ENABLED=FALSE
Check if _system_enabled_trigger=false
col parameter format a25
col value format a15
select a.ksppinm parameter,b.ksppstvl value from x$ksppi a,x$ksppcv b
Where a.indx=b.indx and ksppinm=’_system_trig_enabled’;
^-- Checked!
4) Is the job BROKEN?
select job,broken from dba_jobs where job=;
If broken, then check the alert log and trace files to diagnose the issue.
^-- Checked! The job is not broken. ......
启动数据库命令分为三个阶段:
startup nomount
alter database mount
alter database open
本用户读取其他用户对象的权限:
select * from user_tab_privs;
本用户所拥有的系统权限:
select * from user_sys_privs;
---------------------------------------------------------
ORACLE中数据字典视图分为3大类, 用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息。
USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息
ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上其他用户创建的对象但该用户有权访问的信息
DBA_*:有关整个数据库中对象的信息
---------------------------------------------
Oracle 10i
ALTER DATABASE DEFAULT TABLESPACE 修改数据库的默认表空间
-----------------------------------
set echo off;
spool 产生脚本文件的路径
select 'grant select,insert,delete,update on '|| table_name||' to 用户名;' from user_tables;
spool off;
select 'revoke select,insert,updat ......
初始化相关参数job_queue_processes
alter system set job_queue_processes=39 scope=spfile;//最大值不能超过1000 ;job_queue_interval = 10 //调度作业刷新频率秒为单位
job_queue_process 表示oracle能够并发的job的数量,可以通过语句
show parameter job_queue_process;
来查看oracle中job_queue_process的值。当job_queue_process值为0时表示全部停止oracle的job,可以通过语句
ALTER SYSTEM SET job_queue_processes = 10;
来调整启动oracle的job。
相关视图:
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在运行job相关信息
-------------------------
提交job语法:
begin
sys.dbms_job.submit(job => :job,
what => 'P_CLEAR_PACKBAL;',
next_date => to_date('04-08-2008 05:44:09', 'dd-mm-yyyy hh24:mi:ss'), ......
1) Instance in RESTRICTED SESSIONS mode?
Check if the instance is in restricted sessions mode:
select instance_name,logins from v$instance;
If logins=RESTRICTED, then:
alter system disable restricted session;
^-- Checked!
2) JOB_QUEUE_PROCESSES=0
Make sure that job_queue_processes is > 0
show parameter job_queue_processes
^-- Checked!
3) _SYSTEM_TRIG_ENABLED=FALSE
Check if _system_enabled_trigger=false
col parameter format a25
col value format a15
select a.ksppinm parameter,b.ksppstvl value from x$ksppi a,x$ksppcv b
Where a.indx=b.indx and ksppinm=’_system_trig_enabled’;
^-- Checked!
4) Is the job BROKEN?
select job,broken from dba_jobs where job=;
If broken, then check the alert log and trace files to diagnose the issue.
^-- Checked! The job is not broken. ......
先装了数据库,用net调试的时候没有问题,但是生成网站后,在连接数据库的时候提示说客户端的版本太低(意思就是这个),后又装了一个9i的客户端,之后就把相关服务改成手动,N天之后发现数据库不能正常启动。
Message file sp1<lang>.msb not found SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory。
按照网上那此修改oracle_home的方法都不管用。
于是把客户端卸载,重启后发现oracle彻底不能用,准备卸载时发现oracle 提示没有已安装的产品。
错误的根源是在不论在安装精简客户端还是服务器端时都会在注册表中添加一些信息,
1当先安装精简客户端尔后又装服务器端时不会有问题出现,不过精简客户端此时已不再管用。所有的tnsname都以服务器安装的路径为主。
2但是把顺序反过来就会有错,特别是当者不在相同的目录下的时候(精简客户端一般都在系统盘根目录下的oracle目录中)。因为此时注册表信息已发生的改变。HKEY_LOCAL_MANCHINE\SOFTWARE\ORACLE,当你把精简客户端卸载的时候这个目录项会被删除。
2的解决方案: 只需把注册表中上述的相关表项 添加或者修改为oracle服务器端的目录即可。 ......
decode()函數使用技巧
·软件环境:
1、Windows NT4.0+ORACLE 8.0.4
2、ORACLE安装路径为:C:\ORANT
·含义解释:
decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)
该函数的含义如下:
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF
· 使用方法:
1、比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
例如:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。
2、表、视图结构转化
现有一个商品销售表sale,表结构为:
month char(6) --月份
sell number(10,2) --月销售金额
现有数据为:
200001 1000
200002 1100
200003 1200
200004 1300
200005 1400
200006 1500
200007 1600
200101 ......