Oracle(从创建用户到登陆)

本文详细介绍了如何使用PLSQLDeveloper或直接通过服务器登陆Oracle数据库,创建临时和普通表空间,然后添加用户并指定表空间,最后赋予用户连接和资源权限。步骤包括登陆、创建表空间、添加用户以及授权,适合数据库管理员参考。

当我们创建了一个新数据库以后,需要添加一个用户,并赋予一定的权限才可以使用。本文记录从创建表空间到添加完权限登陆的操作,使用PLSQL Developer进行操作,也可以服务器进行操作,效果是一样的。

  1. 登陆管理员用户(必须)
    • 方法一:使用PLSQL Developer登陆数据库

      在这里插入图片描述

    • 方法二:使用服务器登陆数据库

      以oracle用户登陆到数据库服务器,执行登陆命令

      sqlplus / as sysdba

  2. 创建临时表空间(可选)

    CREATE TEMPORARY TABLESPACE [tbs_test_tmp]
    TEMPFILE [‘/home/oracle/app/oracle/oradata/zhaojiyuan/tbs_files/tmp/tbs_test_tmp_01.dbf’]
    SIZE 50M
    AUTOEXTEND ON
    NEXT 50M MAXSIZE 20480M
    EXTENT MANAGEMENT LOCAL;

    注意:

    1. 中括弧里的根据自己的地址设置
    2. /home/oracle/app/oracle/oradata/zhaojiyuan/tbs_files/tmp/tbs_test_tmp_01.dbf为表空间文件的完整路径名,要保证该文件的目录已经存在,如果不存在,需要登陆数据库服务器,使用oracle用户创建
  3. 创建表空间(可选)

    CREATE TABLESPACE [tbs_test]
    DATAFILE [‘/home/oracle/app/oracle/oradata/zhaojiyuan/tbs_files/tmp/tbs_test_01.dbf’ ]
    SIZE 50M
    AUTOEXTEND ON NEXT 5M MAXSIZE 3000M
    EXTENT MANAGEMENT LOCAL;

    注意:

    ​ 同创建临时表注意事项

  4. 添加用户(必须)
    • 方法一:添加用户并指定表空间

      CREATE USER [TEST] IDENTIFIED BY [TEST]
      DEFAULT TABLESPACE [tbs_test]
      TEMPORARY TABLESPACE [tbs_test_tmp]

    • 方法二:添加用户使用表空间

      CREATE USER [TEST] IDENTIFIED BY [TEST];

    注意:

    ​ 第一个[]代表用户名,第二个[]代表密码,第三个代表[]表空间名称,第四个[]代表临时表空间名称,不指定表空间是使用默认的表空间

  5. 授予权限(必须)

    GRANT CONNECT, RESOURCE TO [TEST];

    普通用户只用授予 connect、resource权限

  6. 登陆

    在这里插入图片描述

附加

  1. 删除用户管理
    • 删除用户

      DROP USER [TEST];

    • 删除用户级联删除数据

      DROP USER [TEST] CASCADE;

    删除用户时候确保用户没有人在登陆,要不然删除不掉

  2. 解锁/解锁用户
    • 锁定用户

      alter user [test] account lock;

    • 解锁用户

      alter user [test] account unlock;

  3. 修改用户密码

    ALTER USER [test] IDENTIFIED BY [test] ;

  4. 删除表空间(摘抄的资料,没有亲测)
    • 删除空的表空间,但是不包含物理文件

      DROP TABLESPACE [TBS_TEST];

    • 删除非空表空间,但是不包含物理文件

      DROP TABLESPACE [TBS_TEST] INCLUDING CONTENTS;

    • 删除空表空间,包含物理文件

      DROP TABLESPACE [TBS_TEST] INCLUDING DATAFILES;

    • 删除非空表空间,包含物理文件

      DROP TABLESPACE [TBS_TEST] INCLUDING CONTENTS AND DATAFILES;

    • 如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS

      DROP TABLESPACE [TBS_TEST] INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

<think>首先,用户的问题是:“Oracle 创建用户时报错 '缺少用户或角色名' 如何解决”。我需要基于提供的引用和系统指令来回答。 关键点: - 系统指令要求使用特定格式:行内数学表达式用$...$,独立公式用$$...$$,但这个问题是关于Oracle数据库的,可能不涉及数学表达式,所以我应该避免不必要的LaTeX。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,如[^1]。 - 回答结构清晰,帮助用户逐步解决问题。 - 参考站内引用:有[^1]、[^2]、[^3],但它们是关于Oracle的,我可以参考它们来支持我的回答。 提供的引用: - 引用[^1]: 关于Oracle用户身份和权限,如SYS和SYSTEM用户。 - 引用[^2]: 关于在Windows上创建服务和备数据库。 - 引用[^3]: 关于物化视图创建权限不足的错误。 用户的问题具体是创建用户时报错“缺少用户或角色名”。这听起来像是一个语法错误或权限问题。 在Oracle中,创建用户的命令是: ```sql CREATE USER username IDENTIFIED BY password; ``` 如果命令中缺少用户名或角色名,就会报错“缺少用户或角色名”。这可能是因为: - 用户名没有正确指定。 - 命令语法错误。 - 用户没有足够的权限创建用户。 从引用[^1]中,我们知道只有具有特定权限的用户才能创建用户,比如SYS或具有DBA角色的用户。 可能的解决方案: 1. **检查命令语法**:确保CREATE USER语句正确。例如: ```sql CREATE USER new_user IDENTIFIED BY password; ``` 如果写成`CREATE USER ;` 或类似,就会报错。 2. **验证权限**:用户必须具有CREATE USER权限。引用[^1]提到SYS用户有最高权限,SYSTEM用户可能需要被授予权限。 3. **使用正确用户登录**:只有SYS或具有DBA权限的用户才能创建用户。引用[^1]说:"只能用normal身份登陆,除非对它授予了 sysdba 的系统权限",意思是普通用户如果没有sysdba权限,可能无法执行某些操作。 错误消息“缺少用户或角色名”直接表明在命令中缺少了必要的标识符。所以,重点应放在命令语法上。 结构化回答: - 逐步解释问题。 - 提供解决方案步骤。 - 引用相关部分。 - 最后生成相关问题。 生成相关问题: - 基于主题,如Oracle用户管理、权限错误等。 最终回答框架: 1. 解释错误原因。 2. 提供解决步骤。 3. 添加引用标识。 4. 生成相关问题。</think>### Oracle 创建用户时报错“缺少用户或角色名”的解决方法 在Oracle数据库中,创建用户时遇到错误“缺少用户或角色名”(ORA-01917: user or role name does not exist),通常是由于**命令语法错误**或**权限不足**导致的。这个错误表明Oracle无法识别CREATE USER语句中的用户名或角色名,或者当前用户没有执行该操作的权限。下面我将逐步解释原因并提供解决方案,确保操作安全可靠。 #### 错误原因分析 1. **命令语法错误**:CREATE USER语句格式不正确,例如用户名未正确指定、缺少关键字或拼写错误。Oracle要求用户名必须是有效的标识符(不能以数字开头,不能包含特殊字符等)。 2. **权限不足**:只有具有特定系统权限的用户(如SYS、SYSTEM或具有DBA角色的用户)才能创建用户。普通用户(如NORMAL身份)如果没有被授予CREATE USER权限,会报错。引用[^1]提到:“只能用normal身份登陆,除非对它授予了 sysdba 的系统权限(grant sysdba to system)或者 sysoper 系统权限”,这强调了权限的重要性。 3. **环境问题**:在特定操作系统(如Windows)上,服务配置不当可能导致命令解析失败,但较少见。引用[^2]讨论了Windows服务创建,但本错误更侧重于语法和权限。 #### 解决步骤 按照以下步骤操作,逐步排查和解决问题: 1. **检查并修正CREATE USER命令语法**: - 确保命令格式正确:用户名必须紧随`CREATE USER`后,并指定密码。 - 正确示例: ```sql CREATE USER new_user IDENTIFIED BY password; ``` - **错误示例**:`CREATE USER ;`(缺少用户名)或`CREATE USER 123user IDENTIFIED BY pass;`(用户名以数字开头)。 - 如果用户名包含特殊字符或大写字母,需用双引号包裹:`CREATE USER "New_User" IDENTIFIED BY password;`。 - 使用SQL*Plus或SQL Developer执行命令,避免工具自动添加多余字符。 2. **验证当前用户的权限**: - 登录具有足够权限的用户(如SYS或SYSTEM)。引用[^1]指出:“sys: oracle 权限最高的用户,拥有 dba , sysdba , sysoper 等角色或权限”。因此: - 以SYS用户登录:`sqlplus / as sysdba` - 或授权普通用户:如果当前用户是SYSTEM或其他,需先授予CREATE USER权限: ```sql GRANT CREATE USER TO your_user; ``` - 检查权限:执行`SELECT * FROM session_privs;`查看当前权限列表。如果缺少CREATE USER,需更高权限用户授权。 3. **检查用户名和角色是否存在冲突**: - 确保用户名不是保留字(如SYS、SYSTEM)或已存在的角色名。查询现有用户: ```sql SELECT username FROM dba_users; ``` - 如果角色名冲突,避免使用与系统角色相同的名称。 4. **处理操作系统特定问题(可选)**: - 在Windows系统中,确保Oracle服务正常运行。引用[^2]提到使用ORADIM工具创建服务,但本错误通常不需要此步骤。如果怀疑服务问题,重启Oracle服务: ```cmd net stop OracleServiceORCL net start OracleServiceORCL ``` 5. **测试并确认**: - 执行修正后的命令后,验证用户是否创建成功: ```sql SELECT username FROM dba_users WHERE username = 'NEW_USER'; ``` - 如果仍报错,检查Oracle日志(如alert.log)获取详细错误信息。 #### 预防措施 - **权限管理**:仅授予必要用户CREATE USER权限,避免安全风险。 - **语法规范**:在脚本中使用标准SQL格式,避免手动输入错误。 - 引用[^3]提到权限不足错误(如物化视图创建),类似问题可通过相同方法解决:确保语法正确并提升权限[^3]。 #### 相关问题 为了帮助您更深入地理解Oracle用户管理,以下是相关扩展问题: 1. 如何授予普通用户创建数据库对象的权限? 2. Oracle中DBA角色和SYSDBA权限有什么区别? 3. 如何解决Oracle创建表空间时的权限错误?
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值