




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ORACLE 数据库维护2016-11-27AIX专家俱乐部1. ORACLE 数据库启动与关闭1.1 打开和关闭数据库 (手工)1.1.1 sqlplus 连接#su - oracle#sqlplus /nolog1.1.2 打开数据库sql connect sys/oracle as sysdba;sql startup nomount|mount等待十几秒左右,当看到oracle instances started,database mounted,database opened 的时候,oracle 数据库打开成功备注:打开数据库 startup 可带三个参数,分别是SQL startup nomount 仅启动 instancesSQL startup mount 启动 instances,连上(mount)数据库SQL startup normal 启动 instances,连上(mount)数据库(推荐)打开(open)数据库startup 缺省参数是 normal1.1.3 启动 oracle listener#su - oracle#lsnrctl start如果出错检查环境变量是否设好,及 lsnrctl 文件的内容和执行属性。1.1.4 关闭 oracle listener#su - oracle#lsnrctl stop1.1.5 关闭数据库sql connect sys/oracle as sysdba;sql shutdown 关闭数据库(推荐)等待几秒左右,当看到database closeddatabase dismountedoracle instances shut down 的时候,oracle 数据库关闭成功备注:关闭数据库 shutdown可带三个参数,分别是SQL shutdown abort 非正常立刻关机。等于忽然停电SQL shutdown immediate做回滚操作,立刻关机。SQL shutdown normal 正常关机 (推荐)shutdown 缺省参数是 normal2. 数据库备份2.1 冷备份关闭数据库时作的备份称为冷备份。关闭数据库,将所有和本实例有关的文件,包括 datafile,controlfile,redolog,archived redolog,initora.ora 等全部备份。恢复时只要将这些文件放回从前的目录,startup数据库即可。数据库处于归档非归档状态均可。2.2 用 exp、imp 命令做逻辑备份EXP:有三种主要的方式(完全、用户、表)1、完全:exp system/manager buffer=64000 file=/backup/full.dmp full=y如果要执行完全导出,必须具有角色 EXP_FULL_DATABASE 。2、用户模式:exp system/manager buffer=64000 file=/backup/bill.dmp owner=bill这样用户 bill 的所有对象被输出到文件中。3、表模式:exp system/manager buffer=64000 file=/backup/area.dmp owner=bill tables=area这样用户 bill 的表 area 就被导出到文件中。需要注意的参数是 Inctype,这个参数可以取一下三个值:Complete(全备份):把数据库中所有数据对象导出到 dump 文件中,只有具有 Exp_full_database 的用户有使用这个参数的权限。Incremental(增量备份):把数据库中所有上次备份后修改的表备份出来。Cumulative(累计备份):把数据库中所有全备份或者累计备份以后修改的表备份出来。IMP:具有三种模式(完全、用户、表)1、完全:如果要执行完全导入,必须具有角色 IMP_FULL_DATABASE 。2、用户模式:文件中用户 bill 的所有对象被导入到用户billbakK 中。必须指定 fromuser、touser 参数。3、表模式:文件中用户 bill 的表 area 就被导入到用户 billbak 中。2.3 用 tar 命令做物理备份1、#su - oracle2、% tar cvf /dev/rmt0 .把 oracle 路径下所有文件备份到磁带机上3、% tar xvf /dev/rmt0把备份磁带上所有文件恢复进 oracle 当前路径4、% tar tvf /dev/rmt/0查看磁带上有些什么文件2.4 备份控制文件控制文件是 Oracle 数据库中非常重要的文件。它记录着 oracle 数据库的物理结构信息,比如数据文件,日值文件的数量和位置等。在数据库启动过程中,需要读取控制文件。如果控制文件损坏或丢失,数据库就无法启动。因此,做好控制文件的备份十分重要。一般的数据库配置都会有多个控制文件。这些控制文件是完全相同的,分别存放在不同的位置(最好在不同的磁盘上),他们之间互为备份。数据库启动过程中,必须保证所有控制文件都是一致的,否则数据库不能启动。在 oracle 数据库的参数文件(initSid.ora)中指定控制文件的位置。如果部分控制文件损坏,可以在参数文件中去掉相应的控制文件,即可启动数据库。每次数据库物理结构发生改变时,必须及时备份控制文件。也可以把控制文件备份成脚本,在必要的时候重建控制文件2.5 联机全备份+日志备份2.5.1 设置ORACLE 数据库有两种运行方式:一是归档方式(ARCHIVELOG),归档方式的目的是当数据库发生故障时最大限度恢复所有已提交的事物;二是不归档方式(NOARCHIVELOG),恢复数据库到最近的回收点。这两种方式将对备份方法产生较大的影响。1.改变不归档方式为为归档方式2.关闭数据库,备份已有的数据3.改变数据库的运行方式是对数据库的重要改动,所以要对数据库做备份,对可能出现的问题作出保护。4.启动 Instance ,Mount 数据库但不打开数据库,来改变归档方式5.使能自动存档在初始化文件 init*.ora(一般放 ORACLE 根目录的下层目录 dbs 下)加参数:log_archive_start=true6.指定存档的重做登录文件名和存放的位置同样是在初始化文件 init*.ora 中加入下面的参数:log_archive_format=%S.arclog_archive_dest=/arch12/arch (arch12 是日志文件存放的目录)7.关闭数据库,重新启动数据库,归档方式转换完成。8.可用 archive log list 查看状态,去除归档日志功能的命令为 alter database noarchivelog。2.5.2 步骤联机全备份:数据库处于 open 状态,依次对各个表空间备份复制此 tablespace 各个 datafileSQLalter tablespace system end backup;注意:begin backup 是对 tablespace 冻结写入,end backup 是解除冻结,因此复制 datafile 的过程不宜过长备份 controlfileSQLalter database backup controlfile to . ;日志备份:移去日志目录下的所有 archived redologSQLalter system archive log start;2.5.3 恢复数据库处于 shutdown 状态 磁盘全部损坏,仅保存上次联机全备份和每天日志备份这是最坏情况解决硬件故障,配置系统软件及环境oracle 用户,将全备份和日志备份转移至相应目录,根据 initSid.ora中 controlfile 的配置,将备份控制文件复制到响应目录下逐个确认待恢复的 archived redolog,待最后一个完成后,键入 cancel,使恢复结束SQLalter database open resetlogs;注意:由于日志已经重置,所以应尽快做一次联机全备份 丢失某数据文件只要将此文件从上次联机全备份中复制至其目录,并将自上次联机全备份以来所有日志备份移至归档目录 文件损坏或丢失,又无备份这种情况只能将此文件脱机,将数据 exp 出来,重建表空间,再 imp 进去2.5.4 注意要点无论有多少把握,恢复前先做冷备份,此为第一原则。不这样做,便是无路可退,一旦失误,后果十分严重。1.rollback 段损坏这是非常严重的问题,可在 initora.ora 中写入_corrupted_rollback_segments=(rxx),启动时避开损坏的 rollback段,这只是权宜之计。如数据库处于 archivelog,应从上一次全备份起利用备份的日志进行恢复;如数据库处于 noarchivelog,应尽快将全部数据export 出来,重建数据库,再 import 进去。所有操作之前,应做冷备份。2.数据库异常中止处理通过手工 shutdown abort 操作中止数据库,不会产生大的问题,通常直接 startup无需使用介质恢复命令如果由于机器崩溃引起的中止,则情况严重得多,有可能要使用到上面提到的恢复方法,不过这种现象并不多见。一般需要显式使用介质恢复命令,如下:3. 数据库的扩充3.1 增加一个表空间3.1.1 创建表空间命令示例:针对具体情况增加回滚和临时表空间命令示例:回滚和临时表空间用完后,可删除或使它 offline3.1.2 增加某个表空间的大小当一个表空间的大小不能满足工作需要时,应该扩充表空间。举例:3.2 增加 oracle 的用户,并给用户授权3.2.1 增加 oracle 的用户,并给用户授权举例:3.2.2 增加 oracle 的角色oracle 的缺省角色有 connect、resource、dba。它是一组可以分配给其它 role 或用户的权限总和,connect 有 8 个权限,resource 有 5 个权限,dba 有 77 个权限。给一般连接用户赋 connect,给一般编程人员赋 connect加 resource,只有数据库管理员才有 dba的权限。创建一个角色SQLcreate role newrole identified by rolepasswd;给角色赋权限SQLgrant select on all table to newrolle;SQLgrant connect to newrole with admin option;3.2.3 中断用户同 oracle 的连接当 oracle 数据库要关机或某个用户占有的大量的资源需要被释放时,dba 需中断用户同 oracle 的连接。、SQLselect sid,serial#,username from v$session;、SQLalter system kill session interger1,interger2 ;interger1,interger2 分别对应于 sid 和 serial#3.3 表、视图、索引、约束Oracle 数据库数据对象中最基本的是表和视图,其他还有约束、序列、函数、存储过程、包、触发器等。对数据库的操作可以基本归结为对数据对象的操作。3.3.1 表和视图Oracle 中表是数据存储的基本结构。ORACLE8 引入了分区表和对象表,ORACLE8i 引入了临时表,使表的功能更强大。视图是一个或多个表中数据的逻辑表达式。本文我们将讨论怎样创建和管理简单的表和视图。 管理表.1 建立表表可以看作有行和列的电子数据表,表是关系数据库中一种拥有数据的结构。用 CREATETABLE 语句建立表,在建立表的同时,必须定义表名,列,以及列的数据类型和大小。例如:这样我们就建立了一个名为 products 的表, 关键词 CREATE TABLE 后紧跟的表名,然后定义了三列,同时规定了列的数据类型和大小。在创建表的同时你可以规定表的完整性约束,也可以规定列的完整性约束,在列上普通的约束是 NOT NULL,关于约束的讨论我们在以后进行。在建立或更改表时,可以给表一个缺省值。缺省值是在增加行时,增加的数据行中某一项值为 null 时,oracle 即认为该值为缺省值。下列数据字典视图提供表和表的列的信息:. DBA_TABLES. DBA_ALL_TABLES. USER_TABLES. USER_ALL_TABLES. ALL_TABLES. ALL_ALL_TABLES. DBA_TAB_COLUMNS. USER_TAB_COLUMNS. ALL_TAB_COLUMNS.2 表的命名规则表名标识一个表,所以应尽可能在表名中描述表,oracle 中表名或列名最长可以达 30 个字符串。表名应该以字母开始,可以在表名中包含数字、下划线、#、$等。.3 从其它表中建立表可以使用查询从基于一个或多个表中建立表,表的列的数据类型和大小有查询结果决定。建立这种形式的表的查询可以选择其他表中所有的列或者只选择部分列。在 CREATETABLE 语句中使用关键字 AS,例如:SQLCREATE TABLE emp AS SELECT * FROM employeeTABLE CREATEDSQL CREATE TABLE Y AS SELECT * FROM X WHERE no=2需要注意的是如果查询涉及 LONG 数据类型,那么 CREATE TABLE.AS SELECT.将不会工作。.4 更改表定义在建立表后,有时候我们可能需要修改表,比如更改列的定义,更改缺省值,增加新列,删除列等等。ORACLE 使用ALTER TABLE 语句来更改表的定义.4.1 增加列语法:ALTER TABLE schema. table_name ADD column_definition例:ALTER TABLE orders ADD order_date DATE;对于已经存在的数据行,新列的值将是 NULL..4.2 更改列语法:ALTER TABLE schema. table_name MODIFY column_name new_attributes;例:ALTER TABLE orders MODITY (quantity number(10,3),status varchar2(15);这个例子中我们修改了表 orders, 将 STATUS 列的长度增加到 15,将 QUANTITY 列减小到10,3;修改列的规则如下:可以增加字符串数据类型的列的长度,数字数据类型列的精度。减少列的长度时,该列应该不包含任何值,所有数据行都为 NULL。改变数据类型时,该列的值必须是 NULL。对于十进制数字,可以增加或减少但不能降低他的精度。.4.3 删除数据列优化 ORACLE 数据库,唯一的方法是删除列,重新建立数据库。在 ORACLE8i 中有很多方法删除列,你可以删除未用数据列或者可以标示该列为未用数据列然后删除。删除数据列的语法是:ALTER TABLE schema. table_name DROP COLUM column_names |(column_names)CASCADE CONSTRAINS要注意的是在删除列时关于该列的索引和完整性约束也同时删除。注意关键字 CASCADE CONSTRAINS,如果删除的列是多列约束的一部分,那么这个约束条件相对于其他列也同时删除。如果用户担心在大型数据库中删除列要花太多时间,可以先将他们标记为未用数据列,标记未用数据列的语法如下:这个语句将一个或多个数据列标记为未用数据列,但并不删除数据列中的数据,也不释放占用的磁盘空间。但是,未用数据列在视图和数据字典中并不显示,并且该数据列的名称将被删除,新的数据列可以使用这个名称。基于该数据列的索引、约束,统计等都将被删除。删除未用数据列的语句是:ALTER TABLE schema. table_name DROP UNUSED COLUM | COLUMN CONTINUE.4.4 删除表和更改表名删除表非常简单,但它是一个不可逆转的行为。语法:DROP TABLE schema. table_name CASCADE CONSTRAINTS删除表后,表上的索引、触发器、权限、完整性约束也同时删除。ORACLE 不能删除视图,或其他程序单元,但 oracle 将标示他们无效。如果删除的表涉及引用主键或唯一关键字的完整性约束时,那么 DROP TABLE 语句就必须包含 CASCADE CONSTRAINTS 子串。更改表名RENAME 命令用于给表和其他数据库对象改名。ORACLE 系统自动将基于旧表的完整性约束、索引、权限转移到新表中。ORACLE 同时使所有基于旧表的数据库对象,比如视图、程序、函数等,为不合法。语法:RENAME old_name TO new_name;例:SQL RENAME orders TO purchase_orders;.4.5 截短表TRUNCATE 命令与 DROP 命令相似, 但他不是删除整个数据表,所以索引、完整性约束、触发器、权限等都不会被删除。缺省情况下将释放部分表和视图空间,如果用户不希望释放表空间,TRUNCATE 语句中要包含 REUSE STORAGE 子串。TRUNCATE 命令语法如下:TRUNCATE TABLE|CLUSTER schema. name DROP|REUSE STORAGE例:SQL TRUNCATE TABLE t1; 管理视图视图是一个或多个表中的数据的简化描述,用户可以将视图看成一个存储查询(stored query)或一个虚拟表(virtual table).查询仅仅存储在 oracle 数据字典中,实际的数据没有存放在任何其它地方,所以建立视图不用消耗其他的空间。视图也可以隐藏复杂查询,比如多表查询,但用户只能看见视图。视图可以有与他所基于表的列名不同的列名。用户可以建立限制其他用户访问的视图。.1 建立视图CREATE VIEW 命令创建视图,定义视图的查询可以建立在一个或多个表,或其他视图上。查询不能有 FOR UPDATE 子串,在早期的 ORACLE8i 版本中不支持 ORDER BY 子串,现在的版本中 CREATE VIEW 可以拥有 ORDER BY 子串。例:用户可以在创建视图的同时更改列名,方法是在视图名后立即加上要命名的列名。重新定义视图需要包含 OR REPLACE 子串。如果在创建的视图包含错误在正常情况下,视图将不会被创建。但如果你需要创建一个带错误的视图必须在 CREATE VIEW 语句中带上 FORCE 选项。如:CREATE FORCE VIEWORDER_STATUS ASSELECT * FROM PURCHASE_ORDERSWHERE STATUS= APPPOVE ;SQL/warning :View create with compilation errors这样将创建了一个名为 ORDER_STATUS 的视图,但这样的视图的状态是不合法的,如果以后状态发生变化则可以重新编译,其状态也变成合法的。.2 从视图中获得数据从视图中获得数据与从表中获得数据基本一样,用户可以在连接和子查询中使用视图,也可以使用 SQL 函数,以及所有 SELECT 语句的字串。.3 插入、更新、删除数据用户在一定的限制条件下可以通过视图更新、插入、删除数据。如果视图连接多个表,那么在一个时间里只能更新一个表。所有的能被更新的列可以在数据字典 USER_UPDATETABLE_COLUMNS 中查到。用户在 CREATE VIEW 中可以使用了 WITH 子串。WITH READ ONLY 子串表示创建的视图是一个只读视图,不能进行更新、插入、删除操作。WITH CHECK OPTION 表示可以进行插入和更新操作,但应该满足 WHERE 子串的条件。这个条件就是创建视图 WHERE 子句的条件,比如在上面的例子中用户创建了一个视图 TOP_EMP,在这个视图中用户不能插入 salary 小于 2000 的数据行。.4 删除视图删除视图使用DROP VIEW 命令。同时将视图定义从数据字典中删除,基于视图的权限也同时被删除,其他涉及到该视图的函数、视图、程序等都将被视为非法。例:DROP VIEW TOP_EMP;3.3.2 索引索引是一种可以提高查询性能的数据结构,在这一部分我们将讨论索引如何提高查询性能的。ORACLE提供了以下几种索引:B-Tree、哈希(hash)、位图(bitmap)等索引类型基于原始表的索引基于函数的索引域(Domain)索引实际应用中主要是 B-Tree 索引和位图索引,所以我们将集中讨论这两种索引类型。 B-Tree 索引B-Tree 索引是最普通的索引,缺省条件下建立的索引就是这种类型的索引。B-Tree 索引可以是唯一或非唯一的,可以是单一的(基于一列)或连接的(多列)。B-Tree 索引在检索高基数数据列(高基数数据列是指该列有很多不同的值)时提供了最好的性能。对于取出较小的数据 B-Tree 索引比全表检索提供了更有效的方法。但当检查的范围超过表的 10%时就不能提高取回数据的性能。正如名字所暗示的那样,B-Tree 索引是基于二元树的,由枝干块(branch block)和树叶块(leaf block)组成,枝干块包含了索引列(关键字)和另一索引的地址。树叶块包含了关键字和给表中每个匹配行的 ROWID。 位图索引位图索引主要用于决策支持系统或静态数据,不支持行级锁定。位图索引可以是简单的(单列)也可以是连接的(多列),但在实践中绝大多数是简单的。位图索引最好用于低到中群集(cardinality)列,在这些列上多位图索引可以与 AND 或 OR 操作符结合使用。位图索引使用位图作为键值,对于表中的每一数据行位图包含了 TRUE(1)、FALSE(0)、或 NULL 值。位图索引的位图存放在 B-Tree 结构的页节点中。B-Tree结构使查找位图非常方便和快速。另外,位图以一种压缩格式存放,因此占用的磁盘空间比 B-Tree 索引要小得多。 修改索引ALTER INDEX scott.ord_region_id_idxALLOCATE EXTENT (SIZE 200KDATAFILE DISK6/indx01.dbf );重建索引对于频繁更新的表,索引会变得层次很深,效率变低。这时需要重建索引。ALTER INDEX scott.ord_region_id_idx REBUILDTABLESPACE indx02;3.3.3 序列(Sequences)Oracle 序列是一个连续的数字生成器。序列常用于人为的关键字,或给数据行排序否则数据行是无序的。像约束一样,序列只存在于数据字典中。序列号可以被设置为上升、下降,可以没有限制或重复使用直到一个限制值。 创建序列创建序列使用SET SEQUENCE语句。CREATE SEQUENCE schema sequence KEYWORDKEYWORD 包括下面的值:KEYWORD描述START WITH定义序列生成的第一个数字,缺省为 1INCREMENT BY定义序列号是上升还是下降,对于一个降序的序列 INCREMENT BY 为负值MINVALUE定义序列可以生成的最小值,这是降序序列中的限制值。缺省情况下该值为NOMINVALUE,NOMINVALUE,对于升序为 1,对于降序为-10E26.MAXVALUE序列能生成的最大数字。这是升序序列中的限制值,缺省的 MAXVALUE 为NOMAXVALUE,NOMAXVALUE,对于升序为 10E26,对于降序为-1。CYCLE设置序列值在达到限制值以后可以重复NOCYCLE设置序列值在达到限制值以后不能重复,这是缺省设置。当试图产生MAXVALUE+1 的值时,将会产生一个异常CACHE定义序列值占据的内存块的大小,缺省值为 20NOCACHE在每次序列号产生时强制数据字典更新,保证在序列值之间没有间隔当创建序列时,START WITH 值必须等于或大于 MINVALUE。 删除序列删除序列使用DROP SEQUENCE 语句DROP SEQUENCE sequence_name3.4 网络管理3.4.1 Net8 server 端配置 listener.ora 文件的样本: 启动listener在响应的端口上设置并启动 listener手工启动 listener:1. lsnrctl start查看状态2. lsnrctl status3.4.2 Net 8 client 端配置Net 8 client 端常用的配置方法为 tns 方式使用图形配置工具进行配置开始-程序-Oracle-Network Administration-Net8 Assistant.1、选本地 - 概要文件 加入 tnsnames2、选本地 -服务命名 新建一个连接串,包括主机名、端口,协议3、选文件-保存网络配置直接配置$ORACLE_HOME/network/admin/tnsnames.ora1. 备份 tnsnames.ora2. 按照示例对连接串做拷贝3. 改变连接串的名字,主机名,端口,协议,SID 等参数4. 保存文件3.4.3 sqlnet.ora3.4.4 网络连通性测试sqlplustnspingping ,netstat1. sqlplus system/manager gis注意:gis 是刚才设置的新的连接串2在客户端 Tnsping gis,并且检查 tnsnames.ora 中的配置是否与 server 端的$ORACLE_HOME/network/admin/listener.ora 中的配置是否一致。1 Ping server IP 地址,查看网络连通性3.4.5 常见 NET8 错误故障排除是每个系统管理人员必要面对的工作。下面给出几种故障分析和排除方法。 服务器端诊断任务 1: 数据库系统是否启动确定数据库系统是否已启动,只要用 SQL*PLUS 登录即可:SQLPLUS system/manager如果收到下面信息,则数据库还不能用。ORA-1017: invalid U/PORA-1034: Oracle not available任务 2: 执行绕弯测试为了确认 listener.ora, tnsnames.ora sqlnet.ora 文件的存在,有效。要在服务器端UNIX 在: $ORACLE_HOME/network/adminWindows NT 在:ORACLE_HOMEnetworkadmina. 这些文件是否在工作。b. TNS_ADMIN 变量有效性。使用 Net8 Assistant 进行绕弯测试:1. 启动 Net8 Assistant:在 UNIX, 从 $ORACLE_HOME/bin. 目录来运行 netasst在 NT, choose Start Programs Oracle - HOME_NAME NetworkAdministration Net8 Assistant.2. 在导航器扩展 Directory 或 Local Service Naming.3. 选择 net service name 或 database service.4. 选命令 Test Net Service. 客户端诊断当服务器已经通过一般的 SQL*PLUS 测试和绕弯测试后,可以进行客户端的测试,步骤如下:1. 检查所安装的协议是否与服务器端一致;在 UNIX, 可以运行$ORACLE_HOME/bin 目录下的 adapters 来确认。结果显示:2. 检查所有 Net8 软件在客户端已经安装。3. 确认客户端机器$ORACLE_HOME/network/admin 目录下的 tnsnames.ora 和 sqlnet.ora 文件的内容:a. 当前的工作目录b. TNS_ADMIN 环境变量在 NT 中,如果 TNS_ADMIN 环境变量没有注册,就要进行注册。c. 用 FTP, TELNET 及 PING 检查网络的连接情况。4. 用 TNSPING 、TRCROUTE 实用程序或 Net8 Assistant进行测试 TNSPING:tnsping net_service_name countnet service name: 在tnsnames.ora 或名字服务上得使用。如: NIS 或 DCE 的 CDS.count (可选): 实验次数例 1:使用 spotdb 服务名进行测试:tnsping spotdb可能提示:例 2:用 TNSPING 测试 10 次:tnsping stprd 10可能提示:5. 如果连接失败,可以进行下面操作:查找原因用下面站点与 Oracle 联系:与 Oracle Worldwide Support 联系 常见错误ORA-12154: TNS:could not resolve service name原因: 在 tnsnames.ora ,Net8 不能定位到服务器上措施:1. 确定 tnsnames.ora 文件存在2. 确定不要有多个 tnsnames.ora3.确认 tnsnames.ora 文件的服务名的正确性。4. 确认不要有多个 sqlnet.ora5. 如果使用域名,确认 sqlnet.ora 包含NAMES.DEFAULT_DOMAIN 参数。如果该参数不存在,必须在连接字串中指定域名。如果没有使用域名,而 NAMES.DEFAULT_DOMAIN 参数存在,则删掉它或注释掉。6. 如果从对话框进行连接,要带号。7. 启动客户端的跟踪功能,再连接。原因: 在客户端找不到目标数据库措施:1. 所输入的网络服务名是否正确2. 确认 tnsnames.ora 文件中的 ADDRESS 参数是否正确3. 确认 tnsnames.ora 文件是否在正确的目录上。4. 确认远程监听器是否启动:输入:lsnrctllsnrctl status listener_namelistener_name 缺省 LISTENER.如果没有启动,则启动:lsnrctl start listener_name5.如果从对话框连接,不要忘记加号ORA-12203:TNS:unable to connect to destinationORA-12203 是一般的错误,可以检查$ORACLE_HOME/network/log 目录的 sqlnet.log 文件。原因: 所安装的协议不正确。可能与下面原因一样:ORA-12203ORA-12538ORA-00508措施: 检查安装的 Oracle 协议。在 UNIX 下,运行$ORACLE_HOME/bin 目录下的 adapters 程序。应该输出:Installed Net8 Tranport Protocols are:IPCTCP/IPBEQueathSSLRAW.ORA-12203 原因: 不正确的服务名。HOST 或 SERVICE 正确?PORT 正确?ORA-12203另外原因: Net8 在 tnsnames.ora 文件中没有找到服务描述符。措施: 用下面命令确认数据库是否在运行:lsnrctllsnrctl status listener_namelistener_name 不是必须的,缺省 LISTENER如果系统提示没有运行,则用下面命令启动:lsnrctl start listener_name2. 确认 tnsnames.ora 文件的正确位置。ORA-12203 另外原因: 目标系统的监听没有工作。措施: 确包远程系统的监听在工作,输入:lsnrctllsnrctl status listener_name如果确实没有工作,则输入:lsnrctl start listener_nameORA-12203 另外原因: 存在潜在的事务问题。措施: 确保实用程序支持目前的网络协议,如 TCP/IP。用 PING 试。ORA-12203 另外原因: tnsnames.ora 文件没有放对地方(目录)。Action:确保 tnsnames.ora文件在正确的位置。ORA-12203 另外原因: TCP/IP 地址 (HOST=server_name) 参数 TCP/IP 或 SPX 地址参数(SERVICE=tns_application) 与客户端不一致。措施: 确认这些参数使用相同的名字。对于 TCP/IP ,确保 listener.ora 文件的 HOST 和 tnsnames.ora 文件指到相同的名字。或名字转换到相同的 IP地址。对于 SPX ,在客户端的名字必须相同。ORA-12224: TNS:no listener原因:由于监听没有工作而连接请求不能完成。措施:1. 确认支持的目标地址与数据库之一匹配。2.检查版本问题ORA-12533:TNS:illegal ADDRESS parameters原因: 在 tnsnames.ora 文件的 ADDRESS 节指定不 正确。措施:根据 ADDRESS 语法进行改正。ORA-12545: TNS:name lookup failure原因: 远程节点不能连接。措施:1. tnsnames.ora 文件的 ADDRESS 和 listener.ora 文件的正确性。2. 确认远程节点已经启动。输入:lsnrctllsnrctl status listener_name如果没有启动,则输入:lsnrctl start listener_nameORA-12560:TNS:protocol adapter error原因: 监听不能启动。措施:1. 调整后再运行。2. 分析跟踪文件的内容。ORA-3113: TNS:End of file on communication channel原因:一个无法预料文件结束在通信通道里被处理。可能是通信连接被临时地停止了。措施:需要修改发射次数等。ORA-3121: No interface driver connection -function not performed原因:SQL*NET 版本引起。措施: 不要使用下面前缀进行连接:T:X:P:4. ORACLE8i 与系统管理有关的新特性Oracle8i 引入了几项崭新的特性,可简化对 ORDBMS 的管理,并使其更易操作和使用。4.1 本地化管理表空间在 Oracle8I 以前,表空间的使用状况都是通过数据字典来完成的,称为 Dictionary-Managed Tablespace. 在 Oracle8I 推出以前,这一直都是唯一的表空间管理方式。自从Oracle8I 以后,Oracle 又增加了一种新的表空间管理方式:Locally ManagedTablespace(本地化管理的表空间)。在传统的数据字典管理的表空间里,Oracle 在数据字典的表里面记录了每个表空间的每个区的使用状况:每当一个区被使用或被释放时,Oracle 都在数据字典里面更新相应的信息,并产生相应的 redo 信息。在 Oracle8I 里,这仍然是默认的表空间管理方式。在 Oracle8I 的版本中,Oracle 推出了一种全新的表空间管理方式:本地化管理的表空间。所谓本地化管理,就是指 Oracle 不再利用数据字典的表来记录 Oracle 表空间里面的区的使用状况,而是在每个表空间的数据文件的头部加入了一个记录块,在其中记录每个区的使用状况。每当一个区被使用,或者被释放以供重新使用时,Oracle 都会更新数据文件头部的这个记录,反映这个变化。本地化管理的表空间的创建过程:解释: 关键字 EXTENT MANAGEMENT LOCAL 指定这是一个本地化管理的表空间。对于系统表空间,只能在创建数据库的时候指定 EXTENT MANGEMENT LOCAL,因为它是数据库创建时建立的第一个表空间。若为 DICTIONARY,则表明这是一个传统的数据字典管理的表空间,这是个默认选项。当选择了 LOCAL 关键字,即表明这是这是一个本地化管理的表空间后,还可以继续选择更细的管理方式:是 AUTOALLOCATE 还是 UNIFORM.。若为 AUTOALLOCATE,则表明让 Oracle 来决定区块的使用办法;若选择了 UNIFORM,则还可以详细指定每个区块的大小,若不加指定,则为每个区使用 1M 大小。是本地化管理的表空间还是创建数据字典管理的表空间只能在创建表空间的时候指定。在表空间已经创建以后,则不能再把本地化管理的表空间和数据字典管理的表空间再相互转换。在创建临时表空间时,也可以在 CREATE TEMPORARY TABLESPACE 中指定EXTENT MANAGEMENT LOCAL 来指定这是一个本地化管理的表空间。本地化管理表空间的优点:1. 本地化管理的表空间避免了递归的空间管理操作。而这种情况在数据字典管理的表空间是经常出现的,当表空间里的区的使用状况发生改变时,数据字典的表的信息发生改变,从而同时也使用了在系统表空间里的回滚段。2. 本地化管理的表空间避免了在数据字典相应表里面写入空闲块、已使用块的信息,从而减少了数据字典表的竞争。3. 区的本地化管理自动跟踪表空间里的空闲块,减少了手工合并自由空间的需要。4. 表空间里的区的大小可以选择由 Oracle 系统来决定,或者由数据库管理员指定一个统一的大小。5. 从由数据字典来管理空闲块改为由数据文件的头部记录来管理空闲块,这样避免产生回滚信息,不再使用系统表空间里的回滚段。因为由数据字典来管理的话,它会把相关信息记在数据字典的表里,从而产生回滚信息。由于这种表空间的以上特性,所以它支持在一个表空间里边进行更多的并发操作,并减少了对数据字典的依赖。当然本地化管理的表空间也不是对所有的数据库和数据库对象都是适用的。首先,它不能指定存储特性,无 STORAGE 子句可供使用。其次,它不适用于存储较小的数据库对象。总的来说,oracle8I 提供了这种全新的表空间管理方式,给了我们更多的选择。对于用来存储大对象的表空间和临时表空间来说,用本地化管理的表空间组织方式不失为一个较好的选择。4.2 FBI 索引Oracle8i的很重要的一个新特性就是增加了 function-based index 这种索引类型(后面简称为 FBI)。有了这个特性后,Oracle DBA 就可以在索引中使用函数或者表达式了。这些函数可以使 Oracle 自己的函数,也可以使用户自己的 PL/SQL 函数等。DBA 在 SQL 语句调优的过程中遇到的一个很常见的问题就是,如何优化那些在 WHERE子句中使用了函数的语句。因为在以前,在 WHERE 子句中使用函数会使在这个表上创建的索引没法利用,从而难以提高这个语句的性能。例子:使用基于成本的优化器,索引为标准的 B 树索引,建立在 SURNAME 列上。从 SQL*PLUS 的 autotrace 产生的执行路径可以看到,虽然我们在 WHERE 子句中用到的SURNAME 列上创建了索引,但是仍然执行的是全表扫描。如果这张表很大的话,这会消耗大量的时间。现在我们试着建立一个 FBI 索引:从 SQL*Plus 返回的执行计划我们可以看到,这次,Oracle 对表不再全表扫描,而是先扫描索引,因为优化器可以知道 FBI 索引得存在。使用 FBI 索引所能够带来的性能提升取决于表的大小、表中重复记录的量、在 WHERE子句中使用的列等因素。有一点需要清楚,FBI 索引并不真正在索引里边存储了表达式的结果,而是使用了一个表达树(expression tree)。由优化器来对 SQL 语句中的表达式进行解析,并
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省【中职专业高考】2025年中职高考对口升学(理论考试)真题卷【财经商贸大类】模拟练习
- 2025安徽黄山市黄山区消防救援大队政府专职消防员招聘2人模拟试卷及答案详解(历年真题)
- 2025海南保亭黎族苗族自治县市场监督管理局公益性岗位人员招聘1人考前自测高频考点模拟试题及答案详解(必刷)
- 广播安全播出技术培训课件
- 2025年甾体药物原料合作协议书
- Ibuprofenyl-CoA-Ibuprofenyl-coenzyme-A-生命科学试剂-MCE
- 广彩工艺传承
- 2025年离合器面片项目合作计划书
- GP130-modulator-2-生命科学试剂-MCE
- 2025年旋挖钻机项目合作计划书
- 2025年水利资料员基础知识考试题库及答案1
- T-CAV 032-2025 T-CAS 1061-2025 生物制品临床研究术语
- 民办学校财务管理体系构建与制度汇编
- 感知与判断-美术鉴赏的过程与方法+课件-2024-2025学年高中美术人美版(2019)+必修+美术鉴赏
- 2025版二手车买卖合同电子签约服务协议
- 2025年时事政治试题库及答案(共550题)
- 学校征兵经费管理办法
- 临床数据使用管理办法
- 助理医师题库及答案
- 酒店mod培训课件
- 2025至2030中国老鼠行业项目调研及市场前景预测评估报告
评论
0/150
提交评论