31. Oracle开发中遇到的一些问题

文章目录

  • Oracle开发中遇到的一些问题
    • 一、Oracle中的同义词
    • 二、 Oracle创建表空间无权限
      • 1.问题:
      • 2. 解决
    • 三、设置Oracle不区分大小写
    • 四、查询语句表名是否需要加双引号问题

Oracle开发中遇到的一些问题

一、Oracle中的同义词

1.现在有一个这样的oracle业务场景

我们有一个微服务系统,每个服务都要有自己的schema,但是多个schema之间还要有跨库关联。
所以客户给我们提供了一个主schema,8个子schema。主schema的权限是resource,connect。子schema的权限是connect。所以只能在主schema下创建表,子schema没有建表权限

我们的做法就是
    1. 在主schema下创建表,表前缀根据各个业务系统而变化
    2. 将主schema的表授权给子schema
        在主schema下执行 
        grant all, select, insert, delete, update on LOCK_TABLE to '子schema';  (all表示所有权限,可以单用)
    3. 但是此时在在子schema下查询,必须为
        SELECT * from 主schema.LOCK_TABLE
    4. 为了查询语句不添加主'schema.',使用oracle的同义词,在子schema下执行
        create or replace synonym LOCK_TABLE
            for '主schema'.LOCK_TABLE;
    5. 此时子schema内查询就可以为
        SELECT * from LOCK_TABLE

二、 Oracle创建表空间无权限

1.问题:

搭建项目时,管理员给了我一个部署在linux服务器上的oracle数据库实例,我要在这个实例上建多个schema,所以想单独创建一个表空间来使用。
在navicat上创建表空间时,报如下错误,和明显是创建文件权限不足,但是我应该建在哪个路径下呢

31. Oracle开发中遇到的一些问题_第1张图片

2. 解决

登录到服务器,执行 ps -ef | grep oracle,查看下oracle数据库进程

31. Oracle开发中遇到的一些问题_第2张图片

看到管理员创建的数据库用户为oracle,该用户主目录为/home/oracle,那我们有两个解决思路
1. 把文件地址修改为oracle用户主目录下,即/home/oracle目录下
2. 创建到其他目录下,然后将该目录的权限授权给oracle用户

三、设置Oracle不区分大小写

31. Oracle开发中遇到的一些问题_第3张图片
31. Oracle开发中遇到的一些问题_第4张图片

show parameter sec_case_sensitive_logon
ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;

四、查询语句表名是否需要加双引号问题

创建表时表不能加"“,否则查询的时候的必须加”"

你可能感兴趣的:(#,3.,数据持久化,oracle,数据库,同义词,不区分大小写,创建表空间)