首页 > 数据库 >Oracle相关知识点以及命令整理

Oracle相关知识点以及命令整理

时间:2024-03-17 13:58:23浏览次数:29  
标签:知识点 name -- 数据库 用户 整理 Oracle 权限 select

文章目录

相关链接

Oracle官方文档

Oracle新特性

OraclePDB管理

体系架构

在这里插入图片描述

​ 从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的执行过程

  1. 运用HASH算法,得到一个HASH值,这个值可以通过VSSQLAREAHASH VALUE 查看
  2. 到shared pool中的 library cache 中查找是否有相同的HASH值,如果存在,则无需硬解析,进行软解析
  3. 如果shared pool不存在此HASH值,则进行语法检查,查看是否有语法错误
  4. 如果没有语法错误,就进行语义检查,检查该SQL引用的对象是否存在该用户是否具有访问该对象的权限
  5. 如果没有语义错误,对该SQL进行解析,生成解析树,执行计划
  6. 生成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权限。

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(数据库管理员角色)

  1. connect role:临时用户,特指不需要建表的用户,通常只赋予他们connect role。

    connect是使用oracle简单权限,这种权限只对其他用户的表有访问权限,包括select/insert/update和delete等。

    拥有connect role 的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym)、回话(session)和其他 数据的链(link)

  2. resource role:更可靠和正式的数据库用户可以授予resource role。

    resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。

  3. 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;
  • 查看哪些用户有sysdbasysoper系统权限(查询时需要相应权限)
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)。以下是一些与这些日志相关的常用操作:

归档日志操作:

  1. 启用归档模式:

    ALTER DATABASE ARCHIVELOG;
    
  2. 禁用归档模式:

    ALTER DATABASE NOARCHIVELOG;
    
  3. 手动切换日志:

    ALTER SYSTEM ARCHIVE LOG CURRENT;
    
  4. 手动归档日志文件:

    ALTER SYSTEM ARCHIVE LOG <log_sequence_number>;
    
  5. 列出所有归档日志文件:

    SELECT * FROM V$ARCHIVED_LOG;
    
  6. 删除过期的归档日志文件:

    DELETE EXPIRED ARCHIVELOG ALL;
    

重做日志操作:

  1. 添加新的重做日志组:

    ALTER DATABASE ADD LOGFILE GROUP <group_number> ('path_to_logfile') SIZE <size>;
    
  2. 切换到下一个重做日志组:

    ALTER SYSTEM SWITCH LOGFILE;
    
  3. 强制切换到下一个重做日志组:

    ALTER SYSTEM SWITCH LOGFILE FORCE;
    
  4. 强制归档当前重做日志组:

    ALTER SYSTEM ARCHIVE LOG CURRENT;
    
  5. 查看当前活动的重做日志组:

    SELECT * FROM V$LOG;
    
  6. 查看重做日志的内容:

    SELECT * FROM V$LOG_HISTORY WHERE <conditions>;
    

查询重做日志信息:

  1. 查看当前活动的重做日志组:

    SELECT * FROM V$LOG;
    
  2. 查看数据库的重做日志状态:

    SELECT * FROM V$LOGFILE;
    
  3. 查看数据库的重做日志组及其文件信息:

    SELECT GROUP#, THREAD#, MEMBER FROM V$LOGFILE;
    
  4. 查看重做日志的内容和顺序号:

    SELECT SEQUENCE#, FIRST_CHANGE#, NEXT_CHANGE# FROM V$LOG_HISTORY WHERE <conditions>;
    
  5. 查看重做日志切换的历史:

    SELECT * FROM V$LOG_HISTORY WHERE <conditions>;
    
  6. 查看某个时间段内的重做日志信息:

    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');
    
  7. 查看当前会话正在使用的重做日志信息:

    SELECT * FROM V$SESSION WHERE <conditions>;
    
  8. 查看归档日志文件的信息:

    SELECT * FROM V$ARCHIVED_LOG;
    

RMAN相关

Oracle RMAN(Recovery Manager)是一个用于数据库备份和恢复的工具,具有丰富的命令集。以下是一些常用的RMAN命令,用于备份、恢复、检查和管理Oracle数据库:

备份操作:

  1. 备份整个数据库:

    BACKUP DATABASE;
    
  2. 备份特定表空间

    BACKUP TABLESPACE <tablespace_name>;
    
  3. 备份特定数据文件

    BACKUP DATAFILE <file_number>;
    
  4. 备份指定时间点之前的数据:

    BACKUP DATABASE UNTIL TIME 'YYYY-MM-DD:HH24:MI:SS';
    

恢复操作:

  1. 恢复整个数据库:

    RECOVER DATABASE;
    
  2. 恢复特定表空间:

    RECOVER TABLESPACE <tablespace_name>;
    
  3. 应用指定日志序列号之前的归档日志:

    RECOVER DATABASE UNTIL SEQUENCE <sequence_number>;
    
    -- 查询恢复的归档日志号
    select * from v$log;
    -- 根据归档日志号恢复
    RUN {
      SET UNTIL SEQUENCE '07-AUG-23';
      RESTORE DATABASE;
      RECOVER DATABASE;
    }
    
  4. 打开数据库并重做日志应用:

    ALTER DATABASE OPEN RESETLOGS;
    
    ALTER DATABASE OPEN NORESETLOGS;
    

备份和恢复控制文件:

  1. 备份控制文件:

    BACKUP CURRENT CONTROLFILE;
    
  2. 恢复控制文件:

    RESTORE CONTROLFILE FROM 'backup_location';
    

其他操作:

  1. 列出数据库备份:

    LIST BACKUP;
    
  2. 列出数据库的日志序列号和时间信息:

    LIST ARCHIVELOG ALL;
    
  3. 删除过期备份:

    DELETE EXPIRED BACKUP;
    
  4. 删除过期归档日志:

    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

相关文章

  • suse 安装oracle 19c
    安装LINUXmount/dev/cdrom/mntdf-Th/mnt zypperar-f/mnt/Module-Basesystemsle15zypperar-f/mnt/Module-Legacysle15-Legacyzypperar-f/mnt/Module-Development-Toolssle15-Tools zypperin-ygccbcbinutilsglibcglibc-develinsserv-compatlibai......
  • c++中 int, long long, double 等数据类型的长度及范围整理
    原文链接:https://blog.csdn.net/mmk27_word/article/details/84378346byte:字节bit:位短整型short:所占内存大小:2byte=16bit;所能表示范围:-3276832767;(即-2^152^15-1)整型int:所占内存大小:4byte=32bit;所能表示范围:-21474836482147483647;(即-2^312^31-1)unsigned:所......
  • 删除oracle数据库教程
    如果只是删除数据库而无需删除数据库软件,可通过如下两种方式实现。注意:工作中删库需谨慎哦!方法一、DBCA删除数据库如下查询可看出当前存在数据库:[root@ocpstudy~]#su-oracleLastlogin:SatMar1618:08:21CST2024onpts/5[oracle@ocpstudy~]$sqlplus/as......
  • 删除 Oracle 软件和数据库教程
    1.使用deinstall工具删除安装的Oracle软件的可执行文件和配置文件[oracle@ocpstudyadmin]$cd$ORACLE_HOME[oracle@ocpstudydb_1]$cddeinstall[oracle@ocpstudydeinstall]$lsbootstrap_files.lstbootstrap.pldeinstalldeinstall.pldeinstall.xmlj......
  • 西门子 S7-200 SMART 系列二: 最新西门子规格型号及订货号整理
    S7-200SMART订货号大全最新发表:西门子S7-200SMART系列二:最新西门子规格型号及订货号整理-工业控制系统百科(ics-pedia.com)一S7-200SMART标准型CPU订货号CPUSR20标准型CPU模块,继电器输出,220VAC或110VDC供电,12输入/8输出,集成PN端口6ES7288......
  • FPGA的VGA显示驱动部分知识点
    vga显示这边的的的知识点不难,在我写代码的时候却没能显示成功,现在重新设计一遍设计思路。根据下面的这个时序图,可以用计数器的方式来设计,在不同时间段选择显示情况。目前我电脑的副屏是一个1440*900的显示器,在网上找到了他的VGA时序图。根据这个与时序表对应。完成项目代码,最......
  • Java基础面试题整理2024/3/13
    1、可以使用switch的数据类型Java5以前,switch(arg)表达式中,arg只能是byte、short、char、int。Java5之后引入了枚举类型,也可以是枚举类型。Java7开始引入了字符串类型。2、Java中的goto有什么作用goto是Java中的保留字,在目前版本的Java中没有使用。3、this与super的区......
  • 模板整理
    整理遇到的几个比较难记的算法的模板。KMP算法KMP算法是字符串匹配算法,通常是在长字符串中对短字符串(模式串)进行匹配。使用next数组对模式串的前缀表进行记录。前缀表:当匹配失败时,将根据这个前缀表决定指针的位置。前缀表的目的是找到模式串中相等的前缀和后缀。例如aabaaf,......
  • Tarjan整理
    求强连通分量个数#include<iostream>#include<cstdio>#include<stack>usingnamespacestd;structsss{ intt,ne;}e[1000005];inth[1000005],cnt;voidadd(intu,intv){ e[++cnt].ne=h[u]; e[cnt].t=v; h[u]=cnt;}intdfn[1000005],......
  • mysql学习整理所有问题
    mysql中的者则表达式(也算做是模糊查询)使用//.来匹配有.的字符 数字或者字母后边加上?表示数字或者字母可选还是不可选  拼接字符串concat()  文本处理函数  同时指定两个列进行全文搜索(前提是这两个列必须增加索引)和against(“”inboolenmode)进行连用......