Oracle启动与关闭(基础操作)

发布于:2025-02-19 ⋅ 阅读:(26) ⋅ 点赞:(0)

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是由数据库(数据文件)、实例(包含内存(SGAPGA)和后台进程)组成

  • 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'

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到