当前位置:首页 > Oracle数据库实验手册 - 图文
SQL> startup nomount SQL> show parameter spfile NAME spfile
TYPE
VALUE
-----------------------------
string
------------------------------
value 值为空,则表示未使用 spfile 文件,而是读取了文本参数文件。 如果这 3 个文件都不存在,oracle 将无法启动: SQL> startup nomount
ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file
'/u01/oracle/product/10.2/db_1/dbs/initora10.ora' 注意这里的错误提示,指出无法找到参数文件 intiora10.ora,这就是在启动 过程中按顺序查找的最后一个参数文件。
3、启动到 mount 状态的过程分析
① 启动 Oracle 实例后,Oracle 就可以从参数文件中获得控制文件的位置信息 控制文件信息在参数文件中记录如下所示: *.control_files='/u01/oracle/oradata/ora10/control01.ctl',
'/u01/oracle/oradata/ora10/control02
.ctl',
'/u01/oracle/oradata/ora10/control03.ctl' 关于控制文件
的信息可以通过查询 v$parameter 视图或直接查看文本参数文 件得到。 SQL>startup nomount
SQL>show parameter control_files
SQL>select name,value from v$parameter where name='control_files'; ② 在 mount 数据库的过程中,Oracle 需要找到控制文件,并且锁定控制文件。
SQL> alter database mount; Database altered. SQL> select name from v$controlfile; NAME
------------------------------------------------------------------ /u01/oracle/oradata/ora10/control01.ctl /u01/oracle/oradata/ora10/control02.ctl
/u01/oracle/oradata/ora10/control03.ctl注意,这部分控制文件的信息不是来自 于参数文件,而是来自控制文件本身, 只有当数据库 mount 后才能有效查看 v$controlfile 视图。
③ 如果控制文件丢失一个或多个都会导致数据库不能 mount。
SQL> alter database mount; alter database mount *
ERROR at line 1:
ORA-00205: error in identifying control file, check alert log for more info 从报错可以看出,在确认控制文件时出错了,从告警日志可以获取更多信息 打开告警日志 alert
信息 $ tail -10
/u01/oracle/admin/ora10/bdump/alert_ora10.log starting up 1 shared server(s) ... Wed Oct 6 07:23:12 2010 alter database mount
Wed Oct 6 07:23:12 2010
ORA-00202: control file: '/u01/oracle/oradata/ora10/control03.ctl' ORA-27037: unable to obtain file status Linux Error: 2: No such file or directory Additional information: 3
Wed Oct 6 07:23:15 2010
ORA-205 signalled during: alter database mount... 4、启动到 open 状态的过程分析
启动到 mount 阶段后,ORACLE 打开了控制文件,由于控制文件中记录了数据文件、 日志文件的位置信息、检查点信息等其他重要信息,所以,在数据库的 open 阶段, ORACLE 可以根据控制文件中记录的信息找到这些文件,然后进行检查点及完整性 检查。如果不存在问题就可以正常启动数据库,如果存在不一致或缺失文件就需 要进行恢复。 SQL>alter database open; Database alteed.
5、ORACLE 关闭过程分析
ORACLE 的正常关闭过程是:首先关闭数据库,其次实例取消数据库的挂载,最后 关闭 Oracle 实例。 SQL> shutdown
Database closed. Database dismounted.
ORACLE instance shut down. 数据库关闭过程也是一个复杂的过程,首先关闭命令会触发 CKPT 进程,在完成检 查点之前,CKPT 会分别触发 DBWR 和 LGWR 将缓存中的脏数据刷新输出到磁盘, 然后将 SCN 更新到控制文件和数据文件,保证数据库的一致性,最后关闭数据库。
实验六 ORACLE 数据库日常管理
一、实验环境
操作系统:红帽 Linux.5.5.for.x86.企业级服务器版 数据库软件:oracle10g 数据库 for x86 linux 版 二、实验过程 1、参数文件管理 ① pfile 与 spfile 的相互生成
SQL>create pfile from
spfile; SQL>create spfile from pfile;
② 使用 pfile/spfile 启动数据库 如果想改变 Oracle 启动时搜索参数文件的顺序,可以在 startup 后面加上如 下选项:
SQL>startup pfile=/u01/oracle/init.ora 这样就可以按指定的文本参数文件启动数据库,而不是按默认方式优先使用 spfile 文件。 ORACLE 在启动时,默认会到固定路径下搜索参数文件,如果搜索不到就无法 正常启动实例,路径为$ORACLE_HOME/dbs,在 startup 后面加上 pfile 选项时, pfile 的位置可以不位于固定路径下。通过在 pfile 加入 spfile 参数,可以 使用位于非固定路径下的服务器参数文件。如: [oracle@node1 oracle]$ cat /u01/oracle/initora10.ora spfile=/u01/oracle/spfile.ora
此文本参数文件里只有一行内容,即指定了一个 spfile 的位置,现在我们使 用此文本参数文件来启动数据库:
SQL> startup pfile=/u01/oracle/initora10.ora ORACLE instance started. Total System Global Area 281018368 bytes Fixed Size
bytes Variable Size Database Buffers Redo Buffers Database mounted.
Database opened. 可以看到,数据库可以正常启动,事实上,在启动时,通过指定的文本参数 文件,根据其内容重定向到了指定的 spfile,然后按照 spfile 中的参数设 置启动了实例,装载并打开数据库。 ③ 手工修改 spfile 导致 spfile 损坏,无法启动数据库 spfile 是二进制文件,不能通过手工方式修改,必须通过 ORACLE 提供的命令 修改 spfile 文件中的内容,现在模拟手工修改 spfile 后无法启动实例的情 况:
[oracle@node1 oracle]$ cd /u01/oracle/product/10.2/db_1/dbs [oracle@node1 dbs]$ file spfileora10.ora spfileora10.ora: data
[oracle@node1 dbs]$ vi spfileora10.ora
往 spfileora10.ora 里随便输入一些字母数字等信息,然后保存退出 并将 spfile.ora 和 initora10.ora 重命名 然后启动实例: SQL> startup
ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file
'/u01/oracle/product/10.2/db_1/dbs/initora10.ora' 报错提示参数文件不能打开,仔细分析在$ORACLE_HOME/dbs 目录下是有服务 器参数文件
1218992 88082000 bytes 184549376 bytes 7168000 bytes
spfileora10.ora 文件的,但根据报错提示是 initora10.ora 不 能打开,按照参数文件搜索顺序,这是位于最后的,由此说明服务器参数文 件肯定不能正常使用,所以 ORACLE 才会退而求其次寻找文本参数文件,而我 们的文本参数文件被重命名了,所以也找不到,最后当然也就无法正常启动 实例。解决的办法是,通过操作系统命令 stings 提前 spfile 中的文本内容, 然后粘贴到一个文本文件中,命令为 init
db_cache_size=184549376 ora10. java_pool_size=4194304 ora10. large_pool_size=4194304 ora10. shared_pool_size=79691776 ora10. streams_pool_size=0
*.audit_file_dest='/u01/oracle/admin/ora10/adump' *.background_dump_dest='/u01/oracle/admin/ora10/bdump' *.compatible='10.2.0.1.0'
*.control_files='/u01/oracle/oradata/ora10/control01.ctl', '/u01/oracle/oradata/ora10/control02.ctl', '/u01/oracle/oradata/ora10/control03.ctl' *.core_dump_dest='/u01/oracle/admin/ora10/cdump' *.db_block_size=8192 *.db_domain=''
*.db_file_multiblock_read_count=16 *.db_name='ora10'
*.db_recovery_file_dest='/u01/oracle/flash_recovery_area' *.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ora10XDB)' *.job_queue_processes=10 *.open_cursors=300
*.pga_aggregate_target=16777216 *.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=277872640 *.sga_target=281018368 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/oracle/admin/ora10/udump' Wojfeojfeofjejfeo
可以看到,第一行和最后一行是我们手工加进入的字符 [oracle@node1 dbs]$ vi
ora10.ora 将上述参数粘贴进来,保存退出。 然后再次启动数据库
共分享92篇相关文档