Oracle数据库管理
版本适用范围
Oracle 12.2
环境变量
通过setenv或者export设置ORACLE_HOME和ORACLE_SID
1 | setenv ORACLE_SID orcl |
连接到数据库
1.无登陆的方式
sqlplus / nolog
2.以最高权限登陆,操作系统认证的方式进行连接,不需要密码。
需要设置最高权限的用户组,并且切换到该用户下。多实例的情况下需要切换SID
sqlplus / as sysdba
切换SID
export ORACLE_SID=[SID]
3.切换连接
连接到sqlplus后,更改用户
conn 账户/密码
切换到远程数据库
connect [用户名]@”[IP/域名]:[端口]/[数据库服务名]”
connect apps@”10.38.1.140:1552/DEV”
或
conn apps@”10.38.1.140:1552/DEV”
查询数据库版本号
SELECT *
FROM product_component_version;

ORACLE参数
初始化参数
初始化参数文件
对于任意参数文件的修改,都需要重启数据库实例后才会生效。
参数文件存放于 $ORACLE_HOME/dbs 目录下,并且文件名为 init[SID].ora
如:下图,其中initTest.ora是初始化的参数文件

查看初始化参数
show parameter [参数选项]
可用参数选项如下

例如:查看重做日志表空间
show parameter undo_tablespace
修改初始化参数
使用 alter session set [参数] = [参数值] 进行当前会话临时修改,不会影响其他会话,该参数也不会被保存。
如修改当前会话的日期格式
ALTER SESSION SET NLS_DATE_FORMAT = ‘yyyy-mm-dd hh24:mi:ss’;
从动态性能视图中查询所有的初始化参数
SELECT *
FROM v$parameter;
结果如下:

该视图的说明
服务器参数
服务器参数文件
- pfile:文本文件,可以直接修改
- spfile:二进制保存,只能通过命令修改
持久化存放在 $ORACLE_HOME/dbs 目录下,并且由初始化参数文件中的 SPFILE 参数指定,并且文件名为 spfile[SID].ora 或默认的 spfile.ora

Oracle启动过程
在Oracle启动实例时,会先启动进程加载参数文件,然后根据参数加载实例。
如果创建了spfile,则oracle会使用启动进程,并从spfile中加载数据库配置;如果没有则直接加载初始化参数文件。
查询是否启用spfile
如果查询不为空则启用spfile
SELECT name,value FROM v$parameter WHERE name=’spfile’;

修改参数文件
Alter system set parameter=value <comment=’text’>
<scope=memory|spfile|both> <sid=’sid|*’>
查看参数文件
如果value不为空,则启用服务器参数文件

这个图可以发现,没有持久化服务器参数文件。
常用视图
静态数据字典
权限控制
- dba_[表名]:显示所有对象,仅允许有dba权限的用户访问
- all_[表名]:显示所有用户下的对象,允许跨用户访问(如果有权限)
- user_[表名]:仅显示当前用户下的对象
- cdb_[表名]:如果启用多租户架构的容器数据库,则可以跨租户查看(如果有权限)
数据库对象
- ALL_ALL_TABLES:当前用户可以访问的所有表
- ALL_ARGUMENTS:当前用户可以访问的所有函数和过程
- ALL_CATALOG:当前用户可访问的表,聚类,视图,同义词和序列
- ALL_COL_COMMENTS:当前用户下所有存在注释的字段
- ALL_COLL_TYPES:当前用户下可访问的所有集合类型
- ALL_CONS_COLUMNS:当前用户下可以访问的包含约束的字段
- ALL_CONSTRAINTS:当前用户下可以访问的所有表中的约束
- ALL_DB_LINKS:当前用户下可以访问的所有dblink
- ALL_DEPENDENCIES:当前用户下所有的依赖关系,注意查询时
referenced_link_name不要为空 - ALL_ERRORS:查询当前用户下所有对象的异常信息,根据字段
sequence排序 - ALL_IND_COLUMNS:查看当前用户下包含索引的列
- ALL_INDEXES:当前用户下全部索引
- ALL_JOBS:当前用户下所有定时任务
- ALL_OBJECTS:当前用户下所有对象
- ALL_SOURCE:查看所有package中的函数定义
数据库文件
- ALL_DIRECTORIES:当前用户下可以访问的文件目录
动态性能视图
动态性能视图以 v$开头
只有dba权限的用户能够访问,每一个性能视图都是由数据库实例都是动态生成的,无法进行更新。
V$INSTANCE:当前数据库实例
V$SGA:查看SGA信息
V$SGAINFO:查看SGA详细信息
V$PARAMETER:查看初始化参数
V$VERSION:查看数据库版本
V$OPTION:查看数据库产品信息
V$SESSION:查看会话信息
V$PROCESS:查看进程信息
V$LOCK:查看占有锁的会话
V$TABLESPACE:表空间信息
v$parameter:查看所有参数信息
数据文件
- V$CONTROLFILE:控制文件路径
- V$DATAFILE:数据文件路径
- V$LOGFILE:日志文件路径
SQL
- v$sql:执行过的sql详细信息
- v$sqltext:sql文本,可以与上面的表关联
- 注意:并不是所有的 SQL 语句都可以从 V$SQL 中找到,因为 ORACLE 会动态地
更新共享池的信息,将一些过旧的 SQL 从共享池中删除
SQL 的解析的过程中,会把硬解析之后的 SQL 放在放在共享池中,如果我们清空了共享池,那么就需要重新做硬分析。
alter system flush shared_pool;
查看sql性能
select * from v$sql ;
SELECT sql_text,
cpu_time / (1000 * 1000) t_cpu,
TRUNC (elapsed_time / (1000 * 1000)) t_elap,
(cpu_time / elapsed_time / (1000 * 1000)) * 100 pct
FROM v$sql
WHERE sql_text LIKE ‘SELECT OFFER_GROUP_ID_SEQ.NEXTVAL FROM DUA%’;
对于已经执行完毕的会话,可以在 V$SQL 视图中找到它的执行时间和消耗的 CPU 时间,这些信息对我们分析一些性能上存在问题的 SQL 有用处。比如对比 SQL 消耗的 CPU 和执行时间,就可以大致知道 SQL 语句执行中是否有长时间的等待事件:
官方参考手册
1.Database Administrator’s Guide
2.Database Reference