视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ArcSDE10.2.1forOracle12c的建库模式
2020-11-09 07:17:46 责编:小采
文档


前面我们已经介绍了怎么在Oracle12c环境下创建Geodatabase10.2.1,但是这些都是在默认环境下进行的建库,那么如果用户希望新创建一个PDB,然后再在新创建的PDB上创建ArcSDE地理数据库,而且用户希望再创建一个普通的SDE数据库用户该怎么操作呢? 注意:以下

前面我们已经介绍了怎么在Oracle12c环境下创建Geodatabase10.2.1,但是这些都是在默认环境下进行的建库,那么如果用户希望新创建一个PDB,然后再在新创建的PDB上创建ArcSDE地理数据库,而且用户希望再创建一个普通的SDE数据库用户该怎么操作呢?

注意:以下操作都是在用户使用PDB基础上,鉴于PDB收费,如果用户使用非PDB的Oracle实例,那么在相关操作与Oracle11g版本基本一致。

用户可以不勾选Create as Container database。就不创建PDB了。



测试环境:

Linux 5.5、Oracle12.1.0.1 ( CDB:orcl PDB:pdborcl)、ArcGIS10.2.1


你知道吗?
Oracle 12c 数据库的多租户功能将单独收费,售价为 1.75万美元/处理器,而企业版 12c数据库的售价仍为 4.75 万美元/处理器。

1:创建一个新的PDB:pdbsde

创建一个新的PDB有多种创建方式,我们使用的方式是使用PDB的Seed创建PDB


我们需要连接CDB的SYS用户,使用CREATE PLUGGABLE DATABASE语句来创建PDB

SQL> CREATE PLUGGABLE DATABASE pdbsde ADMIN USER sdeadmin IDENTIFIED BY sdeadmin
 2 STORAGE (MAXSIZE 2G MAX_SHARED_TEMP_SIZE 100M) DEFAULT TABLESPACE pdbsde
DATAFILE '/home/oracle/app/oracle/oradata/orcl/pdbsde/pdbsde.dbf' SIZE 500M AUTOEXTEND ON
 3 4 PATH_PREFIX = '/home/oracle/app/oracle/oradata/orcl/pdbsde/'
 5 FILE_NAME_CONVERT = ('/home/oracle/app/oracle/oradata/orcl/pdbseed/',
 6 '/home/oracle/app/oracle/oradata/orcl/pdbsde/');


Pluggable database created.
相关的参数解释请参考:


--------------------------------------------------------------------------------------------

Blog: http://blog.csdn.net/linghe301
Weibo: http://www.weibo.com/linghe301
--------------------------------------------------------------------------------------------

创建好PDB之后,我们来查看一下PDB的状态信息,如下所示,新创建的PDBSDE是Mounted状态,我们需要手动打开,然后查看一下数据文件的变化。

SQL> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;

 CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
 2 4062262812 PDB$SEED READ ONLY
 3 2266793495 PDBORCL READ WRITE
 4 323980054 PDBSDE MOUNTED

SQL> alter pluggable database pdbsde open;

Pluggable database altered.

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/home/oracle/app/oracle/oradata/orcl/system01.dbf
/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf
/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf
/home/oracle/app/oracle/oradata/orcl/pdbseed/system01.dbf
/home/oracle/app/oracle/oradata/orcl/users01.dbf
/home/oracle/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf
/home/oracle/app/oracle/oradata/orcl/pdborcl/system01.dbf
/home/oracle/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf
/home/oracle/app/oracle/oradata/orcl/pdborcl/SAMPLE_SCHEMA_users01.dbf
/home/oracle/app/oracle/oradata/orcl/pdborcl/example01.dbf
/home/oracle/app/oracle/product/12.1.0/dbhome_1/dbs/sde01

NAME
--------------------------------------------------------------------------------
/home/oracle/app/oracle/oradata/orcl/esri.dbf
/home/oracle/app/oracle/oradata/orcl/pdborcl/esri.dbf
/home/oracle/app/oracle/oradata/orcl/pdborcl/esri2.dbf
/home/oracle/app/oracle/oradata/orcl/pdbsde/system01.dbf
/home/oracle/app/oracle/oradata/orcl/pdbsde/sysaux01.dbf
/home/oracle/app/oracle/oradata/orcl/pdbsde/pdbsde.dbf

17 rows selected.

SQL>

接下来,我们使用SYS用户连接PDBSDE,创建SDE的表空间数据问题(由于如果使用ArcGIS10.2.1 for Desktop的Create Enterprise Geodatabase创建的SDE表空间文件默认存储在/home/oracle/app/oracle/product/12.1.0/dbhome_1/dbs/sde01路径下,但是该文件并不能明确看出该文件是由CDB或者哪一个PDB创建的,所以建议用户手动创建SDE数据文件,并指定相关的PDB名称,如/home/oracle/app/oracle/oradata/ora/pdbsde/

SQL> conn sys/oracle@192.168.220.203/pdbsde as sysdba
Connected.
SQL> CREATE SMALLFILE TABLESPACE SDE DATAFILE '/home/oracle/app/oracle/oradata/orcl/pdbsde/sde.dbf' SIZE 1000M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO DEFAULT NOCOMPRESS
 2 ;

Tablespace created.
创建之后,我们就可以使用创建地理数据库工具来创建存储在PDBSDE下的地理数据库

创建完毕之后,我们就可以使用sde用户进行连接了。

--------------------------------------------------------------------------------------------

Blog: http://blog.csdn.net/linghe301
Weibo: http://www.weibo.com/linghe301
--------------------------------------------------------------------------------------------

2:前面也提到了,用户希望创建自己业务数据的表空间以及相关用户,那么假设用户创建了ESRI表空间,以及所属该表空间的test2用户。

SQL> conn sys/oracle@192.168.220.203/pdbsde as sysdba
Connected.
SQL> CREATE SMALLFILE TABLESPACE SDE DATAFILE '/home/oracle/app/oracle/oradata/orcl/pdbsde/sde.dbf' SIZE 1000M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO DEFAULT NOCOMPRESS
 2 ;

Tablespace created.

SQL>
SQL> CREATE SMALLFILE TABLESPACE ESRI DATAFILE '/home/oracle/app/oracle/oradata/orcl/pdbsde/esri.dbf' SIZE 100M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO DEFAULT NOCOMPRESS;

Tablespace created.

表空间创建之后,我们就习惯的使用PL/SQL等Oracle客户端软件创建相关的数据库用户test2,赋予Connect和Resouce等角色。

但是,通过ArcCatalog连接test2用户,创建要素类系统提示如下错误:ORA-01950


我们查看一下Ora-01950错误

SQL> !oerr ora 01950
01950, 00000, "no privileges on tablespace '%s'"
// *Cause: User does not have privileges to allocate an extent in the
// specified tablespace.
// *Action: Grant the user the appropriate system privileges or grant the user
// space resource on the tablespace.
错误提示,该用户没有对表空间ESRI分配Extent的权限,其实也就是没有赋予用户Quota权限。


Oracle 官网对quota的定义如下: A limit on a resource, such as a limit on the amount of database storage used by a database user. A database administrator can set tablespace quotas for each Oracle Database username。


quota是为了用户对表空间的使用,比如你用户test在tablespace SDE中的quota为10m,当用户test在tablespace SDE中的数据量达到10m后,无论你的tablespace SDE中有多少空间,test都无法再使用tablespace SDE了。


在Oracle11g以及以前版本,如果用户赋予resouce角色之后,系统会自动赋予对该用户所属默认表空间quota umlimited to表空间,但是Oracle12c之后,即使赋予resouce角色之后,系统是不会默认赋予quota权限了,需要用户手动赋予。


查看Oracle帮助也明确说明了该问题


http://docs.oracle.com/cd/E16655_01/network.121/e17607/release_changes.htm#DBSEG941

--------------------------------------------------------------------------------------------

Blog: http://blog.csdn.net/linghe301
Weibo: http://www.weibo.com/linghe301
--------------------------------------------------------------------------------------------

所以用户在创建新用户需要设置quota权限即可

方式一:

SQL> create user test2 identified by test2 DEFAULT TABLESPACE ESRI TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK quota unlimited on esri container=current;

User created.

SQL> grant connect,resource to test2;

Grant succeeded.
方式二:
SQL> create user test2 identified by test2 DEFAULT TABLESPACE ESRI TEMPORARY TABLESPACE TEMP ACCOUNT UNLOCK container=current;

User created.

SQL> grant connect,resource to test2;

Grant succeeded.
 
SQL> grant unlimited tablespace to test2;

Grant succeeded.
下面用户就可以使用test2用户来加载空间数据了



下面来看一下,各个CDB、PDB与用户的关系


从我们的测试环境可以看出,系统默认已经有一个CDB、PDBORCL,而且在PDBORCL里面创建了ArcSDE地理数据库,那么默认的SYS/SYSTEM用户是整个Oracle数据库的超级用户,它既可以操作CDB,又可以操作PDBORCL,而PDBORCL默认创建的SDE用户只能操作PDBORCL里面的SDE数据库,系统又新创建了一个PDBSDE,然后又创建了一个SDEADMIN的管理用户,默认的SDE用户和新创建的TEST2用户,那么这三个用户只能对PDBSDE进行操作,而不能管理PDBORCL。


其实Oracle12c的CDB和PDB可以类比CDB就是原来整个Oracle数据库,PDB就是数据库的一个实例,用户可以创建多个PDB,同样用户也可以在一个数据库中创建多个实例,但是每个实例都有自己的超级管理员,但是Oracle12c只需要一个CDB的管理员帐号就可以管理所有的PDB。

--------------------------------------------------------------------------------------------

Blog: http://blog.csdn.net/linghe301
Weibo: http://www.weibo.com/linghe301
--------------------------------------------------------------------------------------------


用户可以不勾选Create as Container database。就不创建PDB了。

下载本文
显示全文
专题