Professional Documents
Culture Documents
02-Oracle12c 之 管理数据库实例 - 03
02-Oracle12c 之 管理数据库实例 - 03
大纲
• 启动和关闭数据库
• 启动和关闭PDB
• 管理CDB和PDB
• CDB体系结构
启动和关闭数据库
数据库的几种模式
• 四种
STARTUP几种模式
• NOMOUNT - 在不安装数据库的情况下启动实例。这不允
许访问数据库,通常创建数据库或重新创建控制文件。
• MOUNT - 启动实例并挂载数据库,但保持关闭状态。此状
态允许某些DBA活动,但不允许对数据库的一般访问。
• OPEN - 启动实例,然后挂载并打开数据库
• FORCE- 在强制关闭之后启动实例
• 参数文件顺序
1.srvctl config database
2.spfileORACLE_SID.ora
3.spfile.ora
4.initORACLE_SID.ora
STARTUP NOMOUNT;
• 在默认位置找服务器参数文件,如果未找到,则搜索文本
初始化参数文件(除指定SPFILE或PFILE参数);
• 读取参数文件以确定初始化参数的值;
• 根据初始化参数设置分配SGA;
• 启动Oracle后台进程;
• 打开警报日志和跟踪文件,并将所有显式参数设置写入警
报日志。
mount
• 实例将从CONTROL_FILES初始化参数中指定的控制文件
的名称中打开文件。Oracle数据库读取控制文件以便打开
数据库时访问数据文件的名称和联机重做日志文件。
mount
• 启用和禁用归档模式
• 执行完整的数据库恢复
• 强制完全数据库缓存模式:
• 在默认缓存模式下,当用户查询大型表时,Oracle数据库
并不会缓存基础数据,因为这样做可能会从缓冲区缓存中
删除更多有用的数据。从Oracle Database 12 c第1版(
12.1.0.2)开始,如果Oracle数据库实例确定有足够的空
间来将整个数据库缓存在缓冲区缓存中且对数据库没有什
么负面影响,那么实例会自动缓存缓冲区缓存中的完整数
据库。
• ALTER DATABASE FORCE FULL DATABASE
CACHING;
open
• 除UNDO表空间以外的表空间中打开在线数据文件
如果关闭数据库时表空间处于脱机状态,则在重新打开
数据库时,表空间及其相应的数据文件将处于脱机状态;
• 获取UNDO表空间
如果存在多个撤消表空间,则由UNDO_TABLESPACE
初始化参数指定。未设置此参数,则选择第一个可用的;
• 打开在线重做日志
修改数据库可用性
具有CREATE SESSION系统特权的任何有效Oracle数据库
用户都可以连接到数据库
READ ONLY(只读)
READ WRITE(读写)
修改数据库可用性
• NORMAL
1.不允许新的连接(不需要实例恢复)
2.在关闭之前会等待所有当前连接的用户断开连接
• ABORT
1.不允许新连接,也不允许启动新事务,未回滚未提交的事务
2.Oracle Database正在处理的当前客户端SQL语句将立即终
止。
• Oracle数据库不会等待当前连接到数据库的用户断开,数据
库隐式断开所有连接的用户。(需要实例恢复)
SHUTDOWN
• TRANSACTIONAL
1. 不允许新连接,也不允许启动新事务(不需要实例恢复)
2.完成所有事务后,任何仍连接到实例的客户端都将断开连
接。(immediate)防止客户端丢失事务,不需要用户注销。
• IMMEDIATE
1.不允许新的连接(不需要实例恢复)
2.终止所有正在执行的SQL语句并断开用户连接活动事务将
终止,并且将回滚未提交的事务。(长事务会影响)
SHUTDOWN
允许新用户连接 NO NO NO NO
等待当前会话结束 NO NO NO YES
等待当前事务结束
NO NO YES YES
执行检查点并关闭
NO YES YES YES
文件
启动和关闭PDB
SHUTDOWN
• TRANSACTIONAL
1. 不允许新连接,也不允许启动新事务(不需要实例恢复)
2.完成所有事务后,任何仍连接到实例的客户端都将断开连
接。(immediate)防止客户端丢失事务,不需要用户注销。
• IMMEDIATE
1.不允许新的连接(不需要实例恢复)
2.终止所有正在执行的SQL语句并断开用户连接活动事务将
终止,并且将回滚未提交的事务。(长事务会影响)
管理CDB和PDB
CDB组件
• CDB$ROOT
存储Oracle提供的元数据和普通用户。示例:Oracle提供
的PL / SQL包的源代码。普通用户是每个容器中已知的数据
库用户。
• PDB$SEED:
用于创建新的PDB模板。不能在种子中添加对象或修改对
象,CDB只有一个SEED。
• PDBS:
一个CDB可以用多个PDB(非CDB相同)
• 每个CDB只包含一个root,一个seed,零个或者多个用户
创建的PDBS
CDB
管理CDB
• SELECT SYS_CONTEXT('USERENV','CON_NAME'
)FROM DUAL;
• ALTER SESSION SET CONTAINER = container_name
[SERVICE = service_name ]
• conn username@tnsname
• select CON_ID,NAME,OPEN_MODE from v$containers;
• show pdbs