丢失controlfile的恢复
做了一个全备RMAN> show all;使用目标数据库控制文件替代恢复目录db_unique_name 为 ORADATA 的数据库的 RMAN 配置参数为:CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # defaultCONFIGURE BACKUP OPTIMIZATION OFF; # defaultCONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACK...
闪回版本查询与闪回事务查询
dd
DBMS_REPAIR
今日学习了杨版主的数据恢复的一些内容。dbms_repair包的工作原理比较简单,是将检测到的坏块标注出来,使随后的DML操作跳过该块,同时,DBMS_REPAIR包还提供了用于保存索引中的包含的标注为坏块中的键值,以及修复freelist和segment bitmap的过程。create tablespace mytest datafile 'E:\data\oradata\test.dbf' ...
RMAN-06059(转)
RMAN> backup format 'd:\backup\%d_%s.bak' tablespace users plus archivelog;启动 backup 于 02-10月-08 当前日志已存档 使用通道 ORA_DISK_1 未找到归档的日志C:\DEMO\ARCHIVE\1_1_66705...
查找没有索引的外键
问题: 生产上曾经出现过因外键上没有索引导致死锁情况,经常需要查找没有索引的外键,以下给出从网上找到的SQL(忘记出处,见谅),整理于此备用。column columns format a20 word_wrappedcolum...
Oracle11.2新特性之INSERT提示IGNORE_ROW_ON_DUPKEY_INDEX
insert提示IGNORE_ROW_ON_DUPKEY_INDEX在 insert into tablea ...select * from tableb中,如果存在唯一约束,会导致整个insert操作失败。使用IGNORE_ROW_ON_DUPKEY_INDEX提示,会忽略唯一约束冲突,回滚当前行,继...
Oracle dbms_scheduler创建带输入参数的JOB
脚本如下:其中P_USER_ATTEND是需要在JOB里调用的存储过程,带有两个参数BEGIN dbms_scheduler.create_program(program_name => 'MY_ATTEND_PROGRAM', &n...
PLSQL获取异常堆栈信息-dbms_utility.format_error_backtrace
创建一个表,插入一条记录:create table test_error_stack( id number primary key)insert into test_error_stack select 1 from dual;commit;CREATE PROCEDURE proc_insert ISBEGIN INSERT INTO test_error_stack SELECT 1 FROM dual;END proc_insert;调用这个过程的时候,会...
SQL Server创建Linked Server访问Oracle
我的本机环境:SQL Server 2008R2 64位Oracle 12cSQL Server端执行以下脚本:exec sp_addlinkedserver @server='LINK2ORACLE', @srvproduct='Oracle', @provider='OraOLEDB.Oracle', @datasrc=N'ORCL'exec sp_addlinkedsrvlogin @rmtsrvname=N'LINK2ORACLE',@useself=N'False',@locallogin=NULL,@rmtuser=N'scott...
Oracle Gateways透明网关访问SQL Server
自己的本机安装了Oracle 12c,公司的平台需要同时支持Oracle与SQL Server,很多时候都有将数据从Oracle同步到SQL Server的需求。通过SQL Server的link Server可以达到目的,但是因为SQL Server都是64位版本,试过很多次都失败了。再安装32位SQL Server也懒得折腾。 因Oracle是12c, 安装...
PL/SQL变量作用域
DECLARE v_i PLS_INTEGER := 100; v_p VARCHAR2(200) := 'a';BEGIN DECLARE v_i PLS_INTEGER := 999; BEGIN dbms_output.put_line(v_i); dbms_output.put_line(v_p); END; dbms_output.put_line(v_i);END;脚本输出:从中可...
Oracle游标打开时遇到并发更新
以前,只知道Oracle的游标里包含的数据在打开的那一刻已经确定了,但是自己没有实际去验证过。今天做了一次测试,发现情况确实如此建表: create table test_cursor( id number, c_name varchar2(20) ); insert into test_curs...
不用分析函数求出每组前几名
create table score( id int, class varchar(20), name varchar(200), score int)insert into score values(1, '一班', 'A1', 60)insert into score values(2, '一班', 'A2', 70)insert into score values(3, '一班', 'A3', 80)insert into score values(4, '一班', 'A4', 90)insert into s...
SQL Server游标使用练习
create table 库存(wareid varchar(13),makeno varchar(40),storeqty numeric(16,6))insert into 库存 select 'A','批号1',30insert into 库存 select 'A','批号2',40insert into 库存 select 'A','批号3',50insert into 库存 select 'B','批号8',15insert into 库存 select 'B','批号9',40insert into 库存 s...
SQL Server动态SQL,绑定变量
create table test_with( pid int, parentid int, name varchar(60))declare @pid int = '99',@name nvarchar(60) = 'ABCD'declare @parentid int = 2declare @sql varchar(3000)set @sql = 'insert into test_with values('+CAST(@pid as varCHAR(10))+','+CAST(@pid as varCHAR(10))+',"'...
SQL Server递归查询
create table test_with( pid int, parentid int, name varchar(60))insert into test_with values(1, null, 'A')insert into test_with values(2, null, 'B')insert into test_with values(3, null, 'C')insert into test_with values(4, 1, 'A1')insert into test_with values(5, 1, 'A2')...
SQL Server SQL语句中的函数调用与Oracle SQL语句函数调用一个有趣的差别
create table t1(col numeric)declare @i int = 0while @i
利用DBMS_SESSION.SET_CONTEXT传值
公司的应用有一需求: 现有一需求,需要在行级触发器执行存储在数据库表当中的一段PL/SQL脚本类似于CREATE OR REPLACE TRIGGER tr_emp AFTER UPDATE OR INSERT ON emp FOR EACH ROWDECLARE cursor cur_emp is select sysdate from dua; v_empno e...
Oracle动态SQL参数支持复杂类型
一直以为动态SQL中的绑定变量只能支持简单数据类型,今天试了一下rowtype, PL/SQL引擎是可以支持的。以下是代码,scott用户可以运行 CREATE PROCEDURE test_param_type(p_emp emp%ROWTYPE) ISBEGIN dbms_output.put_line(p_emp.ename);END; /DECLARE CURSOR cu...
SQL Server raiserror
select GETDATE()print('1')raiserror 50001 '此处出错了'print('2')select GETDATE()-2与Oracle不同,上面的T-SQL代码不会因为错误的出现而中断执行,而是会接着执行后续的print与select。所以在raiserror之后,需要加上return来确保退出正在执行的代码块...