物理standby取消应用日志,出现ORA-16136
在物理备库取消日志应用时,出现ORA-16136的错误 SQL> alter database recover managed standby database cancel; alter database recover managed standby database cancel * ERROR at line 1: ORA-16136: Managed Standby Recovery not active 由错误提示看来,就是备库本没有启用应用日志的功能的,所以发出取消命令的话就出现了ORA-16136错误了。现在的问题是,备库的应用日志功能一直都是启用的,现在怎么变成了没有启用了呢? 检查备库告警日志文件内容 [oracle@lonion bdump]$ cat alert_standby.log Tue Sep 18 15:01:16 2012
Oracle开发:变量不可VN1<VN2<VN3?
如下的程序是会报错的:DECLARE VN1 NUMBER := 1; VN2 NUMBER := 3; VN3 NUMBER := 5;BEGIN IF VN1 < VN2 < VN3 THEN DBMS_OUTPUT.PUT_LINE('HELLO'); END IF;END;但是,下面的程序就可以成功执行:DECLARE VN1 NUMBER := 1; VN2 NUMBER := 3; VN3 NUMBER := 5;BEGIN IF VN1 < VN2 AND VN2 < VN3 THEN DBMS_OUTPUT.PUT_LINE('HELLO'); END IF;END;或者DECLARE VN1 NUMBER := 1; VN2 NUMBER := 3; VN3 NUMBER := 5;BEGIN IF VN2 BETWEEN VN1 AND VN3 THEN DBMS_OUTPUT.PUT_LINE('HELLO'); END IF;END;
ORA-20000: Content of the tablespace specified is not permanent or tablespace name is invalid
CPU资源紧张,数据库登陆不进去,查看告警日志出现如下错误:Mon Jul 9 22:00:02 2012Errors in file /u01/app/oracle/admin/szcargo/bdump/szcargo_j000_30923.trc:ORA-12012: error on auto execute of job 8887ORA-20000: ORA-20000: Content of the tablespace specified is not permanent or tablespace name is invalidORA-06512: at "SYS.PRVT_ADVISOR", line 1624ORA-06512: at "SYS.DBMS_ADVISOR", line 186ORA-06512: at "SYS.DBMS_SPACE", line 1338ORA-06512: at "SYS.DBMS_SPACE",
Tablespace Point-in-time Recovery (TSPITR) using RMAN
由于用户的错误导致逻辑故障的发生而不得不快速返回故障发生的时间点,可选的操作:·基于数据库的时间点恢复,此方式恢复期间数据库不可用并且会丢失故障时间点之后的数据。·基于表空间的时间点恢复。关于基于表空间的时间点恢复,有这样一句命令或许会很让人困惑,它究竟做了哪些操作呢?RMAN> RECOVER TABLESPACE XXX UNTIL TIME "TO_DATE('XXXX-XX-XX XX:XX:XX','YYYY-MM-DD HH24:MI:SS')" AUXILIARY DESTINATION '/home/oracle/temp';一旦上面的语句被执行,RMAN将会进行下面的一系列动作:·创建辅助实例(包括PFILE文件
SESSION连接数
--怎样查看ORACLE当前的连接数呢?只需要用下面的SQL语句查询一下就可以了。 SELECT * FROM V$SESSION WHERE USERNAME IS NOT NULL;--查看不同用户的连接数SELECT USERNAME, COUNT(USERNAME) FROM V$SESSION WHERE USERNAME IS NOT NULL GROUP BY USERNAME;--连接数SELECT COUNT(*) FROM V$SESSION; --并发连接数SELECT COUNT(*) FROM V$SESSION WHERE STATUS = 'ACTIVE';--最大连接SHOW PARAMETER PROCESSES [@more@]
Red Hat Linux:Linux下访问windows XP的共享文件夹
参考文章:通过samba在linux上访问windows下的文件夹重要步骤 在windows XP设置共享文件夹后,右击选择"属性"-->勾选"在网络上共享这个文件夹(S)"和"允许网络用户更改我的文件(W)"这两个复选框。1、在Linux中启动samba服务(感觉这一步骤是多余的,不过,为了安全起见,启动总比没启动好)[root@lonion~]# service smb start2、查看windows共享的所有文件夹[root@lonion~]# smbclient -L //windows服务器的IP如果没有设置密码的话,直接按ENTER就可以了。3、把windows下的共享文件夹挂在载Linux上在Lin
MS SQL Server:从该备份集进行读取时,RESTORE检测到在数据库.......
MS SQL Server数据库恢复出现如图错误提示:System.Data.SqlClient.SqlError:从该备份集进行读取时,RESTORE检测到数据库"xxxxx"中的页(0:0)上存在错误。经查看日志,发现如下信息The backup data at the end of "E:[10.7.1.55]cargobookingdb.bak" is incorrectly formatted. Backup sets on the media might be damaged and unusable. To determine the backup sets on the media, use RESTORE HEADERONLY. To determine the usability of the backup sets, run RESTORE VERIFYONLY. If all of the backup sets are
Opening the Database with the RESETLOGS Option
参考:文档The RESETLOGS option is always required after incomplete media recovery or recovery using a backup control file. Resetting the redo log does the following:●Archives the current online redo logs (if they are accessible) and then erases the contents of the online redo logs and resets the log sequence number to 1. For example, if the current online redo logs are sequence 1000 and 1001 when you open RESETLOGS, then the database archives logs 1000 and 1001 and then resets the online logs t
Oracle备份与恢复:Types of Oracle Recovery
实例恢复,也可称作崩溃恢复(Crash Recover),这种恢复方式由Oracle自动进行,通过读取当前的数据文件和联机重做日志文件(注意:不是归档文件,实例恢复与是否归档模式无关)来恢复数据库,使数据文件和控制文件恢复到崩溃前的一致性状态。实例恢复分两个步骤进行。1、缓存恢复(Cache Recovery)Oracle启动实例并加载数据库,然后通过Online Redologs中的重做日志,重新实例崩溃前对数据库的修改操作。在恢复过程中对于已经提交的事务,但尚未写入数据文件的那部分数据全部写入数据文件,这个过程叫做Rolling Forward(前滚)。2、事务恢复(Tra
Oracle工具DBVERIFY: Offline Database Verification Utility
参考文档:官网DBVERIFY的作用:物理数据结构的完整性检验。仅对数据文件适用,对控制文件或日志文件不起作用。Using DBVERIFY to Validate Disk Blocks of a Single Datafile语法图参数详解USERID 指定用户名和密码,该参数仅在验证ASM文件时需要用到。FILE 要验证的数据库文件START 开始验证的数据块地址。默认从数据文件的第一个数据块开始。END 结束验证的数据块地址。默认是数据文件的最后一个数据块。BLOCKSIZE BLOCKSIZE is required only if the file to be verified does not have a block size of 2 KB. If the file does not h
SQL优化
select b.fno 航班号, b.fdest 目的站, b.DEPTIME 起飞时间, b.weight 总载量, isnull(sum(a.weight), 0) 总订舱量, b.weight - isnull(sum(a.weight), 0) 剩余量, isnull(dbo.getbookingd(b.fno, b.fdep, b.fdest, b.fdate, 'CANYYB'), 0) as CANYYB, isnull(dbo.getbookingd(b.fno, b.fdep, b.fdest, b.fdate, 'CKGSZX'), 0) as CKGSZX, isnull(dbo.getbookingd(b.fno, b.fdep, b.fdest, b.fdate, 'SHEHYB'), 0) as SHEHYB, isnull(dbo.getbookingd(b.fno, b.fdep, b.f
EXPDP/IMPDP:关于EXCLUDE参数
EXCLUDE参数的作用:Enables you to filter the metadata that is exported by specifying objects and object types that you want excluded from the export operation.因为转义符的问题,所以EXCLUDE参数的用户在Windows与Linux系统下是有区别的。Windows:C:> EXPDP SYSTEM/ORACLE DIRECTORY=TEST DUMPFILE=SCOTT.DMP LOGFILE=SCOTT.LOG EXCLUDE=TABLE:IN('EMP') SCHEMAS=SCOTT或者C:> EXPDP SYSTEM/ORACLE DIRECTORY=TEST DUMPFILE=SCOTT.DMP LOGFILE=SCOTT.LOG EXCLUDE=TABLE:"IN('EMP')" SCHEMAS=SCOTTLinux[ro
EXPDP/IMPDP:导出文件到本地端
我们所知道的是,在客户端使用EXPDP工具之后,导出的DUMP文件将会在服务器端生成。但是结合EXPDP的NETWORK_LINK参数也可以将DUMP文件在客户端生成。具体步骤如下:服务器A(10.7.1.61)服务器B(10.7.1.62)现在以A为服务器端,B为客户端进行实验。①在服务器B上创建一个连接到A的数据库链。SQL> CONNECT /AS SYSDBASQL> CREATE PUBLIC DATABASE LINK LINKA CONNECT TO SCOTT IDENTIFIED BY SCOTT USING '10.7.1.61';②创建目录,存放DUMP文件。SQL> CONNECT /AS SYSDBASQL> CREATE OR REPLACE DIRECTORY DUMP AS 'D:';SQL>
ORA-04091
今天,通过MS SQL Server远程修改Oracle一张表的数据时引发了ORA-04091的错误。错误信息如下:链接服务器"ORCL61"的 OLE DB 访问接口 "MSDAORA" 返回了消息 "ORA-04091: table SZKINGGO.TAWB_AWB is mutating, trigger/function may not see itORA-06512: at "SZKINGGO.PROC_UAGENTEXPENSE", line 26ORA-06512: at "SZKINGGO.TRIG_TAWB_AWBCHARGE", line 166ORA-04088: error during execution of trigger 'SZKINGGO.TRIG_TAWB_AWBCHARGE'ORA-06512: at "SZKINGGO.TRIG_TAWB_AWB&q
ORA-01849
ORA-01849错误的出现主要需注意HH与HH24的区别,如下:错误用法SELECT TO_DATE('2011-12-20 20:00:00','YYYY-MM-DD HH:MI:SS') TIME FROM DUAL;正确用法SELECT TO_DATE('2011-12-20 11:00:00','YYYY-MM-DD HH:MI:SS') TIME FROM DUAL;TIME------------------2011-12-20 11:00:00SELECT TO_DATE('2011-12-20 20:00:00','YYYY-MM-DD HH24:MI:SS') TIME FROM DUAL;TIME------------------2011-12-20 20:00:00[@more@]
通过外部表查看alert.log的内容
查询语句如下:DECLARE PATH_BDUMP VARCHAR2(4000); NAME_ALERT VARCHAR2(4000); INS_NAME VARCHAR2(200);BEGIN SELECT VALUE INTO PATH_BDUMP FROM SYS.V_$PARAMETER WHERE NAME = 'BACKGROUND_DUMP_DEST'; SELECT 'ALERT_' || VALUE || '.LOG' INTO NAME_ALERT FROM SYS.V_$PARAMETER WHERE NAME = 'INSTANCE_NAME'; SELECT VALUE INTO INS_NAME FROM SYS.V_$PARAMETER WHERE NAME = 'INSTANCE_NUMBER'; IF INS_NAME = '0' THEN INS_NAME := ''; END IF; EXECUTE IMMEDIATE 'CREATE OR
快速查看表空间使用情况
查询语句如下SELECT NVL(B.TABLESPACE_NAME, NVL(A.TABLESPACE_NAME, 'UNKOWN')) NAME, KBYTES_ALLOC KBYTES, KBYTES_ALLOC - NVL(KBYTES_FREE, 0) USED, NVL(KBYTES_FREE, 0) FREE ((KBYTES_ALLOC - NVL(KBYTES_FREE, 0)) / KBYTES_ALLOC) * 100 PCT_USED, NVL(LARGEST, 0) LARGEST FROM (SELECT SUM(BYTES) / 1024 KBYTES_FREE, MAX(BYTES) / 1024 LARGEST, TABLESPACE_NAME FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) A, (SE
查询数据缓冲区的命中率
该查询的返回结果如果非常接近100%,则表明数据缓冲区当前设置的空间足够使用,如果返回的数据低于95%的话,那么DBA就需要注意了。你有可能需要考虑是否加大分配数据缓冲区的内存空间,或者,调整你的SQL语句。 SELECT 1 - (SUM(DECODE(NAME, 'physical reads', VALUE, 0)) / (SUM(DECODE(NAME, 'db block gets', VALUE, 0)) + (SUM(DECODE(NAME, 'consistent gets', VALUE, 0))))) "BUFFER HIT RATIO" FROM V$SYSSTAT;[@more@]
Oracle角色权限:查询语句
关于权限、角色的查询[@more@]①查询某用户拥有的角色SELECT GRANTEE,GRANTED_ROLE ,DEFAULT_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = '用户名' ;或者用户自身登陆数据库在USER_ROLE_PRIVS视图中查询SELECT * FROM USER_ROLE_PRIVS ;②查询用户所拥有的权限用户自身登陆数据库SELECT * FROM USER_SYS_PRIVS或SELECT * FROM DBA_SYS_PRIVS WHERE ....③查询角色所包含的系统权限SELECT * FROM ROLE_SYS_PRIVS WHERE ROLE='角色名';④查询角色中包含的角色权限SELECT * FROM ROLE_ROLE_PRIVS ;⑤查询所有的系统权限SELECT * FROM SYSTEM_P
由ROWID得出对象号、数据文件号、块号、行号
方法①,使用包DBMS_ROWID获取 SELECT ROWID, DBMS_ROWID.ROWID_OBJECT(ROWID) OBJECT_ID, DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) FILE_ID, DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) BLOCK_ID, DBMS_ROWID.ROWID_ROW_NUMBER(ROWID) NUM, T.* FROM SCOTT.EMP T方法②,创建函数,用函数获取 CREATE OR REPLACE FUNCTION GET_ROWID(L_ROWID IN VARCHAR2) RETURN VARCHAR2 IS LS_MY_ROWID VARCHAR2(200); ROWID_TYPE NUMBER; OBJECT_NUMBER NUMBER; RELATIVE_FNO NUMBER; BLOCK_NUMBER NUMBER; ROW_NUM