如何在oracle 11g中创建新模式/新用户? [英] how to create a new schema/new user in oracle 11g?

查看:4436
本文介绍了如何在oracle 11g中创建新模式/新用户?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经申请在公司实习,并作为一个问题,他们要求我为他们的公司创建一个架构,并向他们发送ddl file.i安装oracle 11g express版本,但我如何创建一个新的模式在oracle 11g?我已经在网络中搜索一个解决方案,但可以理解该做什么,并创建一个模式后,哪个文件应该邮寄他们?

解决方案

一般来说,oracle中的模式与用户相同。在创建用户时,Oracle数据库会自动创建模式。具有DDL文件扩展名的文件是SQL数据定义语言文件。



创建新用户(使用SQL Plus) b
$ b

基本SQL Plus命令:

   -  connect:连接到数据库
- disconnect:注销但不退出
- 退出:存在

打开SQL Plus日志:

  / as sysdba 

sysdba是一个角色,就像unix上的root或Windows上的Administrator。它看到所有,可以做的一切。在内部,如果以sysdba身份连接,您的模式名称将显示为SYS。



创建用户:

  SQL>创建由1234标识的用户johny; 

查看所有用户并检查用户johny是否存在:

  SQL>从dba_users选择用户名; 

如果您尝试以johny身份登录,您会收到一条错误:

 错误:
ORA-01045:user JOHNY缺少CREATE SESSION权限;登录被拒绝

登录的用户至少需要创建会话权限,所以我们必须授予此权限用户:

  SQL> grant create session to johny; 

现在您可以以johny用户身份进行连接:

 用户名:johny 
密码:1234

要摆脱该用户,您可以删除它:

  SQL> drop user johny; 






这是一个基本示例,用户。它可能更复杂。上面我们创建了一个用户,它的对象存储在数据库的默认表空间中。要拥有数据库整理,我们应该将用户对象放置到自己的空间(表空间是数据库中可以包含模式对象的空间分配)。



显示已创建的表空间:

  SQL>从dba_tablespaces中选择tablespace_name; 

创建表空间:

  SQL> create tablespace johny_tabspace 
2 datafile'johny_tabspace.dat'
3 size 10M autoextend on;

创建临时表空间(Temporaty表空间是数据库中可以包含暂时数据的空间分配只有在会话期间,这个临时数据在进程或实例失败后无法恢复。):

  SQL>创建临时表空间johny_tabspace_temp 
2 tempfile'johny_tabspace_temp.dat'
3 size 5M autoextend on;

创建用户:

  SQL>创建用户johny 
2由1234确定
3默认表空间johny_tabspace
4临时表空间johny_tabspace_temp;

授予一些特权:

  SQL> grant create session to johny; 
SQL> grant create table to johny;
SQL>授予无限制表空间给johny;

以johny身份登录并检查他拥有的权限:

  SQL> select * from session_privs; 

PRIVILEGE
------------------------------------- ---
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE

使用create table特权,用户可以创建表:

  SQL> create table johny_table 
2(
3 id int not null,
4 text varchar2(1000),
5主键(id)
6);

插入资料:

  SQL> insert into johny_table(id,text)
2值(1,'这是一些文本。

选择:

 code> SQL> select * from johny_table; 

ID TEXT
--------------------------
1这是一些文本。

要获取DDL数据,您可以使用DBMS_METADATA包,它提供了一种方法,数据库字典作为XML或创建DDL,并提交XML以重新创建对象。
(在 http://www.dba-oracle.com/oracle_tips_dbms_metadata.htm的帮助下)



对于表格:

  SQL& set pagesize 0 
SQL> set long 90000
SQL> set feedback off
SQL> set echo off
SQL> SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)FROM USER_TABLES u;

结果:

 code> CREATE TABLEJOHNY。JOHNY_TABLE
(IDNUMBER(*,0)NOT NULL ENABLE,
TEXTVARCHAR2(1000),
(ID)
使用索引PCTFREE 10 INITRANS 2 MAXTRANS 255
存储(初始65536下一个1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST组1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACEJOHNY_TABSPACEENABLE
)部分创建立即
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
存储(初始65536下一个1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACEJOHNY_TABSPACE

对于索引:

  SQL> set pagesize 0 
SQL> set long 90000
SQL> set feedback off
SQL> set echo off
SQL> SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)FROM USER_INDEXES u;

结果:

 code> CREATE UNIQUE INDEXJOHNY。SYS_C0013353ONJOHNY。JOHNY_TABLE(ID)
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储(初始65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACEJOHNY_TABSPACE

详细信息:



DDL





DBMS_METADATA





架构对象





架构和用户之间的差异





特权





创建用户/模式





创建表空间





SQL Plus命令




I have applied for an internship in a company and as a question they have asked me to create a schema for their company with certain requirements and mail them the ddl file.i have installed oracle 11g express edition,but how do i create a new schema in oracle 11g?i have searched in the net for a solution but could understand what to do.and after creating a schema ,which file should i mail them?

解决方案

Generally speaking a schema in oracle is the same as an user. Oracle Database automatically creates a schema when you create a user. A file with the DDL file extension is an SQL Data Definition Language file.

Creating new user (using SQL Plus)

Basic SQL Plus commands:

  - connect: connects to a database
  - disconnect: logs off but does not exit
  - exit: exists

Open SQL Plus and log:

/ as sysdba

The sysdba is a role and is like "root" on unix or "Administrator" on Windows. It sees all, can do all. Internally, if you connect as sysdba, your schema name will appear to be SYS.

Create an user:

SQL> create user johny identified by 1234;

View all users and check if the user johny is there:

SQL> select username from dba_users;

If you try to login as johny now you would get an error:

ERROR:
ORA-01045: user JOHNY lacks CREATE SESSION privilege; logon denied

The user to login needs at least create session priviledge so we have to grant this privileges to the user:

SQL> grant create session to johny;

Now you are able to connect as the user johny:

username: johny
password: 1234

To get rid of the user you can drop it:

SQL> drop user johny;


That was basic example to show how to create an user. It might be more complex. Above we created an user who's objects are stored in the database default tablespace. To have database tidy we should place users objects to his own space (tablespace is an allocation of space in the database that can contain schema objects).

Show already created tablespaces:

SQL> select tablespace_name from dba_tablespaces;

Create tablespace:

SQL> create tablespace johny_tabspace
  2  datafile 'johny_tabspace.dat'
  3  size 10M autoextend on;

Create temporary tablespace (Temporaty tablespace is an allocation of space in the database that can contain transient data that persists only for the duration of a session. This transient data cannot be recovered after process or instance failure.):

SQL> create temporary tablespace johny_tabspace_temp
  2  tempfile 'johny_tabspace_temp.dat'
  3  size 5M autoextend on;

Create the user:

SQL> create user johny
  2  identified by 1234
  3  default tablespace johny_tabspace
  4  temporary tablespace johny_tabspace_temp;

Grant some privileges:

SQL> grant create session to johny;
SQL> grant create table to johny;
SQL> grant unlimited tablespace to johny;

Login as johny and check what privileges he has:

SQL> select * from session_privs;

PRIVILEGE
----------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE

With create table privilege the user can create tables:

SQL> create table johny_table
  2  (
  3     id int not null,
  4     text varchar2(1000),
  5     primary key (id)
  6  );

Insert data:

SQL> insert into johny_table (id, text)
  2  values (1, 'This is some text.');

Select:

SQL> select * from johny_table;

ID  TEXT
--------------------------
1   This is some text.

To get DDL data you can use DBMS_METADATA package that "provides a way for you to retrieve metadata from the database dictionary as XML or creation DDL and to submit the XML to re-create the object.". (with help from http://www.dba-oracle.com/oracle_tips_dbms_metadata.htm)

For table:

SQL> set pagesize 0
SQL> set long 90000
SQL> set feedback off
SQL> set echo off
SQL> SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;

Result:

  CREATE TABLE "JOHNY"."JOHNY_TABLE"
   (    "ID" NUMBER(*,0) NOT NULL ENABLE,
        "TEXT" VARCHAR2(1000),
         PRIMARY KEY ("ID")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "JOHNY_TABSPACE"  ENABLE
   ) SEGMENT CREATION IMMEDIATE
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "JOHNY_TABSPACE"

For index:

SQL> set pagesize 0
SQL> set long 90000
SQL> set feedback off
SQL> set echo off
SQL> SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;

Result:

  CREATE UNIQUE INDEX "JOHNY"."SYS_C0013353" ON "JOHNY"."JOHNY_TABLE" ("ID")
  PCTFREE 10 INITRANS 2 MAXTRANS 255
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "JOHNY_TABSPACE"

More information:

DDL

DBMS_METADATA

Schema objects

Differences between schema and user

Privileges

Creating user/schema

Creating tablespace

SQL Plus commands

这篇关于如何在oracle 11g中创建新模式/新用户?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆