ORACLE 启动和关闭
sql oracle mysql 数据库 基础 知识 窗口函数 lag与lead函数 LISTAGG函数 connect by 结构化查询 备份和恢复 mysql5.7 mysql8.0 oracle_11g docker
ORACLE 启动和关闭
数据库的启动
sqlplus “/as sysdba”
SQL> startup
ORACLE 例程已经启动。
ORACLE instance started (启动引擎)
Total System Global Area 135339940 bytes (开辟SGA区)
Fixed Size 454564 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
Database mounted. (连上数据库)
Database opened. (打开数据库)
数据库的启动过程涉及的3个状态
● NOMOUNT状态:该状态只打开了数据库实例,此时读取参数文件。oracle进程会根据参数文件开创共享内存池
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 1904054272 bytes
Fixed Size
2254384 bytes
Variable Size
1308625360 bytes
Database Buffers
587202560 bytes
Redo Buffers
5971968 bytes
终端输入命令ipcs –m 查看共享内存情况
[oracle@ljy ~]$ ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 4 oracle 600 524288 2 dest
0x00000000 32776 oracle 600 16777216 2 dest
0x00000000 9 oracle 600 524288 2 dest
0x00000000 10 oracle 600 524288 2 dest
0x00000000 32781 oracle 600 524288 2 dest
0x00000000 32782 oracle 600 524288 2 dest
0x00000000 32783 oracle 600 524288 2 dest
0x00000000 19 oracle 600 524288 2 dest
0x00000000 32790 oracle 640 4096 0
0x00000000 32791 oracle 640 4096 0
0x2435e184 32792 oracle 640 4096 0
show parameter spfile;
- MOUNT状态:该状态ORACLE根据参数文件中控制文件的位置找到并打开控制文件,读取控制文件中的各种参数信息,如数据文件和日志文件的位置等,但是此时并不打开数据文件。
mount阶段,oracle会根据nomount阶段的参数文件来寻找控制文件的名称和位置,一旦查找到立即锁定该控制文件,控制文件里记录了数据库中的数据文件、日志文件、检查点信息等非常重要的信息。启动mount时,会先自动启动nomount。
- OPEN状态:该状态数据库将打开数据文件并进行一系列的检查工作,这些检查工作用于数据恢复。
open阶段会根据控制文件记录的信息,定位到数据库文件、日志文件等,正式开启实例和数据库之间的桥梁。如果数据文件或者日志文件缺少,那么open失败。
open之后,如果有使用归档日志功能,便可看到归档日志的进程
数据库的关闭
服务器关闭的4种方式
- 正常关闭:(shutdown normal)
数据库正常关闭。应用关闭选项后,不允许有新的连接。所有与数据库连接的用户必须在关闭数据库之前断开与该数据库的连接
- 立即关闭:(shutdown immediate)
数据库立即关闭。当前的客户机 SQL 语句立即终止
- 中止关闭:(shutdown abort)
中止正在被Oracle数据库服务器处理的当前客户机SQL语句
- 事务处理关闭:(shutdown transactional)
提供一个指定的时间长度。关闭数据库前在该时间内完成事务处理。直到最后一个数据库事务处理完成后,才关闭数据库
启动和关闭Oracle数据库过程图
问题:如果不小心物理上删除了一Oracle的数据文件,那么ORACLE数据库能不能正常启动?
Oracle读控制文件时,和打开数据库时所面对的参数不一致,Oracle数据库将启动不了,
解决这种问题的方法是把其对应的表空间先卸下,再删除,以保证控制文件描述和物理上
存在文件一致。
SQL>startup mount
SQL>alter database datafile '/directory/abc.dbf' offline;
SQL>alter database open;
SQL>drop tablespace abc;