Centos7安装GBase8s数据库
方式1:GBase8s命令行交互安装
 命令行交互式安装,需要先解包GBase8sV8.7_AEE_2.0.1A2_2_RHEL6_x86_64.tar,然后利用root身份执行./ids_install进行软件交互式安装,我这里不详细介绍该方式。方式2:GBase8s命令行静默安装
 可以简单、快速的完成安装,相关配置参数都是使用的默认值,下面介绍该方式的安装操作。1.关闭firewalld防火墙和Selinux
#查看firwalld的状态
 systemctl status firewalld   #也可以执行 firewall-cmd --state#停止firewalld
 systemctl stop firewalld #禁用firewalld
 systemctl disable firewalld #查看Selinux状态
 getenforce#关闭Selinux
 vim /etc/selinux/config
 SELINUX=disabled#重启服务器、立即生效配置
 reboot2.系统参数调整优化
#系统级别的最大文件句柄数量调整
 cat /proc/sys/fs/file-max
 383676
 一般不同的系统版本,默认值会有差别,有的是383676,有的是592409,一般系统的默认值够用,不用修改,我这里永久性的调整为100万:
 vim /etc/sysctl.conf
 fs.file-max = 1000000#立即生效
 sysctl -p#查看用户的所有进程级别的限制
 ulimit  -a
 core file size          (blocks, -c) 0  //内核文件的大小限制
 data seg size           (kbytes, -d) unlimited  //最大数据大小限制,建议用户设置为unlimited
 scheduling priority             (-e) 0  //调度优先级,一般根据nice设置
 file size               (blocks, -f) unlimited  //最大文件大小限制,建议用户设置为unlimited
 pending signals                 (-i) 15086  //信号可以被挂起的最大数,这个值针对所有用户,表示可以被挂起/阻塞的最大信号数量
 max locked memory       (kbytes, -l) 64  //内存锁定值的限制
 max memory size         (kbytes, -m) unlimited  //最大可以使用内存限制
 open files                      (-n) 65535  //进程打开文件数的限制。默认值是1024,默认值太小、通常需要调整该值为65535或unlimited
 pipe size            (512 bytes, -p) 8  //管道文件大小限制
 POSIX message queues     (bytes, -q) 819200  //可以创建使用POSIX消息队列的最大值,单位为bytes
 real-time priority              (-r) 0  //限制程序实时优先级的范围,只针对普通用户
 stack size              (kbytes, -s) 8192  //限制进程使用堆栈段的大小
 cpu time               (seconds, -t) unlimited  //程序占用CPU的时间,单位是秒
 max user processes              (-u) 15086  //限制程序可以fork的进程数,只对普通用户有效
 virtual memory          (kbytes, -v) unlimited  //限制进程使用虚拟内存的大小,建议用户设置为unlimited
 file locks                      (-x) unlimited  //锁定文件大小限制#用户进程级别的限制修改:可以通过修改/etc/security/limits.conf文件实现永久生效的修改
 #修改表达式解释:
 <domain>        <type>  <item>  <value><domain>:
        ftpuser //用户
        @student //组
        * //通配符,所有用户
        % //通配符,用在组的语法
        
 <type>:
       soft //软限制。警告的设定,可以超过这个设定值,但是若超过则有警告信息
       hard //硬限制。严格的设定,必定不能超过这个设定的数值
        
 <item>:
       core //限制内核文件的大小
       data //最大数据大小限制
       fsize //最大文件大小限制
       memlock //最大锁内存地址空间
       nofile //进程打开文件数的限制
       rss //最大持久驻留内存
       stack //最大堆栈大小
       cpu //最大CPU运行时间
       nproc //最大进程数
       as //地址空间限制
       maxlogins //最大登录次数,用户
       maxsyslogins //最大登录次数,登录此系统的最大次数
       priority //用户运行的优先级
       locks //用户锁定文件数限制
       sigpending //信号可以被挂起的最大数
       msgqueue //可以创建使用POSIX消息队列的最大值
       nice //可以设置的优先级,nice [-20, 19]
       rtprio //实时优先级,数字大的优先级高#进程级打开文件句柄数量
 #在文件末尾添加配置内容:echo "
 * soft nofile 65535
 * hard nofile 70000
 " >> /etc/security/limits.conf注意:
 1)修改后用户需要重新登录才能生效
 2)如果调整用户进程级限制达到系统级的最大数时,还需要调整系统级的最大值安装操作
1.拷贝安装包
 # mkdir -p /opt/soft/GBase8sV8.7
 拷贝安装包:
 GBase8sV8.7_AEE_2.0.1A2_2_RHEL6_x86_64.tar
 AutoInit_GBase8s_v1.3.5.tar
 到该目录下2.解压释放自动安装脚本
 # cd /opt/soft/GBase8sV8.7
 # tar -xvf AutoInit_GBase8s_v1.3.5.tar
 会释放安装和卸载脚本:
 AutoInit_GBase8s.sh
 CleanAll.sh3.静默安装(默认会安装到路径:/opt/gbase下)
 ./AutoInit_GBase8s.sh 说明:
 官方文档强调,静默安装时请不要创建用户和组,静默安装过程中会自动创建。
 如果是用命令行交互安装方式,才需要提前创建好用户和组:
 # groupadd  -g 1000 gbasedbt
 # useradd  -g gbasedbt -u 1000 -d /home/gbase -m -s /bin/bash gbasedbt 
 # passwd gbasedbt
 因此我不用执行这些操作,直接执行AutoInit_GBase8s.sh即可。静默安装完毕,所有参数都是默认值:
 默认端口:9088
 默认用户:gbasedbt
 默认密码:GBase123
 默认实例名:gbaseserver
 默认表空间:datadbs1配置文件:
 /opt/gbase/etc/onconfig.gbase01监听IP端口配置文件:
 /opt/gbase/etc/sqlhosts4.检查数据库监听端口
 # netstat -an |grep 90885.启动和停止数据库服务
 通常情况下,使用gbasedbt用户来启动和停止数据库服务,成功安装数据库 GBase 8s 后,数据库会自动处于启动状态,一般不需要手动启动,可通过以下命令检查服务进程是否存在:
 # ps -ef|grep oninit如果停止以后,手动启动命令如下:
 # su - gbasedbt
 $ oninit -vy注意:如果数据库测试连接失败报错:Caused by: java.sql.SQLException: Database locale information mismatch.
 可能是由于自启动服务的环境变量文件设置不正确(检查/etc/sysconfig/gbasedbtd_service),没有设置 DB_LOCALE=zh_CN.utf8 导致,正确设置环境变量文件。
 或者是手动以root身份启动数据库(环境变量没有DB_LOCALE)导致,可以尝试切换到gbasedbt用户启动数据库,该问题就能解决。停止服务:
 以gbasedbt用户身份登录后,输入 onmode –ky,可停止数据库服务
 # su - gbasedbt
 $ onmode –ky6.服务配置
 为了方便管理数据库服务,配置以systemd方式实现GBase 8s数据库的自启动与关闭
 systemd需要的两个配置文件目录为:
 1)service 文件所在位置: /usr/lib/systemd/system/
 2)service 的环境配置文件位置: /etc/sysconfig/文件1:
 touch /usr/lib/systemd/system/gbasedbtd.service
 vi /usr/lib/systemd/system/gbasedbtd.service
 [Unit]
 Description=GBase 8s Database Server v8.7 2.0.1a2_2
 Documentation=file:/opt/gbase/release/en_us/0333
 Wants=network-online.target
 After=network.target network-online.target
  
 [Service]
 Type=oneshot
 User=gbasedbt
 Group=gbasedbt
 RemainAfterExit=yes
 EnvironmentFile=/etc/sysconfig/gbasedbtd_service
 ExecStart=/opt/gbase/bin/oninit
 ExecStop=/opt/gbase/bin/onmode -ky
 #Restart=on-abort
  
 [Install]
 WantedBy=multi-user.target文件2:
 touch /etc/sysconfig/gbasedbtd_service
 vi /etc/sysconfig/gbasedbtd_service# gbasedbtd.service environmental variables
GBASEDBTSQLHOSTS=/opt/gbase/etc/sqlhosts
 GBASEDBTDIR=/opt/gbase
 GBASEDBTSERVER=gbase01
 #ONCONFIG=onconfig.${GBASEDBTSERVER}
 ONCONFIG=onconfig.gbase01DB_LOCALE=zh_CN.utf8
 CLIENT_LOCALE=zh_CN.utf8
 DBDATE="Y4MD-"
 GL_DATE="%iY-%m-%d"
 GL_DATETIME="%iY-%m-%d %H:%M:%S"
 DBACCESS_SHOW_TIME=1 管理命令
 systemctl start gbasedbtd
 systemctl status gbasedbtd
 systemctl stop gbasedbtd设置开机自启动
 方法1)修改rc.local增加开机自启动
 在Centos7下rc.local文件没有执行属性,开机默认不执行(/etc/rc.local是一个软连接,对应实际文件/etc/rc.d/rc.local),设置开机启动:
 chmod +x /etc/rc.d/rc.local
 echo "
 #auto start gbase
 systemctl start gbasedbtd
 " >> /etc/rc.d/rc.local方法2)设置systemd开机自启动gbasedbtd.service
 ln -s /usr/lib/systemd/system/gbasedbtd.service   /etc/systemd/system/multi-user.target.wants/gbasedbtd.service也可以执行命令: systemctl  enable gbasedbtd.service   同样会完成上面的链接操作。
7.登录数据库
 注意:dbaccess -和-之间有一个空格,如果dbaccess不带参数,会有类似菜单的提示操作界面,也可以通过选择不同的菜单功能进行操作。
 # su - gbasedbt
 不指定数据库登录(如果指定数据库testdb登录则使用:dbaccess testdb -)
 $ dbaccess - - -- 创建数据库并测试
 create database testdb;
 create table test (id int not null, name varchar(255), primary key (id));
 insert into test values(1,'test');
 select * from test;远程访问数据库:testdb@gbase01:
 connect to 'testdb@gbase01' user 'gbasedbt';
 会提示输入密码GBase123登录成功 卸载数据库
 需要先停止数据库服务,切换到 root 用户,进入安装目录下的 uninstall/uninstall_ids,执行该目录下的 uninstallids 命令进行卸载。GBase常用命令:
 su - gbasedbt 切换到数据库用户后执行的常用系统命令:
 #启动数据库服务
 oninit -vy
 #停止数据库服务
 onmode -ky
 #监控系统cpu和内存使用情况
 top
 #查看数据库版本和运行模式
 onstat -
 #监控数据库磁盘空间大小
 onstat -d
 #监控逻辑日志,物理日志信息
 onstat -l
 #监控GBase 8s占用系统内存大小
 onstat -g seg
 #监控实例整体运行情况
 onstat -p
 #查看实例运行日志最后20行信息
 onstat -m
 #查看数据库进程状态
 onstat -g glo
 #查看数据库会话状态
 onstat -g ses
 #从离线模式向静态模式转换
 oninit -s
 #从离线模式向管理员模式转换
 oninit -j
 #从管理员模式,静态模式向在线模式转换
 onmode -m
 #从在线模式向管理员模式转换
 onmode -j
 #从在线模式向静态模式转换
 onmode -s;onmode -u常用SQL:
#创建库语法  
 create database “数据库名” in “dbspace名” 
 [ with buffered log | with log | with log mode ansi]#选择库语法
 database ”数据库名“
 也可以dbaccess登录时指定数据库
 dbaccess testdb - 
#数据类型
 字符型:char(20),varchar(minsize, maxsize)
 数值型:decimal(16,2),smallint,integer,smallfloat,float,serial
 日期型:date, 默认格式为 mm/dd/yyyy    #注意:如果要修改 date 类型的缺省格式,可在用户主目录的 .profile 文件中进行如下说明:dbdate=y4md/
 货币型:money (8,2)
 其它类型:interval,datetime 等#索引
 创建索引则必须建立命名索引
 create [ unique ] index 索引名 on 表名(字段名) 
 create [ unique ] index 索引名 on 表名(字段名) disabled; 
 set indexes 索引名 enabled 
 drop index  索引名 #权限和授权管理
 connect:访问数据库权限
 resource:允许用户建立或清除数据库中的表和索引
 dba: 数据库管理员grant 权限 to <public | 用户名>
 revoke 权限 from <public | 用户名> 
#创建表语法
 create [ tmp | row ] table “表名”( “列名””数据类型” “列级约束”, ... ... ,
 [ 表级约束 ] ) [ in “表的存放路径” ]创建表示例:
 create table test01 (
 id integer not null, 
 name char(255),
 info varchar(255),
 desc lvarchar(512),
 indate date,
 primary key(id) constraint pk_test01
 ); create table test02 (
 id integer not null unique constraint uq_test02, 
 name char(255),
 info varchar(255),
 desc lvarchar(512),
 indate date);  
#查看建表信息(类似MySQL的 show create table )
 $ dbschema -t test01 -d testdb[gbasedbt@localhost ~]$ dbschema -t test01 -d testdb
DBSCHEMA Schema Utility       GBASE-SQL Version 12.10.FC4G1AEE
{ TABLE "gbasedbt".test01 row size = 1034 number of columns = 5 index size = 9 }
create table "gbasedbt".test01 
   (
     id integer not null ,
     name char(255),
     info varchar(255),
     desc lvarchar(512),
     indate date,
     primary key (id)  constraint "gbasedbt".pk_test01
   );revoke all on "gbasedbt".test01 from "public" as "gbasedbt";
 [gbasedbt@localhost ~]$ dbschema -t test02 -d testdb 
DBSCHEMA Schema Utility       GBASE-SQL Version 12.10.FC4G1AEE
{ TABLE "gbasedbt".test02 row size = 1034 number of columns = 5 index size = 9 }
create table "gbasedbt".test02 
   (
     id integer not null ,
     name char(255),
     info varchar(255),
     desc lvarchar(512),
     indate date,
     unique (id)  constraint "gbasedbt".uq_test02
   );revoke all on "gbasedbt".test02 from "public" as "gbasedbt";
  #修改表语法
 alter table“表名”add“列名”“数据类型”| modify“列名”“数据类型”
 |drop column“列名” #删除表语法
 drop table “表名” 
#查询数据语法
 select  [ all | distinct ]  “列表达式”,   ......   from  ”表名“, ......
 [ where  ”条件表达式“ ]
 [ group by “列名”, ...... [ having  ”条件表达式“ ] ]
 [ order by ”列名“ [ asc | desc ], ...... ] ; #插入数据语法
 insert into “表名”[ ( 列1, 列2, 列3, ...... ) ] values ( 值1, 值2 , 值3 , ...... )#更新数据语法
 update “表名”set 列1=值1, ...... [ where “条件表达式” ]#删除数据语法
 delete from “表名”[ where “条件表达式” ]#使用dba用户(gbasedbt)创建普通用户,并指定密码
 create user dbuser02 with password 'GBase123';
 database testdb;
 grant connect to dbuser02;#也可以使用dba用户在数据库中赋权访问,直接在系统shell界面操作
 $ echo "grant connect to dbuser02;" | dbaccess testdb -#使用内部用户访问数据库,按提示输入密码
 dbaccess - -
 connect to 'testdb@gbase01' user 'gbasedbt';
 connect to 'testdb@gbase01' user 'dbuser02';
 会提示输入用户输入密码。testdb@gbase01代表数据库名@实例名 简单操作举例
创建缓冲式日志模式数据库testdb,test表,以及insertdata存储过程,切换到gbasedbt用户,并生效当前实例对应的环境变量文件。操作如下:
 su - gbasedbt
 . .bash_profile进入sql编辑器dbaccess,执行SQL语句:
 dbaccess - -
 -- 创建库testdb
 create database testdb in datadbs1 with buffered log;-- 创建表
 create table test03 (id int , name char(255));
 create table test04 (id int not null, name varchar(255), primary key (id));-- 创建insertdata()存储过程,向test01表中插入10条数据
 create procedure insertdata()
 define i int;
 for i in (1 to 10)
 insert into test01 values(i,'test');
 end for;
 end procedure;-- 执行insertdata()存储过程
 execute procedure insertdata();-- 查看实例名,数据库名,用户名
 select  a.cf_original, DBINFO('dbname') dbname, user from sysmaster:sysconfig a where cf_name = 'testdb'; -- 查看实例中所有数据库名
 select  name  from sysmaster:sysdatabases; -- 查看数据库中所有表名
 select  dbsname,tabname from sysmaster:systabnames where dbsname='testdb';