-
在windows上安装Postgresql,安装空间数据库postgis引擎,创建可以存储空间点线面的数据库,解决could not ...
2019-04-26 21:18:14在windows上安装Postgresql,安装空间数据库postgis引擎,创建可以存储空间点线面的数据库,解决could not open extension control file问题前面问题描述比较长,喜欢吃快餐的帅哥美女可以跳过不看一、为什么要用到...在windows上安装Postgresql,安装空间数据库postgis引擎,创建可以存储空间点线面的数据库,解决could not open extension control file问题
前面问题描述比较长,喜欢吃快餐的帅哥美女可以跳过不看
一、为什么要用到Postgis空间数据库
本人是大三的学生,由于学院开设了GIS应用与开发的课程,而且给我们上课的老师强调了Postgis在这门课程当中的重要性,因此,我们需要人人在电脑上配置好Postgis的环境。老师给我们提供了OSGeo-live虚拟机,这个LUbuntu系统,官方的系统里面打包了我们课程学习需要用到的一切工具:如Postgresql、QGIS、GeoServer等,捣鼓这个官方的虚拟机可是费了我们好大的劲。我电脑性能不错(i7处理器+12G运行内存+480G固态),虚拟机还能正常启动和运行,我给虚拟机分了3G的内存,虚拟机运行起来还算流畅。因为我们上这门课主要用到的编程语言是java,然后用到了SSH的java EE框架,因此我电脑上还装了eclipse(这个工具自从我学java的时候就装了)和idea每次开启虚拟机以后,然后运行eclipse或者idea写jdbc代码从Postgis数据库取数据库,但是开发
二、为什么会想到在windows上装Postgis
说这个,一切都是出于开发效率的考量。还记得以前开发纯粹的跟GIS没有关系的Java EE系统,在windows上创建一个MySQL数据库,创建好表,打开eclipse集成开发环境,然后写代码直接连数据库,这一套流程简直行云流水。但是自从搞这个GIS开发,代码的执行就变得麻烦起来,我的代码执行过程有了以下几个步骤的演变:
1、在Windows上的eclipse里写好代码,然后把代码打成jar包或者是war包,拷贝到虚拟机共享文件里面,再从共享文件里面执行或者是移动到虚拟机的Tomcat里面运行, 一切都变得麻烦起来,有时候代码运行不出来,报了一个小错误,还需要改代码然后重新打包放到共享文件夹,再重复上面的运行过程,如果仅仅重复两遍那问题还不大,但是遇到那种报错不全,需要调试才能快速解决的问题,根本无法在外面改代码,改好多遍也无济于事,这简直就是在折磨人啊。
2、为了解决代码调试的问题,我模仿实验室老师安装的虚拟机(实验室的电脑可是高配的,16G运行内存,给虚拟机分了8G),也在自己的虚拟机里面装上了一个eclipse,调试果然方便多了,问题解决起来确实很快,但是写代码的时候着实难受,卡顿的感觉无处不在,代码提示也是延迟好久,没多久我决定再换方法。
3、根据老师提供的课程资料和我自己的百度搜索(期间花了将近一天时间,都是泪啊),最后将虚拟机的网卡设置成桥接模式,然后改了Postgresql的配置(两个配置文件 ,一个是pg_hba.conf,一个是postgresql.conf,配置方法这里不再赘述,咱们论坛有其他大佬写了),这才把宿主机和虚拟机的网络连通,最后将数据库连接的jdbc url的ip部分改成了虚拟机的ip,于是也能连接到Postgis数据库,完成了代码的运行,一切似乎还是挺顺利的。
可是问题终究还是出现了,桥接模式不太稳定,拔了网线就连不上数据库了,由于实验课上我得把电脑待到实验室,实验室又只能连无线网,我把桥接模式的宽带的网卡又换成无线的网卡(桥接的两种网卡如下图所示),连上无线网,重启虚拟机,代码也能运行。可是网线的插拔和无线网络的信号不稳定,我时而能连上虚拟机的数据库,时而不能连上让我苦恼万分。
有人会问我为什么不把网卡调成NAT或者其他模式,把ip调成固定的,然而我尝试了各种方法,诸如改/etc/network/interfaces、/etc/netplan/01-network-manager-all.yaml等等配置,还引入了net-manager和interfaces配置不能同时生效的问题,各种折腾都没有打通跟虚拟机的连接,就当我快要放弃的时候,还是挚友的告诉我桥接管用,我就试了下,果然能调通。
但是桥接也并不一定能百分之百能连上,我室友的电脑上就没起作用,一切按照我说的,他在宿主机上的eclipse里面写了代码然后跟数据库一连接就报错,错误内容就是xxx.xxx.xxx.xxx ip 拒绝了数据库的访问,但是postgresql的配置文件已经改了,并且虚拟机也重启了几回,都没能连上。最后他就放弃了这种方法,还是跟实验室机房的电脑一样,在虚拟机里面装eclispe写代码。还有班上一个同学的电脑配置不够(运行内存4G的办公本,因为内存不够只给虚拟机分了1G的内存),开了虚拟机以后非常卡,虚拟机里面还有跑了一个eclipse,她把代码发布到Tomcat启动到运行的过程得持续将近十分钟,这对于45分钟一节的实验课来说,简直效率低到了极点。
4、为了找到更好的开发体验和解决我室友和部分同学(电脑配置不够)运行代码慢的困惑,我特地研究了一下怎么在Windows上安装Postgresql,并扩展空间数据库(Postgis)引擎,我折腾了一个晚上,终于成功了,可以像之前连接MySQL数据库一样方便的连接Postgis数据库了,代码运行和调试,变得如此方便。另外我还从网上下载了QGIS、GeoServer Windows版(包括32位和64位的)。下载链接将贴在文末,首先讲一下安装和配置的一些细节。三、Postgresql数据库的安装
1、首先去Postgresql的官网下载Postgresql Windows对应的版本,根据自己系统的情况,选择64位或者32位。我下载是最新版的,如下图。
2、下载好之后就可以进行安装了,安装的时候最好关掉杀毒软件,杀毒软件可能会拦截部分安装,清除你的部分文件,我第一次安装的时候就被莫名其妙删了文件,然后登陆不上数据库。前面基本上都是next下一步,具体如下图所示。
安装好了,如下图所示,有个如选框勾选着,这里解释下,勾不勾的区别,我这里可是踩坑了,我当时是看着网上的教程安装的,教程里面说的是把这个勾去掉,我就真的去掉了,然后等我去创建空间数据库的时候就悲剧了(扩展的时候会报错,等下再说报什么错,另外说一下postgresql数据库是默认不支持空间数据类型的,需要扩展postgis引擎),因为我没有扩展空间数据库的依赖,所以我就创建不了空间数据表,不能导入之前从虚拟机里面导出的sql。而依赖的添加方法之一就是通过勾选这个复选框从系统的服务器下载安装。
大家可以通过勾选的方式安装依赖,如下图所示,下拉列表里面直接选第一个,然后下一个,
大家根据需求勾选下载,我这里勾选了两个,一个是jdbc驱动,一个是扩展到Postgis空间库的依赖安装文件,然后再下一个。
接下来会进行下载,下载好之后安装下就好了。
常用的依赖我都下载了,并且在文末附上了百度网盘链接,提供大家直接下载,就不用勾选下载了,如果大家网速快,也可以自己去勾选下载。
接下来,安装Postgis扩展引擎,如下图所示:
勾选create spatial database,点next下一步
输入自己刚才你装Postgresql的时候输入的账号和密码,点击next下一步进行安装
进度条走完了会有两个弹出框,都选是就行了
到此,Postgis引擎扩展的依赖就装好了。四、如何创建一个支持空间点线面存储的空间数据库?
下面跟大家说一下怎么登录到Postgis创建一个数据库,给这个数据库添加Postgis扩展功能,然后就可以创建空间数据表了。这里以我课设的数据库的创建的过程为例,给大家做演示。
4.1创建课设的数据库
首先打开开始菜单,找到Postgresql 下的pgAdmin,运行pgAdmin,如下图所示。
会自动打开浏览器,会看到一个Postgresql的网页管理工具,类似于老版本的软件图形化界面,如图所示,进去发现是英文的,讨厌英文的朋友可以点preference,在User language里面切换到简体中文。
刷新当前页即可看到中文操作页面了
用默认的postgres用户登录,输入用户名,即可连接到数据库。
由于我之前在虚拟机里面的Postgresql数据库导出的sql脚本是在user用户下创建和导出的,所以需要新建一个数据库登录的用户user,如下图所示。
设置账户user的密码,账户过期时间尽量设置得常一点,以免过期带来的错误。
将user账户的权限都打开,点击保存
看到账户列表里面多了一个user,即创建成功。
如下图点击左侧导航栏创建一个数据库服务器,即通过刚创建的user来连接到数据库
填写连接名称
填写连接的参数,主机地址为localhost,用户名为user,输入密码,其他参数默认即可,点保存
左侧导航栏出现刚创建的连接,创建成功,打开数据库,发现有postgis_25_sample这张表里面已经完成了扩展,仔细想想,这是安装了Postgis引擎扩展的结果,所以,后面创建我们自己的空间数据库只需以这张表作为模板,即可完成空间数据库的扩展。
接下来创建我们自己的数据库,因为要将postgis_25_sample这个数据库作为模板,所以首先要断开对这个库的连接,如下图:
点左侧导航栏的gisda连接,创建一个新的数据库,我课设的字母所以为ccgm_rhs,所以我就以此为数据库的名称,选择数据库的所有者为user
切换到定义里面,选择模板为postgis_25_samples,其他选项可以空着或者默认就行了,点保存。
至此课设的数据库创建好了。
注:如果不通过模板的方式创建空间数据库也是可以的,需要自己为数据库手动扩展Postgis引擎,接下来对此进行演示,首先找到我们Postgis的安装路径。如下图所示,psql.exe就是我们一会儿在黑窗口里面需要用到的。
打开黑窗口,cd到刚才psql.exe所在的目录,然后输入指令,psql -U user -W -d ccgm_rhs,输入口令,就会连接到相应的数据库,然后再输入指令create extension postgis;就可以完成扩展。
参数解释:
-U:用户名
-W:密码
-d:数据库名称
如果有安装postgis空间数据库引擎,那么数据库里面也不会有postgis_25_samples模板,并且黑窗口里面输入指令进行扩展会报如下如错误:
could not open extension control file “/usr/local/share/postgresql/extension/postgis.control”: No such file or directory4.2将课设中导出的sql脚本中的数据再导入到Windows上的Postgresql的ccgm_rhs数据库中。
这里我使用了网页端的图形化管理工具导入sql脚本进行了测试可是导入失败了,于是我又在黑窗口中输入了如下命令,结果导入成功。
打开网页的管理工具查看,数据库表已经导入成功,
查询表格数据,数据也正常显示,如下图所示。
最后我新建了一个java项目,用jdbc对Windows本地的Postgresql数据库进行了测试,需要导入jdbc驱动,数据能查询出来,测试成功。
五、闲扯一下
本人是狂热的编程爱好者,喜欢写代码,非常讨厌写文档,我知道要提升自己的能力,写文档是必不可少的,故想通过写博文的方式来提升自己的写作能力。这学期我们开了GIS开发与应用的课程,这门课综合性非常强,我们要学Postgis数据库的使用,OpenLayer、GeoServer、Java EE 的SSH框架,我的老师非常负责,作业压力很大,很多东西都要现学现用,不会用的东西就需要上网查找资料,其中我在CSDN上查找的次数最多,很多博主也给了我很大帮助,以此博文来宣告我伸手党生涯的结束,这篇博文只是个开始,以后会多写心得和体会来帮助新人少走弯路。有问题欢迎大家指正,请在下方评论区留言,我看到会及时回复的,谢谢各位。
六、下载链接
Postgresql、Postgis引擎、QGIS、GeoServer下载链接:
https://pan.baidu.com/s/1LtrLTTv1Ku8Np41X4dUmzQ 解压密码:im3w -
oracle数据库创建表空间创建用户操作x_oracle数据库怎么连接
2020-09-14 14:14:44答在建立用户的时候我们建议数据库管理员要指定用户的默认表空间因为我们在利用CREATE语句创建数据库对象如数据库表的时候其默认是存储在数据库的当前默认空间若不指定用户默认表空间的话则用户每次创建数据库对象的... -
PostgreSQL创建空间数据库并创建含有geometry类型的表
2020-09-06 16:23:39GIS数据库是用来存储空间数据的数据库,或者说是空间数据集合 GIS数据库可以实现对具有一定地理要素特征的相关控件数据集合的统一管理,空间数据紧密联系共同反映现实世界中某一区域内综合信息或专题信息间的联系,...GIS数据库是用来存储空间数据的数据库,或者说是空间数据集合
GIS数据库可以实现对具有一定地理要素特征的相关控件数据集合的统一管理,空间数据紧密联系共同反映现实世界中某一区域内综合信息或专题信息间的联系,主要应用于地理空间数据处理和分析
postgreSQL是一个功能强大的开源对象关系型数据库系统,他使用和扩展了SQL语言,并结合了许多安全存储和扩展最复杂数据工作负载的功能。
这里使用pgAdmin4图形管理工具。1、首先创建普通数据库。
可以在definition中设置信息,如下图所示
2、添加postgis扩展,使之成为支持空间类型的空间数据库create extension postgis
当然可以继续添加其他的空间扩展
create extension postgis_topology create extension addresss_standardizer create extension postgis_trigger_geocoder create extension fuzzystrmatch
到这里我们的数据库已经支持空间数据下面我们创建表,并进行数据插入
create table test(id int,geo geometry)
插入数据
insert into test(id,geo) values(1,point(12.32232442,43.2324535)::geometry)
查看插入数据
select * from test
这里的geo怎么是这个样子????
没关系,使用下列空间函数即可select st_astext(geo) from test
标准的wtk格式
空间数据主要分为点,线,多边形以他们的复合体,自然这里还有很多其他的空间函数帮助我们管理空间数据,我们下回再见。 -
db2 创建样本数据库_DB2:创建数据库和表空间
2021-01-26 21:24:483.1创建数据库DB2利用一个逻辑存储模型和一个物理存储模型来处理数据。用户操作的实际数据放在表中,用户并不知道数据的物理表示,称为数据的物理独立性。表放在表空间中,表空间是存放表的容器,一个表空间可以包含...3.1创建数据库
DB2利用一个逻辑存储模型和一个物理存储模型来处理数据。用户操作的实际数据放在表中,用户并不知道数据的物理表示,称为数据的物理独立性。
表放在表空间中,表空间是存放表的容器,一个表空间可以包含多个表,同时表空间物理上又对应着若干个表空间容器。容器被分配给表空间。表空间是作为逻辑设计中的表和物理设计中的容器之间的一个桥梁。
实例和数据库的关系是:
表空间是数据库中表数据与数据库之间的逻辑中间层,数据库中的物理空间组织为表空间的集合,而表空间是表的逻辑集合,每个表可以存储在一个或多个表空间中。在Windows上的最小存储单位是1KB。表空间连接了物理存储模型和逻辑存储模型,扮演了一个承上启下的角色。
CREATE DATABASE
MYDB;用于创建数据库,这个命令会创建许多文件,包括日志文件,配置信息,历史文件和3个默认的表空间。SYSCATSPACE,就是通常说的数据字典;TEMPSPACE1:DB2用来放置分组、排序、连接和重组中间结果的临时工作区域。USERSPACE1:存放索引用户对象(表、索引等)的地方
3.2表空间设计
在一个数据库中建立表空间,会将容器分配到表空间,并在数据库系统目录表中记录它的定义和属性,然后就可以在此表空间内创建表。默认的页大小是4KB。
创建用户表空间,
1、使用命令行来创建SMS表空间:CREATE TABLESPACE
MANAGED BY SYSTEM USING
('')
2、使用命令行来创建DMS表空间:CREATE TABLESPACE
MANAGED BY DATABASE USING
(DEVICE|FILE'')
3、用命令行来创建自动存储表空间:CREATE TABLESPACE
或者CREATE TABLESPACE
MANAGED BY AUTOMATIC
STORAGE
系统临时表空间:用来存储分组、排序、连接、重组、创建索引等中间结果。
创建系统临时表空间,CREATE SYSTEM TEMPORARY TABLESPACE NAME;
查看表空间:list tablespaces [show detail]
3.3缓冲池
缓冲池指的是从磁盘读取表和索引数据时,数据库管理器分配的是用于高速缓存这些表或者索引数据的内存区域。每个DB2数据库都必须具有至少一个缓冲池。数据库中的数据访问都要经过缓冲池才能进行,不管是读还是写。创建缓冲池:CREATE
BUFFERPOOL BP3 SIZE 2000 PAGESIZE
8K。使用多个用户表空间的最重要原因是管理缓冲池的命中率。一个表空间只能与一个缓冲池相关联,而一个缓冲池则可用于多个表空间。
-
数据库空间创建
2010-12-06 12:54:00一、简介 创建一个新数据库及存储该数据库的文件,或从先前创建的数据库的文件中附加数据库。 二、语法 CREATE DATABASE database_name [ ON [ ...一、简介
创建一个新数据库及存储该数据库的文件,或从先前创建的数据库的文件中附加数据库。
二、语法
CREATE DATABASE database_name
[ ON
[ < filespec > [ ,...n ] ]
[ , < filegroup > [ ,...n ] ]
]
[ LOG ON { < filespec > [ ,...n ] } ]
[ COLLATE collation_name ]
[ FOR LOAD | FOR ATTACH ]
< filespec > ::=
[ PRIMARY ] [ NAME = logical_file_name , ]
(
FILENAME = 'os_file_name'
[ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] ) [ ,...n ]
< filegroup > ::=
FILEGROUP filegroup_name < filespec > [ ,...n ]
三、参数
database_name
新数据库的名称。数据库名称在服务器中必须唯一,并且符合标识符的规则。database_name 最多可以包含 128 个字符,除非没有为日志指定逻辑名。如果没有指定日志文件的逻辑名,则 Microsoft® SQL Server™ 会通过向 database_name 追加后缀来生成逻辑名。该操作要求 database_name 在 123 个字符之内,以便生成的日志文件逻辑名少于 128 个字符。
ON
指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。该关键字后跟以逗号分隔的 <filespec> 项列表,<filespec> 项用以定义主文件组的数据文件。主文件组的文件列表后可跟以逗号分隔的 <filegroup> 项列表(可选),<filegroup> 项用以定义用户文件组及其文件。
n
占位符,表示可以为新数据库指定多个文件。
LOG ON
指定显式定义用来存储数据库日志的磁盘文件(日志文件)。该关键字后跟以逗号分隔的 <filespec> 项列表,<filespec> 项用以定义日志文件。如果没有指定 LOG ON,将自动创建一个日志文件,该文件使用系统生成的名称,大小为数据库中所有数据文件总大小的 25%。
FOR LOAD
支持该子句是为了与早期版本的 Microsoft SQL Server 兼容。数据库在打开 dbo use only 数据库选项的情况下创建,并且将其状态设置为正在装载。SQL Server 7.0 版中不需要该子句,因为 RESTORE 语句可以作为还原操作的一部分重新创建数据库。
FOR ATTACH
指定从现有的一组操作系统文件中附加数据库。必须有指定第一个主文件的 <filespec> 条目。至于其它 <filespec> 条目,只需要与第一次创建数据库或上一次附加数据库时路径不同的文件的那些条目。必须为这些文件指定 <filespec> 条目。附加的数据库必须使用与 SQL Server 相同的代码页和排序次序创建。应使用 sp_attach_db 系统存储过程,而不要直接使用 CREATE DATABASE FOR ATTACH。只有必须指定 16 个以上的 <filespec> 项目时,才需要使用 CREATE DATABASE FOR ATTACH。
如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。
collation_name
指定数据库的默认排序规则。排序规则名称既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果没有指定排序规则,则将 SQL Server 实例的默认排序规则指派为数据库的排序规则。
有关 Windows 和 SQL 排序规则名称的更多信息,请参见 COLLATE。
PRIMARY
指定关联的 <filespec> 列表定义主文件。主文件组包含所有数据库系统表。还包含所有未指派给用户文件组的对象。主文件组的第一个 <filespec> 条目成为主文件,该文件包含数据库的逻辑起点及其系统表。一个数据库只能有一个主文件。如果没有指定 PRIMARY,那么 CREATE DATABASE 语句中列出的第一个文件将成为主文件。
NAME
为由 <filespec> 定义的文件指定逻辑名称。如果指定了 FOR ATTACH,则不需要指定 NAME 参数。
logical_file_name
用来在创建数据库后执行的 Transact-SQL 语句中引用文件的名称。logical_file_name 在数据库中必须唯一,并且符合标识符的规则。该名称可以是字符或 Unicode 常量,也可以是常规标识符或定界标识符。
FILENAME
为 <filespec> 定义的文件指定操作系统文件名。
'os_file_name'
操作系统创建 <filespec> 定义的物理文件时使用的路径名和文件名。os_file_name 中的路径必须指定 SQL Server 实例上的目录。os_file_name 不能指定压缩文件系统中的目录。
如果文件在原始分区上创建,则 os_file_name 必须只指定现有原始分区的驱动器字母。每个原始分区上只能创建一个文件。原始分区上的文件不会自动增长;因此,os_file_name 指定原始分区时,不需要指定 MAXSIZE 和 FILEGROWTH 参数。
SIZE
指定 <filespec> 中定义的文件的大小。如果主文件的 <filespec> 中没有提供 SIZE 参数,那么 SQL Server 将使用 model 数据库中的主文件大小。如果次要文件或日志文件的 <filespec> 中没有指定 SIZE 参数,则 SQL Server 将使文件大小为 1 MB。
size
<filespec> 中定义的文件的初始大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。size 的最小值为 512 KB。如果没有指定 size,则默认值为 1 MB。为主文件指定的大小至少应与 model 数据库的主文件大小相同。
MAXSIZE
指定 <filespec> 中定义的文件可以增长到的最大大小。
max_size
<filespec> 中定义的文件可以增长到的最大大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。默认值为 MB。指定一个整数,不要包含小数位。如果没有指定 max_size,那么文件将增长到磁盘变满为止
说明 在磁盘即将变满时,Microsoft Windows NT® S/B 系统日志会警告 SQL Server 系统管理员。
UNLIMITED
指定 <filespec> 中定义的文件将增长到磁盘变满为止。
FILEGROWTH
指定 <filespec> 中定义的文件的增长增量。文件的 FILEGROWTH 设置不能超过 MAXSIZE 设置。
growth_increment
每次需要新的空间时为文件添加的空间大小。指定一个整数,不要包含小数位。0 值表示不增长。该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果指定 %,则增量大小为发生增长时文件大小的指定百分比。如果没有指定 FILEGROWTH,则默认值为 10%,最小值为 64 KB。指定的大小舍入为最接近的 64 KB 的倍数。
四、注释
使用一条 CREATE DATABASE 语句即可创建数据库以及存储该数据库的文件。SQL Server 分两步实现 CREATE DATABASE 语句: SQL Server 使用 model 数据库的复本初始化数据库及其元数据。
然后,SQL Server 使用空页填充数据库的剩余部分,除了包含记录数据库中空间使用情况以外的内部数据页。 因此,model 数据库中任何用户定义对象均复制到所有新创建的数据库中。可以向 model 数据库中添加任何对象,例如表、视图、存储过程、数据类型等,以将这些对象添加到所有数据库中。
每个新数据库都从 model 数据库继承数据库选项设置(除非指定了 FOR ATTACH)。例如,在 model 和任何创建的新数据库中,数据库选项 select into/bulkcopy 都设置为 OFF。如果使用 ALTER DATABASE 更改 model 数据库的选项,则这些选项设置会在创建的新数据库中生效。如果在 CREATE DATABASE 语句中指定了 FOR ATTACH,则新数据库将继承原始数据库的数据库选项设置。
一台服务器上最多可以指定 32,767 个数据库。
有三种类型的文件用来存储数据库: 主文件包含数据库的启动信息。主文件还可以用来存储数据。每个数据库都包含一个主文件。
次要文件保存所有主要数据文件中容纳不下的数据。如果主文件大到足以容纳数据库中的所有数据,就不需要有次要数据文件。而另一些数据库可能非常大,需要多个次要数据文件,也可能使用多个独立磁盘驱动器上的次要文件,以将数据分布在多个磁盘上。
事务日志文件保存用来恢复数据库的日志信息。每个数据库必须至少有一个事务日志文件(尽管可以有多个)。事务日志文件最小为 512 KB。 每个数据库至少有两个文件,一个主文件和一个事务日志文件。
尽管 'os_file_name' 可以是任何有效的操作系统文件名,但如果使用以下建议的扩展名,则可以更加清楚地反映文件的用途。
文件类型 文件扩展名 主要数据文件 .mdf 次要数据文件 .ndf 事务日志文件 .ldf 说明 创建用户数据库后,应备份 master 数据库。
SIZE、MAXSIZE 和 FILEGROWTH 参数中不能指定分数。若要在 SIZE 参数中指定以兆字节为单位的分数,请将该数字乘以 1,024 转换成千字节。例如,指定 1,536 KB 而不要指定 1.5 MB(1.5 乘以 1,024 等于 1,536)。
如果仅指定 CREATE DATABASE database_name 语句而不带其它参数,那么数据库的大小将与 model 数据库的大小相等。
所有数据库都至少包含一个主文件组。所有系统表都分配在主文件组中。数据库还可以包含用户定义的文件组。如果使用指定用户定义文件组的 ON filegroup 子句创建对象,则该对象的所有页均从指定的文件组中分配。所有没有使用 ON filegroup 子句(或者使用 ON DEFAULT 子句)创建的用户对象的页将从默认文件组分配。数据库首次创建时,主文件组就是默认文件组。可以使用 ALTER DATABASE 将用户定义的文件组指定为默认文件组:
ALTER DATABASE database_name MODIFY FILEGROUP filegroup_name DEFAULT 每个数据库都有一个所有者,可在该数据库中执行某些特殊的活动。所有者是创建数据库的用户。可以使用 sp_changedbowner 更改数据库所有者。
若要为 SQL Server 实例显示某个数据库或所有数据库的报表,请执行 sp_helpdb。若要显示有关数据库中所占用空间的报表,请使用 sp_spaceused。若要显示有关数据库中文件组的报表,请使用 sp_helpfilegroup,使用 sp_helpfile 可显示数据库中文件的报表。
早期版本的 SQL Server 使用 DISK INIT 语句在执行 CREATE DATABASE 语句之前为数据库创建文件。为了与早期版本的 SQL Server 向后兼容,CREATE DATABASE 语句也可以在用 DISK INIT 创建的文件或设备上创建新数据库。有关更多信息,请参见 SQL Server 向后兼容性详细信息。
五、权限
CREATE DATABASE 的权限默认地授予 sysadmin 和 dbcreator 固定服务器角色的成员。sysadmin 和 securityadmin 固定服务器角色的成员可以将 CREATE DATABASE 权限授予其它登录。sysadmin 和 dbcreator 固定服务器角色的成员可以为 dbcreator 角色添加其它登录。CREATE DATABASE 权限必须显式授予,而不能通过 GRANT ALL 语句授予。
CREATE DATABASE 权限通常限于少数登录,以便控制对运行 SQL Server 实例的计算机上磁盘的使用。
六、示例
A. 创建指定数据文件和事务日志文件的数据库 下面的示例创建名为 Sales 的数据库。因为没有使用关键字 PRIMARY,第一个文件 (Sales_dat) 成为主文件。因为 Sales_dat 文件的 SIZE 参数没有指定 MB 或 KB,因此默认为 MB,以兆字节为单位进行分配。Sales_log 文件以兆字节为单位进行分配,因为 SIZE 参数中显式声明了 MB 后缀。
USE master
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
FILENAME = 'c:/program files/microsoft sql server/mssql/data/saledat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'Sales_log',
FILENAME = 'c:/program files/microsoft sql server/mssql/data/salelog.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
B. 指定多个数据文件和事务日志文件创建数据库
下面的示例使用三个 100 MB 的数据文件和两个 100 MB 的事务日志文件创建了名为 Archive 的数据库。主文件是列表中的第一个文件,并使用 PRIMARY 关键字显式指定。事务日志文件在 LOG ON 关键字后指定。注意 FILENAME 选项中所用的文件扩展名:主要数据文件使用 .mdf,次要数据文件使用 .ndf,事务日志文件使用 .ldf。
USE master GOCREATE DATABASE Archive ONPRIMARY ( NAME = Arch1, FILENAME = 'c:/program files/microsoft sql server/mssql/data/archdat1.mdf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20),( NAME = Arch2, FILENAME = 'c:/program files/microsoft sql server/mssql/data/archdat2.ndf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20),( NAME = Arch3, FILENAME = 'c:/program files/microsoft sql server/mssql/data/archdat3.ndf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20)LOG ON ( NAME = Archlog1, FILENAME = 'c:/program files/microsoft sql server/mssql/data/archlog1.ldf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20),( NAME = Archlog2, FILENAME = 'c:/program files/microsoft sql server/mssql/data/archlog2.ldf', SIZE = 100MB, MAXSIZE = 200, FILEGROWTH = 20)GO C. 创建简单的数据库
本例创建名为 Products 的数据库,并指定单个文件。指定的文件成为主文件,并会自动创建一个 1 MB 的事务日志文件。因为主文件的 SIZE 参数中没有指定 MB 或 KB,所以主文件将以兆字节为单位进行分配。因为没有为事务日志文件指定 <filespec>,所以事务日志文件没有 MAXSIZE,可以增长到填满所有可用的磁盘空间为止。
USE master
GO
CREATE DATABASE Products
ON
( NAME = prods_dat,
FILENAME = 'c:/program files/microsoft sql server/mssql/data/prods.mdf',
SIZE = 4,
MAXSIZE = 10,
FILEGROWTH = 1 )
GO
D. 不指定文件创建数据库
下面的示例创建名为 mytest 的数据库,并创建相应的主文件和事务日志文件。因为该语句没有 <filespec> 项,所以主数据库文件的大小为 model 数据库主文件的大小。事务日志文件的大小为 model 数据库事务日志文件的大小。因为没有指定 MAXSIZE,文件可以增长到填满所有可用的磁盘空间为止。
CREATE DATABASE mytest
E. 不指定 SIZE 创建数据库
下面的示例创建名为 products2 的数据库。文件 prods2_dat 将成为主文件,大小等于 model 数据库中主文件的大小。事务日志文件会自动创建,其大小为主文件大小的 25% 或 512 KB 中的较大值。因为没有指定 MAXSIZE,文件可以增长到填满所有可用的磁盘空间为止。
USE master
GO
CREATE DATABASE Products2
ON
( NAME = prods2_dat,
FILENAME = 'c:/program files/microsoft sql server/mssql/data/prods2.mdf' )
GO
F. 使用文件组创建数据库
下面的示例使用三个文件组创建名为 sales 的数据库: 主文件组包含文件 Spri1_dat 和 Spri2_dat。指定这些文件的 FILEGROWTH 增量为 15%。
名为 SalesGroup1 的文件组包含文件 SGrp1Fi1 和 SGrp1Fi2。
名为 SalesGroup2 的文件组包含文件 SGrp2Fi1 和 SGrp2Fi2。
CREATE DATABASE Sales ON PRIMARY( NAME = SPri1_dat, FILENAME = 'c:/program files/microsoft sql server/mssql/data/SPri1dat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 15% ),( NAME = SPri2_dat, FILENAME = 'c:/program files/microsoft sql server/mssql/data/SPri2dt.ndf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 15% ),FILEGROUP SalesGroup1 ( NAME = SGrp1Fi1_dat, FILENAME = 'c:/program files/microsoft sql server/mssql/data/SG1Fi1dt.ndf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ),( NAME = SGrp1Fi2_dat, FILENAME = 'c:/program files/microsoft sql server/mssql/data/SG1Fi2dt.ndf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ),FILEGROUP SalesGroup2 ( NAME = SGrp2Fi1_dat, FILENAME = 'c:/program files/microsoft sql server/mssql/data/SG2Fi1dt.ndf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ),( NAME = SGrp2Fi2_dat, FILENAME = 'c:/program files/microsoft sql server/mssql/data/SG2Fi2dt.ndf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 )LOG ON( NAME = 'Sales_log', FILENAME = 'c:/program files/microsoft sql server/mssql/data/salelog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB )GO G. 附加数据库
示例 B 创建一个包含下列物理文件的名为 Archive 的数据库:
c:/program files/microsoft sql server/mssql/data/archdat1.mdf
c:/program files/microsoft sql server/mssql/data/archdat2.ndf
c:/program files/microsoft sql server/mssql/data/archdat3.ndf
c:/program files/microsoft sql server/mssql/data/archlog1.ldf
c:/program files/microsoft sql server/mssql/data/archlog2.ldf
可以使用 sp_detach_db 存储过程分离该数据库,然后使用带有 FOR ATTACH 子句的 CREATE DATABASE 重新附加。
sp_detach_db Archive
GO
CREATE DATABASE Archive
ON PRIMARY (FILENAME = 'c:/program files/microsoft sql server/mssql/data/archdat1.mdf')
FOR ATTACH
GO
H. 使用原始分区
下面的示例使用原始分区创建名为 Employees 的数据库。执行语句时,原始分区必须存在,并且每个原始分区只能创建一个文件。
USE master
GO
CREATE DATABASE Employees
ON
( NAME = Empl_dat,
FILENAME = 'f:',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'Sales_log',
FILENAME = 'g:',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
I. 使用已装入的驱动器
下面的示例使用指向原始分区的已装入驱动器创建名为 Employees 的数据库。此功能只在 Microsoft® Windows® 2000 Server 中才可用。.执行语句时必须已经存在已装入的驱动器和原始分区,并且每个原始分区上只能有一个文件。当在已装入的驱动器上创建数据库文件时,必须用尾随反斜线结束驱动器路径。
USE master
GO
CREATE DATABASE Employees
ON
( NAME = Empl_dat,
FILENAME = 'd:/sample data dir/',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = 'Sales_log',
FILENAME = 'd:/sample log dir/',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )
GO
-
python创建数据库表空间_oracle创建表空间
2020-12-16 17:02:19ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间...因此,在创建对象之前,首先要分配存储空间.分配存储,就要创建表空间:创建表空间示例如下:CREATE TABLESPACE "SAMPLE"LOGGINGDATAFILE '... -
创建数据库-存储空间-用户-权限设置 (初学)
2011-08-04 14:55:031. 创建数据库 有待补充... 2. 创建表空间 mytest 程序 -> Oracle > Enterprise Manager Console -> 独立启动 -> sys 用户 sysdba 身份登录 ,并 选择 ... -
创建和使用数据库
2017-12-15 13:47:00创建和使用数据库 创建数据库:CREATE DATABASE 数据库名; ( 数据库名在服务器中必须是唯一的,并且符合标识符规则) 连接到数据库:USE 数据库名;...每个TINYINT类型的数据占用1个字节的存储空间。 ... -
达梦数据库创建表空间
2020-04-12 20:41:27达梦数据库的数据是存储在表空间下的。 创建表空间时需要指定表空间名和拥有的数据文件列表。 通过图形化界面在一个表空间下可以添加多个.dbf文件,其实,通过命令方式也可以创建一个表空间拥有多个.dbf文件,比如... -
创建数据库、创建表空间和用户权限管理
2018-09-20 19:35:541、数据库存储结构的组成 表空间在Oracle 11g中被分为以下3类: 表空间的目的: Oracle 11g版本默认创建的主要表空间: 2、SQL语言介绍 3、创建表空间 (1)调整表空间大小 (2)改变表空间的读写状态 (3)... -
Oracle数据库创建表空间,创建用户操作
2017-09-11 15:34:00因为我们在利用CREATE语句创建数据库对象,如数据库表的时候,其默认是存储在数据库的当前默认空间。若不指定用户默认表空间的话,则用户每次创建数据库对象的时候,都要指定表空间,显然,这并不是很合理。 另外... -
创建与管理数据库
2017-09-07 23:17:08第4章 创建与管理数据库 ...减少数据的冗余度,节省数据的存储空间; 具有较高的数据独立性和易扩充性; 实现数据资源的充分共享。 数据库系统、数据库管理系统、关系数据库的介绍 数据 -
oracle数据库创建表空间,创建用户操作
2016-11-17 15:39:00因为我们在利用CREATE语句创建数据库对象,如数据库表的时候,其默认是存储在数据库的当前默认空间。若不指定用户默认表空间的话,则用户每次创建数据库对象的时候,都要指定表空间,显然,这并不是很合理。 另外... -
第04章Oracle数据库创建与表空间维护x_db2创建表空间命令
2020-06-11 02:44:18第4章 Oracle数据库创建与表空间维护;第4章 Oracle数据库创建与表空间维护 ; 必须完整地建立一个数据库的物理结构逻辑结构内存结构和进程结构; 规划数据库的文件存储位置 考虑数据生存期数据管理特性 分散存储I/O争... -
深入浅析Oracle数据库管理之创建和删除数据库
2020-12-16 12:12:03Oracle数据库的数据文件(扩展名为DBF的文件)是用于保存数据库中数据的文件,系统数据、数据字典数据、临时数据、索引数据、应用数据等都物理地存储在数据文件中。用户对数据库中数据的操作,例如数据的插入、删除... -
《MySQL入门很简单》学习笔记(5)之第5章操作数据库(关键词:数据库/创建数据库/删除数据库/存储引擎)
2017-08-31 23:46:585.1 创建数据库 创建数据库是指在数据库系统中划分一块空间,用来存储相应的数据。 这是进行表操作的基础,也是进行数据库管理的基础。 在MySQL中,创建数据库须通过SQL语句CREATE DATABASE实现的。 语法: ... -
Oracle 19 创建数据库、表空间
2020-12-03 10:22:27Oracle19c创建数据库与表空间 一、创建数据库 1、打开Database Configuration Assistant 2、数据库操作:选择“穿件数据库”,并下一步 3、创建模式:选择“高级配置”,并下一步 4、部署类型:数据库类型默认... -
达梦数据库创建表空间和用户
2020-09-28 15:38:36达梦数据库默认使用SYSDBA用户和默认表空间进行数据库操作。但是对于业务系统开发来说,使用自定义普通表空间和用户保证数据的区分。 表空间:表空间就如同创建了一个文件夹。创建一个单独的文件夹给你来专门放DM... -
Oracle19c创建数据库与表空间
2020-01-20 15:36:08一、创建数据库 1、打开Database Configuration Assistant 2、数据库操作:选择“穿件数据库”,并下一步 3、创建模式:选择“高级配置”,并下一步 4、部署类型:数据库类型默认“单实例数据库”即可,模板选择... -
存储JSON数据库TrivialDB.zip
2019-07-17 02:44:18创建命名空间:var trivialdb = require('trivialdb'); // Create a namespace var ns = triviadb.ns('test-ns'); // Create a namespace with some options var ns = triviadb.ns('test-ns', ... -
创建oracle数据库的表空间和用户
2020-09-18 11:37:31PlSQL创建oracle数据库的表空间和用户,并授权 创建表空间 说明:datafile是指定创建位置,指向oracle数据库的默认位置; autoextend 设置容量为自动增长,50M是自增的大小 create tablespace TEST datafile 'E:/app... -
Oraclec创建数据库表空间范例
2017-08-31 15:54:50oralce数据库创建表空间范例 首先创建一个临时表空间,为什么要创建它呢? 表空间:此空间是用来进行数据存储的(表、function、存储过程等),所以是实际物理存储区域。 临时表空间:主要用途是在数据库进行排序... -
达梦数据库之创建表空间和用户
2020-09-26 21:53:37达梦数据库创建表空间的语法是 CREATE TABLESPACE <表空间名> <数据文件子句>[<数据页缓冲池子句>][<存储加密子句>] <数据文件子句> ::= DATAFILE <文件说明项>{,< -
达梦数据库查看对象的存储空间信息
2020-03-07 14:20:26达梦数据库为了展示所有物理对象(文件、页)和逻辑对象(表空间、簇、段)的存储空间信息。通过 DBMS_SPACE包来获取表空间(不包含HUGE表空间)、文件、页、簇、段的内容。 使用包内的过程和函数之前,如果还未... -
2 Day DBA-管理Oracle实例-执行常见的数据库存储任务-创建表空间
2014-01-28 15:01:16可以创建表空间来存储用户数据,而不是所有的数据都存储在USERS表空间中。 建立表空间的原因: n 对于特定的用户、用户组和应用程序,把所有应用程序数据存储存储在独立的表空间中、设置表空间进行... -
数据库创建
2015-07-21 17:40:19表空间是逻辑上用于存储数据库表的,创建用户需给该用户执行默认表空间,否则每次创建表都需手工指定表空间。 表空间作用: 控制用户所占用的表空间配额,主要是限制用户可使用的磁盘空间。 控制数据库所占用的磁盘... -
创建数据库的表空间
2017-04-24 19:20:23--创建表空间JAVAKC create tablespace JAVAKC datafile 'F:\app\lenovo\oradata\orcl\JAVAKC.DBF' size 10M --存储地址,初始大小10M autoextend on next 10M maxsize unlimited
-
Python脚本项目源码-快递查询系统
-
NFS 实现高可用(DRBD + heartbeat)
-
FTP 文件传输服务
-
Glasterfs 分布式网络文件系统
-
【Python-随到随学】 FLask第一周
-
Python小游戏源码-乒乓球对战游戏源码
-
NoSQL-01.docx
-
洛谷P1914 小书童——凯撒密码经典解法
-
Python脚本项目源码-桌面宠物
-
【动态规划】Lintcode 110. 最小路径和
-
2. SQL语句学习
-
基于python的dango框架购物商城毕业设计毕设源代码使用教程
-
[小雨学编程之C#] 描述运算意图的句子:表达式
-
【硬核】一线Python程序员实战经验分享(1)
-
Python小游戏源码-植物大战僵尸项目源码
-
2021 PHP租车系统 毕业设计 毕设源码 源代码使用教程
-
OGRE学习全攻略(包括中文资料,教程,脚本手册等)
-
Python小游戏源码-外星人入侵游戏源码
-
LVS + Keepalived 实现 MySQL 负载均衡与高可用
-
使用 Linux 平台充当 Router 路由器