0%

windows 2008 r2默认是开启网络防火墙的,因此oracle的服务默认端口1521也是被阻止的。费了好大劲连不上才发现这个问题,可以这样解决,用命令行:C:\Users\Administrator>netsh firewall set portopening TCP 1521 "ORACLE",或者图形化设置:服务器管理器->配置->高级安全windows防火墙->入站规则->新建规则来配置TCP 1521端口

windows 2008 R2上安装oracle 10g 10.2.0.4时会提示”检查操作系统版本:必须是5.0,5.1,5.2 or 6.0。实际为6.1。未通过。”,修改安装目录下的文件install/oraparam.ini,其中Windows=5.0,5.1,5.2,6.0一行最后添加”,6.1”,安装过程中的其他依赖检查错误通过勾选都设置为”用户已验证”即可。

如果不再需要使用rman来管理目标数据库,或者目标数据库已经崩溃,可以从rman恢复目录注销掉目标数据库。这样只会从恢复目录中移除目标数据库备份相关的元数据,物理备份不会被删除。

连接目标数据库

最简单的就是连上目标数据库和恢复目录,然后执行unregister database
[sql]
$ rman target user/passwd@tgt catalog user/passwd@catlog;
RMAN> unregister database;
database name is “orcl” and DBID is 1276927241
Do you really want to unregister the database (enter YES or NO)?
[/sql]

不连接目标数据库

如果目标数据库已经崩溃,无法再连接时,可以通过指定目标数据库的DBID或者直接使用名字来注销数据库。

如果不知道目标数据库的DBID或名字,先通过rman数据库的rc_database视图(rc指recovery catalog)来查询相关信息。谨记rman恢复目录可以同时为多个目标数据库提供服务。
[sql]
$ sqlplus user/passwd@catlog;
SQL> select * from rc_database;
DB_KEY DBINC_KEY DBID NAME RESETLOGS_CHANGE# RESETLOGS_TIME


10161 41305 1276927241 ORCL 1981608693 28-JUL-12
[/sql]

使用DBID
[sql]
$ rman catalog user/passwd@catlog;
RMAN> set dbid=1276927241;
executing command: SET DBID
database name is “ORCL” and DBID is 1276927241
RMAN> unregister database;
database name is “ORCL” and DBID is 1276927241
Do you really want to unregister the database (enter YES or NO)?
[/sql]

直接使用目标数据库名字
[sql]
$ rman catalog user/passwd@catlog;
RMAN> unregister database orcl;
database name is “ORCL” and DBID is 1276927241
Do you really want to unregister the database (enter YES or NO)? YES
database unregistered from the recovery catalog
[/sql]

移除恢复目录

如果rman恢复目录不再使用,可以drop掉:
[sql]
$ rman catalog user/passwd@catlog;
RMAN> drop catalog;
[/sql]

References:
[1]Remove a Database from a RMAN Recovery Catalog

===
[erq]

Active Dataguard

在Oracle 11g之前,物理备库(physical Standby)在应用redo的时候,是不可以打开的,只可以mount。从11g开始,在应用redo的时候,物理备库可以处于read-only模式,这就称为Active Dataguard 。通过Active Dataguard,可以在物理备库进行查询或者导出数据,从而减少对主库的访问和压力。

Active Dataguard适用于一些只读性的应用,比如,有的应用程序只是查询数据,进行一些报表业务,不会产生redo数据,这些应用可以转移到备库上,避免对主库资源的争用。

Oracle Active Dataguard 是Oracle Database Enterprise Edition的一个功能,需要额外付费授权来使用这个功能。

如需启用Active Dataguard, 只需要将备库以 read-only 模式打开,而且执行 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE语句就可以。需要注意的是:主库和备库的COMPATIBLE 参数至少要设置为11.0.0。

Duplicate from active database

11g以前使用rman创建备库需要先进行备份,然后将备份传输到备库或者可以被备库直接访问到,会大量占用额外的存储空间。
11g提供了从运行的主库直接创建备库的功能,这样就不再需要提前rman备份数据库,数据库直接从target拷贝到auxiliary,方便快捷,当然其他的一些设置是省不了的。

References:
[1]Oracle 11g Data Guard 物理备库快速配置指南(上)
[2]Oracle 11g Data Guard 物理备库快速配置指南(下)
[3]Creating a Standby Database with Recovery Manager

===
[erq]

硬件维护的时候有人不小心把生产库的电源断掉了,重新启动盘柜和服务器后,oracle 10g 10.2.0.4 startup时出现错误提示:

[sql]
数据库装载完毕。
ORA-01122: 数据库文件 1 验证失败
ORA-01110: 数据文件 1: ‘E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF’
ORA-01207: 文件比控制文件更新 - 旧的控制文件 (file is more recent than controlfile - old controlfile)
[/sql]

由于时间紧迫,且对此错误不甚熟悉,就先将生产库切到了dataguard物理备库,有时间再研究此问题如何恢复。

References:
[1]ORA-01207: old control file完全解决方案

===
[erq]

查看rman脚本备份日志,发现如下错误:

1
2
3
4
5
6
7
8
starting full resync of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of crosscheck command at 10/10/2014 10:26:33
RMAN-03014: implicit resync of recovery catalog failed
RMAN-03009: failure of full resync command on default channel at 10/10/2014 10:26:33
ORA-01654: unable to extend index RMAN_USR.RLH_U1 by 128 in tablespace RMAN_TS

rman恢复目录所在表空间无法扩展

查看表空间利用率
[sql]
SQL> SELECT * FROM dba_tablespace_usage_metrics ORDER BY used_percent DESC;
[/sql]
恢复目录所在表空间利用率已经达到96%

扩大数据文件大小
[sql]
SQL> alter database datafile ‘/u01/oradata/catlogdb/rman01.dbf’ resize 300M;
[/sql]

重新运行rman,问题解决。

===
[erq]

KVM客户机鼠标集成其实很简单,命令行里添加一个参数-usbdevice tablet就可以了,不过KVM运行带图形界面的客户机感觉还是不如virtualbox用起来更方面。KVM更适合服务器领域。

如果手上没有移动存储器,也不想开ftp,那么两台电脑之间可以使用nc(netcat)传输文件,比如现在要在一台mac和一台linux机器之间传输文件。

要接收文件的机器开启监听准备接收文件,本机器的ip地址为1.2.3.4

1
$ nc -l -p 1234 > foo.bar

发送文件的机器开始发送文件

1
$ nc 1.2.3.4 1234 < foo.bar

===
[erq]

HTML页面中储存自定义信息的方式能想到的大概有以下几种:

  • 重用HTML元素的标准属性,比如 id、class、rel 和 title等,这些属性的值根据自己的需要进行解释。DWZ框架使用了这种方式。
  • 上面的方式毕竟违反了标准的语意,容易造成一些问题。HTML5通过标准化的data-数据属性来支持在DOM元素上附加自定义数据
  • 使用span或div元素包含自定义信息,通过样式(display: none;)使其不可见。
  • 使用javascript代码自定义页面DOM元素与Javascript数据结构的关联
  • 使用JQuery的缓存系统,.data方法向DOM元素附加自定义数据,.removeData移除DOM元素关联的自定义数据。如果dom元素从页面中remove,则JQuery会将其关联的自定义数据一并移除,无需显式调用.removeData。但是如果只是detach元素,则不会清除关联数据。这种方式是JQuery对上一种方式的标准化,其缓存系统十分完善。

以上几种方法如无特殊要求,建议使用JQuery的缓存系统。

===
[erq]

因为sql语句中用了中文的”月”,而NLS_LANG设置为”AMERICAN_AMERICA.AL32UTF8”,所以oracle提示了错误”ORA-01843 not a valid month”,只需将NLS_LANG设置为”SIMPLIFIED CHINESE_CHINA.AL32UTF8”即可。