威's profile飞翔在圣西罗PhotosBlogListsMore ![]() | Help |
|
飞翔在圣西罗爆发还是死亡 February 01 一轮轮收购后,你就等着挨宰吧北京时间2月1日消息,据国外媒体报道,微软公司提出以446亿美元(合每股31美元)价格收购雅虎公司。据PR Newswire发布的微软一份声明称,这个出价与雅虎昨天收盘价相比高出62%。微软表示,雅虎股东根据需要可以选择现金或者股票进行支付。 微软收购了雅虎 Oracle收购了BEA Sun收购了MySql 市场趋向于被寡头垄断 以后买企业级软件就等着挨宰吧呵呵 January 06 迟到的总结和展望我向来是不爱写这种东西的,不过突然觉得这东西起码可以留个纪念,权且写上一笔吧。
07年发生的事情还真不少,总的感觉比前两年要好不少,虽然有些事情的结局并不完美。
迈出职业生涯第二步——虽然自从2年前的这个时候就确定了这件事,但没想到最终不是一次完全主动(半主动)的跳槽。跳了2次,现在安稳下来了,工作还算满意~
考完了OCA——考试前当然也背题,不过还是系统地学习了oracle。可惜证书给寄丢了,先不要了~
与vinny一起度过了一段快乐时光——虽然其间也夹杂了一些苦恼,但仍是一段非常好的记忆。Thank you,vinny~
解决未来生存问题——项目进行中,尚无定论~
健康问题——虽然还是有踢一场正式足球比赛的体力,但发现身体真是不如大学时,明白了健康的重要性。
08奥运年,也没有什么特别值得期待的,不过应该仍会是很充实的一年吧。
感受奥运
好好学英语
考完OCP
戒掉可乐
减掉肚子
看能不能遇到她
第十八章 在数据库之间传输数据第十八章 在数据库之间传输数据
调用方式: 权限: 导出模式: 导出参数
限制: 第十七章 恢复目录的创建和维护第十七章 恢复目录的创建和维护
目标: 描述恢复目录的内容 列出需要恢复目录的 RMAN 功能 创建恢复目录 通过使用 RMAN 命令来维护恢复目录 使用 RMAN 注册、重新同步和重置数据库 查询恢复目录以生成报告和列表 创建、存储和运行脚本 描述备份和恢复恢复目录的方法 要点:
1.概述 恢复目录是在单独的数据库中创建的方案。它包含从目标数据库的控制文件中获取的 RMAN 元数据。RMAN 将有关数据库结构、归档重做日志、备份集以及数据文件副本的信息从目标数据库的控制文件传播到恢复目录中。 当要管理多个目标数据库时,应该使用目录。 RMAN 存储、使用和维护恢复目录中的信息。当执行以下操作时,恢复目录是由 RMAN 维护的: 在目录中注册目标数据库。 重新同步该目录和目标数据库的控制文件。 将数据库重置为以前的复本。 更改有关备份或文件的信息。 执行备份、还原或恢复操作。 可以使用 REPORT 和 LIST 命令从恢复目录中获取信息。可以将脚本存储在恢复目录中。 恢复目录包含关于如下内容的信息:
数据文件和归档重做日志文件备份集和备份片: 该目录存储备份集名称和时间等信息。 数据文件副本: 该目录记录数据文件副本的时间戳和名称。 归档重做日志文件及其副本: 该目录维护服务器创建的归档日志以及 RMAN 制作的任何副本的记录。 目标数据库的物理结构: 它包含的信息与目标数据库控制文件中包含的信息类似。 恢复目录还可能包含: 在 RMAN 会话期间持续有效的配置设置,以及使用 CONFIGURE 命令设置的配置设置。 已存储的脚本是命令的命名序列。脚本不能存储在目标数据库的控制文件中。 使用恢复目录的优点
在一个目录中存储多个目标数据库的元数据 单个目标数据库的多个复本的元数据 历史记录元数据 报告非当前时间的目标数据库 2.创建恢复目录 步骤: 连接到目录数据库并为该目录创建表空间 创建恢复目录的用户和方案 授予该用户维护恢复目录和执行备份、恢复操作的角色和权限 SQL> grant recovery_catalog_owner to rman_db01; SQL> grant connect, resource to rman_db01; 登录到操作系统上,发出 RMAN 命令以调用 RMAN 命令解释器。创建目录。 rman catalog rman_db1/rman_db1@catdb log = catalog.log create catalog tablespace rman_ts; exit; 连接到目标数据库。要执行所有的备份和恢复操作,必须以具有SYSDBA权限的用户身份登录到目标数据库上。 rman target sys/oracle@db01 RMAN-06005: connected to target database: DB01 (DBID=472633597) RMAN> connect catalog rman_db01/rman_db01@catdb --?如何有多个数据库需要管理,是使用一个目录还是多个? RMAN-06008: connected to recovery catalog database 在目录中注册目标数据库。如果未在恢复目录中注册目标数据库,则不能使用该目录存储有关该数据库的信息。 RMAN> register database; 3.使用恢复目录连接 步骤: 从目标数据库启动 RMAN 会话。 rman target sys/oracle@db01 连接到恢复目录数据库。 RMAN> connect catalog rman_db01/rman_db01@catdb 4.目录维护命令 重新同步恢复目录 RESYNC CATALOG 重新同步恢复目录可确保元数据与目标控制文件的最新状态保持一致。 可以进行部分或完全重新同步。 RMAN 自动检测何时需要执行完全或部分重新同步,并根据需要执行该操作。也可以通过发出RESYNC CATALOG命令强制执行完全重新同步。 要确保目录处于最新状态,请定期运行 RESYNC CATALOG 命令。 CONTROL_FILE_RECORD_KEEP_TIME 的设置值。因为控制文件使用一个循环重用的系统,所以最终会覆盖备份和副本记录。通过重新同步该目 录,可确保将这些记录存储在目录中,而不会丢失。 RESYNC CATALOG 命令更新以下记录: 日志历史记录:在进行日志切换时创建。恢复管理器跟踪该信息,以便明确应该查找哪些归档日志。 归档重做日志:与通过归档联机日志、复制现有的归档日志或还原归档日志备份集创建的归档日志相关联。 备份历史记录:与备份集、备份片、备份集成员、代理副本和映像副本相关联。 物理方案:与数据文件和表空间相关联。 重置数据库复本 RESET DATABASE
数据库的复本号是在将日志序列号重置为零前用于标识数据库版本的号码。它可防止将归档和联机重做日志应用到错误的数据库复本中。恢复管理器使用 RESET DATABASE 命令在恢复目录中存储数据库复本信息。所有后续备份和日志归档均与新数据库复本相关联。如果将目标数据库恢复到过去的某一时刻,则必须使用 RESETLOGS 选项打开该数据库。这种情况下,在发出 RESET DATABASE 命令前,恢复管理器无法再次使用恢复目录。这样,恢复管理器就可以区分 RESETLOGS 和旧控制文件的故障还原了。 RESET DATABASE TO INCARNATION <identifier> 命令通过还原以前的数据库复本备份来撤消 RESETLOGS 操作的影响。必须指定要还原的数据库复本的记录主键: RMAN> reset database to incarnation <identifier>; 注:标识符是通过 LIST INCARNATION OF DATABASE 命令获取的。 恢复目录报告
REPORT 命令 可以使用 REPORT 命令来分析备份、复制、还原和恢复操作的各个方面。 LIST 命令 可以使用 LIST 命令显示备份集、文件副本和归档日志的相关信息(存储在恢复目录中)。 相关视图
RC_DATABASE 确定哪些数据库当前已在恢复目录中注册 RC_DATAFILE 确定哪些数据文件当前已在恢复目录中注册 RC_STORED_SCRIPT 确定已存储的脚本 RC_STORED_SCRIPT_LINE 确定已存储脚本的文本 RC_TABLESPACE 确定哪些表空间当前存储在目标数据库的恢复目录中 已存储的脚本
恢复管理器脚本是一组命令,它: 可以指定频繁使用的备份、恢复和还原操作 由 CREATE SCRIPT 命令创建的 存储在恢复目录中 只有通过 RUN 命令才能调用 使用 CREATE SCRIPT 存储脚本 RMAN> create script Level0Backup {...} 使用 EXECUTE SCRIPT 运行脚本 RMAN > run {execute script Level0Backup;} 使用 REPLACE SCRIPT 重写脚本 --必须提供整个脚本,而不仅仅是更改的行。 RMAN> REPLACE SCRIPT Level0Backup {...} 使用 DELETE SCRIPT 删除脚本 RMAN> DELETE SCRIPT Level0Backup; 使用 PRINT SCRIPT 显示脚本 RMAN> PRINT SCRIPT Level0Backup; 恢复目录备份恢复 类似与目标数据库的备份恢复(物理备份恢复,逻辑备份恢复) 始终将恢复目录存储在不同于目标数据库的数据库中。确保将目录数据库的相关文件与目标数据库的相关文件存储在不同的磁盘上。 当重建了恢复目录后,应该立即重新同步该目录与目标数据库的控制文件。 第十七章 恢复目录的创建和维护第十七章 恢复目录的创建和维护
目标: 描述恢复目录的内容 列出需要恢复目录的 RMAN 功能 创建恢复目录 通过使用 RMAN 命令来维护恢复目录 使用 RMAN 注册、重新同步和重置数据库 查询恢复目录以生成报告和列表 创建、存储和运行脚本 描述备份和恢复恢复目录的方法 要点:
1.概述 恢复目录是在单独的数据库中创建的方案。它包含从目标数据库的控制文件中获取的 RMAN 元数据。RMAN 将有关数据库结构、归档重做日志、备份集以及数据文件副本的信息从目标数据库的控制文件传播到恢复目录中。 当要管理多个目标数据库时,应该使用目录。 RMAN 存储、使用和维护恢复目录中的信息。当执行以下操作时,恢复目录是由 RMAN 维护的: 在目录中注册目标数据库。 重新同步该目录和目标数据库的控制文件。 将数据库重置为以前的复本。 更改有关备份或文件的信息。 执行备份、还原或恢复操作。 可以使用 REPORT 和 LIST 命令从恢复目录中获取信息。可以将脚本存储在恢复目录中。 恢复目录包含关于如下内容的信息:
数据文件和归档重做日志文件备份集和备份片: 该目录存储备份集名称和时间等信息。 数据文件副本: 该目录记录数据文件副本的时间戳和名称。 归档重做日志文件及其副本: 该目录维护服务器创建的归档日志以及 RMAN 制作的任何副本的记录。 目标数据库的物理结构: 它包含的信息与目标数据库控制文件中包含的信息类似。 恢复目录还可能包含: 在 RMAN 会话期间持续有效的配置设置,以及使用 CONFIGURE 命令设置的配置设置。 已存储的脚本是命令的命名序列。脚本不能存储在目标数据库的控制文件中。 使用恢复目录的优点
在一个目录中存储多个目标数据库的元数据 单个目标数据库的多个复本的元数据 历史记录元数据 报告非当前时间的目标数据库 2.创建恢复目录 步骤: 连接到目录数据库并为该目录创建表空间 创建恢复目录的用户和方案 授予该用户维护恢复目录和执行备份、恢复操作的角色和权限 SQL> grant recovery_catalog_owner to rman_db01; SQL> grant connect, resource to rman_db01; 登录到操作系统上,发出 RMAN 命令以调用 RMAN 命令解释器。创建目录。 rman catalog rman_db1/rman_db1@catdb log = catalog.log create catalog tablespace rman_ts; exit; 连接到目标数据库。要执行所有的备份和恢复操作,必须以具有SYSDBA权限的用户身份登录到目标数据库上。 rman target sys/oracle@db01 RMAN-06005: connected to target database: DB01 (DBID=472633597) RMAN> connect catalog rman_db01/rman_db01@catdb --?如何有多个数据库需要管理,是使用一个目录还是多个? RMAN-06008: connected to recovery catalog database 在目录中注册目标数据库。如果未在恢复目录中注册目标数据库,则不能使用该目录存储有关该数据库的信息。 RMAN> register database; 3.使用恢复目录连接 步骤: 从目标数据库启动 RMAN 会话。 rman target sys/oracle@db01 连接到恢复目录数据库。 RMAN> connect catalog rman_db01/rman_db01@catdb 4.目录维护命令 重新同步恢复目录 RESYNC CATALOG 重新同步恢复目录可确保元数据与目标控制文件的最新状态保持一致。 可以进行部分或完全重新同步。 RMAN 自动检测何时需要执行完全或部分重新同步,并根据需要执行该操作。也可以通过发出RESYNC CATALOG命令强制执行完全重新同步。 要确保目录处于最新状态,请定期运行 RESYNC CATALOG 命令。 CONTROL_FILE_RECORD_KEEP_TIME 的设置值。因为控制文件使用一个循环重用的系统,所以最终会覆盖备份和副本记录。通过重新同步该目 录,可确保将这些记录存储在目录中,而不会丢失。 RESYNC CATALOG 命令更新以下记录: 日志历史记录:在进行日志切换时创建。恢复管理器跟踪该信息,以便明确应该查找哪些归档日志。 归档重做日志:与通过归档联机日志、复制现有的归档日志或还原归档日志备份集创建的归档日志相关联。 备份历史记录:与备份集、备份片、备份集成员、代理副本和映像副本相关联。 物理方案:与数据文件和表空间相关联。 重置数据库复本 RESET DATABASE
数据库的复本号是在将日志序列号重置为零前用于标识数据库版本的号码。它可防止将归档和联机重做日志应用到错误的数据库复本中。恢复管理器使用 RESET DATABASE 命令在恢复目录中存储数据库复本信息。所有后续备份和日志归档均与新数据库复本相关联。如果将目标数据库恢复到过去的某一时刻,则必须使用 RESETLOGS 选项打开该数据库。这种情况下,在发出 RESET DATABASE 命令前,恢复管理器无法再次使用恢复目录。这样,恢复管理器就可以区分 RESETLOGS 和旧控制文件的故障还原了。 RESET DATABASE TO INCARNATION <identifier> 命令通过还原以前的数据库复本备份来撤消 RESETLOGS 操作的影响。必须指定要还原的数据库复本的记录主键: RMAN> reset database to incarnation <identifier>; 注:标识符是通过 LIST INCARNATION OF DATABASE 命令获取的。 恢复目录报告
REPORT 命令 可以使用 REPORT 命令来分析备份、复制、还原和恢复操作的各个方面。 LIST 命令 可以使用 LIST 命令显示备份集、文件副本和归档日志的相关信息(存储在恢复目录中)。 相关视图
RC_DATABASE 确定哪些数据库当前已在恢复目录中注册 RC_DATAFILE 确定哪些数据文件当前已在恢复目录中注册 RC_STORED_SCRIPT 确定已存储的脚本 RC_STORED_SCRIPT_LINE 确定已存储脚本的文本 RC_TABLESPACE 确定哪些表空间当前存储在目标数据库的恢复目录中 已存储的脚本
恢复管理器脚本是一组命令,它: 可以指定频繁使用的备份、恢复和还原操作 由 CREATE SCRIPT 命令创建的 存储在恢复目录中 只有通过 RUN 命令才能调用 使用 CREATE SCRIPT 存储脚本 RMAN> create script Level0Backup {...} 使用 EXECUTE SCRIPT 运行脚本 RMAN > run {execute script Level0Backup;} 使用 REPLACE SCRIPT 重写脚本 --必须提供整个脚本,而不仅仅是更改的行。 RMAN> REPLACE SCRIPT Level0Backup {...} 使用 DELETE SCRIPT 删除脚本 RMAN> DELETE SCRIPT Level0Backup; 使用 PRINT SCRIPT 显示脚本 RMAN> PRINT SCRIPT Level0Backup; 恢复目录备份恢复 类似与目标数据库的备份恢复(物理备份恢复,逻辑备份恢复) 始终将恢复目录存储在不同于目标数据库的数据库中。确保将目录数据库的相关文件与目标数据库的相关文件存储在不同的磁盘上。 当重建了恢复目录后,应该立即重新同步该目录与目标数据库的控制文件。 第十六章 RMAN维护第十六章 RMAN维护
使用 BACKUP 命令的 DELETE INPUT 选项
相关参数: 示例: 5.将归档重做日志文件和用户管理的备份列入目录 要列入目录的操作系统备份必须符合以下条件: RMAN 将操作系统备份视为数据文件副本。在列入目录期间,RMAN 只检查文件头。它不检查操作系统实用程序是否已正确复制该文件。 示例: 使用 CHANGE … UNCATALOG 命令可以: 第十五章 RMAN不完全恢复第十五章 RMAN不完全恢复
目标: 使用 UNTIL TIME 进行不完全数据库恢复 使用 UNTIL SEQUENCE 进行不完全数据库恢复 要点:
1.使用RMAN进行数据库的不完全恢复 不完全恢复的还原和恢复进程的步骤和语法与完全恢复相同,只是需要从过去的备份中还原所有数据文件。 --数据库需要一致 目标数据库必须处于已装载的状态。 要还原的文件必须处于脱机状态。只有在备份是通过 RMAN 生成或注册的情况下,才能使用 RMAN 进行还原。 步骤: 装载数据库。 为并行化分配多个通道。 还原所有数据文件。 使用 UNTIL TIME、UNTIL SEQUENCE 或 UNTIL SCN 恢复数据库。 使用 RESETLOGS 打开数据库。 执行整体数据库备份。 2.使用 UNTIL TIME 进行 RMAN 不完全恢复的示例 在夜间12 点,确定EMPLOYEES表被删除后,立即关闭数据库并开始恢复。已知故障发生时间,并且上午11点44分以来没有更改过数据库结构。在此情况下,可以使用UNTIL TIME方法: 如果目标数据库已打开,则彻底关闭它。 装载目标数据库。不要在恢复期间备份数据库。 确保 NLS_LANG 和 NLS_DATE_FORMAT 环境变量已正确设置: $NLS_LANG=american $NLS_DATE_FORMAT=’YYYY-MM-DD:HH24:MI:SS’ 启动恢复管理器并连接至目标数据库。 $rman target rman/rman@DB00 进行恢复: RMAN> run { 2> allocate channel c1 type DISK; 3> allocate channel c2 type DISK; 4> set until time = '2000-12-09:11:44:00'; 5> restore database; 6> recover database; 7> alter database open resetlogs; } 确认表存在,然后执行备份。 通知用户数据库可以使用,需要重新输入系统发生故障前未提交的所有数据。 如果使用恢复目录,则注册数据库的新复本: RMAN> reset database; 3.使用 UNTIL SEQUENCE 进行 RMAN 不完全恢复的示例 UNTIL SEQUENCE 子句指定重做日志序列号和线程号的上限。RMAN 对日志序列号小于指定日志序列号的文件执行操作。 RMAN> RUN { 2> SET UNTIL SEQUENCE 120 THREAD 1; 3> ALTER DATABASE MOUNT; 4> RESTORE DATABASE; 5> RECOVER DATABASE; # recovers through log 119 6> ALTER DATABASE OPEN RESESTLOGS; 7> } 第十四章 用户管理的不完全恢复
要点:
基于取消的恢复 基于更改的恢复 使用备份控制文件恢复
事务活动只能前滚至期望的时间,而不能回退至期望的时间。这就是对要及时恢复的数据库必须还原所有数据文件的原因。如果没能还原所有数据文件,将无法打开(非同步)数据库。 开始不完全恢复之前应执行整体关闭数据库备份(包括控制文件和重做日志)。为了: 恢复成功后,执行关闭的数据库的整体备份。如果需要进行恢复才能完成下一次排定的备份,则建议使用这种方法。 在允许用户访问系统之前一定要验证故障是否已经修复,以防止恢复失败而需要再次进行恢复。 从系统中备份(以后删除)归档日志,以避免混合不同数据库复本中的归档。 在恢复前后均应查看警报日志(alert.log)
7.使用UNTIL CANCEL进行不完全恢复示例
第十三章 RMAN完全恢复第十三章 RMAN完全恢复
使用RMAN将数据文件还原到新位置
第十二章 用户管理的完全恢复第十二章 用户管理的完全恢复
9.只读表空间恢复 当出现以下情况时,必须为只读表空间考虑一些特殊事项:
第十一章 RMAN备份第十一章 RMAN备份
目标: 确定 RMAN 特定的备份类型 使用 RMAN BACKUP 命令创建备份集 备份控制文件 备份归档重做日志文件 使用 RMAN COPY 命令创建映像副本 要点: 1.RMAN备份概念 恢复管理器提供对以下内容进行备份的功能: 整个数据库、表空间中的每个数据文件或单个数据文件 控制文件 所有归档日志或所选归档日志 注:使用恢复管理器时不备份联机重做日志文件。 关闭的数据库的备份
关闭的数据库的备份定义为在数据库关闭(脱机)时进行的备份。这与一致数据库备份相同。如果执行关闭的数据库的备份,则不得打开目标数据库。如果使用恢复目录,则必须打开恢复目录数据库。 打开的数据库的备份 打开的数据库的备份定义为在数据库打开(联机)时对数据库任意部分进行的备份。恢复管理器使用服务器进程制作数据文件、控制文件或归档日志的副本。使用恢复管理器时,不要使用 ALTER TABLESPACE ... BEGIN BACKUP 命令将表空间置于备份模式。RMAN读取块,直到获得一致读取为止。 映像副本:
数据文件、控制文件或归档重做日志文件的副本。可以使用恢复管理器或os命令制作相应的副本。数据文件的映像副本 包含所有的数据文件块,其中包括未使用过的块。映像副本只能包含一个文件,而且不能对单个复制操作进行多元备份。 备份集:
可以包含一个或多个数据文件、控制文件或归档重做日志文件(以RMAN特定的格式存储在磁盘或磁带上)。 备份级分类: 备份集有两种类型: 数据文件:可以包含数据文件和控制文件,但不包含归档日志 归档日志:仅包含归档日志,不能包含数据文件或控制文件 制作备份级的方法: 完全备份:在完全备份中,可以备份一个或多个文件。在完全备份中,所有包含指定文件数据的数据块都会被备份。 增量备份:增量备份只对上次增量备份以后数据块有更改的数据文件进行备份。 增量备份需要一个基础级别(即增量级别 0)备份,该备份包含指定文件数据的所有块。 增量级别 0 和完全备份均复制数据文件中的所有块,但是在增量备份策略中不能使用完全备份。 数据文件备份集中的控制文件: 备份集中的每个文件必须具有相同的Oracle块大小。如果包含控制文件,就会将它写入到最后一个数据文件备份集中。可以通过: 使用 INCLUDE CONTROL FILE 语法显式包含 通过备份文件 1(系统数据文件)隐式包含 BACKUP命令:
用于备份数据文件、归档重做日志文件以及控制文件。命令将文件备份到磁盘或磁带上的一个或多个备份集中。在数据库打开或关闭时,都 可以制作备份。类型既可以是完全备份,也可以是增量备份。 2.备份集(set)和备份片(piece) 备份集是一种逻辑结构,它具有以下特性: 备份集包含一个或多个称作备份片的物理文件。 备份集是使用BACKUP命令创建的。FILESPERSET参数可以控制备份集中包含的数据文件个数。 可以将备份集写入磁盘或磁带。 在执行恢复之前必须通过还原操作(即复制and覆盖)从备份集中提取文件。 归档重做日志文件备份集不能是增量备份(缺省为完全备份)。 备份集不包含从未使用过的数据块。 备份片: 逻辑备份集通常只包含一个备份片。备份片是一个包含一个或多个Oracle数据文件或归档日志的物理文件 (文件可能跨备份片,或者说每个如果一个文件超过备份片最大大小,则数据块会分布在每个备份片上)。 限制备份片大小: ALLOCATE CHANNEL … MAXPIECESIZE = integer CONFIGURE CHANNEL … MAXPIECESIZE = integer 3.backup命令 在使用 BACKUP 命令时,必须执行以下操作: 装载或打开目标数据库。 如果未使用自动通道分配,则手动分配一个通道用以执行BACKUP命令。 或者执行以下操作: 指定备份片的命名约定。如果未指定FORMAT参数,则将备份片存储在特定目录中(dbs)。如果未指定文件名格式,则缺省使用%U。 通过使用 INCLUDE CURRENT CONTROLFILE 选项,可以将控制文件包含在备份集中。 backup命令选项: 详见sg 4.双重备份集 通过对备份集进行双重备份,可以给每个备份片最多创建 4 个完全相同的副本。 可以使用以下命令生成双重备份的备份集: BACKUP COPIES SET BACKUP COPIES CONFIGURE … BACKUP COPIES 例:RMAN> BACKUP COPIES 2 DATAFILE 1, DATAFILE 2 FORMAT '/BACKUP1/%U','/BACKUP2/%U'; 注:RMAN 并不生成多个备份集,而是给集内的每个备份片生成完全相同的副本。 另一种方法是备份备份集:RMAN>BACKUP BACKUPSET 5.归档重做日志文件的备份 在开始执行每个不包含UNTIL子句或SEQUENCE参数的BACKUP ... ARCHIVELOG命令时,RMAN会尝试自动切换并归档当前的联机重做日志。 在9i中,RMAN执行归档日志故障转移。如果在归档重做日志文件中检测到任何损坏的块,RMAN就会在其它归档目标中搜索没有损坏块的文件。 使用BACKUP ARCHIVELOG备份归档重做日志,或在备份数据文件和控制文件时使用BACKUP…PLUS ARCHIVELOG命令也同时备份这些日志文件。 归档日志备份集的特性 仅包含归档日志,不能包含数据文件或控制文件。 始终是完全备份。(因为可以指定要备份的归档日志的范围,所以无法执行增量备份。) 示例:
RMAN> BACKUP 2> FORMAT '/disk1/backup/ar_%t_%s_%p' 3> ARCHIVELOG ALL DELETE ALL INPUT; 将所有的归档重做日志备份到一个备份集中,其中每个备份片包含3个归档日志。在归档日志复制完毕后,将这些日志从磁盘上删除,并在 V$ARCHIVED_LOG视图中将它们标记为已删除。 6.备份约束 恢复管理器要连接的目标数据库必须已装载。 不支持对联机重做日志进行备份。 如果目标数据库处于NOARCHIVELOG模式,则只能采用“干净的”表空间和数据文件备份(即 “脱机正常” 或 “只读” 表空间的备份)。 如果目标数据库处于ARCHIVELOG模式,则只能备份“当前的”数据文件(通过恢复将数据文件还原为当前状态)。 如果使用恢复目录,则必须打开恢复目录数据库。 7.映像副本 映像副本包含单个数据文件、归档重做日志文件或控制文件。可以使用 RMAN COPY 命令或操作系统命令创建映像副本。 当使用 RMAN COPY 命令创建映像副本时,服务器会话验证文件中的块,并将副本记录到控制文件中。 使用 RMAN COPY 命令可以创建文件的映像副本。输出文件始终写入磁盘。可以复制数据文件、归档重做日志文件或控制文件。在很多情况下,复制数据文件比备份这些文件更有益处,原因是复制的数据文件输出不需要任何其它处理就可以使用。 如果要使用 COPY 命令备份整个数据库,必须使用单独的 COPY 语句复制每个数据文件。也可以制作控制文件和归档重做日志文件的副本。 注:COPY与BACKUP的区别在于,备份是备份文件中所有使用的数据块,复制则是复制整个文件(所有的块,无论是否使用)。 映像副本的特性:
只能将映像副本写入磁盘。 如果文件存储在磁盘上,则可以立即使用这些文件(这些文件不需要从其它介质还原,相当于ALTER DATABASE RENAME FILE语句)。 映像副本中将包含所有的块(不管这些块是否包含数据)。 映像副本可以是完全备份或增量 0 级备份的一部分。 在增量备份策略中,可以将映像副本指定为 0 级备份,但映像副本不能作为其它级别的备份。 COPY命令的检测选项
在复制操作中,Oracle 服务器进程对每个块执行校验和计算以检测是否有块损坏。RMAN 在还原副本时也要核对校验和。该过程称为物理损坏检测。可以使用 NOCHECKSUM 选项取消校验和操作,从而加快复制进程。 可以使用 CHECK LOGICAL 选项测试通过了物理损坏检查的数据和索引块,查看它们是否存在逻辑损坏,如行片或索引条目损坏。如果检测到任何块存在逻辑损坏,则将该块记录到服务器进程的警报日志和跟踪文件中。 可以使用 MAXCORRUPT 参数设置逻辑和物理损坏的阈值。只要在某个文件中检测到的逻辑和物理损坏总和低于该值,则 RMAN 命令完成,同时 Oracle 将损坏块的范围植入到 V$COPY_CORRUPTION 视图。如果超出 MAXCORRUPT,则该命令终止,并且不植入视图。 映像复制并行性
缺省情况下,恢复管理器将连续执行各 COPY 命令。可以通过以下方法并行执行复制操作: 使用 CONFIGURE DEVICE TYPE … PARALLELISM integer 分配多个通道 为多个文件指定一条COPY命令 当并行度比较高时,占用的计算机资源较多,但备份操作完成速度较快。 示例:
RMAN> COPY 2> DATAFILE '/ORADATA/users_01_db01.dbf' TO 3> '/BACKUP/users01.dbf' tag=DF3, 4> ARCHIVELOG 'arch_1060.arc' TO 5> 'arch_1060.bak'; RMAN> CONFIGURE DEVICE TYPE disk parallelism 4;
2> COPY # 3 files copied in parallel 3> datafile 1 TO '/BACKUP/df1.dbf', 4> datafile 2 TO '/BACKUP/df2.dbf', 5> datafile 3 TO '/BACKUP/df3.dbf'; RMAN> COPY # Second copy command 2> datafile 4 TO '/BACKUP/df4.dbf'; 复制整个数据库
连接到 RMAN 并在装载模式下启动: RMAN> STARTUP MOUNT 获取目标数据库的数据文件列表: RMAN> REPORT SCHEMA; 使用 COPY 命令或脚本创建上面列出的所有数据文件的副本: RMAN> COPY datafile 1 TO '/BACKUP/df1.cpy',datafile 2 TO '/BACKUP/df2.cpy ',...; 使用 LIST COPY 命令验证副本: RMAN> LIST COPY; 可以使用CURRENT CONTROLFILE命令将控制文件包含在副本中。此外,如果CONFIGURE CONTROLFILE AUTOBACKUP为 ON,则在执行COPY命令后,RMAN 将自动备份控制文件。 8.增量备份 完全备份 完全备份与整体数据库备份不同。整体备份包含目标数据库的所有数据文件和控制文件,而完全备份可能只包含一个或多个数据文件、控制文件或归档重做日志文件。 在执行完全备份时,Oracle 服务器进程读取整个文件,并将所有的块复制到备份集内,只跳过从未使用过的数据文件块。在备份归档重做日志或控制文件时,服务器会话不会跳过任何块。 完全备份不属于增量备份策略的一部分。可以用它创建和还原数据文件、数据文件副本、表空间、数据库、控制文件、归档日志和归档日志副本的完全备份。注意,包含归档重做日志的备份集始终是完全备份。 增量备份
增量备份仅包含自上次增量备份以来更改过的块。 RMAN 可以创建多级增量备份: 差异备份:这是增量备份的缺省类型,它备份自最近n级或更低级别备份以来更改过的所有块 累积备份:备份自最近n-1级或更低级别备份以来更改过的所有块 差异备份是使用BACKUP命令的INCREMENTAL关键字指定的。可以指定INCREMENTAL LEVEL = integer,其中integer是1到4之间的任意整数。 必须将0级备份作为增量策略的基础备份。0级增量备份在内容上与完全备份相同,但与完全备份不同的是,0级备份被看作是增量策略的一部分。如果在运行1级或更高级别的备份时,0级备份不存在,RMAN会自动制作0级备份。 累积增量备份具有以下特性:
累积增量 n 级(n > 0)备份复制自上次 n-1 级或更低级别备份以来更改过的所有块。 累积增量备份以相同的级别备份上次备份的块。因此,与非累积备份相比,它们占用的时间较长、写出的块较多、生成的备份文件也较大。 因为恢复时在各级别必须应用的备份较少,所以累积增量备份可以提高恢复速度。 示例:
累积增量备份以相同的级别复制上次增量备份已复制的更改。因此,如果采用 2 级增量备份,则随后的 2 级累积备份将备份所有新修改的块以及该 2 级增量备份备份过的块。这意味着要进行完全、恢复,只需要一个同级的增量备份即可。 RMAN> BACKUP INCREMENTAL level 2 cumulative database; 9.在NOARCHIVELOG模式下进行备份 确保要存储备份的目标目录可用并具有足够的空间。 使用NORMAL、IMMEDIATE或TRANSACTIONAL子句彻底关闭数据库。 装载数据库。 如果未使用自动通道分配,请分配多个通道,并使用格式字符串将通道多路复用到不同的磁盘上。 运行 BACKUP 命令。由于数据库处于NOARCHIVELOG模式,增量备份不适用,请使用完全备份选项。 确认备份完成并已分类。 打开数据库进行正常使用。 命令如下: RMAN> BACKUP DATABASE FILESPERSET 3; 10.自动备份控制文件 如果 CONFIGURE CONTROLFILE AUTOBACKUP 设置为 ON,则在以下情况下,RMAN 自动执行控制文件的自动备份: 在 RMAN 提示符下执行每个 BACKUP 或 COPY 命令后 当 RUN 命令块中 BACKUP 或 COPY 命令后跟的既不是 BACKUP 也不是 COPY 时 当每个 RUN 命令块结尾处的最后一条命令既不是 BACKUP 也不是 COPY 时 在执行这些命令过程中,除了执行当前控制文件的备份或复制外,还进行控制文件的自动备份。 缺省情况下,CONFIGURE CONTROLFILE AUTOBACKUP 设置为 OFF。 RMAN 使用 %F 这种缺省格式自动备份当前的控制文件。可以使用 CONFIGURE CONTROLFILE AUTOBACKUP FORMAT 和 SET CONTROLFILE AUTOBACKUP FORMAT 命令更改此格式。
格式字符串必须包含 %F 替代变量。此变量将转换为 c-IIIIIIIIII-YYYYMMDD-QQ,其中: IIIIIIIIII 代表 DBID。DBID 以十进制输出,因此可以方便地将它与目标数据库关联起来。 YYYYMMDD 是生成备份当天的公历时间戳 QQ 是序列号(十六进制数字),从 00 开始,最大值为 'FF' (256) 11.备份和映像副本的标记 标记是可以分配给备份集或映像副本的有意义的名称。使用用户标记的优点如下: 标记可以为文件副本集合或备份集提供有用的引用。 在 LIST 命令中,使用标记可以容易地定位已备份的文件。 可以在 RESTORE 和 SWITCH 命令中使用标记。 同样的标记可以用于多个备份集或文件副本。 如果一个不唯一的标记引用了多个数据文件,则恢复管理器会选择最新的可用文件。 12.RAMN的监视和查询 RMAN 动态视图 可以使用以下视图获取在控制文件中存储的 RMAN 信息: V$ARCHIVED_LOG 显示在数据库中已经创建、备份或清除的归档文件。 V$BACKUP_CORRUPTION 显示在备份集的备份过程中找到的损坏块。 V$COPY_CORRUPTION 显示映像复制过程中找到的损坏块。 V$BACKUP_DATAFILE 用于通过确定各数据文件中的块数来创建大小相同的备份集。通过它也可以找出数据文件中已损坏的块数。 V$BACKUP_REDOLOG 显示在备份集中存储的归档日志。 V$BACKUP_SET 显示已经创建的备份集。 V$BACKUP_PIECE 显示为备份集创建的备份片。 如何监视复制进程 使用 SET COMMAND ID 命令可将服务器会话与通道联系起来。 查询 V$PROCESS 和 V$SESSION,可以确定会话与哪些 RMAN 通道对应。 查询 V$SESSION_LONGOPS,可以监视备份和复制的进度。 使用操作系统实用程序可以监视进程或线程。 第十章 用户管理的备份第十章 用户管理的备份 1.术语 表空间备份 数据文件备份
查询视图以获得数据库文件信息 评估备份方法
备份步骤: 特点:
进行打开的数据库的备份的优点: 进行打开的数据库的备份的要求: 对打开的数据库执行备份时的选项
使用操作系统复制命令将表空间中的所有数据文件复制到备份存储中。 备份表空间的各数据文件后,通过ALTER TABLESPACE tablespace_name END BACKUP命令将它们设置为正常模式 归档尚未归档的重做日志,以便归档恢复表空间备份所需的重做日志 对所有表空间重复这些步骤,包括SYSTEM和UNDO表空间。 ALTER TABLESPACE BEGIN BACKUP和ALTER TABLESPACE END BACKUP命令之间的间隔时间应尽量缩短,
使用V$CONTROLFILE视图显示所有控制文件的名称。 使用V$LOGFILE视图显示所有重做日志文件的名称。 查询V$BACKUP视图以确定哪些文件处于备份模式。发出ALTER TABLESPACE BEGIN BACKUP命令后,状态将更改为ACTIVE。 处于备份模式的数据文件的信息也可以通过查询V$DATAFILE_HEADER视图获得。
备份过程:
步骤(无先后顺序): 原则
October 07 032 第九章 Oracle Recovery Manager概览和配置第九章 Oracle Recovery Manager概览和配置
“Oracle Enterprise Manager 备份、恢复和目录维护”: 向导提供访问恢复管理器的图形用户界面。只有连接到管理服务器 (Management Server) ,向导和属性工作表才可用。 服务器会话:由 RMAN 调用的服务器进程 (UNIX) 或线程 (Windows NT) 与目标数据库连接,通过 PL/SQL 接口执行备份、还原和恢复功能。 目标数据库:正在使用 RMAN 对其进行备份和恢复操作的数据库称作目标数据库。 RMAN 资料档案库:RMAN 在执行备份、还原和恢复操作时使用的数据称为 RMAN 元数据。这些元数据存储在目标数据库的控制文件和可选的恢复目录数据库中。 通道:要执行并记录备份和恢复操作,RMAN 需要链接至目标数据库。该链接称为通道。可以手动分配通道,也可以使用自动通道分配功能预先配置通道。 介质管理库:介质管理库(MML)由RMAN在写入磁带或从磁带读取时使用。使用磁带介质所需的附加介质管理软件由介质和存储系统供应商提供。
CONTROL_FILE_RECORD_KEEP_TIME参数用于确定一个记录至少要保留多少天才可被覆盖。缺省值为 7 天。
手动分配通道 自动分配通道
调用 RMAN 时执行命令文件:
CONFIGURE 命令: SHOW 命令 LIST 命令 REPORT 命令
执行授权操作的用户组:必须确定执行授权操作的用户组。可以相应地设置用户帐户,使之具备必要的操作系统和 Oracle 数据库权限。 远程操作:需要使用口令文件通过 Oracle Net 连接到目标数据库,以执行授权的操作。 全球化环境变量:调用 RMAN 之前,设置 NLS_DATE_FORMAT 和 NLS_LANG 环境变量。 使用恢复目录:如果使用恢复目录,RMAN 可以执行更多种类的自动备份和恢复功能。使用恢复目录会涉及存储空间和维护方面的工作。 032 第八章 配置数据库归档模式第八章 配置数据库归档模式
启用自动归档:设置初始化参数LOG_ARCHIVE_START=TRUE 指定多个 ARCn 进程 手动归档联机重做日志文件
LOG_ARCHIVE_DEST_n 是动态参数,可以在系统级或会话级对其进行修改。目标可以是: 使用 LOG_ARCHIVE_DEST_n 参数时,可以将目标指定为强制 (mandatory) 或可选 (optional),如下所示: REOPEN 属性 几个示例: 指定成功归档位置的最小数量
032 第七章 例程和介质恢复结构第七章 例程和介质恢复结构
内存结构 内存结构 用户进程 服务器进程 Oracle 数据库 动态视图
调整大型共享池的大小 大型共享池参数
DBWn 后台进程的功能 数据文件 配置表空间
LGWR后台进程的功能 重做日志文件 多元备份的原则
检查点位置 检查点队列 检查点类型 增量检查点(也称为快速启动检查点)--定期写入,仅写入最旧的块 部分检查点
控制文件的内容 如何对控制文件进行多元备份
数据库文件同步
崩溃恢复的五个阶段 11.优化崩溃恢复和例程恢复的性能 要将例程恢复和崩溃恢复的持续时间保持在用户指定的范围内,可以采用多种方法:
优化前滚阶段 优化回退阶段 September 28 032 第五章 Oracle Shared Server 的使用和配置第五章 Oracle Shared Server 的使用和配置
目标: 识别 Oracle Shared Server 的各个组件 描述 Oracle Shared Server 的体系结构 配置 Oracle Shared Server 了解和说明相关数据字典视图的用处 要点: 1.专用服务器进程 用户进程和服务器进程是分开的。 每个用户进程都有自己的服务器进程。 用户进程和服务器进程可在不同的机器上运行,以利用分布式处理的优势。 用户进程和服务器进程的比率是 1 比 1。 即使用户进程不发出数据库请求,专用服务器也存在,只是保持空闲状态。 此处所用的程序接口取决于用户进程和专用服务器进程是否在同一台机器上。如果在同一机器上,进程间的程序接口将使用主机操作系统的交互进程通信 (IPC) 机制。 2 oracle shared server Oracle Shared Server 配置使得共享服务器、专用服务器及组合在一起的用户和服务器能够在同一例程内存在。 在具备相同数目的服务器的情况下,由于 Oracle Shared Server 体系结构中的用户共享服务器进程,因此,使用 Oracle Shared Server 可支持的用户比在专用服务器配置中可支持的用户多得多,而需要配置的服务器进程却更少。 在 Oracle Shared Server 体系结构下,客户机-用户进程最终会与调度程序 建立连接。PMON 进程向监听程序注册调度程序的位置和负载,使监听程序能够将请求转发给占用率最低的调度程序。服务注册不要求在 listener.ora 文件中进行配置。 一个调度程序可同时支持多个客户机连接。每个客户机连接都使用一个虚拟线路(virtual circuit.)。虚拟线路是一块共享内存,调度程序将它用于客户机数据库连接请求与答复。 请求到达时,调度程序会将虚拟线路置入一个公共队列。共享服务器从公共队列选择该虚拟线路并为请求服务,然后在尝试从公共队列检索另一个虚拟线路前取消该虚拟线路。这种方法使得少量的服务器进程就能够为大量客户机服务。 注:在 Windows NT 上,调度程序只能使用 TCP/IP 协议。 Oracle Shared Server 的优点
减少针对某一例程的进程数目 增加可服务的用户数 实现负载平衡 减少空闲服务器进程的数目 减少内存占用和系统开销 Oracle Shared Server 体系结构要求 Oracle Net Services。要使用 Oracle Shared Servers 的用户进程必须通过 Oracle Net Services 连接,即使用户进程与 Oracle 例程在同一机器上也是如此。 何时使用专用服务器
提交批作业(预计很少有或没有空闲时间) 以 sysdba 身份连接以启动、关闭或执行恢复 要请求使用专用服务器,必须在 tnsnames.ora 文件内的 Oracle Net TNS 连接字符串中包含 SERVER=DEDICATED 子句。 (CONNECT_DATA=(SERVICE_NAME=TEST.us.oracle.com) (SERVER=DEDICATED) ) 对于大多数平台来说,如果机器有足够的内存支持专用服务器,则应使用专用服务器。这样性能可能更好些。 但也有例外,例如 Windows NT,在该系统中,由于共享服务器体系结构的异步特性,使用Oracle Shared Server配置性能可能会有所提高。 3.使用oracle shared server
连接到 Oracle Shared Server 监听程序进程等待来自用户进程的任何连接请求。某一进程请求连接时,监听程序确定是将该用户进程与调度程序连接(取决于调度程序的负载),还是为该用户进程分配一个专用服务器进程。 如果配置允许该用户进程与调度程序连接,监听程序会为该用户进程提供调度程序进程的地址。如果该用户进程请求使用专用服务器,监听程序会创建一个专用服务器进程并使该用户进程与之连接。 通过调度程序或专用服务器进程建立连接之后,在整个会话期间都将保持该连接。 注:如果用户通过网络发出请求,监听程序选择的调度程序进程必须与正在使用的网络的协议匹配。 处理请求
用户将请求发送给调度程序。 调度程序将请求置入 “系统全局区” (System Global Area, SGA) 中的请求队列。 共享服务器从请求队列选择该请求,然后处理该请求。 共享服务器将响应放入请求调度程序的响应队列。 该响应被传送给调度程序。 调度程序将该响应返回给用户。 用户请求完成后,将释放共享服务器进程,于是该进程可为请求队列中的另一个用户请求服务。 请求队列
所有调度程序共享一个请求队列。 共享服务器监视请求队列以查看是否有新的请求。 请求的处理采取先进先出 (FIFO) 的原则。 共享服务器将完成的所有请求放入请求调度程序的响应队列。 每个调度程序在 SGA 中都有自己的响应队列。 每个调度程序都负责将完成的请求发送回相应的用户进程。 在整个会话期间,用户始终与同一个调度程序相连。 SGA 和 PGA
使用专用服务器或共享服务器时,SGA和PGA的内容有所不同: 专用服务器:用户会话数据保存在 PGA 中。SGA中包含共享池和其它内存结构。PGA包含堆栈空间,用户会话数据和游标状态 Oracle Shared Server: 用户会话数据保存在 SGA 中。PGA中只包含堆栈空间,其它均在SGA中。 所有 SQL 语句的文本和语法分析表格都存储在 SGA 中。 游标状态包含 SQL 语句的运行时内存值,如检索的行。 用户会话数据包含安全性和资源使用信息。 堆栈空间包含用于进程的本地变量。 注:SGA 和 PGA 中的更改对于用户是透明的。但是,如果支持多个用户,需要增大 LARGE_POOL_SIZE 初始化参数的值。请根据同时处于活动状态的会话的数目来配置大型共享池的大小。 每个共享服务器进程都需要访问所有会话的数据空间,以便任何服务器都能处理来自任何会话的请求。在 SGA 中为每个会话的数据空间分配空间。通过在用户配置文件中将 PRIVATE_SGA 资源限制设置为所需的空间量,可限制会话可分配的空间量。 通过查询V$SYSSTAT 可监视受 Oracle Shared Server 影响的各种资源。 4.配置Oracle Shared Server 要配置 Oracle Shared Server,必须为例程设置初始化参数。Oracle Shared Server 体系结构要求 Oracle Net Services,即使客户机和共享服务器进程都与 Oracle 例程驻留在同一台机器上也是如此。 必需的初始化参数 DISPATCHERS SHARED_SERVERS 可选初始化参数 MAX_DISPATCHERS MAX_SHARED_SERVERS CIRCUITS SHARED_SERVER_SESSIONS 注:大多数可选参数都有合理的缺省值。在许多系统上,唯一应配置的参数是 DISPATCHERS。 DISPATCHERS
指定最初为某一给定协议启动的调度程序的数目,例 DISPATCHERS = “(PROTOCOL=TCP)(DISPATCHERS=2)\(PROTOCOL=IPC)(DISPATCHERS=1)” 只需要下列属性之一: ADDRESS、DESCRIPTION 或 PROTOCOL。 详见sg 计算调度程序进程的初始数目: 调度程序的初始数目 = CEIL(并发会话平均数/每个调度程序的连接数) 例如,假定系统通常通过 TCP/IP 方式并发连接 900 个用户,每个进程支持 255 个连接。在这种情况下,应按如下所示设置 DISPATCHERS 参数: DISPATCHERS = "(PROTOCOL=TCP) (DISPATCHERS=4)" MAX_DISPATCHERS
指定可同时运行的调度程序进程的最大数目 发出 ALTER SYSTEM 命令可添加超过初始启动数目的调度程序 添加或删除调度程序
可使用数据字典视图 V$CIRCUIT 和 V$DISPATCHER 监视调度程序上的负载。 如果调度程序进程上的负载一直较高,则可启动附加调度程序进程来发送用户请求以免等待。在调度程序的数目达到 MAX_DISPATCHER 之前,可以启动新的调度程序。 如果调度程序上的负载一直较低,则可减少调度程序的数目。 增删调度程序:ALTER SYSTEM SET DISPATCHERS='(PROTOCOL=TCP)(DISPATCHERS=3)'; 修改DISPATCHERS的值。 SHARED_SERVERS
SHARED_SERVERS 指定启动例程时要创建的服务器进程的数目。 数据库系统的初始共享服务器进程的适当数目取决于通常与该系统连接的用户的数目以及每个用户需要的处理量。 估计初始共享服务器进程的数目时,最好保守一些。需要时,附加共享服务器会自动启动,如果附加共享服务器空闲太久,又会被自动回收。 初始服务器始终保持已分配状态,即使它们处于空闲状态。 如果将服务器的初始数目设置得过高,可能会造成不必要的系统开销。 使用初始共享服务器进程数进行试验并监视共享服务器,直到找到适合于典型数据库活动的理想系统性能。 如果共享服务器的数目超过指定的最小限制,Oracle 最终会终止处于空闲状态的服务器。 如果将 SHARED_SERVERS 设为0,Oracle 会在服务器处于空闲状态时终止所有当前服务器,而且在增大 SHARED_SERVERS 的值之前不会启动任何新的服务器。 将 SHARED_SERVERS 设为0可有效地临时禁用共享服务器。 下面的语句将共享服务器进程的数目设为 2: ALTER SYSTEM SET SHARED_SERVERS = 2 MAX_SHARED_SERVERS
指定可启动的共享服务器的最大数目 允许根据请求队列的长度动态分配共享服务器 CIRCUITS
虚拟线路是用户通过调度程序和服务器与数据库的连接。CIRCUITS 参数指定可供入站和出站网络会话使用的虚拟线路总数。该参数非常重要,因为它是影响例程的 SGA 总需求的参数之一。 SHARED_SERVER_SESSIONS
该参数控制在任何时刻同时打开的共享服务器会话的总数。使用该参数可以为专用用户会话保留资源。 其它受 Oracle Shared Server 影响、可能需要调整的初始化参数:
LARGE_POOL_SIZE SESSIONS 验证设置 使用 Oracle Shared Server 时,应该首先启动监听程序,然后启动例程,这样调度程序就可立即向监听程序注册。要验证是否已进行注册,可发出以下命令: $ lsnrctl services listener01 通过建立一次连接验证是否已通过共享服务器连接,然后查询 V$CIRCUIT 视图以显示每个共享服务器连接的一个条目。 进行几次连接以验证的连接是否正在使用共享服务器。然后查询 V$CIRCUIT 视图以查看共享服务器连接。这也验证了监听程序是否在为传入的连接执行负载平衡。 3.相关的动态视图 V$CIRCUIT 该视图包含有关虚拟线路的信息,这些线路是用户与数据库之间通过调度程序和服务器进行的连接 V$SHARED_SERVER
该视图包含有关共享服务器进程的信息。 V$DISPATCHER
该视图提供有关调度程序进程的信息。 V$SHARED_SERVER_ MONITOR
该视图包含有关调整共享服务器进程的信息。 V$QUEUE
该视图包含有关请求和响应队列的信息。 V$SESSION 该视图列出每个当前会话的会话信息。 032 第四章 命名方法配置第四章 命名方法配置
目标: 描述主机命名与本地服务名称解析之间的区别 使用 Oracle Net Configuration Assistant 配置: 主机命名方法 本地命名方法 网络服务名 排除简单连接出现的故障 要点: 1.命名方法概览 客户机应用程序在试图连接数据库服务时,需要借助命名方法将连接标识符解析为连接描述符。 Oracle Net 提供了五种命名方法: 主机命名(Host Naming):使 TCP/IP 环境中的用户能够通过其现有名称解析服务来解析名称 本地命名:使用在每个客户机的 tnsnames.ora 文件中配置和存储的信息查找网络地址 目录命名:将数据库服务或网络服务名解析为连接描述符,该描述符存储在中央目录服务器中 Oracle Names:这是由 Oracle Names 服务器系统构成的 Oracle 目录服务,这些服务器可以为网络上的每个服务提供由名称到地址的解析 外部命名:使用受支持的第三方命名服务 对于只有几个数据库的小型组织来说,应使用主机命名将名称存储在现有名称解析服务中,也可使用本地命名将名称存储在客户机上的 tnsnames.ora 文件中。
对于有多个数据库的大型组织来说,应使用目录命名将名称存储在集中管理的符合 LDAP 的目录服务器中。 2.主机命名 在下列情况下,客户机可使用主机名来连接服务器: 使用 Oracle Net Services Client 软件连接 Oracle 数据库服务 使用 TCP/IP 协议建立客户机与服务器的连接 主机名通过 DNS 或本地的 /etc/hosts 文件等 IP 地址转换机制来解析 不使用 “连接管理器” (Connection Manager) 或安全选项等高级功能 主机命名方法具有下列优点:
需要的用户配置最少。用户只需提供主机名即可建立连接。 无需创建与维护本地名称配置文件 (tnsnames.ora)。 无需了解 Oracle Names 或 Oracle Internet Directory 管理过程。 主机命名在每个节点上只能标识一个 SID,而使用其它命名方法还可标识其它 SID。 如果在主机 (hosts) 文件中对多个全局名称设置了别名,让它们指向同一 IP 地址,这样即使这些数据库位于同一节点上,也可使用主机命名连接任意数据库。 客户端要求
如果使用主机命名方法,则必须在客户机上安装 TCP/IP 协议。此外,还必须安装 Oracle Net Services 和 TCP/IP 协议适配器。 主机名通过域名服务 (Domain Name Services, DNS)、网络信息服务 (Network Information Services, NIS) 或集中维护的 TCP/IP 主机文件等 IP 地址转换机制来解析。 使用主机命名方法之前,必须先对客户端进行如上配置。 服务器端要求
如果使用主机命名方法,除了客户机,还必须在服务器上也安装 TCP/IP 协议。此外,需要在服务器端安装 Oracle Net Services 和 TCP/IP 协议适配器。 在 Oracle8i 和 Oracle9i 中,只要满足以下条件之一就可向监听程序自动注册有关数据库的信息(包括全局数据库名称): 在端口 1521 上使用 TCP/IP 运行的名为 LISTENER 的缺省监听程序正在运行 已在初始化文件中设置了 LOCAL_LISTENER 参数 早期版本中是通过listener.ora文件向监听程序注册数据库信息的。必须静态配置SID_LIST_listener_name段以包含GLOBAL_DBNAME参数。 全局数据库名称由数据库名称和数据库域名构成。可以从初始化参数文件中的SERVICE_NAMES参数或DB_NAME和DB_DOMAIN参数来获取 GLOBAL_DBNAME 的值。 主机名必须与在客户机中指定的连接字符串匹配。其它信息还包括要连接的数据库的信息。 说明:
主机命名在客户端使用sqlnet.ora文件,在服务器端使用listener.ora文件。 sqlnet.ora中的NAMES.DIRECTORY_PATH参数确定的是连接时搜寻先后顺序。例如,NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME), 则先从本地TNSNAMES文件中去找连接时提供的描述符,如果没有发现匹配的,则再去oracle name server上找, 再没有则使用主机命名方法进行连接——将连接描述符(假定为test)当作一个主机去连接,去该主机上寻找GLOBAL_DBNAME=test的实例(实例名可能不是test)进行连接。 3.本地命名 本地命名的优点: 提供了一种相对简单明了的解析服务名地址的方法。 对于使用不同协议的各个网络,可跨网络解析服务名。 可使用图形配置工具轻松配置。 本地命名方法要求网络服务名存储在 tnsnames.ora 文件中。 本地命名在客户端使用tnsnames.ora和sqlnet.ora文件,在服务器端使用listener.ora文件。 在图形化界面中配置网络服务名: service name为该数据库服务的service name,一般为db_name.db_domain net服务名为按该服务在本地的标识符,相当于别名。 4.故障排除 ORA-12154:“TNS:无法解析服务名” 原因:Oracle Net Services 找不到在 tnsnames.ora 配置文件中指定的连接描述符。 操作: 检查 tnsnames.ora 文件是否存在以及是否可访问。 检查 tnsnames.ora 文件是否位于 TNS_ADMIN 环境变量指定的位置中。 在 tnsnames.ora 文件中,核实在连接字符串中指定的服务名已经映射为tnsnames.ora文件中的连接描述符。还要核实文件中没有语法错误。 确认不存在 sqlnet.ora 文件的重复副本。 如果正从登录对话框连接,则应核实连接服务名前没有 at 符号 (@)。 ORA-12198:“TNS:找不到指向目标的路径”和ORA-12203:“TNS:无法连接目标”
原因:客户机找不到所需数据库。 操作: 核实已正确输入要连接的数据库的服务名。 核实 TNSNAMES.ORA 文件的连接描述符中的服务名 ADDRESS 参数是正确的。 核实 TNSNAMES.ORA 文件已存储在 TNS_ADMIN 环境变量定义的目录中。 核实远程节点上的监听程序已经启动并正在运行。如果未启动,可使用 “监听程序控制实用程序”启动监听程序。 如果正从登录对话框连接,则应核实连接服务名前没有 at 符号 (@)。 ORA-12533:“TNS:ADDRESS 参数非法”
原因:tnsnames.ora 文件内指定的连接描述符的 ADDRESS 段中的协议特定参数不正确。 操作: 有关针对不同协议的关键字的详细信息,请参考适用于平台的 Oracle 操作系统文档。 ORA-12541:TNS:没有监听程序
原因:无法与远程节点上的监听程序取得联系。 操作: 核实远程节点上的监听程序已经启动。可使用 “监听程序控制实用程序” 的 STATUS 命令检查监听程序的状态。如果需要,还可使用 START 命令启动该监听程序。 032 第三章 Oracle Net 服务器端基本配置第三章 Oracle Net 服务器端基本配置
连接方法: 衍生并继承 使用Oracle Shared Server的直接传送连接 重定向会话
静态服务配置
缺省的 listener.ora 文件包含下列参数:
032 第二章 oracle net体系结构第二章 oracle net体系结构
连接类型可以是:
客户机应用程序: 双任务通用协议 (Two-Task Common) Oracle Net 基础层: Oracle 协议支持(Oracle Protocol Support)
使用下列协议直接连接至 Oracle 服务器:
连接描述符 监听程序 服务注册 服务处理程序
ldap.ora:位于为集中管理功能配置的数据库服务器和客户机计算机上,该文件包含访问目录服务器所需的参数。 listener.ora:位于数据库服务器上,该配置文件用于监听程序,其中包括: names.ora:位于 Oracle Names Server 上,该文件包含 Oracle Names Server 的位置、域信息和可选配置参数。 sqlnet.ora:位于客户机与数据库服务器计算机上。 tnsnames.ora:位于客户机上,该文件包含映射到连接描述符的网络服务名,用于本地命名方法。 September 11 终于稳定下来了 近两个月很忙,事情很多。回头一看,居然均是人生的大事。出现了机遇——错过了机会。兴奋——努力——失望——释然。离别——心痛——平静。有失意——有得意。在此深深感谢支持和帮助我的朋友们:波波,彤,孙哥,ruking,烙饼卷大葱,琳——还有很多人,不一一列举了。现在各方面终于稳定下来了,也在精神上给自己放了半个月假了——其实并不一定需要实际的假期,只要有一种放松的感觉,于我就可以当作假期来享受了。
过几天就要25了,人生已经过去了1/3——1/4了,接下来的这1/3——1/4要施展了,为了自己,为了所有爱我的和我爱的人,创造一片天地,创造美好的生活。
August 03 031 第二十章 全球化支持第二十章 使用 “全球化支持”
目标: 为数据库选择数据库字符集和国家字符集 使用初始化参数、环境变量以及 ALTER SESSION 命令,指定与语言有关的行为 使用不同类型的国家语言支持 (NLS) 参数 解释全球化支持对语言相关的应用程序行为的影响 获取有关 “全球化支持” 用法的信息 要点:
1.“全球化支持” 功能 “全球化支持” 功能可确保数据库实用程序和错误消息、排序顺序、日期、时间、货币、数字和日历惯例能自动适合本国语言。 Oracle 目前支持 57 种语言、88 个地域、84 种文字排序(71 种单语言和 13 种多语言)以及 235 种编码字符集。 语言相关操作由客户端和服务器端的若干参数及环境变量控制。 服务器和客户机可能在相同位置或不同位置运行。当客户机和服务器使用不同的字符集时,Oracle 服务器会自动处理字符集的转换。 用户可以用他们本国的语言交互、存储、处理和检索数据,这些语言包括西欧、东欧、中东、东亚和东南亚语言。 不同的国家和地域有不同的文化习俗,直接影响到数据格式。 支持许多不同的字符编码方案,包括单字节、多字节和固定宽度的编码字符集。 Oracle 服务器提供了多种在语言学上精确划分的不同语言类别。 数据库实用程序和错误消息以受支持的国家语言形式显示。Oracle 产品已经翻译成 30 种不同的语言。 根据国际标准化组织 (ISO) 的规定,日期和时间可以采用零点几秒、秒、分钟、小时、日、月和年这样的格式表示。可以使用时区以支持夏时制。 支持诸如公历、日本历、中国的农历和泰国的佛历等历法的本国日历。 数字数据以相应的本地格式表示。 货币符号体现本国经济制度和 ISO 的规定。借贷符号也因地域而异。 2.编码方案 字符编码方案指定对应于计算机或终端可以显示和接收的字符的数字代码。 字符编码方案用于将数据解释为有意义的符号并从终端传递到主机。 Oracle 提供不同类别的编码方案: 单字节字符集: 7 位 8 位 宽度可变的多字节字符集 宽度固定的多字节字符集 Unicode (AL32UFT8, AL16UTF16, UTF8) 单字节字符集:
在单字节字符集中,每个字符只占一个字节。单字节7位编码方案最多可以定义128个字符;单字节8位编码方案最多可以定义256个字符。 单字节方案示例: 7 位字符集:美国7位ASCII码(US7ASCII) 8 位字符集: 西欧ISO8859-1码(WE8ISO8859P1) 西欧8位EBCDIC代码页500码(WE8EBCDIC500) 西欧8位DEC 码(WE8DEC) 宽度可变的多字节字符集:
在宽度可变的多字节字符集中,每个字符以一个或多个字节表示。多字节字符集通常用于支持亚洲语言。有些多字节编码方案使用最有效的位值来表明,一个字节是表示单个字节还是作为代表一个字符的一系列字节中的一部分。然而,其它字符编码方案可以区分单字节和多字节字符。在碰到移入代码之前,由设备发出的移出控制代码表明后面的字节都是双字节字符。 宽度可变的多字节方案示例: 日文扩展 UNIX 代码 (JEUC) 中文 GB2312-80 (CGB2312-80) AL32UTF8 (UTF-8) 宽度固定的多字节字符集:
除了每个字符采用字节数固定的格式外,宽度固定的多字节字符集同多字节字符集提供的支持类似。 这提供了每个字符具有统一字节长度表示法的好处。 Oracle 仅支持一个宽度固定的多字节字符集,且该字符集只位于国家字符集 AL16UTF16 中。 宽度固定的多字节字符集示例: AL16UTF16、16 位 Unicode(宽度固定的双字节 Unicode) Unicode 字符集:
Unicode 是一种全球字符编码标准,可以表示计算机中使用的所有字符,包括技术符号和出版用的字符。Unicode 标准 3.0 版包含 49,149 个字符,容量超过一百多万个字符。 Unicode 全套字符可以用不同的编码格式表示。UTF-16(通用字符集转换格式)是一种宽度固定的双字节格式;而 UTF-8 是一种宽度可变的多字节格式。 Oracle 提供 AL32UTF8、UTF8 和 UTFE 作为数据库字符集,同时提供 AL16UTF16 和 UTF8 作为国家字符集。基于 UTF-8 的字符集的优点是它们包括使用相同单字节编码的 ASCII。UTF8 是 ASCII 的超集,因此,从基于 ASCII 的字符集升级到 Unicode 时,数据库字符集的移植会变得更加简单。 注:有关上述带有连字符的 UTF-16 和 UTF-8 的信息,请参考 Unicode 标准编码;有关不带连字符的 UTF8、AL32UTF8 和 AL16UTF16 的信息,请参考基于 Unicode 标准的 Oracle 字符集。 2.数据库字符集和国家字符集 字符集类型: CREATE DATABASE 语句包含 CHARACTER SET 子句和附加可选子句 NATIONAL CHARACTER SET,用于声明要用作数据库字符集和国家字符集的字符集。如果未设置 NATIONAL CHARACTER SET 子句,则国家字符集默认为 AL16UTF16。 由于数据库字符集用于识别并保存 SQL 和 PL/SQL 源代码,它必须将 EBCDIC 码或 7 位 ASCII 码作为子集,判断方法是看哪一个是所用平台的本机码。因此,不可能使用宽度固定的多字节字符集作为数据库字符集,而只能将其作为国家字符集。 在 Oracle9i 中,国家字符集只能存储 Unicode,SQL NCHAR 数据类型(NCHAR、NVARCHAR2 和 NCLOB)为 Unicode 数据类型。 比较: 数据库字符集 国家字符集 在创建时定义 在创建时定义 除非重新创建,否则无法更改 除非重新创建,否则无法更改,例外情况很少 存储类型为 CHAR、VARCHAR2、CLOB、LONG的数据列 存储类型为NCHAR、NVARCHAR2、NCLOB的数据列 可以存储宽度可变的字符集 可以采用 AL16UTF16 或 UTF8 格式存储 Unicode 3.选择oracle数据库字符集的原则 考虑事项 数据库必须支持哪些语言? 有哪些互操作与系统资源和应用程序相关? 对性能的要求如何? 有哪些限制条件? 数据库必须支持哪些语言?
可能有几种字符集都可以满足当前的语言要求,但是,还应该考虑到将来的需求。如果知道将来需要扩展对不同语言的支持,现在就要选择一个使用范围较广的字符集,以免日后再进行移植。 有哪些互操作与系统资源和应用程序相关?
尽管数据库可以维护和处理实际字符数据,但是您还必须依赖操作系统中的其它资源。例如,操作系统提供与所选字符集相对应的字体。另外,支持所需语言和应用程序软件的输入法也必须与特定字符集保持一致。 如果所选的字符集与操作系统中的可用字符集不同,Oracle 会将操作系统字符集转换为数据库字符集。但是,这样做会产生一些字符集转换开销,同时应确保操作系统字符集中包含等价的全套字符,以避免可能出现的数据丢失情况。 对性能的要求如何?
在处理不同的编码方案时,性能开销可能会有所不同,这取决于所选的字符集。为了获得最佳性能,您应该尝试选择一个无需进行转换的字符集,并将对所需语言使用最有效的编码方案。单字节字符集在性能方面要优于多字节字符集,此外,在空间需求方面,该字符集也是最有效的。但是,单字节字符集对所能使用的语言数目有所限制。 有哪些限制条件?
不能选择宽度固定的多字节数据库字符集。 在EBCDIC平台上,不能将基于ASCII的字符集设置为数据库字符集;同样,在ASCII平台上也不能具有基于EBCDIC的数据库字符集。 4.选择Oracle国家字符集的原则 AL16UTF16 和 UTF8 这两种选择都适用于国家字符集。AL16UFT16 是宽度固定的双字节 Unicode 字符集。而 UTF8 是宽度可变的、一至三个字节的 Unicode 字符集。欧洲字符在 UTF8 中按一至两个字节存储,而在 AL16UTF16 中按两个字节存储,相比之下,前一种选择可以节省空间。亚洲字符在 UTF8 中按三个字节存储,这样,所需的空间比在 AL16UTF16 中要多。 由于 AL16UTF16 是宽度固定的编码,因此在执行速度上要比宽度可变的 UTF8 快。 在 Oracle9i 中,AL16UTF16 支持最新的 3.0 版的 Unicode 标准。 在 Oracle9i 中,UTF8 支持 Unicode 3.0 版,并将在今后的版本中继续支持 Unicode 3.0 版。 5.选择 Unicode 解决方案:Unicode 数据库 易于移植 Java 或 PL/SQL 代码: 在实现多语言支持时,如果是使用现有的 SQL CHAR 数据类型(CHAR、VARCHAR2、CLOB 和 LONG)来存储多语言数据,则 Unicode 数据库可以最大程度地减少代码更改。对于 SQL NCHAR 数据类型,不需要重新编码。 易于移植 ASCII 编码的数据: 如果当前数据库字符集和数据严格符合 US7ASCII 格式,即可以使用简单的 ALTER DATABASE 语句移植数据库。 多语言数据均匀分布: 如果多语言数据分布在整个数据库中,则可选择 Unicode 数据库解决方案,因为您无需了解哪些列存储有多语言数据。 Oracle 文本: 要将多语言 BLOB 和 Oracle 文本一起使用,则必须使用 Unicode 数据库解决方案。 何时应使用 Unicode 数据类型:
逐渐添加多语言支持时 打包应用程序 性能 单字节数据库字符集和宽度固定的国家字符集 更好地支持 windows 客户端的 UTF-16 6.指定语言相关行为 有三种指定国家语言支持 (NLS) 参数的方法: 服务器端的初始化参数,用于指定缺省服务器环境(这些缺省设置对客户端无效。) 客户端的环境变量,指定覆盖服务器缺省设置的语言相关行为 ALTER SESSION 参数,用于覆盖客户机或服务器的缺省设置 初始化参数NLS_LANGUAGE定义语言相关惯例值,例如:
Oracle 消息所使用的语言 日期和月份名称及其缩写所使用的语言 a.m.、p.m.、A.D. 和 B.C. 的等价语言所使用的符号 缺省的字符数据排序顺序 NLS_LANGUAGE确定下列参数的缺省值: NLS_DATE_LANGUAGE 显式更改日期、月份名及其缩写和其它日期格式元素的拼写值所使用的语言。 NLS_SORT 更改 Oracle服务器用于排序字符值的文字排序顺序(排序值必须是是文字排序顺序名。) 初始化参数NLS_TERRITORY定义地域相关惯例值,其中包括: 缺省日期格式 十进制字符和组分隔符 本地货币符号 ISO 货币符号 ISO 周数计算 一周起始日 注:当地域名包含空格时,如The Netherlands,应该用双引号将地域名引起来,如“The Netherlands”。 NLS_TERRITORY确定下列参数的缺省值: NLS_CURRENCY 显式指定新的本地货币符号 NLS_ISO_CURRENCY 显式指定应使用 ISO 货币符号的地域 NLS_DATE_FORMAT 显式指定新的缺省日期格式(值必须是日期格式模型。) NLS_NUMERIC_CHARACTERS 显式指定新的十进制字符和组分隔符 环境变量
使用环境变量NLS_LANG为个别用户指定所需的文化习俗。NLS_LANG值将覆盖NLS初始化参数的所有值。 每一部分控制NLS功能的一个子集: NLS_LANG=<language>_<territory>.<charset> 其中: Language:覆盖NLS_LANGUAGE的值并控制与NLS_LANGUAGE相同的功能 Territory:覆盖NLS_TERRITORY的值并控制与NLS_TERRITORY相同的功能 Charset:指定客户端应用程序(通常是用户终端使用的客户端应用程序)使用的字符编码方案 NLS_LANG 定义客户机终端的字符编码方案。不同客户机可以使用不同的编码方案。在客户机和服务器之间传递的数据将在两套编码方案间自动转换。数据库编码方案应是所有客户机编码方案的超集或与之等价。转换对客户机应用程序是透明的。 如果数据库字符集和客户机字符集相同,Oracle 将假定正在发送或接收的数据属于同一字符集,因此不进行验证或转换。该方案的优点在于能优化性能,但是,如果使用不当,可能会导致数据不一致,如另一字符集中存储的数据不同于数据库字符集中存储的数据。 例如,数据库字符集是 US7ASCII,客户机终端使用的是简体中文 Windows。将NLS_LANG 设置为 SIMPLIFIED CHINESE_HONGKONG.US7ASCII 以指定客户机字符集,这样,就有可能在单字节数据库中存储多字节简体中文字符。这意味着 Oracle 可以把这些字符当作单字节 US7ASCII 字符使用,因此,所有的 SQL 字符串操作函数(如 SUBSTR 或 LENGTH)将基于字节而不是字符。在导出然后导入到其它数据库后,可能会丢失所有的非 ASCII 字符。 所有 NLS 初始化参数都可作为环境变量,从而可以为每个客户机分别指定 NLS 特性。 此外,还可以使用 NLS_CALENDAR 指定 Oracle 服务器使用的日历系统,如公历、波斯历或泰国佛历。 只有在客户环境中才能设置下列变量: NLS_CREDIT NLS_DEBIT NLS_DISPLAY NLS_LANG NLS_LIST_SEPARATOR NLS_MONETARY 注:有关这些参数的说明,请参考 Oracle9i Globalization Support Manual。 如果将环境变量 ORA_NLS33 设置为无效目录,则有可能仅能使用缺省字符集 US7ASCII 创建数据库。在 UNIX 上,ORA_NLS33 应该设置为: $ORACLE_HOME/ocommon/nls/admin/data,如果未设置 ORA_NLS33,这即是缺省设置。 更改 NLS 参数
使用 ALTER SESSION 命令更改会话的个别NLS特性。通过发出ALTER SESSION命令,可同时更改可在客户端和服务器端设置的所有环境变量。 除了显式发出 ALTER SESSION 命令外,还有一个数据包 DBMS_SESSION.SET_NLS 可获得参数的名称和值。 7.文字排序 有三种排序类型: 二进制排序: 即根据编码字符的二进制值进行排序 单语言排序: 执行两遍排序 基于分配给字符的主值和次值 多语言排序: 基于新的 ISO 14651 和 支持多语言排序的 Unicode 3.0 标准 例如,在法语中,a 排在 b 的前面,但是,如果使用的是二进制排序,则 a 排在 z 之后。为了克服二进制排序的局限,Oracle 服务器通过设置 NLS_SORT 参数提供文字排序服务。 NLS_SORT 用于指定字符数据的排序类型 由环境变量 NLS_LANG 定义 可在会话级别覆盖 NLSSORT 函数 用于指定字符数据的排序类型 允许在查询级别定义排序顺序 8.在 SQL函数中使用NLS参数 SQL 字符函数支持单字节和多字节字符。 有些 SQL 函数需要将 NLS 参数显式指定为其参数列表的一部分。因此,SQL 函数可以覆盖环境所指定的行为。例: SELECT TO_CHAR(hire_date,'DD.Mon.YYYY','NLS_DATE_LANGUAGE=FRENCH') FROM employees; SELECT last_name,TO_CHAR(salary,'99G999D99','NLS_NUMERIC_CHARACTERS=",.") FROM employees; 以下 SQL 函数使用 NLS 参数:
函数 NLS 参数 TO_DATE NLS_DATE_LANGUAGE,NLS_CALENDAR TO_NUMBER NLS_NUMERIC_CHARACTERS,NLS_CURRENCY,NLS_CURRENCY TO_CHAR NLS_DATE_LANGUAGE,NLS_NUMERIC_CHARACTERS,NLS_CURRENCY,NLS_ISO_CURRENCY,NLS_CALENDAR NLS_UPPER, NLS_LOWER, NLS_SORT NLS_INITCAP, NLSSORT 对于 TO_CHAR、TO_DATE 和 TO_NUMBER 这类函数,还定义了多个格式掩码元素。 数字格式掩码元素: “D” 代表十进制分隔符 “G” 代表组(千位)分隔符 “L” 代表本地货币符号 “C” 代表本地 ISO 货币符号 “U” 代表欧元的双重货币符号 日期格式掩码元素: “RM, rm” 代表罗马月份数字 “IW” 代表 ISO 星期号 “IYYY, IYY, IY,” 和 “I” 代表 ISO 年份 9.文字索引支持 文字索引支持 函数型索引专门用于创建按文字排序的索引。SQL 函数 NLSSORT 以给定的文字排序顺序返回用于对第一个参数排序的字节串。 通过本地排序获取高性能。 NLS_COMP 参数是一个动态初始化参数,它用于控制 <、> 和 = 等比较运算符处理文字顺序的方式。当这个参数设置为 BINARY(缺省设置)时,将基于字符串的二进制值进行比较。当设置为 ANSI 时,比较运算符通过文字排序顺序来确定依据 NLS_SORT 会话参数执行的操作结果。 10.获取字符集信息 使用以下查询查看数据库和国家字符集: SELECT parameter, value FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%'; 以下视图仅显示出已在init<SID>.ora文件中显式设置的参数的值:
SELECT * FROM nls_instance_parameters; 以下视图显示会话参数:
SQL> SELECT * FROM nls_session_parameters; 10.获取NLS设置信息 SELECT * FROM v$nls_valid_values; V$NLS_VALID_VALUES 视图显示出 NLS 数据引导文件的内容。它返回一个随给定数据库版本一起提供的列表,该列表包含所有字符集、语言、文字排序以及地域定义。该列表中可能还包含不受支持或内部使用的定义。 显示 NLS 参数的当前值:
SELECT * FROM v$nls_parameters; 11.Oracle 区域设置构建器 (Oracle Locale Builder): Oracle9i 服务器提供了一组完整的区域设置定义,包括语言、地域、字符集和文字排序。如果需要对任何现有的区域设置定义进行自定义,或者创建新的区域设置定义,则可以使用新增的 Oracle 区域设置构建器 (Oracle Locale Builder),它提供了一种简单易用的图形用户界面,使您可以轻松地查看、自定义和定义各种区域设置。 |
||||
|
|