今天是 2004 年的最后一天。新年似乎没有什么欢乐的气氛,全世界的目光都在关注印度洋的海啸。据说死亡人数还在不断上升。2004 年回首,真是最坏的一年。全世界局部冲突依然不断,国内接连不断的矿难、伊拉克纷飞战火、俄罗斯人质事件、朝鲜核危机下的饥饿人民,还有年末这印度洋吃人的海啸......
December 2004 Archives
Scaling Oracle8i - Building Highly Scalable System Architectures
虽说一些内容已经有些过时,但一些章节中的基本原则还是值得一看。以下几章很有特色:
- 第二章、Hardware Architectures and I/O Subsystems
- 第三章、Benchmark Concepts and Design
- 第七章、Introduction to UNIX
v$session_event 记载了当前连接到数据库的所有会话的统计信息,从名字上也可以看出来,这是个会话级(Session Level)的动态视图。
什么样的人可以自称是 Oracle 专家? Oracle-L 列表中 Carlos Reyes 提出了这个问题(Here),是出版了多少本书?有多少年的经验?还是其他什么资格才可以?看起来似乎很平常但也没有正确答案的问题,却引了不少人来讨论。有一些答案很有意思,值得仔细琢磨。
看到一份文档说:
NFS O_DIRECT ...Available in RHEL 3 Update 2
可是自己明明记得这个 O_DIRECT 在 RHEL 3 就有的阿?!搜索到一篇白皮书 Red Hat Enterprise Linux version 3 Technical Summary,发现 NFS 的 O_DIRECT 支持的确是 RHEL 3 就已经提供的(而不是 Update 2),在另一白皮书上亦有提及:
当应用程序利用 O_DIRECT 标记打开文件时,RHEL 3.0 和 SuSE SLES 8 SP3 内核中的Linux NFS 客户端支持对 NFS 文件的直接 I/O 操作。直接 I/O 这一功能可以使管理自己数据缓存的数据库应用程序获益。启用该功能后,应用程序的读写系统调用会直接转换为 NFS 读写操作。在利用该标记打开文件时,Linux 内核不会对任何读写结果进行缓存,因此,应用程序总是可以准确获取服务器上的内容。
早晨起来看 BLOG ,发现不少人已经开始年终盘点了。这一年太多的风花雪月的事情,太多的花边、八卦新闻,以至于我看到朋友推荐我看的一个 BLOG 上写着:小道消息,只有小道消息,才能救中国。我不由得笑出声来。Kamus 说,2004,开始融入你的互联网 Horse 说,从blog开始,享受我的互联网 ,我该怎么说呢?似乎是沉溺其中了......
周星驰看来已经很难突破自己的路数了。影片中照例是那么几个近乎雷同的角色。形影不离的搭档总是个笨蛋,一个不是很丑就是有点缺陷最后丑小鸭变成天鹅的女主角(配角?)有着固定动作特点的一些小角色(《功夫》里这次是个喜欢半露臀部的理发师,口音还不是很正),嗜血的反面角色,开头和结尾往往会出现的类似半仙的人物(比如《食神》里的那个算命婆子,《功夫》里有个卖武功秘籍的乞丐)......
又到年末了,这一年过得浑浑噩噩。除了又长了一岁是实实在在的现实外,年初定下的目标鲜有完成,额外的收获倒是也有--小说读了一箩筐。古文说读书要三上--“马上、枕上、厕上”,现代人没有马了,换做“车上、枕上、厕上”吧。这一年用“三上”的时间几乎是看完了全年的《收获》杂志。总体感觉,杂志的小说质量似乎有所下降。
此 Grub 非彼 GRUB (GNU GRUB)。今天看到卢亮的 Larbin 一种高效的搜索引擎爬虫工具 一文提到 Nutch,Google 找了一下,发现了这个 Grub。此 Grub 是个分布式应用程序(类似 SETI@home ,寻找地外智能生物),该软件的目标有些惊人:
track down every site in the world and provide a real-time map of the Web
PC Magazine 选出了该杂志关注的年度人物。Blog 在这一年呼风唤雨,People of the Year 自然也和 BLOG 有关。他们分别是 Blogger.com 的 Evan Williams、Meg Hourihan 和 Paul Bausch 以及 Six Apart 的 Mena G. Trott、Ben Trott 夫妇。
Zeitgeist 这个词很有趣,韦氏字典里这么解释:
Pronunciation: 'tsIt-"gIst, 'zIt- Function: noun Usage: often capitalized Etymology: German, from Zeit + Geist spirit : the general intellectual, moral, and cultural climate of an era
中文意思可以解释为:时代精神,时代思潮;具有某时期或某时代人特征的品位和观点。Google 每年年末都要发布当年的 Zeitgeist 。可以理解为 Google 的年度关键词。这里还有个 Flash 的交互版。
Solaris 10 的新特性中和 DBA 关系最大的恐怕就是这个 Dtrace 了。Dtrace(Dynamic Tracing)是“Solaris 操作系统的一种复杂动态跟踪框架”。与其他商用 Unix 提供的性能工具有本质区别,据称“Dtrace 在 Solaris OS 内部构建,其在内核中采用了 25,000 个探测器”(SPARC 和 X86 平台都可用),在应用层和核心层都可发挥作用。这对于 DBA 来说是个绝佳的好工具,便于更快诊断并定位操作系统性能瓶颈。比如主开发者 Bryan Cantrill 提到的利用 Dtrace 的 plockstat provider 来诊断锁(Lock)竞争的问题。
了解 Yong Huang 是在 ITPub 论坛上,第一感觉是“这个家伙英文真好”,仔细阅读一下他的发言,会发现他的发言几乎都是有的放矢,严谨到位,尤其对 Oracle Internal 和操作系统的理解非常让人钦佩。
曾经在Oracle 10G 中的"回收站" 这篇小文里介绍了如何使用 Recyclebin 。可能有朋友会问,Recyclebin 特性可以关掉么?
MT-Blacklist 的开发速度真是惊人。前几天刚提起发布了2.02 Alpha 版本,短短几天又发布了新的版本 v2.03-beta。Spam 这个恼人的问题什么时候能彻底解决呢?
我们知道,通过 robots.txt 文件可以阻止(不是绝对的)搜索引擎的爬虫或者机器人对自己站点的搜索行为。无意中看了看 Google 的 robots.txt 文件。
《CSDN社区电子杂志——Oracle杂志》第二期发布了。因为一点观念上的差异,没加入到第二期的编辑工作当中。今天在把第二期杂志下载来看了看,排版质量真不敢恭维。
在 sourceforge 上发现了 Bootchart 这款有趣的工具。该工具,可以对 GNU/Linux 的启动过程进行性能分析,并将之可视化。
最近看到了好几起涉及网络的抄袭事件,看来网络也需要“学术道德”。
上一篇文档中提到,从 7.0.12 版本开始,V$SESSION_WAIT 就是如下四个基本 OWI 视图之一。
Movable Type 3.14 发布了。这个版本修正了 Comment spam load issue 问题。
2004-12-18 ,AWStats 官方站点发布了 6.3 版本,目前可能还不是很稳定。
什么是 OWI (Oracle Wait Interface)? 在 Oracle Wait Interface: A Practical Guide to Performance Diagnostics & Tuning 这本书中是这么定义的:
Oracle Wait Interface is a collection of a few dynamic performance views and an extended SQL trace file.
Oracle 10g 提供了一条命令,不用关闭实例即可清空 Buffer Cache 区。
从 Oracle OpenWorld 的信息来看,10g 第二版将在 2005 年中面世。10g 的版本类似 9i 的路线--在 R2 版才能获得大多数用户的肯定。但是,第二版会有什么更吸引人的特性呢?
ORACLE 的安装
ORACLE8i 通过新的基于 Java 的 ORACLE Universal Installer (OUI) 来安装,在所有的平台上都有一样的界面 [1 M Cyran, 1999] 。上面这句话是对的,不过一些小的差异要注明。在 Unix 上需要 X 兼容的显示能力, 或者是在 客户机的工作站上 有一个象 Exceed 这样的应用。在 Windows2000 上安装器可以直接运行。
在 Unix 中有许多手工设定的任务,在 Windows 2000 是不需要的。尤其是你不必手工设定环境变量。你不必生成 一个管理数据库的 Unix dba 组,不必设定一个 UNIX 来为用户运行 ORACLE Universal Installer 或者是一个叫 oracle 的用户来安装或者升级 ORACLE 。在 Unix 中 ORACLE 可以重联接而在 Windows 2000 则不能。
在 Windows 2000 中,用户必须是管理员( administrator )组的成员才可以安装数据库。在 ORACLE 8i 数据 库安装后自动的创建 ORA_DBA 一个本地组。这个组的成员自动接受 SYSDBA 的权限。推荐在定制安装的时候选择 安装 Administration Assistant for Windows ,要注意每个服务器只能安装这个软件的一个版本。
ORACLE 8.1.7 for Solaris 是 2CD 的。切换到第二张 CD 不象手册上说的那么容易。察看 [10 Metalink, 2001] 可以得到具体内容。
Windows 上的安装指导可以看 [3 Kennedy, 2000] 。《ORACLE Universal Installer 概念指导》没包括在 ORACLE8i 服务器联机文档中,不过在 ORACLE Universal Installer 安装的过程中自动的安装在你的硬盘中了。
数据库启动与关闭
在 Windows2000 上数据库可以通过启动相关的服务打开。通过控制面板的服务选项或者是通过命令行模式,如:net start OracleServiceatei 就可以打开相关服务。这依赖于一些注册表参数,我们在后面讨论。停止相关的服务 ,例如: net stop OracleServiceatei 可以关闭一个数据库。
在所有的平台上, ORACLE8i 实例都可以从服务管理器(或者 SQL*Plus! )中通过 startup 命令启动。在 Unix 中,这个命令启动后台进程并且打开数据库。它还生成了一个 Unix 特定文件,叫做 $ORACLE_HOME/dbs/lk &DBNAME>,这是个MOUNT 锁文件 [6 Metalink, 2000] 。这会阻止两个实例 mount 在同一数据库上,当不使用并行服务器的模式下,要使用不同的 ORACLE_SID 。原来这是个 0 长度文件,不过现在包含文本 'DO NOT DELETE THIS FILE!' 。不要试图通过查看这个文件来得知是否数据库是可用的,它不是很准确的。在 Windows 2000 中, startup 命令并不启动 ORACLE 服务,不过,如果服务已经运行的话,这将打开数据库。
类似的,服务管理器 Server Manager 的 shutdown 命令在任何平台上都会关掉数据库,不过在Windows 2000 上它并不停掉服务。很有可能的情况就是 ORACLE 服务被启动但是数据库却关掉了。
UNIX 上的数据库的自动启动与关闭
在 Unix 上, ORACLE 提供了 dbstart 和 dbshut 脚本以供使用。在 Linux 中 ORACLE 检测文件 /etc/oratab 来决定哪个数据库自动的启动 / 关闭。在 Solaris ( 和一些其他版本的 Unix) 中,检查 /var/opt/oracle/oratab 文件。要注意: 8.1.6 版本的 dbstart 有个 bug, 在 8.1.7 中已经被修复,察看 [7 Metalink, 2000] 有详细说明。
在 Linux 上,作为 root 用户,在 /etc/rc.d/init.d 目录中创建一个一个名为 dbora 的文件。这个文件将会检查参数是否是 'start' 或者 'stop' 并且适当的执行 dbstart/dbshut ;通常也从这个脚本启动 listener 。再生成两个符号连接 /etc/rc.d/rc2.d/S99dbora 和 /etc/rc.d/rc0.d/K10dbora 。数据库在运行级 2( 多用户 ) 时通过 /etc/rc.d/rc2.d/S99dbora 启动 , 在系统关闭到运行级 0 的时候通过 /etc/rc.d/rc0.d/K10dbora 关闭数据库。在 Solaris 上,这个脚本的在 /etc/init.d 中而不是在 /etc/rc.d/init.d。
要注意默认的 dbshut 执行了一个正常 (normal) 的关闭操作。 在 Unix中可以通过编辑 $ORACLE_HOME/bin/dbshut 中的这一行来改变数据库的关闭模式。
把 shutdown 修改成:shutdown immediate
如果启动一个已经运行的实例, dbstart 还会执行一个 shutdown abort 。在 dbstart script 脚本的顶部警告说 'It should ONLY be executed as part of the system boot procedure' 。这个脚本要常被复制、修改,这样 在其它的时候使用才能足够安全。
WINDOWS 2000 上的数据库自动的启动与关闭
在以前的版本( 8i )中,当 oracle 的启动被一个额外的服务 ORACLEStartSID 处理,服务器的启动和关闭的时候 ORACLE 不能被自动的干净的关掉。从 ORACLE8i 开始, stop/start 功能成为了主要的 ORACLE 服务,并通过注 册表控制。注意当 ORADIM 用于创建或者修改实例的时候,自动的在注册表中设定这些值。这些设置在 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEID 键值下。 ID 号从 0 开始,每有一个额外的 ORACLE home 递增。
参数 描述 ORA_SID_AUTOSTART 设定为 TRUE 的时候 ( 默认值 ) , ORACLEServiceSID 启动的时候启动数据库。 ORA_SID_PFILE 设定 INIT.ORA 参数文件的全路径。 ORA_SHUTDOWN 当设定为 TRUE 的时候,在当前任何 ORACLE home 下的任何数据库将 shutdown 。 ORA_SID_SHUTDOWN 设定为 TRUE 的时候,关闭标记 SID 值的 ORACLE8i 数据库。
如果 SHUTDOWN 参数设定为 FALSE ,停掉 ORACLEServiceSID 将会 abort 的方式关闭实例,下次启动的时候 要进行实例恢复。
下面的可选参数可以在注册表中设为合适的值
参数 描述
ORA_SID_SHUTDOWNTYPE
指明数据库关闭模式 A (abort ), I (immediate) , N(normal) 。
如果你不设定这个参数的话,默认的模式是 I (immediate) 。
ORA_SID_SHUTDOWN_TIMEOUT
在一个 SID 停止前等待的最大时间。
操作系统认证
OS 认证在两个平台间是相似的,参数文件中设定 os_authent_prefix 参数,创建用户都标记为 externally 。在Windows2000 中创建用户要指定大写的域名并且用户名要在 " " 中,否则不起作用。如果你在注册表中把 OSAUTH_PREFIX_DOMAIN 设定成 FALSE 的话,你可以忽略掉域。客户机和服务器的机器还需要在 sqlnet.ora 中包含 sqlnet.authentication_services=(nts) 这一行。
在 Windows 2000 中,可以允许一个域用户登陆到一个远程 pc 上,无需提供额外的密码就可以连接到数据库中。参见 [2 Kelly III,2000] 可以得到详细内容。
LISTENER
在 Windows 2000 上面 listener 作为一个服务实现的,所以 listener 可以通过启动 ORACLETNSListener 服务来启动。两种平台上 listener 都可以从 lsnrctl 命令控制。在 Unix 上 lsnrctl start 启动 listener 进程;在Windows 2000 启动 ORACLETNSListener 服务就可以。 如果 listener 第一次启动的时候没有 ORACLETNSListener 服务将创建它。如果从你的计算机中删除 ORACLE 的话, listener 服务要手工从注册表中删除。
在两个平台上的 listener 都可以监听不同版本的数据库。在 win2000 中,在 LISTENER.ORA 中不需要 ORACLE_HOME 参数 ( 在 UNIX 中要使用到的),因为每个 SID 在 SERVER 中是唯一的。 listener 可以从注册 表中得到正确的 ORACLE_HOME 。
ORACLE8i 有个特性叫服务器注册, pmon 自动对 listener 注册信息。这意味着 Net8 listener 可以无需在 listener.ora 文件中设置就可以监听一个数据库。不过这样做的话, Enterprise Manager 要直到启动后才可以连 接到数据库。所以这个例子不能用来启动一个远程的实例。
通常最好在 listener.ora 中设置所有的实例以避免冲突,尤其在一个有多位 DBA 的站点中,可以避免我们提到的 Enterprise Manager 问题。
加长的 SID 名字
Windows NT 上的 ORACLE 7 实例名字有着 4 个字符长的限制,这可能会产生很晦涩的实例名--庆幸的是在8i 中 SID 名字已经加长了。不过在包括命名服务的几个场合中使用太长的实例名字也不总是很有用。在 Windows 2000 上面有个 bug ,限制了实例名字最长 15 个字符。
Unix操作系统 NT 操作系统
数据库名长度
SID名字长度
数据库名长度
SID 名字长度
Oracle7
8
8
8
4
Oracle8
8
8
8
4
Oracle8i
8
64
8
64
数据库的创建
当你在安装过程中的时候选择创建 ORACLE 8i 数据库,数据库生成助手就会通过 ORACLE Universal Installer 自动运行。在安装后它也可以作为一个单独的工具手工运行。用它还可以手工的输入 SID 代替默认的 ORCL ,默认的情况下,不在 ORACLE_HOME 下面创建数据库,完全遵循 OFA 的意图。
建议你运行 Database Creation Assistant ,不过在最后一页选择[ Save information to a batch file ] (保存信息到一个批处理文件中),再点击[完成]按钮。这会产生几个脚本。从不同的平台对比它们的内容很有趣的。在Unix 和 Windows 上的内容很相似,除了 windows 上对 oradim 的调用不同。第一次对它的调用产生了一个与ORACLE 数据库相关联的 ORACLE 服务:
D:\ORACLE\Ora817\bin\oradim -new -sid ATEI -intpwd man -startmode manual -pfile "D:\ORACLE\admin\atei\pfile\initatei.ora"
第二次对 oradim 的调用把服务更改为自动启动:
D:\ORACLE\Ora817\bin\oradim -edit -sid atei -startmode auto
可以用这些文件作为创建其它数据库的模版。若你不使用上面建议的方式创建数据库的话, Database Creation Assistant 生成的这些文件和目录没什么大用处。在使用这些脚本创建额外的数据库之前,这些文件和目录不得实现创建。特别注明一下,脚本假定一个密码文件已经存在 , 密码文件可以用 orapwd 命令预创建 [2 H Kelly III, 2000] 。
Database Creation Assistant 创建的目录:
Windows 2000
Unix
ORACLE_BASE = D:\oracle
ORACLE_BASE = /db01/app/oracle
ORACLE_BASE\oradata\atei
$ORACLE_BASE/oradata/eighti
ORACLE_BASE\oradata\atei\archive
$ORACLE_BASE/oradata/eighti/archive
ORACLE_BASE\admin\atei
$ORACLE_BASE/admin/eighti
还有这些子文件夹:sadhoc bdump cdump create exp pfile udump
通过 Database Creation Assistant 创建 / 改动的文件:
Windows 2000
Unix
ORACLE_HOME = D:\oracle\ora817
ORACLE_HOME = /db01/app/oracle/product/8.1.7
ORACLE_HOME\database\PWDatei.ora
$ORACLE_HOME/dbs/orapweighti.ora
ORACLE_BASE\admin\atei\pfile\initatei.ora
$ORACLE_BASE/admin/eighti/pfile/initeighti.ora
ORACLE_HOME\database\initatei.ora
包含一行
IFILE='d:\oracle\admin\atei\pfile\initatei.ora'
$ORACLE_HOME/dbs/initeighti.ora
符号链接到:
/db01/app/oracle/ admin/eighti/pfile/initeighti.ora
添加到 tnsnames.ora 的条目
添加到 tnsnames.ora 的条目
添加到 listener.ora 的条目
添加到 listener.ora 的条目
windows 没有相关的操作
添加项目到 oratab
通过 Database Creation Assistant 创建的脚本
Windows 2000
Unix
注释
atei.bat
eighti
调用其它脚本 , 在 Windows 上还可以调用 ORADIM
ateirun.sql
eightirun.sh
包含创建数据库的语句
ateirun1.sql
eightirun1.sh
创建表空间 / 创建回滚段 不创建系统中的第二个回滚段
N/A
eightirun2.sh
额外的脚本(如,catproc ) ,
这些在 Windows 上从 ateirun1.sql 中运行
ateisqlplus.sql
eightisqlplus.sh
添加 SQL*Plus 帮助
@c:\oracle\ora817\sqlplus\admin\help\helpbld.sql helpus.sql
ateialterTablespace.sql
eightialterTablespace.sh
为 SYSTEM 用户更改默认的和临时的表空间
ateireplicate.sql
ateijava.sql
ateiordinst.sql
ateiiMedia.sql
ateidrsys.sql
ateicontext.sql
ateispatial1.sql
ateitimeseries.sql
ateivirage.sql
eightireplicate.sh
eightijava.sh
eightiordinst.sh
eightiiMedia.sh
eightidrsys.sh
eighticontext.sh
eightispatial1.sh
eightitimeseries.sheightivirage.sh
各种脚本,只有在你选择相应的选项的时候才会生成。
远程挂接(mount)的文件系统,如 UNIX 上的 NFS 和 Windows 2000 上 UNC ,在两个平台上都不支持。
更多信息
全文第一部分 - http://www.dbanotes.net/database/oracle_unix_vs_windows_2000.html
全文第三部分 - http://www.dbanotes.net/database/oracle_unix_vs_windows_2000_iii.html
摘要
ORACLE Database是广为人知的Unix硬件平台上的领先的数据库系统。ORACLE 用户和管理员因此熟悉 Unix平台上的 ORACLE 架构以及它上面的工具和技巧,并从他们的数据库得到最大的收益。相反,Windows上的 ORACLE 架构就不那么的被广为了解。这篇文章从一个 DBA 的角度考察了两个操作系统之间的关键的异同点。
简介
在看了几本令人失望的这方面的图书之后,我们写了这篇文章。那些书的通病是试图做太多的事情--在细节上论述 Windows 和 ORACLE 。我们的这篇文章假定读者熟悉 Unix 平台上的ORACLE DBA 的工作。因此本文将分析两个平台上的 ORACLE 的关键的差异而不是从头教你 ORACLE 的技巧。我们不想把它作为你的一份详尽的指导或者是手册的替代品,事实上本文会鼓励你阅读一些手册。作为数据库服务器平台,它只会涉及一些 Unix 和 Windows 上相关的优点,这就是本文的目的。
范例
这个例子使用 Linux 上的ORACLE 8i ,实例名字叫作 eighti 。Windows 2000 上面的 ORACLE 8i 的实例名字叫作 atei 。
客户端对 ORACLE 的访问
当客户端连接到 ORACLE 时,通常的来说ORACLE 服务器平台与客户端的应用无关。这实际上很难说清。ORACLE DBA和系统管理人员更关心操作系统平台,他们有的时候会基于需求(如运行时间和可扩展性)选择平台。更通常的 情况下,他们接受(或是接手)给定的平台并学习从中得到最大收益。
关于 WINDOWS 2000
值得一提的是 Windows 2000 是从 Windows NT 升级而来。在这两个操作系统之间有很多的相似点,Windows 2000 也有些新的特性。微软从 NT4.0 的升级途径见下表。
两个系统间有很多相似点:
NT 4.0 Windows 2000 NT 4.0 Workstation Windows 2000 Professional
NT 4.0 Server
Windows 2000 Server
NT 4.0 Enterprise Edition
Windows 2000 Advanced server
Unix
Windows 2000 Datacenter server
ORACLE 后台进程
下面这句话对于用过 ORACLE 的人来说是会很熟悉的:
每一个运行着的 ORACLE 数据库都对应一个 ORACLE 实例,当一个数据库在数据库服务器(不考虑机器的类型)上启动的时候,ORACLE 分配一块叫做 System Global Area (SGA) 的内存区域并启动一个或者多个ORACLE 进程。SGA 和 ORACLE 进程合起来称作 ORACLE 实例。
--摘自 ORACLE 8i Concepts [4 L Leverenz, 1999] 。
处理后台进程是放在首位的,也是不同的操作系统之间最明显的差异。
ORACLE 在 UNIX 上的后台进程
任何连接到 UNIX 的用户都可以很容易的察看 ORACLE 的后台进程:
% ps -ef|grep eighti|grep -v grep
oracle8 18451 1 0 16:37:18 ? 0:00 ora_pmon_eighti oracle8 18453 1 0 16:37:19 ? 0:00 ora_dbw0_eighti oracle8 18457 1 0 16:37:19 ? 0:04 ora_ckpt_eighti oracle8 18461 1 0 16:37:19 ? 0:00 ora_reco_eighti oracle8 18455 1 0 16:37:19 ? 0:02 ora_lgwr_eighti oracle8 18459 1 0 16:37:19 ? 0:01 ora_smon_eighti oracle8 19168 19167 0 16:43:46 ? 0:00 oracleeighti (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
最后一行的 ORACLE 进程与一个SQL*Plus 会话相关,其他的进程都是后台进程。在 ORACLE 中我们可以通过输入 SQL*Plus 会话察看这些进程:
SELECT SID, spid, osuser, s.program FROM v$process p, v$session s WHERE p.addr = s.paddr;
SID SPID OSUSER PROGRAM
-------------------------------------------------------------------
1 18451 oracle8 oracle@saic02 (PMON)
2 18453 oracle8 oracle@saic02 (DBW0)
3 18455 oracle8 oracle@saic02 (LGWR)
4 18457 oracle8 oracle@saic02 (CKPT)
5 18459 oracle8 oracle@saic02 (SMON)
6 18461 oracle8 oracle@saic02 (RECO)
7 19168 oracle8 sqlplus@saic02(TNS V1-V3)
7 rows selected.
每一个后台进程都有一行,还有一行信息是与 SQL*Plus 会话相关的, SPID 对应相应的 UNIX 进程号。
在 WINDOWS2000 上的 ORACLE 后台进程
回到 WINDOWS 上,从操作系统中察看后台进程有些困难。从任务管理器中可能会看到运行着的应用(任务管理器的察看方法:在任务栏点击右键选择 " 任务管理器 " )。在服务器上 ORACLE 可以是可用的,运行着的应用却是不可见的。进程表的确显示一个进程叫做 ORACLE.EXE ,察看 alert log 显示 ORACLE 的所有后台进程都是启动的:
PMON started with pid=2 DBW0 started with pid=3 LGWR started with pid=4 CKPT started with pid=5 SMON started with pid=6 RECO started with pid=7
要看实际的后台进程,需要运行额外的软件,例如,进程察看器。该软件可以从 Windows 2000 CD 中得到(如果是 Windows NT 的话可以从资源包中得到)。
在 Windows 2000 上, ORACLE 实例是作为一个单一的 Windows 2000 进程(ORACLE.EXE )实现的。这个进程包括实例所需要实现的每个任务的线程。
因此一个线程对应每个 ORACLE 后台进程。 ORACLE.EXE进程作为一个服务运行,可以从控制面板的服务中察看到 ORACLEServiceSID 。其他的服务也可以这样控制。
这允许 ORACLE 在没有用户登录服务器的时候也持续的运行。对于共享主处理器资源的所有的进程来说, ORACLE 能够达到高速、低负荷的上下文切换。
在 Unix 下显示 ORACLE 中的进程,我们也可以通过输入简单的 SQL 语句来达到。为了显示 PID 列, SQL 语句做了些轻微的改动。要注意 PID 匹配警告日志中报告的值。
SELECT s.SID, p.pid, p.spid signaled, s.osuser, s.program FROM v$process p, v$session s WHERE p.addr = s.paddr;
SID PID THREADID OSUSER PROGRAM
---- ------- --------- --------------- --------------------
1 2 1088 SYSTEM ORACLE.EXE
2 3 1172 SYSTEM ORACLE.EXE
3 4 1180 SYSTEM ORACLE.EXE
4 5 1192 SYSTEM ORACLE.EXE
5 6 1212 SYSTEM ORACLE.EXE
6 7 1220 SYSTEM ORACLE.EXE
7 8 1200 Administrator SQLPLUSW.EXE
7 rows selected.
每一个后台进程都有一行,还有一行信息是与 SQL*Plus会话相关。程序名字并没有指明后台进程的名字,和在 Unix 中一样,这些名字可以通过和 v$bgprocess 连接得到。
SELECT s.SID SID, p.spid threadid, p.program processname, bg.NAME NAME FROM v$process p, v$session s, v$bgprocess bg WHERE p.addr = s.paddr AND p.addr = bg.paddr AND bg.paddr <> '00';
SID THREADID PROCESSNAME NAME
---------- --------- --------------- -------------
1 1088 ORACLE.EXE PMON
2 1172 ORACLE.EXE DBW0
3 1180 ORACLE.EXE LGWR
4 1192 ORACLE.EXE CKPT
5 1212 ORACLE.EXE SMON
6 1220 ORACLE.EXE RECO
6 rows selected.
断开会话
提交 SQL 命令 ALTER SYSTEM DISCONNECT SESSION 可以断开会话。有的时候需要在操作系统级别断开会话,在 UNIX 上,通过 kill 命令实现,前面例子中的 SQL 会话可以通过输入 UNIX 命令断开:
kill -9 19168
在 Windows 2000 上可以用 orakill 断开一个会话。 orakill 是 Windows 平台上的 ORACLE 的一个特定命令,默认安装在 $ORACLE_HOME\bin 下。在命令行下输入 orakill 可以察看它的用法。前面例子中的 SQL*Plus 会话可以通过输入如下的命令断开:
orakill atei 1200 Kill of thread id 1200 in instance atei successfully signaled.
在 Windows 2000 中,如果一个断开的会话标记为 "marked for kill" 但是没被删除, orakill 会终止它。不过要记住Kill一个后台进程总不是个好主意,尤其是 Windows 上,会导致进程崩溃,甚至导致数据库不可用。
Windows 2000 注册表
和其他的 Windows 2000 中的应用那样, ORACLE 的大多数的设定都在注册表中。 你应该看看注册表中的 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 下面都有什么。这些参数中的一部分在后面会详细讨论。和ORACLE 服务相关的参数和其他的服务一样存贮在同样的位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
环境变量
在 Unix 中两个最重要的变量是 ORACLE_HOME 和 ORACLE_SID 。一旦这些变量设定的话,应用就可以运行并联接到本地数据库。 通常也把 $ORACLE_HOME/bin 包含在 $PATH 中以便在使用 ORACLE 工具(如: Sql*Plus )的时候免去输入全路径的麻烦。
Windows 2000 中可以打开命令行设定 ORACLE_SID 变量再联接到本地数据库。其他的值可以从注册表中得到。
MULTIPLE ORACLE HOMES
Windows 2000 全面支持多个 ORACLE home 。以前在 Windows NT 上这是个主要的问题, 一直到 ORACLE 8.0.4 以后才开始支持。最初得对这一点的支持很差劲。 ORACLE Home Selector, ORACLE8i 的一个新的应用工具,改变环境路径,使选择的 ORACLE home 路径作为主的 home 。只是简单的改变系统路径,把 ORACLE 选择的 BIN 目录放在启动路径中。
每一个 BIN 目录都有一个 ORACLE.KEY 文件,指明在注册表中 ORACLE 程序在哪里可以找 ORACLE_HOME 和其他的环境变量。如果在服务器上面只有一个数据库,通常在注册表中设定 ORACLE_SID 。不过,不要设定 ORACLE_HOME ,对于 ORACLE 产品来说根本不需要,可能会导致问题。
文件系统
多 ORACLE home 的支持允许在 Windows 上面实现 Unix 的 OFA 标准。这极大的简化了从 Unix 的过渡。 OFA 目录树的顶层的名字有差异,不过主要的子目录和文件名字在两种操作系统中都是一致的。
Unix NT
ORACLE_BASE
/oracle/app/oracle
D:\Oracle
ORACLE_HOME
/oracle/app/oracle/product/8.1.7
D:\Oracle\Ora817
Admin directories
/oracle/app/oracle/admin
D:\Oracle\Admin
Database files
/db01/oradata/SID
D:\Oracle\Oradata\SID
/db02/oradata/SID
F:\Oracle\Oradata\SID
/db03/oradata/SID
G:\Oracle\Oradata\SID
服务管理器
从 ORACLE 8i 开始,服务管理器的名字在不同的平台上都一致了,都叫做 svrmgrl 。以前在Windows NT 上 ORACLE 的执行文件名字随着版本变动而改变,对于那些在多平台上工作的人来说这很令人讨厌,尤其是在使用一些命令( imp 、 exp 等)的时候。
ORACLE 服务器版本 Windows 服务器管理器可执行程序 7.3 svrmgr23
8.0
svrmgr30
8.1
svrmgrl
要注意 server manager 正在逐步被淘汰 ( 译者注: 9i 中彻底淘汰了 svrmgrl) ,一些额外的功能被加到了 SQL*Plus 中。
更多信息
全文第二部分 - http://www.dbanotes.net/database/oracle_unix_windows_2000_ii.html
以 Bruce Perens 领衔编辑的 Open Source Series 原来都是 Open Source 版权发布,电子书可以免费从网上下载哦。
以前写 HTML 时要查找缩写词一般去 Acronym Server 查找。 MT 以前的插件中有这个 Acronym Plugin ,可在 Tested in MT3! 那里没有看到该插件。今天偶然发现,该插件作者 Henrik Gemal 已经发布了 2.0 的版本。
在 OraBlogs 上看到一个哥们儿对 Oracle Database 10g New Features – Oracle10g Reference for Advanced Tuning and Administration 这本书的评论。蛮搞笑的。
前几天介绍了 DBAzine.com 上新的 Oracle 10g 技术频道,偶然间发现,DBAzine 也有 Blog 了!
这两天在阅读 Practical Unix & Internet Security 这本经典之作(简介)。在该书的第二十二章 Discovering a Break-in 第二节中提到了这样一段:
See Cliff Stoll's The Cuckoo's Egg (Pocket Books) for the tale of how such a discrepancy led to his discovery of an attacker's activities.
在 Oracle 10g 中,以前熟悉的一些参数已经 deprecated 了,有的时候很烦人。
在上一篇文章中,我大着胆子对易趣和淘宝这两个站点进行了一下片面的比较。总觉得还有好多没有说到的地方。在这篇短文里,将继续说点值得一提的内容。
我读过的第一本 Orailly 出版社 的图书就是该书的第二版。我有限的这点安全知识差不多全从这本书中学来。今天因为系统遇到了安全问题,才想起这本久违的老朋友--在我的硬盘里已经躺了好久了。
一直对 TrackBack 这个概念不是很理解。通过搜索引擎找了几篇文档,加上 Movable Type 自带的文档。读后概念清晰了一些。
什么是 TrackBack ?
TrackBack was designed to provide a method of notification between websites: it is a method of person A saying to person B, "This is something you may be interested in." To do that, person A sends a TrackBack ping to person B.
Oracle 正式宣布收购仁科成功。每股 26.5 美元(共 103 亿美元)。我在先前的那篇书写历史的甲骨文--Oracle 公司传奇里曾说到:
就在2003 年 6 月初,ORACLE 突然宣布 51 亿美金收购仁科(PeopleSoft),业内再次震动...ORACLE 觊觎企业应用软件市场已久,但苦于不能进一步扩大市场分额,尤为重要的是,一旦成功,可以直接对最大的敌人 IBM 进行打击,还可以阻击 SAP 等巨头的强势...让我们拭目以待。
这两个月来,因为工作的需要,对 Web 相关的技术做了一点研究,经过在自己的 站点 上一点实践。觉得自己还算略有心得[实际上是刚刚入门的啦:)]。
本着学以致用的原则,写这篇 Blog 有针对性的做个小小的分析。例子就选择易趣(ebay中国)和淘宝这对竞争对手吧。这里对两个公司的称呼排名按照字母表顺序。以下的"易趣"与"淘宝"如无特殊说明则分别指代双方的 Web 页面。
DBAzine 新发布了一个技术频道:OLC (ORACLE 10g LEARNING CENTER)。
看到了 Jonathan Lewis 的新作:Hidden Benefits of 10g。还有最近风头很猛的 Arup Nanda 的作品。
现在 MT 可用的插件不多,MT-Blacklist 这个获奖的插件是可用的(For 3.1x),而且几乎是 Blog 站点必需的。
San Francisco 的 Oracle OpenWrold 已经结束,会议上的专家演讲的文档(PPT/Word/PDF)可以下载了。
在该页面点击左边的"讲座目录"即可看到。
一直很欣赏Movable Type的强大功能。可由于没有自己更多的可用Web空间,空有羡慕之心。而数据库管理员备忘录站点的内容维护一直是手工编辑代码,工作量不小。
记录一些站点变更的记录。不够完全。
- 2003年12月17日,http://www.dbanotes.net 对外正式开放。页面都是手工编辑的.
- 感谢 omencathay(菜刀) 提供的 HTML 的 Tip!
- 被 Google 搜索引擎收录。 22-Dec-2003
- 因为空间提供商的 Web 空间不支持 PDF 格式扩展名的文件。故取消所有 PDF 格式文件的连接。23-Dec-2003
- 首页添加 Google 搜索。如何添加Google搜索条? 24-Dec-2003
- 调整了页面内容.取消了一幅小图片。11-Jan-2004
- 扩展空间.再也不用理会讨厌的广告了。
- 启用CSDN提供的免费BLog - http://blog.csdn.net/fenng 。 23-jun-2004
- 对www.dbanotes.net做了一些变动。美化了一下页面。变更了主页面布局。 19-Jul-2004
- Sep-2004 进行了文章版权变动。
- 08-Oct-2004 因研究 Web 推广。对站点进行了迁移。目前具备 Awstats 统计功能。
- 09-Oct-2004 被 dmoz.org 收录。站点中文名字:[Oracle数据库管理员备忘录]。
- Oct-2004 重构站点:CSS+XHTML。向标准靠拢 。
- Nov-2004 完全用 XHTML+CSS 打造站点,CSS 和 XHTML 均通过校验。重新添加了 Google 搜索功能。
- Nov-2004 添加了一点Google的广告:静态的文本广告,很容易看出来该篇文章的关键词。
- Nov-2004 定制模板,同一类文章均用统一的 CSS 控制页面布局,达到风格的统一化,对代码格式化总算找到了合适的办法。
- Nov-2004 站点反向连接,用的是 referrers.cgi, 个人认为旧版本比较好用。
- Nov-2004 去掉了电子图书下载
- Nov-2004 针对搜索引擎进行相关的调整,交互式观察,研究了一些搜索引擎的 "习惯"。
- Nov-2004 为公司而作的 Web 测试结束,基本达到了预期目的。
- 08-Dec-2004 被 zeal.com - http://www.zeal.com 目录收录。
- 22-06-2008 归档页面做了重新梳理,CSS 做了 Tweak,显示正常。
- 28-11-2008 迁移到 Linode 。豆瓣提供友情赞助。
何为闪回恢复区
Oracle 10g 有一项新功能称为:自动的基于磁盘的备份与恢复( Automatic Disk-Based Backup and Recovery )。实现该功能的基础为本文要讲述的闪回恢复区( Flash Recovery Area )。闪回恢复区是 Oracle 10g 中的新事物。简单的说,闪回恢复区是一块用以存储恢复相关的文件的存储空间。 允许用户集中存储所有恢复相关的文件。
闪回恢复区可以放在如下几种存储形式上:
- 目录
- 一个文件系统
- 自动存储管理(ASM)磁盘组
在 RAC 环境中,这个该位置必须为 集群文件系统 (cluster file system) 或是 ASM 磁盘组亦或是通过 NFS 控制的文件共享目录,还要注意的是,所有实例的位置和操作系统的磁盘限额 (disk quota) 必须一致。