在系统迁移或升级的时候,可能会有oracle JOB迁移的需求。
对于10G的系统好说。可以用下面的办法:
userid="/ as sysdba"
directory=EXP_DIR
dumpfile=expdp_job.dmp
logfile=expdp_job.log
include=job
对于9i库好象有点复杂:
可以用下面的办法。
set echo on
conn sm ---------->JOB所在的用户名。
set serveroutput on;
declare
mycall varchar2(3000);
begin
dbms_job.user_export(111, mycall); 111------>为JOB的ID。
dbms_output.put_line(mycall);
end;
/
以上信息从dba_jobs视图里得到。 ......
审计视图
STMT_AUDIT_OPTION_MAP -- 审计选项类型代码
AUDIT_ACTIONS -- action代码
ALL_DEF_AUDIT_OPTS -- 对象创建时默认的对象审计选项
DBA_STMT_AUDIT_OPTS -- 当前数据库系统审计选项
DBA_PRIV_AUDIT_OPTS -- 权限审计选项
DBA_OBJ_AUDIT_OPTS
USER_OBJ_AUDIT_OPTS -- 对象审计选项
DBA_AUDIT_TRAIL
USER_AUDIT_TRAIL -- 审计记录
DBA_AUDIT_OBJECT
USER_AUDIT_OBJECT -- 审计对象列表
DBA_AUDIT_SESSION
USER_AUDIT_SESSION -- session审计
DBA_AUDIT_STATEMENT
USER_AUDIT_STATEMENT -- 语句审计
DBA_AUDIT_EXISTS -- 使用BY AUDIT NOT EXISTS选项的审计
DBA_AUDIT_POLICIES -- 审计POLICIES
DBA_COMMON_AUDIT_TRAIL -- 标准审计+精细审计
一些脚本
下面这个脚本可以找出系统开了哪些 系统审计 ......
--------------------显式游标
--查询数据
select * from employees;
--定义部分
declare
--声明游标
cursor mycur is select * from employees where employee_id<120;
--定义一个集合变量用于存储某个表的一条记录
rowdata employees%rowtype;
--执行部分
begin
--打开游标
open mycur;
loop
--在循环中用fetch提取记录
fetch mycur into rowdata;
dbms_output.put_line('salary:'||rowdata.salary||' '||'hire_date:'||rowdata.hire_date||' '||'first_name:'||rowdata.first_name);
&n ......
在数据库中,有两个用户usera,userb,如果在b中有个存储过程,需要用a的用户去调用,(比如b是权限很高的用户,而a只是普通用户,为了屏蔽给a最小的权限只能如此)。于是,我就用grant execute on 存储过程名 to usera。这样,在a的用户下面就能看到存储过程了,但是我执行以后,还是报ora-1031,说是没有权限,经过于高手交流,说是需要将存储过程之中涉及的表的查询权限赋值给a。于是我再次进行赋权,但是我的存储过程中的表都是动态生成的,一天一个,而又不想给他any的权限。被逼无奈,又冥思苦想,发现存储过程能够正常的记录日志,就是操作日志表。于是得出结论:如果给另一个用户赋权以后,当它执行存储过程时,就相当于存储过程在自己的用户下执行,不必再给表赋权了,把高手的结论推翻了。但是为什么还有1031的权限问题呢,继续跟踪!发现语句execute immediate语句中有truncate语句,需要清除a不用户的表。而b用户没有drop any table或者a用户表的权限!这次是真正的问题,所在,于是赋权,问题OK。
结论:存储过程赋权以后,相关的任何表和过程都不用再次赋权。就像语言对外提供的方法一样!
execute immediate “tr ......
Oracle基本概念/术语
数据库(Database)
是磁盘上存储的数据的集合(包括配置文件、数据文件、日志文件和控制文
件等)
数据库实例(Database Instance)
运行在数据库文件上的一组Oracle后台进程/线程以及一个共享内存区。数据
库可以由实例装载和打开。
数据库服务名( Database Service_Name)
从oracle8i开始引入,数据库客户端与服务器端连接时建议指定其数据库服务
名,而不是数据库实例名。 ......
CLOB:用来存储单字节的字符数据
NCLOB:用来存储多字节的字符数据
BLOB:用于存储二进制数据
BFILE:存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。
CLOB,NCLOB,BLOB都是内部的LOB类型,最长4G,没有LONG只能有一列的限制。
select lpad(to_number(nvl(max(classid),to_number(002)*1000)) + 1,length('parentid')+3,'0') from courseclass where parentid = 002
select lpad(to_number(nvl(max(classid),to_number(0)*1000)) + 1,decode(0,0,3,length(0)+3),'0') from courseclass where parentid = 0
1.TRUNC(for dates)
TRUNC函数为指定元素而截去的日期值。
其具体的语法格式如下:
TRUNC(date[,fmt])
其中:
date 一个日期值
fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去
下面是该函 ......