当前位置: 首页 > news >正文

Oracle笔记

一、 如何解决 sqlplus 无法使用退格键和方向键

.bashrc 中添加如下内容,解决 退格键
stty erase ^h

安装 rlwap 后,执行如下命令可解决 方向键
rlwap sqlplus

二、 都有哪些备份数据到工具

三、 谈谈 你对 oracle 中实例和数据库的理解

数据库是一组文件(主要包括控制文件,数据文件,联机重做日志文件等),位于磁盘,用于存储数据。
数据库实例是一组用于管理数据库文件的内存结构。是用于操作数据库的。
实例有个生命周期的说法,从startup开始,到shutdown immediate结束。

他们之间的关系
首先,数据库和实例是一对一的关系(部署了Oracle集群(RAC)的话会有一个数据库对应多个实例的情况,这里不考虑Oracle集群的情况啦)。

3.1 oracle_sid 是什么,有什么作用?
oracle_sid是数据库在操作系统的一个唯一标识, 当我们启动一个Oracle实例的时候,通常需要连接到一个 oracle_sid
他有个系统环境变量,ORACLE_SID 需要设置,否则无法连接到一个数据库中。

四、 假如一个表空间使用率快满了。如何处理?

假如回答,迁移

问: 说一下迁移到步骤
1 df -h 确认迁移目标的空间,文件系统的容量够用。
2 sqlplus 登录,确认要迁移到表空间的位置

SQL> select FILE_NAME,FILE_ID,TABLESPACE_NAME from dba_data_files where tablespace_name ='<表空间名称>';

假设返回信息:
/u01/app/oracle/oradata/***/<表空间名称>.pdf
3 将表空间状态设置为 offline

SQL> alter tablespace <表空间名称> offline;

4 复制所有的 dbf 文件到新路径
cp -a /u01/app/oracle/oradata//<表空间名称>.pdf /oracle/oradata//<表空间名称>.pdf

5 在数据库中修改表空间的指向地址

SQL>alter database rename file '/u01/app/oracle/oradata/***/<表空间名称>.pdf' to '/oracle/oradata/***/<表空间名称>.pdf';Database altered.

6 在数据库中将表空间状态设为 online

SQL> alter tablespace <表空间名称> online;Tablespace altered. 

7 确认变更结果

SQL> select FILE_NAME,FILE_ID,TABLESPACE_NAME from dba_data_files where tablespace_name ='<表空间名称>';

五、 全库导出后, 在一台新服务器上导入数据,说说都有哪些步骤?有哪些事项需要注意的?

数据库版本
存放数据的家目录要一致,权限要正确
创建一致的用户

六、 正常重启 Oracle 服务

-- 查看监听状态
lsnrctl status
-- 停监听
lsnrctl stop
sqlplus / as sysdba
-- 停止oracle
SQL>shutdown immediate;
-- 启服务
SQL>startup;
SQL>exit
-- 启监听
lsnrctl start

七、 常用命令

-- 删除表空间
drop tablespace ling_mf3;-- 查询所有的表空间
select tablespace_name from dba_tablespaces;-- 查看当前的用户和表空间
select username,default_tablespace from user_users;-- 查看当前用户的角色
select * from user_role_privs;
-- 查询实例名/SID/服务名
select instance_name from v$instance;-- 查看Oracle版本
select * from v$version;-- 查看数据库允许的最大连接数
select value from v$parameter where name = 'processes';-- 查看当前连接数
select count(*) from v$process;-- 查看数据库当前会话的连接数
select count(*) from v$session;-- 查看数据库当前的并发连接数
select count(*) from v$session where status = 'ACTIVE';-- 创建用户、命名空间、授权
create user <username> identified by <password>;
-- 修改密码
alter user <username> identified by <password>;
-- 创建命名空间,注意这里的数据存储文件的位置是在容器的位置,与挂载的数据卷的位置无关
create tablespace <tablespacename> datafile '/u01/app/oracle/oradata/XE/xxx.dbf' size 1000M;
-- 将命名空间授权给用户
alter user <username> default tablespace <tablespacename>;
-- 给用户权限
-- 将最高权限授权给用户
grant create session,create table,create view,create sequence,unlimited tablespace to <username>;
grant dba to <username>;

8 创建用户 AA,并把用户 BB 的所有表授权给用户 AA 为 select 权限

创建用户

create user  AA identified by 密码;

执行存储过程,授权每个表给新用户

SET SERVEROUTPUT ON;  -- 确保您启用了 DBMS_OUTPUT,以便能够看到存储过程的输出。-- 存储过程
BEGINFOR rec IN (SELECT table_nameFROM all_tablesWHERE owner = 'BB'  -- 确保使用大写字母) LOOPBEGIN-- 动态 SQL 统计表的行数EXECUTE IMMEDIATE 'grant select on BB.' || rec.table_name || ' TO AA';-- 输出授权语句DBMS_OUTPUT.PUT_LINE('grant select on BB.' || rec.table_name || ' TO AA');EXCEPTIONWHEN OTHERS THEN-- 捕获异常并输出表名DBMS_OUTPUT.PUT_LINE('Error processing table: ' || rec.table_name || ' - ' || SQLERRM);END;END LOOP;
END;

9 撤销权限

撤销用户 AA 对用户 BB 的表 users 的 select 权限。

  revoke select on BB.users from AA;

只能撤销授权过的权限语句。没有执行过的授权语句无法撤销。
例如没有执行过 GRANT SELECT ANY TABLE TO AA 就没法执行 REVOKE SELECT ANY TABLE FROM AA;

10 验证权限

在 Oracle 数据库中,您可以通过查询系统视图来查看某个用户的权限。以下是一些常用的视图和查询示例,您可以根据需要使用它们来检查用户的权限。

  1. 查看用户的系统权限
    系统权限是指用户在数据库中可以执行的操作。您可以使用 DBA_SYS_PRIVS 视图来查看某个用户的系统权限。
SELECT * 
FROM DBA_SYS_PRIVS 
WHERE GRANTEE = 'AA';
  1. 查看用户的对象权限
    对象权限是指用户对特定对象(如表、视图等)的权限。您可以使用 DBA_TAB_PRIVS 视图来查看某个用户的对象权限。
SELECT * 
FROM DBA_TAB_PRIVS 
WHERE GRANTEE = 'AA';
SELECT * 
FROM USER_TAB_PRIVS 
WHERE GRANTEE = 'AA';
  1. 查看角色权限
    如果用户拥有角色,您可以使用 DBA_ROLE_PRIVS 视图来查看用户所拥有的角色。
SELECT * 
FROM DBA_ROLE_PRIVS 
WHERE GRANTEE = 'AA';
  1. 查看用户的角色和权限的组合
    如果您想要查看用户的所有权限(包括系统权限和对象权限),可以结合以上查询的结果。

  2. 注意事项
    在执行这些查询之前,确保您有足够的权限(例如,您可能需要 DBA 权限)。
    将 AA 替换为您要查询的实际用户名,并确保用户名是大写的,因为 Oracle 对用户名的默认处理是大写。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 二叉树详解(1)
  • 【hexo博客问题】
  • 跨境电商测评网络:美国住宅IP的获取与使用
  • Golang 与 Java:编程语言比较及如何选择
  • 2024.8.15(python管理mysql、Mycat实现读写分离)
  • 【SpringCloud】RabbitMQ——五种方式实现发送和接收消息
  • Java后端面试题(redis相关2)(day8)
  • Linux---系统安全
  • 【博主推荐】HTML5新闻,博客,官网网站源码文章瀑布流+详情页面
  • Kotlin IntelliJ IDEA 环境搭建
  • Unity | AmplifyShaderEditor插件基础(第二集:模版说明)
  • VSCode 都有哪些值得推荐的插件
  • RxJava在Android中的应用
  • dataX从orcal数据库抽取数据插入gbase 8a数据库 与 OceanBase数据库
  • MySQL-MVCC举例说明
  • python3.6+scrapy+mysql 爬虫实战
  • codis proxy处理流程
  • css选择器
  • dva中组件的懒加载
  • TypeScript迭代器
  • vue-loader 源码解析系列之 selector
  • 官方解决所有 npm 全局安装权限问题
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 解析带emoji和链接的聊天系统消息
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 一道面试题引发的“血案”
  • Java总结 - String - 这篇请使劲喷我
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • # 飞书APP集成平台-数字化落地
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #HarmonyOS:基础语法
  • #大学#套接字
  • (1)无线电失控保护(二)
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (void) (_x == _y)的作用
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (数据结构)顺序表的定义
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转) 深度模型优化性能 调参
  • (转)德国人的记事本
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (转载)hibernate缓存
  • (转载)深入super,看Python如何解决钻石继承难题
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .Net Remoting常用部署结构
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...