11g
读取参数文件的顺序
9i
之前,只有静态参数文件pfile
文件。
9i
开始,引入了动态参数文件spfile
文件。
Windows
:
%ORACLE_HOME%\database
SPFILEORCL
就是动态参数文件
Linux
:
$ORACLE_HOME/dbs
11g
中,启动数据库。
Oracle按照 spfileSID.ora
-> spfile.ora
-> initSID.ora
-> init.ora
顺序查找
都找不到就启动不了数据库。
SID
是服务名,也叫做Oracle
系统标识符。
Oracle的启动
数据库的四种状态及打开数据库
Oracle
是由数据库(数据文件)、实例(包含内存(SGA
、PGA
)和后台进程)组成
shutdown
实例(内存和进程都关闭掉)、数据库都关闭NOMOUNT
实例启动(内存分配,进程启动)数据库仍然关闭(数据文件没被打开)。
可以执行:
select * from v$bgprocess;
select * from v$instance;
alter database mount;
mount
数据库装载完成,打开控制文件(control file
)控制文件记载着整个数据库信息
控制文件(control file
),可以找到database
结构信息,但是用户的表的内容还没有打开用户的信息无法被读取,只能读取控制文件包含的信息。
可以执行:
select * from v$database;
select * from v$tablespace;
select * from v$datafile;
alter database open;
OPEN
数据库打开并成功加载,可以访问用户表。
alter database open;
实操
sqlplus / as sysdba
select open_mode from v$database;
OPEN_MODE
------------------------------------------------------------
#数据库是读写状态 处于OPEN状态
READ WRITE
关闭数据库
immediate
:不允许新用户连接,不等待已连接用户做完所有的事务,回滚掉用户所做的事务,然后系统自动断开和他们的连接。
abort
强制断开和所有用户的连接。不安全!
SQL> shutdown immediate
Database closed. #把数据库关闭把用户的表关闭
Database dismounted. #卸载就是把控制文件关闭掉
ORACLE instance shut down. #内存也都没了、进程也关闭了
实例启动
SQL> startup nomount
ORACLE instance started. #实例启动了
#System Global Area 内存已经分配了
Total System Global Area 2.1179E+10 bytes
Fixed Size 2185032 bytes
Variable Size 1.0670E+10 bytes
Database Buffers 1.0469E+10 bytes
Redo Buffers 37048320 bytes
查看物理内存
SQL> show sga
Total System Global Area 2.1179E+10 bytes
Fixed Size 2185032 bytes
Variable Size 1.0670E+10 bytes
Database Buffers 1.0469E+10 bytes
Redo Buffers 37048320 bytes
查看后台进程
SQL> select count(*) from v$bgprocess;
COUNT(*)
----------
295
说明后台进程已经启动!
查看控制文件
#此时控制文件处于关闭状态
SQL> select count(*) from v$controlfile;
COUNT(*)
----------
0
#更改为mount状态
alter database mount;
#此时控制文件就打开了
SQL> select count(*) from v$controlfile;
COUNT(*)
----------
2
查看用户表
#此时还是读不了用户表的
SQL> select count(*) from scott.emp;
select count(*) from scott.emp
*
ERROR at line 1:
ORA-01219: database not open: queries allowed on fixed tables/views only
#更改为open状态
alter database open;
#此时就可以查看数据表了!
SQL> select count(*) from scott.emp;
COUNT(*)
----------
14
实例启动二周目
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
#一步到胃了属于是!
SQL> startup
ORACLE instance started.
Total System Global Area 2.1179E+10 bytes
Fixed Size 2185032 bytes
Variable Size 1.0670E+10 bytes
Database Buffers 1.0469E+10 bytes
Redo Buffers 37048320 bytes
Database mounted.
Database opened.
restrict
我没用过了解把!
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
#用该方式启动会限制没有 restricted session 的权限用户无法登录
SQL> startup restrict
ORACLE instance started.
Total System Global Area 2.1179E+10 bytes
Fixed Size 2185032 bytes
Variable Size 1.0670E+10 bytes
Database Buffers 1.0469E+10 bytes
Redo Buffers 37048320 bytes
Database mounted.
Database opened.
sqlplus t1/t1@orcl
C:\Users\lenovo>sqlplus system/password@orcl
SQL*Plus: Release 11.2.0.1.0 Production on Sat Feb 15 22:03:37 2025
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
ORA-12526: TNS:listener: all appropriate instances are in restricted mode
force
#全部关闭以后再打开
startup force
参数文件
pfile
静态参数文件可以被编辑的。
spfile
动态参数文件是二进制文件。
创建一个静态文件
SQL> create pfile='G:\pfileorcl.ora' from spfile;
File created.
打开该文件
文件格式是这样的:
orcl. xxxxx
...
*. xxx
#只对这一个数据库实例起作用
#这一部分的话对内存分配管理
orcl. xxxxx
#加*对所有实例都起作用
#这一部分指的是文件到底在哪个路径下面
#怎么按照路径找重要的文件
*.
从参数文件读数据启动
shutdown immediate
startup pfile='G:\pfileorcl.ora'