文章目录
- 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上创建表空间时,报如下错误,和明显是创建文件权限不足,但是我应该建在哪个路径下呢
2. 解决
登录到服务器,执行 ps -ef | grep oracle,查看下oracle数据库进程
看到管理员创建的数据库用户为oracle,该用户主目录为/home/oracle,那我们有两个解决思路
1. 把文件地址修改为oracle用户主目录下,即/home/oracle目录下
2. 创建到其他目录下,然后将该目录的权限授权给oracle用户
三、设置Oracle不区分大小写
show parameter sec_case_sensitive_logon
ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;
四、查询语句表名是否需要加双引号问题
创建表时表不能加"“,否则查询的时候的必须加”"