04. 数据库常用管理命令
2018-03-31 本文已影响0人
Lv_0
-
数据库的启动与停止
- 在cmd中,以无登录方式进入SQL*Plus控制台,然后连接数据库服务器
sqlplus /nolog
connect /as sysdba
image.png
- 启动与停止命令
startup 启动选项
shutdowm 停止选项
-
启动选项
NOMOUNT:
只创建例程,不装载数据库,即不能使用数据库中的任何文件,但重建控制文件或运行创建新数据库的脚本时,必须使用此模式启动.
MOUNT:
不仅创建例程,还装载数据库,在该模式下管理员可修改数据库,用户无法访问数据库.
常用于执行以下4类维护工作:
- 重命名数据文件;
- 添加,删除,重命名,重做日志文件;
- 执行数据库完全恢复操作;
- 改变数据库的归档模式
OPEN:
正常启动数据库,不仅创建例程,还装载数据库,并打开数据库,缺省启动
FORCE:
强制重启数据库,与正常模式不同,无论数据库处于什么模式,均可以强制启动,且此启动是先异常关闭数据库(无需使用shutdown关闭),然后重新启动
PESTRICT:
启动数据库,并置入OPEN模式,但只有拥有PESTRICTED SESSION权限的用户才可以访问数据库
PFILE=filename:
指定一个参数化文件来启动数据库(.ora后缀文件)
-
停止选项
NORMAL:
正常关闭数据库,此时Oracle执行如下操作:
- 阻止用户新连接数据库
- 等待所有连接用户主动断开(未主动断开前可正常操作,提交事务等)
- 直到所有用户都断开连接,才进行关闭,卸载数据库.并终止例程
TRANSACTIONAL:
与NORMAL模式相比,其过程如下:
- 阻止用户新连接数据库,同时阻止当前连接用户开始新的事务
- 等待所有未提交事务提交完毕,然后立即端口用户连接
- 一旦所有用户都断开连接,立即进行关闭,卸载数据库,并终止例程
IMMEDIATE:
立即关闭,一般在断电或异常时使用,其过程如下:
- 阻止用户新连接数据库,同时阻止当前连接用户开始新的事务
- 所有当前未提交的事务均被退回
- Oracle不再等用户断开连接,而是直接关闭,卸载并终止例程
ABORT:
强制关闭数据库,一般为发生严重错误,以上三种方式无法关闭时使用此方式,其过程如下:
- 阻止用户新连接数据库,同时阻止当前连接用户开始新的事务
- 所有当前未提交的事务均不被退回
- 立即结束当前正则执行的SQL语句
- 立即断开所有连接,直接关闭,卸载和终止例程
-
转换启动模式
alter database open或xxx
- 使用alter语句即可改变当前数据库的模式
- Windows系统下,正常的启动停止数据库,可在服务控制面板中(services.msc)启动和停止相关服务即可
-
端口侦听操作命令
对侦听端口的操作主要包括:查看状态,启动和停止三种,使用Windows命令lsnrctl实现(cmd中操作)
- lsnrctl start:启动侦听端口,与启动服务OracleOraDb11g_home2TNSListener效果一样
- lsnrctl stop:停止侦听端口,与停止服务OracleOraDb11g_home2TNSListener效果一样
- lsnrctl status:查看当前侦听器的状态是否正常
-
管理控制台操作命令
DB Console 或者 Oracle Enterprise Manager 的启动与停止(cmd中操作)
- 启动:emctl start dbconsole
- 停止:emctl stop dbconsole
- 状态:emctl status dbconsole
-
SQL*Plus常用命令
- SQL*Plus是Oracle自带的交互操作程序
- SQL*Plus可运行各种SQL语句或脚本
- PLSQL Developer,TOAD等比SQL*Plus功能更强大,界面更友好
SQL*Plus常用功能:
命令 | 释义 |
---|---|
@ filename.sql | 运行sql文件(批处理方式运行) |
spool filename | 将屏幕输出保存到文件中,直至运行到spool off |
desc 用户名.表名 | 描述表结构 |
help 命令名 | 查看某个命令的用法 |
column 列名 format A20 | 设置列名的显示宽度为20 |
column 列名 heading 新列名 | 将列名的显示名称修改为新列名 |
set linesize 100 | 将sqlplus中每行的显示宽度设置为100字符,默认为80 |
set autocommit on/off | 设置sql语句是否自动提交(若否,需要使用commit命令手动提交) |
show 参数名 | 显示当前系统的各类参数值,包括系统初始化参数 |
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; | 修改时间格式 |
alter session set nls_date_language='american'; | 修改日期格式为美国格式 |
select sysdate from dual; | 显示服务器当前时间 |
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; | 格式化显示系统当前日期时间 |
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ssXFF') from dual | 格式化显示事件戳 |
select to_char('2018-11-2 14:15:9','yyyy-mm-dd hh24:mi:ss') from dual | 格式化显示时间 |
select * from &tablename; | 参数化的使用,提示输入tablename的值(表名) |
-
Dual表简介
- Dual是一个系统表,只有一个Dummy Varchar2(1)字段
- 因Oracle语句要求必须完整,故在查询非表数据是加上Dual表
- Dual表无具体数据,只是用来查询无具体表数据时,用来完整sql语句的