数据库的启动(STARTUP)
启动一个数据库需要三个步骤:
nomount
mount
open
nomount
mount
open
1、STARTUP NOMOUNT
创建一个Oracle实例
读取初始化参数文件
启动后台进程
初始化系统全局区(SGA)置
产生警报日志文件,把启动过程写入警告日志文件中
读取初始化参数文件
启动后台进程
初始化系统全局区(SGA)置
产生警报日志文件,把启动过程写入警告日志文件中
可以创建数据库
重建控制文件
修改初始化参数
重建控制文件
修改初始化参数
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 35431692 bytes
Fixed Size 70924 bytes
Variable Size 18505728 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
ORACLE 例程已经启动。
Total System Global Area 35431692 bytes
Fixed Size 70924 bytes
Variable Size 18505728 bytes
Database Buffers 16777216 bytes
Redo Buffers 77824 bytes
select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
orcl STARTED
---------------- ------------
orcl STARTED
2、STARTUP MOUNT
从参数文件中获得控制文件的位置 加载控制文件到内存
需要所有的控制文件都在,并且状态是一致的
由初始化参数 control_file 决定位置,该参数指向几个控制文件,数据库就需要几个文件
(1)可以查看所有动态性能视图(v$xxx) 但不能查询数据字典
(2)可以移动数据文件和联机日志文件
(3)可以备份还原恢复数据库
(4)可以作数据库级别的 offline 和 online ,但不能作表空间的 offline 和 online
(5)可以修改数据库的归档模式
(6)可以打开和关闭闪回数据库的功能
(2)可以移动数据文件和联机日志文件
(3)可以备份还原恢复数据库
(4)可以作数据库级别的 offline 和 online ,但不能作表空间的 offline 和 online
(5)可以修改数据库的归档模式
(6)可以打开和关闭闪回数据库的功能
select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
orcl MOUNTED
---------------- ------------
orcl MOUNTED
3、STARTUP
startup = nomount + mount + open
如果采用STARTUP NOMOUNT或者是STARTUP MOUNT的数据库打开命令方式,必须采用ALTER DATABASE命令来执行打开数据库的操作
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
ALTER DATABASE OPEN;
select open_mode from v$database;
4、其他打开方式
(1) STARTUP RESTRICT
受限会话访问模式:(只有拥有RESTRICTED SESSION权限的用户才可以创建会话)。这种方式常用来对数据库进行维护,如数据的导入/导出操作时不希望有其他用户连接到数据库操作数据。
select logins from v$instance;
alter system enable RESTRICTED SESSION;
alter system disable RESTRICTED SESSION;
grant RESTRICTED SESSION to scott;
revoke RESTRICTED SESSION from scott;
select logins from v$instance;
alter system enable RESTRICTED SESSION;
alter system disable RESTRICTED SESSION;
grant RESTRICTED SESSION to scott;
revoke RESTRICTED SESSION from scott;
(2) STARTUP FORCE
该命令其实是强行关闭数据库(shutdown abort)和启动数据库(startup)两条命令的一个综合。该命令仅在关闭数据库遇到问题不能关闭数据库时采用。
(3) ALTER DATABASE OPEN READ ONLY;
以只读方式打开数据库
数据库的关闭(SHUTDOWN)
shutdown normal
不允许建立新的连接(普通用户)
等待查询结束
等待事务结束
产生检查点(完全检查点)
关闭数据文件
卸载控制文件
关闭实例
shutdown transactional
不允许建立新的连接(普通用户)
不等待查询结束(查询的会话被杀掉)
等待事务结束
产生检查点(完全检查点)
关闭数据文件
卸载控制文件
关闭实例
不允许建立新的连接(普通用户)
不等待查询结束(查询的会话被杀掉)
等待事务结束
产生检查点(完全检查点)
关闭数据文件
卸载控制文件
关闭实例
shutdown immediate
不允许建立新的连接(普通用户)
不等待查询结束(查询的会话被杀掉)
不等待事务结束(将事务rollback)
产生检查点(完全检查点)
关闭数据文件
卸载控制文件
关闭实例
不允许建立新的连接(普通用户)
不等待查询结束(查询的会话被杀掉)
不等待事务结束(将事务rollback)
产生检查点(完全检查点)
关闭数据文件
卸载控制文件
关闭实例
shutdown abort
对oracle数据库相当于拔电源!
是脏库!重新启动数据库时需要实例的恢复!
对oracle数据库相当于拔电源!
是脏库!重新启动数据库时需要实例的恢复!
startup force = shutdown abort + startup
Shutdown数据库不同方式对比表
关闭方式 A I T N
允许新的连接 × × × ×
等待直到当前会话中止 × × × √
等待直到当前事务中止 × × √ √
强制CheckPoint,关闭所有文件 × √ √ √
允许新的连接 × × × ×
等待直到当前会话中止 × × × √
等待直到当前事务中止 × × √ √
强制CheckPoint,关闭所有文件 × √ √ √
其中:A-Abort I-Immediate T-Transaction N-Nornal
如果有多个参数文件存在,由$ORACLE_SID环境变量的值决定使用哪一个参数文件!
问题:
如果想启动ora10g实例怎么办?
echo $ORACLE_SID
export ORACLE_SID=ora10g
如果想启动ora10g实例怎么办?
echo $ORACLE_SID
export ORACLE_SID=ora10g
如果想启动ora9i实例怎么办?
echo $ORACLE_SID
export ORACLE_SID=ora9i
echo $ORACLE_SID
export ORACLE_SID=ora9i