Oracle21c数据库普通用户创建及授权,建表,创建存储过程、序列、触发器

server/2024/9/20 15:36:07/

一、Oracle数据库错误 ORA-65096

表示你尝试在多租户容器数据库(CDB)环境中创建一个公共用户(common user)或角色,但没有使用正确的前缀。在多租户架构中,公共用户的用户名必须以 C##c## 开头。

若想在CDB创建用户,用如下代码:

前提是先登录进sys系统账户中

但是,如果你的意图是在特定的可插拔数据库(PDB)中创建一个局部用户(local user),你不应该使用 C##c## 前缀。你可能直接在CDB环境中而不是在特定的PDB中尝试执行该命令。

为了在PDB中创建一个用户,你需要确保首先连接到了正确的PDB。以下是在PDB中创建用户的步骤:

1.连接到目标PDB: 如果你使用的是 SQL*Plus 或类似的工具,你可以使用以下命令连接到目标PDB:

sqlplus

conn sys/orcl as sysdba;

alter session set container=<pdbname>;

这里的 sys 是你的系统管理员账户,而 pdb_name 是你的可插拔数据库的名字,一般是ORCLPDB。

2.检查当前的容器: 一旦连接,你可以运行以下命令来确认你当前连接的是哪个容器:

SHOW CON_NAME;

如果你还没在PDB中,你需要切换到目标PDB。使用:

ALTER SESSION SET CONTAINER = pdb_name;

替换 pdb_name 为你的目标PDB名称。

3.创建用户: 一旦确定你在正确的PDB中,使用以下命令创建用户,注意不要使用 C##c## 前缀:

CREATE USER fxy IDENTIFIED BY "123456";

在这里,fxy 是新用户的用户名,"123456" 是用户的密码。

授予权限: 创建用户后,你需要给用户授予最起码的权限,比如 CREATE SESSION,以便用户可以登录:

GRANT CREATE SESSION TO fxy;

 二、建表

--员工表

create table emp 
(
   empno              NUMBER(20)           not null,
   dpetno             NUMBER(20),
   ename              VARCHAR2(20),
   user_id            NUMBER(20)           not null,
   birthdate          DATE,
   gender             VARCHAR2(20),
   job                VARCHAR2(10),
   hiredate           DATE,
   sal                NUMBER,
   comm               NUMBER,
   mgr                NUMBER(20),
   constraint PK_EMP primary key (empno)
);


--部门表

create table dept (
   dpetno             NUMBER(20)           NOT NULL,
   dname              VARCHAR2(20)         NOT NULL,
   loc                VARCHAR2(20)
);

三、Oracle21C创建存储过程、序列、触发器

1. -- 存储过程

--获取部门人数

CREATE OR REPLACE PROCEDURE get_department_employee_count(
    department_id IN NUMBER,
    employee_count OUT NUMBER
)
IS
BEGIN
    -- Initialize the OUT parameter
    employee_count := 0;

    -- Attempt to get the employee count
    BEGIN
        SELECT COUNT(*) INTO employee_count FROM employee WHERE deptno = department_id;
    EXCEPTION
        -- Handle the NO_DATA_FOUND exception
        WHEN NO_DATA_FOUND THEN
            DBMS_OUTPUT.PUT_LINE('No employees found for the specified department.');
        -- Handle other exceptions as needed
        WHEN OTHERS THEN
            DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);
    END;
END;
/

-- 调用
DECLARE
    v_employee_count NUMBER;
BEGIN
    get_department_employee_count(department_id => 1, employee_count => v_employee_count);
    DBMS_OUTPUT.PUT_LINE('Employee Count: ' || v_employee_count);
END;
/

-- 查询主管姓名
SELECT
            e.empno,
            e.ename,
            e.birthdate,
            e.gender,
            e.position,
            e.hiredate,
            e.id,
            e.sal,
            e.comm,
            e.deptno,
            s.ename AS supervisorName
        FROM
            employee e
                LEFT JOIN
            employee s ON e.id = s.empno


2. -- 序列


CREATE SEQUENCE emp_seq START WITH 1 INCREMENT BY 1 NOCACHE;

CREATE SEQUENCE dept_seq START WITH 1 INCREMENT BY 1 NOCACHE;

CREATE SEQUENCE user_seq START WITH 1 INCREMENT BY 1 NOCACHE;

drop sequence emp_seq;
drop sequence dept_seq;

3. -- 触发器

CREATE OR REPLACE TRIGGER delete_department_employees
BEFORE DELETE ON department
FOR EACH ROW
DECLARE
BEGIN
    -- 在删除部门之前,将部门中的员工转移到其他部门(例如,部门号为 0)
    UPDATE employee SET deptno = 0 WHERE deptno = :OLD.deptno;
END;
/

四、idea如何连接Oracle数据库 

yml文件中写入

spring:datasource:type: oracle.ucp.jdbc.PoolDataSourceImpldriver-class-name: oracle.jdbc.driver.OracleDriverurl: jdbc:oracle:thin:@localhost:1521:ORCLusername: 用户名password: 密码

创作不易,点个关注再走呗 


http://www.ppmy.cn/server/41821.html

相关文章

【AI智能体】零代码构建AI应用,全网都在喊话歌手谁能应战,一键AI制作歌手信息查询应用

欢迎来到《小5讲堂》 这是《文心智能体平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 文心智能体大赛背景创建应用平台地址快速构建【基础配置】…

【Web后端】servlet基本概念

1.ServletAPI架构 HttpServlet继承GenericServletGenericServlet实现了Servlet接口&#xff0c;ServletConfig接口,Serializable接口自定义Servlet继承HttpServlet 2.Servlet生命周期 第一步&#xff1a;容器加载Servlet第二步&#xff1a;调用Servlet的无参构造方法&#xf…

Android 获取已安装应用、包名、应用名、版本号、版本名

1、相关代码 List<ApplicationInfo> installedApps getPackageManager().getInstalledApplications(0);for (ApplicationInfo appInfo : installedApps) {CharSequence getAppName getPackageManager().getApplicationLabel(appInfo);String appNamegetAppName.toStrin…

java(实验拓展)工厂模式和原型模式

工厂模式 简单来说是一种创建型设计模式&#xff0c;它提供了一种创建对象的最佳实践&#xff0c;这种模式提供了一种抽象工厂&#xff0c;通过使用工厂方法来创建对象。工厂方法将对象的创建推迟到子类中&#xff0c;这样就可以实现对象的创建和使用解耦。 一、概念 工厂模…

练习题(2024/5/14)

1四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入&#xff1a;n…

Vue 常见通信

Vue 常见通信 1、父子通信 父传子 props&#xff0c;子传父 events&#xff08;$emit&#xff09;&#xff1b; 通过父链 / 子链 通信$parent / $children&#xff1b; $refs获取ref 可以访问组件实例方法&#xff0c;&#xff1b; 提供与注射provide / inject a t t r s …

vscode切换分支及合并分支操作教程

工具&#xff1a;gitee、git 、vscode、Git Graph 点击可以看到分支管理明细。 一、前提 1、首先要有两个分支 &#xff08;1&#xff09;分支说明&#xff1a; test&#xff1a; 测试分支 feature/luo-20240508&#xff1a;自己的开发分支 &#xff08;2&#xff09;分支说…

npm无法安装node-sass 的问题

安装 node-sass 的问题呈现&#xff1a;4.9.0版本无法下载 Downloading binary from https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-72_binding.node Cannot download "https://github.com/sass/node-sass/releases/download/v4.9.0/win32-x64-…

【Git教程】(十八)拆分大项目 — 概述及使用要求,执行过程及其实现,替代解决方案 ~

Git教程 拆分大项目 1️⃣ 概述2️⃣ 使用要求3️⃣ 执行过程及其实现3.1 拆分模块版本库3.2 将拆分出的模块作为外部版本库集成 4️⃣ 替代解决方案 通常软件项目都是由单体小型系统开始的&#xff0c;在开发过程中项目规模和团队人员不断扩大&#xff0c; 将项目模块化会显得…

idea使用gitee基本操作流程

1.首先&#xff0c;每次要写代码前&#xff0c;先切换到自己负责的分支 点击签出。 然后拉取一次远程master分支&#xff0c;保证得到的是最新的代码。 写完代码后&#xff0c;在左侧栏有提交按钮。 点击后&#xff0c;选择更新的文件&#xff0c;输入描述内容&#xff08;必填…

正则表达式和lambda表达式

正则表达式&#xff08;Regular Expressions&#xff09;和Lambda表达式虽然都包含“表达式”一词&#xff0c;但它们在编程中的作用和用法是完全不同的。让我们详细比较一下它们的定义、用途和应用场景&#xff1a; 正则表达式 定义&#xff1a;正则表达式是一种用于匹配文本…

知识分享|XDC时钟约束的详细说明

在FPGA设计中&#xff0c;时钟约束是确保设计满足时序要求的关键。Xilinx Design Constraints (XDC) 文件允许设计者对时钟、输入/输出(I/O)和跨时钟域(CDC)路径进行精确的时序约束。以下是XDC文件中时钟约束的详细说明&#xff1a; 时钟约束的重要性 时钟约束必须最早创建&a…

业务上云--从Container+BuildKitd打镜像到在Kubernetes上部署LNMP

一、背景 在基于kubeasz部署kubernetes高可用集群-CSDN博客文章部署的kubernetes集群上部署LNMP 1.1、Kubernetes环境 1.2、Harbor环境 【docker基础】使用Harbor搭建私有仓库-docker-compose使用示例--第二周作业_harbor docker-compose-CSDN博客 Harbor环境升级&#xff…

音视频-H264编码封装- MP4格式转Annex B格式

目录 1&#xff1a;H264语法结构回顾 2&#xff1a;H264编码补充介绍 3&#xff1a;MP4模式转Annex B模式输出到文件示例 1&#xff1a;H264语法结构回顾 在之前文章里介绍过H264的语法结构。 传送门: 视音频-H264 编码NALU语法结构简介 2&#xff1a;H264编码补充介绍 H…

什么是Java中的设计模式?请列举几种常见的设计模式

一、引言 在软件开发中&#xff0c;设计模式是解决特定设计问题的最佳实践或通用解决方案。Java作为一种广泛使用的编程语言&#xff0c;其设计模式在软件设计和架构中起着至关重要的作用。设计模式不仅提高了代码的可读性和可维护性&#xff0c;还使得代码更加灵活和可扩展。…

IT行业的现状与未来发展趋势:探索无限可能

随着技术的不断进步&#xff0c;IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链&#xff0c;这些技术正在重塑我们的生活和工作方式。在本篇博客中&#xff0c;我们将探讨IT行业的现状以及未来发展趋势&#xff0c;展望这…

Git篇——Git提交指定文件编码

背景&#xff1a;项目中有些老工程的代码编码格式不统一&#xff0c;可以通过以下方式强行指定提交时的文件编码&#xff0c;可以将所有上传到git的文件的编码格式统一。 在Git中&#xff0c;可以通过设置.gitattributes文件来指定文件编码。在项目根目录下创建一个名为.gitat…

ros 中配置launch启动文件

本文参考这篇博客&#xff1a;点击链接 一、roslaunch是一个至关重要的工具&#xff0c;它能够帮助我们高效地启动ROS节点、参数服务器和其他必要的组件。 二、在ROS中&#xff0c;一个复杂的机器人项目通常由多个节点&#xff08;Node&#xff09;组成&#xff0c;每个节点负责…

Python 全栈体系【四阶】(四十三)

第五章 深度学习 九、图像分割 3. 常用模型 3.4 DeepLab 系列 3.4.1 DeepLab v1(2015) 3.4.1.1 概述 图像分割和图像分类不一样&#xff0c;要对图像每个像素进行精确分类。在使用CNN对图像进行卷积、池化过程中&#xff0c;会导致特征图尺寸大幅度下降、分辨率降低&…

Python学习-Numpy-3

Numpy数字统计函数 np.sum所有元素的和np.prod所有元素的乘积np.cumsum元素的累积加和&#xff08;前1&#xff0c;前2..元素累加&#xff09;np.cumprod元素的累积乘积&#xff08;前1&#xff0c;前2..元素累乘&#xff09;np.min最小值np.max最大值np.percentile0-100百分位…