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,以便能够看到存储过程的输出。

-- 存储过程
BEGIN
    FOR rec IN (
        SELECT table_name
        FROM all_tables
        WHERE owner = 'BB'  -- 确保使用大写字母
    ) LOOP
        BEGIN
            -- 动态 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');
        
        EXCEPTION
            WHEN 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 对用户名的默认处理是大写。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shark_西瓜甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值