当前位置: 首页 > 知识库问答 >
问题:

关于Oracle 12c中的用户

陶征
2023-03-14

我已经在我的系统上安装了Oracle 12c数据库。我有一个需要访问数据库的应用程序。

在之前的Oracle11g中,我使用以下命令创建用户。

create user name identified by name;  
grant connect,create session,resource,create view to name;

有谁能告诉我如何根据我的上述要求在Oracle 12c中创建用户?我使用了以下语句,但我的安装显示了一个致命错误:

FATAL ERROR - java.sql.SQLException: ORA-01950: no privileges on tablespace 'USERS'

以下是使用的陈述。

create user c##test1 identified by test1 container = ALL;
grant connect,create session,resource,create view to test1;

共有3个答案

明阳旭
2023-03-14

试试这个:

#!/bin/bash
USERVALID=false;

if [ -z $1 ]; then
 echo -e "\nThis script will create a new common user in Oracle"
fi

while [[ $USERVALID == false ]]; do
 if [ -z $1 ]; then
  echo -e "Username must start with 'c##' or 'C##'\n"
  read -p "Enter a username: " NEWUSER
 else
  NEWUSER=$1
 fi
 if [[ $NEWUSER == c##* ]]
 then
  USERVALID=true;
 elif [[ $NEWUSER == C##* ]]
 then
  USERVALID=true;
 else
  USERVALID=false;
  echo -e "\nInvalid username";
  if [ ! -z $1 ]; then
   echo -e "Username must start with 'c##' or 'C##'\n"
   exit 0
  fi
 fi
done

while [[ -z $NEWPWD ]]; do
 if [ -z $2 ]; then
  read -p "Enter a password: " NEWPWD
 else
  NEWPWD=$2
 fi
 if [[ -z $NEWPWD ]]
 then
  echo -e "Password must not be NULL"
 fi
done

get_user_status () {
 sqlplus -s / as sysdba <<!
 set heading off
 set feedback off
 set pages 0
 select username from all_users where username = '${NEWUSER^^}';
!
}

USERDROP=$(get_user_status)
if [[ $USERDROP =~ ${NEWUSER^^} ]]; then
 echo -e "\nUser already exists...\nAttempting to drop user\n"
 echo -e "DROP USER $NEWUSER CASCADE;" | sqlplus -s / as sysdba
 USERDROP=$(get_user_status)
 if [[ $USERDROP =~ ${NEWUSER^^} ]]; then
  echo -e "Please ensure user is disconnected from the database before proceeding.\n"
  exit 0
 fi
fi

echo -e "CREATE USER $NEWUSER IDENTIFIED BY $NEWPWD;"  | sqlplus -s / as sysdba

USERDROP=$(get_user_status)
if [[ ! $USERDROP =~ ${NEWUSER^^} ]]; then
 echo -e "You are a bad person.\n"
 exit 0
fi

echo -e "GRANT CREATE SESSION TO $NEWUSER;"            | sqlplus -s / as sysdba
echo -e "GRANT CREATE PROCEDURE TO $NEWUSER;"          | sqlplus -s / as sysdba
echo -e "GRANT CREATE SEQUENCE TO $NEWUSER;"           | sqlplus -s / as sysdba
echo -e "GRANT CREATE DATABASE LINK TO $NEWUSER;"      | sqlplus -s / as sysdba
echo -e "GRANT CREATE TABLE TO $NEWUSER;"              | sqlplus -s / as sysdba
echo -e "GRANT CREATE VIEW TO $NEWUSER;"               | sqlplus -s / as sysdba
echo -e "GRANT CREATE MATERIALIZED VIEW TO $NEWUSER;"  | sqlplus -s / as sysdba
echo -e "GRANT QUERY REWRITE TO $NEWUSER;"             | sqlplus -s / as sysdba
echo -e "GRANT SELECT ANY TABLE TO $NEWUSER;"          | sqlplus -s / as sysdba
echo -e "GRANT SELECT ON SYS.V_\$SESSION TO $NEWUSER;" | sqlplus -s / as sysdba
echo -e "GRANT EXECUTE ON SYS.DBMS_LOCK TO $NEWUSER;"  | sqlplus -s / as sysdba
echo -e "GRANT UNLIMITED TABLESPACE TO $NEWUSER;"      | sqlplus -s / as sysdba

echo -e "\nAll done!\n"
林英锐
2023-03-14

您还应该为用户的默认表空间分配配额:

CREATE USER name
IDENTIFIED BY name
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 50M /* or any other number that makes sense */ ON users

GRANT CONNECT, CREATE SESSION, RESOURCE, CREATE VIEW TO name;
姬昀
2023-03-14

最佳实践是创建一个表空间并将其分配给用户。

为了便于理解,请对用户名和表空间使用相同的名称

CREATE BIGFILE table SPACE C##1
DATAFILE'/path/to/DATAFILE/C##1.dbf'
SIZE 10M自动扩展到下一个5M MAXSIZE UNLIMITED
区段管理本地段空间管理自动取消记录

CREATE USER C##1
IDENTIFIED BY密码默认表空间C##1
QUOTA UNLIMITED ON C##1;

 类似资料:
  • 同样的规则也将应用于destination_num。表中的现有值需要替换为屏蔽值。我读过一些关于Oracle12c中数据编辑的文章,但提到了它,因为我们只能选择屏蔽数据,而不能选择更新。

  • 我正在从事一个大学项目,我打算使用oracle数据库作为后端,我选择使用django作为编程语言。我已成功地将django与oracle 12c连接,并已安装了cx_oracle。但是当我尝试运行命令时 出现以下错误。 Windows PowerShell版权所有(C)微软公司。版权所有。 PS C:\Users\Hp\Desktop\onlinepharma 上述异常是以下异常的直接原因: 回溯

  • 本文向大家介绍Javascript中关于Array.filter()的妙用详解,包括了Javascript中关于Array.filter()的妙用详解的使用技巧和注意事项,需要的朋友参考一下 前言 和map类似,Array的filter也接收一个函数。但是和map不同的是, filter把传入的函数依次作用于每个元素,然后根据返回值是 true 还是false决定保留还是丢弃该元素。 实例介绍 例

  • 本文向大家介绍关于keras中keras.layers.merge的用法说明,包括了关于keras中keras.layers.merge的用法说明的使用技巧和注意事项,需要的朋友参考一下 旧版本中: from keras.layers import merge merge6 = merge([layer1,layer2], mode = 'concat', concat_axis = 3) 新版本

  • 本文向大家介绍关于Tensorflow中的tf.train.batch函数的使用,包括了关于Tensorflow中的tf.train.batch函数的使用的使用技巧和注意事项,需要的朋友参考一下 这两天一直在看tensorflow中的读取数据的队列,说实话,真的是很难懂。也可能我之前没这方面的经验吧,最早我都使用的theano,什么都是自己写。经过这两天的文档以及相关资料,并且请教了国内的师弟。今