文章目录
相关链接
体系架构
从Oracle数据库架构的本身,充分体现了数据库这种数据库管理机制中,引用程序与数据的独立性,同时也体现了在软件设计中,结构化,模块化,分层分工,重用,效率等基本问题的解决办法。
实例 Instance
- PGA(Process Global Area):
- 用于保存服务器进程的数据和控制信息。
- 当用户进程要连接到Oracle数据库服务器时,会在实例中分配相应的服务器进程。
- SGA(System Global Area):
- 主要为了减少对磁盘的访问,提高计算机系统性能。
- 系统全局区,分为一下三个部分;
- Shared Pool(共享池):
- 大小由 SHARED_POOL_SIZE 决定
- 库缓存(库高速缓存):存储并共享经过分析的最近执行的SQL和PL/SQL程序代表。通过内存中缓存SQL,能有效降低执行一组应用语句的服务开销
- 字典缓存(数据字典高速缓存):在系统运行的过程中,不断查询与更新数据库数据字典信息。实例的字典缓存存储了最多使用的数据字典的信息,提高了系统内部操作性能。
- Database Buffer Cache(数据块告诉缓存区):
- DB_BLOCK_BUFFERS:buffer的数目
- DB_BLOCK_SIZE:每个buffer的大小
- 是最大的服务器内存区,存储应用事务最近查询的数据库信息,读出来的数据、真实的数据缓存、索引
- Redo Log Buffer(日志缓存区):
- LOG_BUFFER:每个buffer的大小
- 加速日志写的进程,为了写日志的缓存
- 后台进程
- SMON
- PMON
- DBWR
- 数据库写进程
- DBWR有搁置空闲(time out)
- LGWR
- CKPT
- 周期性的数据库写进程执行一次检查点,将内存中全部修改数据写回到数据库的数据文件中
- ARCH
- RECO
存储结构
物理存储结构:实际数据的存储单元
-
参数文件
-
控制文件
- 记录内容:数据文件信息,日志文件信息,数据库创建时间,SCN;控制文件数量和存储位置:一遍需要三个,分布在不通的硬盘上
- 三个控制文件不是冗余的,任意一个坏了都要修复
-
数据文件
-
日志文件
- 存储数据库改变的事务数据,DSL
- 系统冲突或其它系统故障后,日志文件中的信息可用于恢复事务,是保护数据库的关键
- 每个Oracle数据库至少有两个日志文件
日志文件组和成员
逻辑结构和物理结构:
- 段类型
- 逻辑存储结构 - 数据块
- 最小的磁盘存取单元,当操作一个数据库时,Oracle使用数据块存储和提取磁盘上的数据
- 由一个或多个O/S块组成
- 在数据库创建时设定大小,块大小必须等于O/S块大小或它的倍数
- 索引(Index)
- B-Tree索引
- 回滚段(RollBack)
- 临时段(TEMP)
- 永久表空间上的临时段
- 事务需要排序时创建
- 过程执行完成后由SMON回收
- 临时表空间上的临时段
- 用作排序
- 每个实例每个表空间只有一个段
- 实例重启后第一次发生内存排序空间不够时创建
- 根据Sort Extent Pool的信息,多个事务可以复用临时段
- 数据库关闭时释放
- 永久表空间上的临时段
Oracle安装组件
常用组件
- Oracle rdbms
- TCP/IP Protocal Adapter
- SQL*NET
- PL/SQL
- Distrbution Server
内存设置
- /etc/system里的参数设置
- 设置最大的Share Memory为物理内存的3/4 ~ 4/5 其他想基本按照缺省配置
- 设置swap区为2-4倍的物理内存
创建数据库
- 定义唯一的实例、数据库名和字符集
- 设置操作系统环境变量
- 准备初始化参数文件
- 启动实例
- 创建数据库
- 运行脚本文件创建数据字典以及一些必要步骤
Cache Fusion体系结构
SQL的执行过程
- 运用HASH算法,得到一个HASH值,这个值可以通过VSSQLAREAHASH VALUE 查看
- 到shared pool中的 library cache 中查找是否有相同的HASH值,如果存在,则无需硬解析,进行软解析
- 如果shared pool不存在此HASH值,则进行语法检查,查看是否有语法错误
- 如果没有语法错误,就进行语义检查,检查该SQL引用的对象是否存在该用户是否具有访问该对象的权限
- 如果没有语义错误,对该SQL进行解析,生成解析树,执行计划
- 生成ORACLE能运行的二进制代码,运行该代码并且返回结果给用户
共享SQL语句
为了不重复解析相同的SQL语句,在第一次解析之后,Oracle将SQL语句存放在内存中。这块位于系统全局区域的SGA(System Global Area)的共享池(Shared Buffer Pool)中的内存可以被所有的数据库用户共享。因此,当你执行一个SQL语句时,如果它和之前执行过的语句完全相同,Oracle就能很快的获得已经被解析的语句以及最好的执行路径。Oralce的这个功能大大地提高了SQL执行的性能并节省了内存的使用。
应该简索引列的特点
-
在经常需要搜索的列上,可以加快搜索的速度。
-
在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构在经常用
-
在连接的列上,这些列主要是一些外键,可以加快连接的速度
-
在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。
-
在经常需要排序的列上创建索引,因为索引已经排序这样查询可以利用索引的排序,加快排序查询时间。
-
在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度
-
经常由空值,经常修改,不太常用的字段不建议建索引
CDB与PDB
CDB与PDB是Oracle 12C引入的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。
CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。
在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。
而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。
和SQL Server相对照的话,CDB与PDB是不是感觉和SQL SERVER的单实例多数据库架构是一回事。像PDB$SEED可以看成是master、msdb等系统数据库,PDBS可以看成用户创建的数据库。而可插拔的概念与SQL SERVER中的用户数据库的分离、附加其实就是那么一回事。
CDB组件
- ROOT组件
- ROOT又叫CDB$ROOT, 存储着ORACLE提供的元数据和Common User,元数据的一个例子是ORACLE提供的PL/SQL包的源代码,Common User 是指在每个容器中都存在的用户。
- SEED组件
- Seed又叫PDB$SEED,这个是你创建PDBS数据库的模板,你不能在Seed中添加或修改一个对象。一个CDB中有且只能有一个Seed. 这个感念,个人感觉非常类似SQL SERVER中的model数据库
- PDBS
- CDB中可以有一个或多个PDBS,PDBS向后兼容,可以像以前在数据库中那样操作PDBS,这里指大多数常规操作。
这些组件中的每一个都可以被称为一个容器。因此,ROOT(根)是一个容器,Seed(种子)是一个容器,每个PDB是一个容器。每个容器在CDB中都有一个独一无二的的ID和名称。
Oracle角色说明
-
connect(连接角色)
- 这种角色下只可以登录Oracle,不可用创建实体,也不可用创建数据库结构,即只能对其他人创建的表中的数据进行操作。
-
resource(资源角色)
- 该角色可以创建实体,但是不可以创建数据库结构。 可以创建表、序列(sequence)、运算符(operator)、过程(procedure)、触发器(trigger)、索引(index)、类型(type)和簇(cluster)。
-
dba(数据库管理员权限)
- 该角色拥有系统最高权限,只有DBA才可以创建数据库结构。包括无限制的空间限额和给其他用户授予各种权限的能力,system由dba用户拥有。
对于普通用户来说,授予connect和resource权限即可,只对dba授予connect、resource和dba权限。
- 该角色拥有系统最高权限,只有DBA才可以创建数据库结构。包括无限制的空间限额和给其他用户授予各种权限的能力,system由dba用户拥有。
Oracle命令
系统相关
- 查询oracle版本
select *
from V$VERSION;
- 查询oracle的SID
select instance_name from v$instance;
- 查询db_name
select name from v$database;
- 重启数据库
shutdown immediate;
startup;
- 当前连接数
select count(*) from v$process;
- 数据库允许的最大连接数
select value from v$parameter where name = 'processes';
- 修改最大连接数:
alter system set processes = 2000 scope = spfile;
- 数据库服务器配置
tnsnames
,方便后期运维操作
# 添加前最好先备份下,vim tnsnames.ora编辑文件,仔细检查,不要配置错误
cd $ORACLE_HOME/network/admin/
- 格式如下
TESTRAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = scan域名)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = TESTRAC )
)
数据库告警阈值设定查看
select warning_value, critical_value
from dba_thresholds
where metrics_name='Tablespace Space Usage' and object_name is NULL;
数据库当前告警和可用的处理方法
select reason,SUGGESTED_ACTION
from dba_outstanding_alerts
where object_name='CDATA';
查看系统的编码格式
select userenv('language') from dual;
PDB相关
- 查看CDB信息
select name, cdb, open_mode, con_id
from v$database;
- 查看PDB实例
select name, con_id, open_mode
from V$PDBS;
- 查看已有pdb的tempfile文件
select name
from V$TEMPFILE;
- 查看已有的PDB的datafile
select name
from V$DATAFILE;
-
创建一个新的PDB
-
密码大小写是否敏感可以在CDB下查看该参数: show parameter sensitive
-
file_name_convert
参数参数格式:/opt/oracle/oradata/${SID}/pdbseed, /opt/oracle/oradata/${SID}/${PDB_Name}
create pluggable database dev admin user dev identified by 123 file_name_convert =('/opt/oracle/oradata/ORCLCDB/pdbseed','/opt/oracle/oradata/orcl_root_dev');
- 设置pdb自启动
${pdb} save state
是对于某个pdb而言。即你想让哪个pdb随着cdb启动,就设置哪一个。
alter pluggable database all save state;
-- 查询自启动设置
select con_name, instance_name, state from dba_pdb_saved_states;
-- 取消自启动
alter pluggable database all discard state;
- 启动或关闭一个创建好的PDB
alter pluggable database dev open;
alter pluggable database pdb1 close;
-- 启动所有pdb
alter pluggable database all open;
- 切换到指定PDB
alter session set container=pdb1;
- 查看配置文件default
-- FAILED_LOGIN_ATTEMPTS --用户失败登录尝试次数
-- PASSWORD_LIFE_TIME--用户密码生命周期(按规定要求是配置3个月90天)
-- PASSWORD_VERIFY_FUNCTION--密码校验函数
-- PASSWORD_GRACE_TIME--密码失效宽容期限(30天的宽容期限)
select * from dba_profiles;
- 删除PDB
-- 关闭所有节点下的指定PDB,PDB处于关闭状态才能删除
show pdbs;
-- 首先在所有节点上停止实例(PDB)
alter pluggable database testrac close immediate;
-- 单节点执行删除命令
drop pluggable database testrac including datafiles;
- 查看profile
-- 查看profile
select profile,resource_name,limit from dba_profiles;
select * from dba_profiles where profile='PASSWORD_UNLIMIT_PROFILE';
- 创建profile
-- 创建profile
CREATE PROFILE "PASSWORD_UNLIMIT_PROFILE" LIMIT
COMPOSITE_LIMIT UNLIMITED
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL UNLIMITED
LOGICAL_READS_PER_SESSION UNLIMITED
LOGICAL_READS_PER_CALL UNLIMITED
IDLE_TIME UNLIMITED
CONNECT_TIME UNLIMITED
PRIVATE_SGA UNLIMITED
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LIFE_TIME 180
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_VERIFY_FUNCTION NULL
PASSWORD_LOCK_TIME 1
PASSWORD_GRACE_TIME 7
INACTIVE_ACCOUNT_TIME UNLIMITED;
- 修改profile密码过期策略
-- 修改profile密码过期时间
ALTER profile PASSWORD_UNLIMIT_PROFILE limit PASSWORD_LIFE_TIME UNLIMITED;
表空间相关
- 查看OMF配置的
db_create_file_dest
show parameter db_create_file_dest;
- 查看表空间
select name from v$tablespace;
-- 查看表空间大小
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size
FROM dba_tablespaces t, dba_data_files d
WHERE t.tablespace_name = d.tablespace_name
GROUP BY t.tablespace_name;
- 查看表空间下的表
select TABLE_NAME,TABLESPACE_NAME from dba_tables where TABLESPACE_NAME='CDATA';
- 查看表空间使用情况
select sum(bytes) / (1024 * 1024) as free_space, tablespace_name
from dba_free_space
group by tablespace_name
-- 查看表空间使用情况(注:若表空间未使用或者占满,sys.sm$ts_used、sys.sm$ts_free可能为空)
SELECT a.tablespace_name,a.bytes total,b.bytes used,c.bytes free,(b.bytes * 100) / a.bytes "% USED ",(c.bytes * 100) / a.bytes "% FREE "
FROM sys.sm$ts_avail a, sys.sm$ts_used b,sys.sm$ts_free c
WHERE a.tablespace_name = b.tablespace_name
AND a.tablespace_name = c.tablespace_name;
- 查看单个表空间使用情况
select df.tablespace_name tablespace, fs.bytes free,
df.bytes , fs.bytes *100/ df.bytes pct_free
from dba_data_files df ,dba_free_space fs
where df.tablespace_name = fs.tablespace_name
and df.tablespace_name = 'CDATA';
- 查看表空间是否可扩展
SELECT T.TABLESPACE_NAME, D.FILE_NAME, D.AUTOEXTENSIBLE, D.BYTES, D.MAXBYTES, D.STATUS
FROM DBA_TABLESPACES T,DBA_DATA_FILES D
WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
ORDER BY TABLESPACE_NAME, FILE_NAME;
- 设置表空间大小和是否可扩展
//设置表空间大小
alter database datafile '/opt/oracle/oradata/orclpdb3/ORCL/DAD5E8983D36442CE053BF38A8C0BB73/datafile/o1_mf_inventor_k4ykocb9_.dbf' resize 64M;
//设置表空间是否可扩展s
alter database datafile '/opt/oracle/oradata/orclpdb3/ORCL/DAD5E8983D36442CE053BF38A8C0BB73/datafile/o1_mf_inventor_k4ykocb9_.dbf' autoextend off;
- 创建表空间
-- 最基础的创建表空间
create tablespace 123;
-- 创建表空间,指定数据文件位置,指定文件大小,扩宽性,等
-- 创建表空间时需要保证指定的datafile目录是存在的
-- 参数说明:
-- datafile '${data file path}':数据文件路径
-- size ${size}:数据文件大小
-- autoextend on next ${size}:下次自动扩展大小
-- maxsize unlimited:最大尺寸无限制
create tablespace 表空间 datafile '/opt/oracle/oradata/orcl/数据文件.dbf' size 200m autoextend on next 10m maxsize unlimited;
- 创建临时表空间
-- 创建临时表空间,指定数据文件位置,指定文件大小,扩宽性,等
-- 创建临时表空间时需要保证指定的datafile目录是存在的
-- 参数说明:
-- tempfile '${temp data file path}':数据文件路径
-- size ${size}:数据文件大小
-- autoextend on next ${size}:下次自动扩展大小
-- maxsize unlimited:最大尺寸无限制
create temporary tablespace 表空间 tempfile '/opt/oracle/oradata/orcl/数据文件.dbf' size 200m autoextend on next 10m maxsize unlimited;
- 设置表空间自动扩展
alter database datafile '/opt/oracle/oradata/oradata/orcl/数据文件.dbf' autoextend on;
- 查看文件位置(表空间等一些文件的位置)
select name from v$datafile;
- 查看默认表空间
select property_name ,property_value from database_properties where property_name like 'DEFAULT_%TABLE%';
- 设置默认表空间
alter database default tablespace 123;
-- 默认临时表空间
alter database default temporary tablespace 123;
- 删除表空间
drop tablespace 123;
-- 如果表空间有数据,使用以下命令删除
drop tablespace 123 including contents and datafiles;
表空间权限
建用户的时候通常都可以选择一个default tablespace,但是在没有授权的情况下该用户也无法往该表空间写数据,需要进行授权。
授权有全局授权和通过quota限制两种情况(quota配额可以防止某个用户过多使用某个表空间中的空间)
- 授予用户全局表空间权限 - 通过命令的方式
grant unlimited tablespace to username;
- 授予用户全局表空间权限 - 通过角色的方式
-- 查看resource角色底下带的权限,没有unlimited tablespace权限
SELECT * from Dba_Sys_Privs s WHERE s.grantee='RESOURCE';
-- 把resource角色授予用户
grant resource to username;
--查看用户拥有的权限,可以发现自己带上了unlimited tablespace(另外这个时候可以去看dba_ts_quotas,这样授权的用户没有体现出来)
SELECT * from Dba_Sys_Privs s WHERE s.grantee='USERNAME' ;
- 授予某个用户完全访问某个表空间权限
-- 授权
alter user ${username} quota unlimited on ${tablespace};
-- 在授予完权限后查看dba_ts_quotas表
-- max_bytes = -1,代表不受限制
SELECT * from Dba_Ts_Quotas z WHERE z.username='USERNAME';
- 授予某个用户有限的访问某个表空间权限
-- 授权
ALTER USER username QUOTA 1M ON rcat;
-- 在授予完权限后查看dba_ts_quotas表
-- max_bytes = 1M
SELECT * from Dba_Ts_Quotas z WHERE z.username='USERNAME';
- 删除用户表空间权限
-- 全局
revoke unlimited tablespace from username;
-- 个别表空间
ALTER USER username QUOTA 0 ON rcat
角色相关
Oracle三种标准角色,connect role(连接角色)、resource role(资源角色)、dba role(数据库管理员角色)
-
connect role:临时用户,特指不需要建表的用户,通常只赋予他们connect role。
connect是使用oracle简单权限,这种权限只对其他用户的表有访问权限,包括select/insert/update和delete等。
拥有connect role 的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym)、回话(session)和其他 数据的链(link)
-
resource role:更可靠和正式的数据库用户可以授予resource role。
resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。
-
dba role:dba role拥有所有的系统权限
包括无限制的空间限额和给其他用户授予各种权限的能力。system由dba用户拥有
- 查看所有角色
select * from dba_roles;
- 查看当前用户被激活的全部角色
select * from session_roles;
- 查看当前用户被授予的角色和信息
select * from user_role_privs;
- 查看某个用户所拥有的角色
select * from dba_role_privs where grantee = 'username';
- 查看某个角色所拥有的权限
select * from dba_sys_privs where grantee = 'CONNECT';
- 创建角色
创建的角色可以由表或系统权限或者两者的组合构成
-- 创建角色
create role myRole;
-- 授权角色
-- 如使myRole获得了在mytable中使用select进行查询的权限
grant select on mytable to myRole;
-- 再比如为角色赋予创建会话的权限
grant create session to myRole;
-- 删除角色
drop role myRole;
- 授予用户角色
-- 切换到对应的PDB下
alter session set container=PDB1;
show pdbs;
-- 授予dba、resource、connect角色
grant dba,resource,connect to pdb1;
-- 收回某个用户的某个角色
revoke dba,resource,connect from pdb1;
-- 查看用户角色
select * from dba_role_privs where grantee = 'PDB1' and granted_role in ('DBA','RESOURCE','CONNECT')
- 授予角色权限
-- create seesion 用户登陆会话权限
-- create table 用户建表权限
-- create sequence 用户创建序列权限
-- create view 用户创建视图权限
-- create procedure 用户创建存储过程权限
-- create tablespace 用户创建表空间权限
grant create session,create table to role_name;
- 撤销角色权限
revoke create table from role_name;
用户相关
- 查看所有用户信息
select * from all_users;
- 查看当前用户的信息
select * from user_users;
- 创建用户,对于普通用户名,用户创建的普通用户名必须以C##(或c##)开头。
create user c##svc_res identified by 123;
-- 创建用户并指定表空间
-- default tablespace ${tablespace}:默认表空间
-- temporary tablespace ${talbespace}:临时表空间
create user tssh identified by "XXXXX" default tablespace TSSH_15_DATA_MIN temporary tablespace TEMP;
- 更改用户密码
-- 如果密码带有字符需要加上双引号
alter user pdb identified by 321
- 查看当前用户
show user;
- 删除用户
-- cascade操作需要谨慎,cascade代表代表着联级删除用户名下所有的表和视图
drop user c##svc_res cascade;
- 创建一个模式
Oracle是不支持创建自定义模式的,想要创建模式的话只能新建一个用户,每个用户会有一个默认的和用户名相同的模式
CREATE SCHEMA "svc_bitbucket" AUTHORIZATION SYSTEM;
- 查看当前有哪些用户正在使用数据
SELECT osuser, a.username,cpu_time/executions/1000000||'s', sql_fulltext,machine
from v$session a, v$sqlarea b
where a.sql_address =b.address order by cpu_time/executions desc;
- 锁定与解锁用户
alter user itcast account lock;
alter user itcast account unlock;
- 开启密码校验
-- 开启PDB下的用户密码校验
@?/rdbms/admin/utlpwdmg.sql
- 设置用户空间
-- 设置用户的空间配额
-- quota 容量的意思
-- unlimited 无限制
alter user itcast quota unlimited on pdb1;
- 设置用户失效
- 旨在要求使用方强制修改密码,提高密码安全性和复杂度,避免由我方运维人员知晓
alter user testrac password expire;
select username,account_status from dba_users where oracle_maintained='N';
- 查看用户所属的profile
SELECT username,PROFILE FROM dba_users;
- 查看指定概要文件(default)的密码有效期设置
SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
- 修改密码有效期
-- 影响所有用户
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
- 修改用户所属的profile
-- 修改用户所属profile
-- 修改单个用户的密码有效期可以通过新建profile,然后修改用户所属的profile实现
ALTER user SVC_CONFLUENCE profile PASSWORD_UNLIMIT_PROFILE;
权限相关
- 基本权限查询
--当前用户所拥有的全部权限
select * from session_privs;
--当前用户的系统权限
select * from user_sys_privs;
--当前用户的对象权限
select * from user_tab_privs;
--查询某个用户所拥有的系统权限
select * from dba_sys_privs where grantee='DBA';
--查看角色(只能查看登陆用户拥有的角色)所包含的权限
select * from role_sys_privs;
- 查看哪些用户有
sysdba
或sysoper
系统权限(查询时需要相应权限)
select * from v$pwfile_users;
- 查询所有的用户级别权限
select *
from system_privilege_map
order by name;
- 授予用户权限
-- create seesion 用户登陆会话权限
-- create table 用户建表权限
-- create sequence 用户创建序列权限
-- create view 用户创建视图权限
-- create procedure 用户创建存储过程权限
-- create tablespace 用户创建表空间权限
-- unlimited teblespace 用户无限表空间使用权限
grant create session,create table to user_name;
- 查看Oracle提供的系统权限
select name from sys.system_privilege_map
- 查看一个用户的所有系统权限(包含角色的系统权限)
select privilege from dba_sys_privs where grantee='SCOTT'
union
select privilege from dba_sys_privs where grantee in (
select granted_role from dba_role_privs where grantee = 'SCOTT'
);
- 查看当前用户可以访问的所有数据字典的视图
select * from dict where comments like '%grant%';
- 查看当前数据库全称
select * from global_name;
日志相关
在Oracle数据库中,与日志(Log)相关的操作主要涉及到归档日志(Archive Logs)和重做日志(Redo Logs)。以下是一些与这些日志相关的常用操作:
归档日志操作:
-
启用归档模式:
ALTER DATABASE ARCHIVELOG;
-
禁用归档模式:
ALTER DATABASE NOARCHIVELOG;
-
手动切换日志:
ALTER SYSTEM ARCHIVE LOG CURRENT;
-
手动归档日志文件:
ALTER SYSTEM ARCHIVE LOG <log_sequence_number>;
-
列出所有归档日志文件:
SELECT * FROM V$ARCHIVED_LOG;
-
删除过期的归档日志文件:
DELETE EXPIRED ARCHIVELOG ALL;
重做日志操作:
-
添加新的重做日志组:
ALTER DATABASE ADD LOGFILE GROUP <group_number> ('path_to_logfile') SIZE <size>;
-
切换到下一个重做日志组:
ALTER SYSTEM SWITCH LOGFILE;
-
强制切换到下一个重做日志组:
ALTER SYSTEM SWITCH LOGFILE FORCE;
-
强制归档当前重做日志组:
ALTER SYSTEM ARCHIVE LOG CURRENT;
-
查看当前活动的重做日志组:
SELECT * FROM V$LOG;
-
查看重做日志的内容:
SELECT * FROM V$LOG_HISTORY WHERE <conditions>;
查询重做日志信息:
-
查看当前活动的重做日志组:
SELECT * FROM V$LOG;
-
查看数据库的重做日志状态:
SELECT * FROM V$LOGFILE;
-
查看数据库的重做日志组及其文件信息:
SELECT GROUP#, THREAD#, MEMBER FROM V$LOGFILE;
-
查看重做日志的内容和顺序号:
SELECT SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE# FROM V$LOG_HISTORY WHERE <conditions>;
-
查看重做日志切换的历史:
SELECT * FROM V$LOG_HISTORY WHERE <conditions>;
-
查看某个时间段内的重做日志信息:
SELECT * FROM V$ARCHIVED_LOG WHERE FIRST_TIME BETWEEN TO_DATE('start_date', 'yyyy-mm-dd hh24:mi:ss') AND TO_DATE('end_date', 'yyyy-mm-dd hh24:mi:ss');
-
查看当前会话正在使用的重做日志信息:
SELECT * FROM V$SESSION WHERE <conditions>;
-
查看归档日志文件的信息:
SELECT * FROM V$ARCHIVED_LOG;
RMAN相关
Oracle RMAN(Recovery Manager)是一个用于数据库备份和恢复的工具,具有丰富的命令集。以下是一些常用的RMAN命令,用于备份、恢复、检查和管理Oracle数据库:
备份操作:
-
备份整个数据库:
BACKUP DATABASE;
-
备份特定表空间
BACKUP TABLESPACE <tablespace_name>;
-
备份特定数据文件
BACKUP DATAFILE <file_number>;
-
备份指定时间点之前的数据:
BACKUP DATABASE UNTIL TIME 'YYYY-MM-DD:HH24:MI:SS';
恢复操作:
-
恢复整个数据库:
RECOVER DATABASE;
-
恢复特定表空间:
RECOVER TABLESPACE <tablespace_name>;
-
应用指定日志序列号之前的归档日志:
RECOVER DATABASE UNTIL SEQUENCE <sequence_number>; -- 查询恢复的归档日志号 select * from v$log; -- 根据归档日志号恢复 RUN { SET UNTIL SEQUENCE '07-AUG-23'; RESTORE DATABASE; RECOVER DATABASE; }
-
打开数据库并重做日志应用:
ALTER DATABASE OPEN RESETLOGS; ALTER DATABASE OPEN NORESETLOGS;
备份和恢复控制文件:
-
备份控制文件:
BACKUP CURRENT CONTROLFILE;
-
恢复控制文件:
RESTORE CONTROLFILE FROM 'backup_location';
其他操作:
-
列出数据库备份:
LIST BACKUP;
-
列出数据库的日志序列号和时间信息:
LIST ARCHIVELOG ALL;
-
删除过期备份:
DELETE EXPIRED BACKUP;
-
删除过期归档日志:
DELETE EXPIRED ARCHIVELOG ALL;
其他设置
- 查看表字段
#desc ${table_name}
- 命令行相关设置
-- 显示一行多少字符
show line
-- 设置一行多少字符
set linesize 1000
-- 设置是否显示报表标题
set hea on
-- 显示每页行数
show pages
-- 设置每页显示行数
set pages 50
-- 设置输出结果是否滚动
set pause on/off
-- 设置滚动时自定义的提示
set pause 'Press <Enter> to continue'
标签:知识点,name,--,数据库,用户,整理,Oracle,权限,select
From: https://blog.csdn.net/weixin_43795587/article/details/136752641