Oracle用户以及初学的经验

ops/2024/10/18 5:36:14/

背景:目前略,后续补上

//创建用户
CREATE USER tpmeaccount IDENTIFIED BY 12345678;
//授权权限
GRANT CONNECT, RESOURCE TO tpmeaccount;
//登录, 以sysdba这个角色登录 , sys是用户名 /后面是密码
sqlplus sys/123456 as sysdba//  需要授权一个角色给这个用户sys , 虽然我也不知道sys已经是最高级别的用户了, 这个还有什么用;
// 但是navicat连接要用到
grant sysdba to sys//查询权限, 谁的权限grantee = 'SYSTEM';用户system的, 应该是不区分大小写的
SELECT * FROM dba_role_privs WHERE grantee = 'SYSTEM';//强制刷新
ALTER SYSTEM CHECKPOINT;//查看你的用户名
SELECT USER FROM DUAL;//这一看就是导入的命令,如果报错可能是你的环境path没有配好。 注意orcl1 是服务名,
//dpdata1是你新建的的目录impdp system/12345678@127.0.0.1:1521/orcl1 directory=dpdata1 file='prad121241015.dmp' full=y;

1.1OracleServiceORCL(必须启动)
OracleServiceORCL:数据库服务(数据库实例),是 Oracle 核心服务该服务是数据库启动
的基础,只有该服务启动,Oracle 数据库才能正常启动。
1.2OracleOraDb11g_home1TNSListener(必须启动)
在这里插入图片描述

//创建用户
//在sys下面
CREATE USER my_user_test1 IDENTIFIED BY 123456;//
GRANT CREATE JOB TO SYS;//查看这个用户的权限
SELECT privilege
FROM dba_sys_privs
WHERE grantee = 'SYS';//单独查看某个权限有没有,比如说创建CREATE JOB,的权限
SELECT privilege
FROM dba_sys_privs
WHERE grantee = 'SCOTT' AND privilege = 'CREATE JOB';

DBA_SYS_PRIVS是一个视图
在这里插入图片描述
在这里插入图片描述

  • 什么是job?

在 Oracle 数据库中,作业(Job)是一种可以自动执行的任务。作业可以用于定时运行 SQL 语句、发送电子邮件、执行数据导入/导出等任务。

作业由以下部分组成:

  1. 作业定义:作业定义包含了作业的名称、作业的执行计划(包括何时开始、何时结束、何时重新运行等)和作业的执行步骤(包括要执行的 SQL 语句、要发送的电子邮件等)。

  2. 作业调度:作业调度定义了作业的执行计划。作业调度可以基于时间(例如,每天、每周、每月等)或基于事件(例如,当某个表发生变化时)。

  3. 作业步骤:作业步骤定义了作业要执行的操作。作业步骤可以包含 SQL 语句、PL/SQL 过程、电子邮件发送等操作。

作业可以手动启动,也可以由作业调度自动启动。作业的状态可以通过 DBA_JOBS 数据字典视图来查看。

请注意,创建和管理作业需要 CREATE JOB 权限。如果您没有这个权限,您将无法创建新的作业。


在 Oracle 数据库中,CREATE JOB 是一个系统权限,它允许用户创建和管理数据库作业。数据库作业是数据库中可以自动执行的任务,例如定时运行 SQL 语句、发送电子邮件等。

如果您拥有 CREATE JOB 权限,您可以使用 DBMS_JOB 包来创建和管理数据库作业。以下是一个示例,它使用 DBMS_JOB 包创建了一个新的数据库作业:

DECLAREjob NUMBER;
BEGINDBMS_JOB.SUBMIT(job       => job,what      => 'BEGIN my_procedure; END;',next_date => SYSDATE,interval  => 'SYSDATE + 1/1440');COMMIT;
END;
/

这个示例创建了一个新的数据库作业,它将在每分钟执行一次 my_procedure 过程。

如果您没有 CREATE JOB 权限,您将无法使用 DBMS_JOB 包来创建和管理数据库作业。在这种情况下,您可能需要联系您的数据库管理员,并请求他们为您分配 CREATE JOB 权限。

  • ORA-01917: 用户或角色 ‘MASTEDATA’ 不存在什么意思
//查询所有的用户名
SELECT username FROM dba_users;
//给这个用户创建权限, MASTERDATA这个用户不加引号
GRANT CREATE JOB TO MASTERDATA;
  • dba_users也是一个视图,类似dba_sys_privs , 是超级视图,这都是原来写好的
    在 Oracle 数据库中,dba_sys_privs 数据字典视图包含了数据库中所有用户的系统权限信息。以下是一个示例查询,它将返回 CREATE JOB 权限的信息:
SELECT grantee, privilege
FROM dba_sys_privs
WHERE privilege = 'CREATE JOB';

这个查询将返回拥有 CREATE JOB 权限的所有用户和权限。

如果您想查看特定用户的权限,您可以将 grantee 替换为您要查询的用户名,例如:

SELECT privilege FROM dba_sys_privs WHERE grantee = 'MASTEDATA' AND privilege = 'CREATE JOB';

这个查询将返回 MASTEDATA 用户是否拥有 CREATE JOB 权限。

如果您执行了 GRANT CREATE JOB TO MASTERDATA; 语句,然后执行 SELECT privilege FROM dba_sys_privs WHERE grantee = 'MASTEDATA' AND privilege = 'CREATE JOB'; 语句仍然为空,这可能是因为以下原因:

  1. 权限尚未生效:在 Oracle 数据库中,权限的授予和撤销是立即生效的,但是新创建的用户可能需要重新连接到数据库才能使权限生效。您可以尝试断开并重新连接到数据库,然后再次执行查询。

  2. 权限被撤销:如果权限已经被撤销,那么查询将不会返回任何结果。您可以使用 REVOKE CREATE JOB FROM MASTERDATA; 语句来撤销权限。

  3. 权限被授予给其他角色:如果权限被授予给 MASTERDATA 用户所属的其他角色,那么查询将不会返回任何结果。您可以使用 SELECT granted_role FROM dba_role_privs WHERE grantee = 'MASTEDATA'; 语句来查看 MASTERDATA 用户所属的所有角色。

  4. 权限被授予给其他用户:如果权限被授予给其他用户,那么查询将不会返回任何结果。您可以使用 SELECT grantee FROM dba_sys_privs WHERE privilege = 'CREATE JOB'; 语句来查看拥有 CREATE JOB 权限的所有用户。

//查询角色SELECT granted_role FROM dba_role_privs WHERE grantee = 'MASTERDATA';
//查询固定权限SELECT privilege FROM dba_sys_privs WHERE grantee = 'MASTERDATA' AND privilege = 'CREATE JOB';
  • ORA-01017: invalid username/password; logon denied
    常见问题之登录问题
    ORA-01017: invalid username/password; logon denied 是一个常见的 Oracle 错误,它表示您在尝试登录数据库时提供了无效的用户名或密码。

以下是一些可能的解决步骤:

  1. 检查用户名和密码:请确保您在登录时输入的用户名和密码与数据库中的用户名和密码完全匹配,包括大小写和空格。

  2. 检查账户状态:如果您的账户被锁定或过期,您将无法登录。您可以使用 ALTER USER user_name ACCOUNT UNLOCK; 语句来解锁账户,或者使用 ALTER USER user_name PASSWORD EXPIRE; 语句来使密码过期。

//怎么看用户解锁账户状态
SELECT account_status FROM dba_users WHERE username = 'MASTERDATA';
//结果是open

在 Oracle 数据库中,DBA_USERS 数据字典视图(可以理解SYS下自带的表)的 account_status 列表示用户的账户状态。以下是一些可能的值:

  • OPEN:账户已解锁,并且可以使用。
  • LOCKED:账户已锁定,无法使用。
  • EXPIRED:账户已过期,无法使用。
  • LOCKED(TIMED):账户已锁定,并且锁定时间未到。
  • EXPIRED(GRACE):账户已过期,并且仍在宽限期。
  • EXPIRED(GRACE+PASSWORD_LOCK): 账户已过期,并且宽限期已过,并且账户已被锁定。

因此,如果您看到 account_status 的值为 OPEN,那么账户已解锁,并且可以使用。

  1. 检查账户权限:如果您的账户没有 CREATE SESSION 权限,您将无法登录。您可以使用 GRANT CREATE SESSION TO user_name; 语句来授予 CREATE SESSION 权限。
  • 怎么看你的用户是否有这个 CREATE SESSION 权限?
//其实这个命令之前讲过,就是把privilege 换一下
SELECT privilege FROM dba_tab_privs WHERE grantee = 'MASTERDATA' AND privilege = 'CREATE SESSION';

  • 两个表格区别一下
    在 Oracle 数据库中,dba_sys_privsdba_tab_privs 都是数据字典视图,它们都包含了数据库中所有用户的权限信息,但是它们包含的信息类型不同。

  • dba_sys_privs 视图包含了数据库中所有用户的系统权限信息。系统权限是数据库级别的权限,例如 CREATE TABLECREATE USERCREATE SESSION 等。

  • dba_tab_privs 视图包含了数据库中所有用户的表级权限信息。表级权限是特定表或视图的权限,例如 SELECTINSERTUPDATEDELETE 等。

如果您在 dba_tab_privs 视图中找不到 CREATE SESSION 权限,这可能是因为 CREATE SESSION 是一个系统权限,而不是表级权限。您应该使用 dba_sys_privs 视图来查看 CREATE SESSION 权限。

以下是一个示例查询,它将返回 CREATE SESSION 权限的信息:

SELECT grantee, privilege
FROM dba_sys_privs
WHERE privilege = 'CREATE SESSION';

这个查询将返回拥有 CREATE SESSION 权限的所有用户和权限。

  1. 检查网络连接:如果您的网络连接有问题,您可能无法登录。请确保您的网络连接稳定,并且数据库服务器正在运行。

如果以上步骤都无法解决问题,您可能需要联系您的数据库管理员或 Oracle 技术支持以获取更详细的帮助。

监听器配置
在这里插入图片描述
在这里插入图片描述

//我的
D:\oracleApp\product\11.2.0\dbhome_1\NETWORK\ADMIN
//你自己存放的位置
\product\11.2.0\dbhome_1\NETWORK\ADMIN

在这里插入图片描述

  • 新的监听错误

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

找到这个配置文件

在这里插入图片描述

SELECT * FROM v$version;

结果

"BANNER"
"Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production"
"PL/SQL Release 11.2.0.1.0 - Production"
"CORE	11.2.0.1.0	Production"
"TNS for 64-bit Windows: Version 11.2.0.1.0 - Production"
"NLSRTL Version 11.2.0.1.0 - Production"

根据你要导入的类似mysql中的数据库,你需要先创建这几个用户。这个导出的日志中会有,同样报错的日志中也有;
这里的执行我都是在sys这个用户之下;

//创建用户MASTERDATA
CREATE USER MASTERDATA IDENTIFIED BY 123456;
GRANT CONNECT, RESOURCE TO MASTERDATA;//创建用户INTEREST
CREATE USER INTEREST IDENTIFIED BY 123456;
GRANT CONNECT, RESOURCE TO INTEREST;//创建用户 MONITORDATA
CREATE USER MONITORDATA IDENTIFIED BY 123456;
GRANT CONNECT, RESOURCE TO MONITORDATA;//创建用户  trade
CREATE USER trade IDENTIFIED BY 123456;
GRANT CONNECT, RESOURCE TO trade;//创建用户 query
CREATE USER query IDENTIFIED BY 123456;
GRANT CONNECT, RESOURCE TO query;

http://www.ppmy.cn/ops/126398.html

相关文章

【进阶OpenCV】 (18)-- Dlib库 --人脸关键点定位

文章目录 人脸关键点定位一、作用二、原理三、代码实现1. 构造人脸检测器2. 载入模型(加载预测器)3. 获取关键点4. 显示图像5. 完整代码 总结 人脸关键点定位 在dlib库中,有shape_predictor_68_face_landmarks.dat预测器,这是一个…

重构长方法之以方法对象取代方法

以方法对象取代方法 是重构长方法的一种技术,适用于那些过长、逻辑复杂且难以拆解的单一方法。此方法通过引入一个新的类,将原本庞杂的方法转化为一个对象方法,这样可以更容易将方法中的不同步骤拆解为多个私有方法,使代码结构清晰…

python实现屏幕录制,录音录制工具

python实现屏幕录制,录音录制工具 一,介绍 Python 实现的屏幕录制和录音录制工具是一个便捷的应用程序,旨在帮助用户同时捕捉计算机屏幕上的活动以及与之相关的音频输出。这个工具尤其针对教育工作者、内容创作者、技术支持人员以及任何需要…

数据库的相关概念

先看与数据库有关的几个名词: DB:database,数据库,里边保存了有组织的规范的数据。 DBMS:database management system , 数据库管理系统,简称数据库软件,数据库产品,数…

Python操作MySQL数据库:基础教程与示例代码

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

【数据分享】全国资源和环境-环境污染治理投资(1998-2021年)

数据介绍 一级标题指标名称单位指标解释资源和环境环境污染治理投资总额亿元环境污染治理投资指在污染源治理和城市环境基础设施建设的资金投入中,用于形成固定资产的资金,其中污染源治理投资包括工业污染源治理投资和“三同时”项目环保投资两部分。环…

解决高版本使用Gson报错Caused by: java.lang.NoClassDefFoundError: java/sql/Time

开发项目使用jdk21&#xff0c;版本较高&#xff0c;需要用模块化引入。在使用gson转换json数据时&#xff0c;报错 Caused by: java.lang.NoClassDefFoundError: java/sql/Time at gson2.8.5/com.google.gson.Gson.<init>(Gson.java:265) at gson2.8.5/com.google.gson…

ChatGPT写出优质论文的关键第一步:角色预设提示词指令

在使用ChatGPT做学术研究和论文写作中,有效的提示词指令可以帮助我们更好地利用智能AI工具来提升工作效率和质量。在整个操作过程中,首要第一步就是角色预设的指令,这是能否使用ChatGPT高效写出优质论文的关键步骤。以下是五个重要且常用到的学术角色的预设提示词指令 一、…