002、初始化参数文件、启动三台阶
初始化参数文件
分为:文本的初始化参数文件init实例名.ora、二进制初始化参数文件spfile实例名.ora;
| 初始化参数文件 | |
| 文本的参数文件init实例名.ora | 二进制的参数文件spfile实例名.ora |
| 1、create pfile from spfile; | 1、动态修改的参数是否保留 2、9i的新特性 3、二进制可以不是文件,可以是设备raw,多个实例共享一个spfile 4、使用oracle命令修改参数,修改参数时自动校验合法性 5、create spfile from pfile; |
查看当前实例使用的二进制参数文件:
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/ora10g/spfileora10g.ora
--若没有值,则使用的是文本的参数文件启库三台阶
nomount
1、根据环境变量找到对应的参数文件,按顺序为专用的参数文件spfile实例名.ora、共有的二进制参数文件、专用的文本参数文件;若都没找到,则可以在RMAN下无参数文件启动;
以下是删除$ORACLE_HOME/dbs目录下所有文件之后的演示过程:


:创建文本的初始化参数文件,文件内容可以从alert日志中查找:文件正常启动时的内容
:已恢复2、按照参数文件中配置的大小分配内存
3、启动后台进程
4、初始化数据字典v$..
5、将启动过程写入到告警日志:alert实例名.log中
6、nomount状态:可以建立数据库,可以建立控制文件,可以修改参数文件内的参数。
查看状态:
SQL> select status from v$instance;
STATUS
------------
STARTED实例是空壳,并没有加载数据库,只是连接数据库的工具。
mount
1、读参数control_files
2、找到对应的控制文件
3、读控制文件内容到内存中
4、完善数据字典
6、mount状态:可以修改文件位置,可以备份和恢复
查看状态:
SQL> alter database mount;
Database altered.
SQL> show parameter control
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string +DATA/ora10g/controlfile/curre
nt.256.1043492187
SQL> select status from v$instance;
STATUS
------------
MOUNTEDmount之后,就是将一个没有意义的实例和一个数据库发生了联系。
open
1、读控制文件中描述的数据文件,如果不一致,使用日志文件自我恢复
2、打开数据库
3、只有open的数据库才对外开放,open以前只是维护数据库
查看状态:
SQL> alter database open;
Database altered.
SQL> select status from v$instance;
STATUS
------------
OPEN
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/ora10g/datafile/system.259.1043492191
+DATA/ora10g/datafile/undotbs1.260.1043492199
+DATA/ora10g/datafile/sysaux.261.1043492199
+DATA/ora10g/datafile/undotbs2.263.1043492205
+DATA/ora10g/datafile/users.264.1043492207
+DATA/ora10g/goldengate/goldengate01.dbf
6 rows selected.停库四模式
查看停库的几种模式:
SQL> help shutdown
SHUTDOWN
--------
Shuts down a currently running Oracle Database instance, optionally
closing and dismounting a database.
SHUTDOWN [ABORT|IMMEDIATE|NORMAL|TRANSACTIONAL [LOCAL]]四种模式的区别:
| 停库模式 | 新的会话 | 空闲的会话 | 新的和未完成的事务 | 检查点 | 停止数据库 | 启动时是否需要恢复 |
| NORMAL | 不允许连接 | 不受影响 | 不受影响 | 正常执行 | 等会话断开连接后 | 一致停库,启动时不需要恢复 |
| TRANSACTIONAL | 不允许连接 | 断开连接 | 不允许新事务; 未完成事务不受影响 | 正常执行 | 等所有事务结束 | |
| IMMEDIATE | 不允许连接 | 断开连接 | 未完成事务回退 | 正常执行 | 关闭数据库 | |
| ABORT | 不允许连接 | 断开连接 | 未完成事务不回退 | 不执行 | 关闭数据库 | 不一致停库,启动时需要自我恢复 |
NORMAL
实验,当前已连接的情况下,再连接二个会话。
会话1使用管理员用户:
[oracle@rac1 ~]$ sqlplus / as sysdba
……
SQL>会话2使用scott用户:
[oracle@rac1 ~]$ sqlplus scott/tiger
……
SQL>会话1使用normal模式停止数据库:
SQL> shutdown normal --发现一直卡着会话3以普用户连接数据库:
[oracle@rac1 ~]$ sqlplus /nolog……
SQL> conn scott/tiger
ERROR:
ORA-01090: shutdown in progress - connection is not permitted --提示数据库正在关闭,不允许连接会话2执行更新等操作:
SQL> update emp set sal=sal+1;
14 rows updated.
SQL> commit;
Commit complete.
--当前已连接用户可以正常执行事务会话2断开连接:
SQL> disconn
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options观察会话1:
SQL> shutdown normal
Database closed.
Database dismounted.
ORACLE instance shut down.--数据库已停止TRANSACTIONAL
会话1以管理员连接:
SQL> conn / as sysdba
Connected.会话2以scott连接,执行更新,但不提交:
SQL> conn scott/tiger
Connected.
SQL> update emp set sal=sal+1 where empno=7900;
1 row updated.会话3以scott连接,执行更新,但不提交:
SQL> conn scott/tiger
Connected.
SQL> update emp set sal=sal+1 where empno=7902;
1 row updated.会话1以TRANSACTIONAL关闭数据库:
SQL> shutdown TRANSACTIONAL; --发现一直卡着以普通用户进行新的连接:
[oracle@rac1 ~]$ sqlplus /nolog……
SQL> conn scott/tiger
ERROR:
ORA-01089: immediate shutdown in progress - no operations are permitted --提示数据库正在关闭,不允许连接会话2提交,并开启新的事务:
SQL> commit;
Commit complete.
SQL> update emp set sal=sal+1 where empno=7900;
update emp set sal=sal+1 where empno=7900
*
ERROR at line 1:
ORA-01089: immediate shutdown in progress - no operations are permitted --不允许开启新的事务
SQL> select * from emp;
ERROR:
ORA-03114: not connected to ORACLE会话3不提交,继续更新:
SQL> update emp set sal=sal+1 where empno=7900;
1 row updated.
--不受影响会话3回退,结束事务:
SQL> rollback;
Rollback complete.观察会话1:
SQL> shutdown TRANSACTIONAL;
Database closed.
Database dismounted.
ORACLE instance shut down.

浙公网安备 33010602011771号