状态为active的日志组也是不允许删除的
状态为active和current的日志组都不允许删除,状态是current的logfile member也不允许删除,但是状态是active的logfile member却可以删除[@more@]SQL> alter database drop logfile group 3;alter database drop logfile group 3*第 1 行出现错误:ORA-01623: 日志 3 是实例 orcl (线程 1) 的当前日志 - 无法删除ORA-00312: 联机日志 3 线程 1:'G:ORACLEPRODUCT10.2.0ORADATAORCLREDO03.LOG'ORA-00312: 联机日志 3 线程 1:'G:ORACLEPRODUCT10.2.0ORADATAHOSTREDO03.LOG'SQL> alter system switch logfile;系统已更改。SQL> alter
sqlplus里如何修改default的系统编辑器
简单的整理了一下win和linux下的办法,和doc的描述稍有出入[@more@]doc原文如下:Using a System Editor from SQL*PlusIf you run an ED or EDIT command at the SQL*Plus prompt, then the system starts an operating system editor, such as ed, emacs, ned, or vi. However, the PATH environment variable must include the directory where the editor executable is located.When you start the editor, the current SQL buffer is placed in the editor. When you exit the editor, the changed SQL buffer is returned to SQL*Pl
64位机器上使用PL/SQL Developer 连接不上Oracle的解决办法
oracle安装在了64位的机器上,使用plsql developer不能连接db,尽管tnsping可以成功,但是通过plsql developer连接时提示错误ORA-12154,可以通过2种办法解决[@more@]1.通过安装32位的oracle client2.如果是在db server上要使用plsql developer,那么其实只要把plsql developer不安装在64位系统的c:progrom files(x64)下就可以了
system trigger中的servererror事件验证
我们可以使用系统触发器中提供的servererror事件来捕获系统产生的错误...[@more@]--t_trace是一个跟踪表,用户记录由trigger捕获的信息SQL> desc test1.t_trace;名称 是否为空? 类型----------------------------------------- -------- ----------------------------USERNAME VARCHAR2(10)TERMINAL VARCHAR2(10)IP VARCHAR2(20)TIME DATEACTION VARCHAR2(30)ERRORMSG VARCHAR2(100)--========================create or replace trigger trigg_systemafter servererror on databasedeclarebegin insert into t_trace values(sys.login
Record-based inserts and updates
随手记录一下...[@more@]declarev_id int;v_id1 v_id%type; --%type不仅可以使用column名,也可以使用已经定义好的变量cursor c1 is select * from t for update;v_t c1%rowtype; --%rowtype不仅可以使用表名,也可以使用定义过的cursorbeginfor i in c1 loopif mod(i.id,2)=0 then update t set row=i where current of c1;elseinsert into t values i;end if ;end loop;commit;end ;
通过dbms_scheduler执行一个外部job时出现错误
郁闷的job执行问题...[@more@]在c:temp下写了一个文件dbrman.bat,内容如下:rman target / cmdfile=dbbak.sql log=dbbak.txt append执行时错误如下:SQL> exec dbms_scheduler.run_job('my_job_dbbak');BEGIN dbms_scheduler.run_job('my_job_dbbak'); END;*第 1 行出现错误:ORA-27369: 类型为 EXECUTABLE 的作业失败, 退出代码: 函数不正确。ORA-06512: 在 "SYS.DBMS_ISCHED", line 150ORA-06512: 在 "SYS.DBMS_SCHEDULER", line 441ORA-06512: 在 line 1网上搜了一下大部分都说由于服务OracleJobSchedulerORCL没有
proxy uesr的一点测试
有些时候我们可能需要以其他用户的身份登录db做一些事情(切换用户的身份),这个时候就需要知道其他用户的口令,如果不知道的话就无法实现,当然oracle中也有不太理想的办法来实现,从10。2开始,oracle提出了proxy user的概念可以很好的实现。[@more@]--简单的测试了一下,应该是10.2提出的agent user的概念SQL> create user test1 identified by test1;用户已创建。SQL> create user test2 identified by test2;用户已创建。SQL> grant connect to test1,test2;授权成功。SQL> alter user test2 grant connect through tes
session的状态什么时候是sniped
http://www.itpub.net/thread-1233950-1-1.html测试的缘由来自上面的帖子[@more@]--事先创建一个profile:prof_test,idel_time为1分钟session 1:SQL> alter user test profile prof_test;用户已更改。SQL> show parameter limietSQL> show parameter limitNAME TYPE VALUE------------------------------------ ----------- ------------------------------asm_power_limit integer 1java_soft_sessionspace_limit integer 0resource_limit
利用dbms_redefinition实现普通heap表和分区表的转化
客户想把一个重要的普通表转化为分区表,简单的测试了一下9i就引入的dbms_redefinition[@more@]SQL> create table t2(id int primary key , name varchar2(10) , time date);表已创建。SQL> insert into t2 values(1,'a',to_date('2009/09/02 10:12:21','yyyy/mm/dd hh24:mi:ss'));已创建 1 行。SQL> insert into t2 values(2,'b',to_date('2009/10/10 10:12:21','yyyy/mm/dd hh24:mi:ss'));已创建 1 行。SQL> insert into t2 values(3,'c',to_date('2009/11/20 15:12:36','yyyy/mm/dd hh24:mi:ss'));已创建 1 行。SQL> in
nls参数、环境变量以及函数等起作用的顺序!
nls参数、环境变量以及函数起作用的顺序是:instance级参数--->nls_lang--->session级参数--->函数。[@more@]C:>set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBKC:>sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期三 7月 29 21:01:38 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> show parameter nls_date_formatNAME
使用call在sqlplus中调用procedure和funtion!
call 不可以使用在plsql中,只能在sqlplus中使用。[@more@]SQL> create or replace procedure proc_test2 is3 v_count number;4 begin5 select count(*) into v_count from tt;6 dbms_output.put_line(v_count);7 end;8 /过程已创建。SQL> set serveroutput onSQL> call proc_test();2调用完成。--使用call调用过程时即使过程没有参数依然要加上括号SQL> exec proc_test;2PL/SQL 过程已成功完成。SQL> create or replace function fun_test(p_a int , p_b int)2 return number3 is4 begin5 return p_a/p_b;6 end fun_test;
audit对象权限时的not exists选项!
在审计对象权限时可以通过not existes选项可以对不存在的对象以及语句进行审计。[@more@]SQL> show userUSER 为 "XYSWCH"SQL> audit not exists;审计已成功。SQL> select * from tt7;select * from tt7 *第 1 行出现错误:ORA-00942: 表或视图不存在SQL> select action_name,obj_name from dba_audit_exists where obj_name='TT7';ACTION_NAME OBJ_NAME---------------------------- ----------SELECT TT7SQL>--审计结构会记录在视图dba_audit_exists中
对象audit时的一个有用option:ON DEFAULT
在使用对象权限审计时如果使用on default选项,有一下几个方面需要注意:1、设置on default之后,它仅对之后创建的对象生效2、on default对之后创建的对象永远生效,即使以后设置了noaudit all(或者其他)on default;除非单独对某个对象设置noaudit all(或者其他)on object_name才能彻底取消on default选项引起的审计3、使用view时,对表和view同时记录审计结果(union)[@more@]ON DEFAULT Specify ON DEFAULT to establish the specified object options as default object options for subsequently created objects. After you hav
一个跟踪dml动作的的触发器!
讲课时给学员举的一个例子,顺手记录一下![@more@]create or replace trigger trigg_traceafter insert or update or delete on t1 for each rowdeclare -- local variables here v_id int; v_name varchar2(10); v_flag varchar2(10);begin if inserting then v_id := :new.id; v_name :=:new.name; v_flag :='insert'; else if updating then v_flag :='update' ; else v_flag :='delete' ; end if ; v_id := :old.id; v_name :=:old.name; end if ; insert int
impdp中remap_datafile的测试。
remap_datafile目前我的理解是一定是用在全库导出和全库导入这个操作上,因为只有全库导出才导出create tablespace的语法,而导入时需要重新创建表空间,这样的就需要通过remap_datafile来重新map表空间的datafile的位置。我测试的是把orcl这个库全库导出然后full导入到test这个库中。之所以要记录一下,是因为好长时间自己理解不了doc上对remap_datafile的解释[@more@]导出script比较简单,就不写了,导入如下:C:>impdp 'sys/system@test as sysdba' directory=expdp_dir dumpfile=full.dmp full=y logfile=full_imp4.txt parfile='c
scn_to_timestamp以及timestamp_to_scn的相互转化!
这两个函数相互转化时有时候经常控制不好时间的格式,写个简单的例子被查。[@more@]C:>sqlplus sys/system@orcl_d as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 3月 10 09:08:11 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> select current_scn from v$database;CURRENT_SCN----------- 2608762SQL> select scn_to_timestamp(2608762) from dual
对象前面是用户名还是schema名!
我们通常访问其他用户下的对象时如果不创建同义词通常需要在被访问的对象前面加上这个对象的所有者(owner),那么这个所有者是对象的用户名还是schema?通过下面测试自己觉得应该是schema名![@more@]SQL> connect b/b已连接。SQL> select user#,username,schema#,schemaname from v$session where sid=(select sid from v$mystat where rownum=1); USER# USERNAME SCHEMA# SCHEMANAME---------- ---------- ---------- ------------------------------ 35 B 35 B--访问a用户下的tt表,事先做过了
自治事务!
自治事务允许我们在"事务中创建事务"[@more@]SQL> truncate table tt7;表被截断。SQL> create or replace procedure proc_autotrans 2 is 3 pragma autonomous_transaction; 4 begin 5 insert into tt7 values(1,'autonomous'); 6 commit; 7 end; 8 /过程已创建。SQL> begin 2 insert into tt7 values(1,'niminblock'); 3 proc_autotrans; 4 rollback; 5 end; 6 /PL/SQL 过程已成功完成。SQL> select * from tt7; ID NAME---------- ---------- 1 autonomous--只插入
事务的原子性!
事务的原子性是指事务中的动作要么发生,要么不发生.不想做太多的解释,想了解可以看tom的力作,这里只是随手记录个测试过程.[@more@]SQL> alter table tt8 add constraint pk_tt8 primary key (id);表已更改。SQL> edit已写入 file afiedt.buf 1 create or replace procedure proc_tt8 2 is 3 begin 4 insert into tt8 values(1,'a'); 5 insert into tt8 values(1,'a'); 6* end;SQL> /过程已创建。SQL> begin 2 proc_tt8; 3 end; 4 /begin*第 1 行出现错误:ORA-00001: 违反唯一约束条件 (SYS.PK_TT8)ORA-06512
我渴望的insert操作!
呵呵,都不知道起个啥名字好,这个操作我渴望已久了,但遗憾的是自己才发现,其实oracle可能一直就支持,汗,以前没有细读过tom的书,doc也看的不细...[@more@]SQL> desc tt7 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER(38) NAME VARCHAR2(10)SQL> select * from tt7; ID NAME---------- ---------- 1 a