文档库 最新最全的文档下载
当前位置:文档库 › Gbase8a管理员手册总结

Gbase8a管理员手册总结

Gbase8a管理员手册总结
Gbase8a管理员手册总结

《Gbase8a管理员手册》总结

1 系统简介

GBase 8a 是一款具有高效复杂统计和分析能力的列存储关系型数据库管理

系统,能够管理TB 级数据。

GBase 8a 面向分析型应用领域,以列为基本存储方式和数据运算对象,结合列数据压缩处理、并行处理、Snapshot 并发控制、快速智能索引等新型数据处理技术,在查询、统计、分析以及批量加载性能上具备突出的优势。GBase 8a 符合SQL92、ODBC、JDBC、https://www.wendangku.net/doc/8a5062915.html, 等国际规范,提供完备的数据存储和数据管理功能。

GBase 8a 在成功安装后,会默认创建三个数据库,名称分别是

information_schema、gbase 和ssbm。

2.基本管理

启动GBase 8a服务:gbase.server start

停止GBase 8a服务:gbase.server stop

重新启动GBase 8a服务:gbase.server restart

查看全部数据库:gbase> SHOW DATABASES;

切换到指定的数据库:gbase> USE <数据库名称>;

gbase>use ssbm;

查看当前数据库:gbase> SELECT DATABASE();

查看数据库表的列表:

命令格式:SHOW TABLES [FROM <数据库名称>] [LIKE '%<部分或全部表名称字符>%'];

gbase>SHOW TABLES FROM ssbm;

gbase>SHOW TABLES LIKE '%s%';00845

查看表字段的定义:

命令格式:gbase>SHOW [FULL] FIELDS FROM <表名称> [FROM <数据库名称>];

gbase>DESC <表名称>;

查看表定义语句:

命令格式:gbase>SHOW CREATE TABLE [<数据库名称>.]<表名称>[\G];

gbase> SHOW CREATE TABLE ssbm.customer;

也可以使用\G参数进行格式化输出的方式进行查看。

gbase>SHOW CREATE TABLE ssbm.customer\G

3.数据库对象

(1)数据库

GBase8a包含两种数据库,系统数据库和用户数据库。

系统数据库包含了:gbase数据库和information_schema数据库

用户数据库:root用户创建

GBase 8a的数据库在创建后不允许修改名称。

(2)表空间

表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数

据库对象都存放在指定的表空间中。

数据库管理员可以将不同类型的数据放臵到不同的表空间中,这样可以明

显提高数据库输入输出性能。在比较复杂的大型系统中,管理员可以使用mount

来挂载多块磁盘,在每块磁盘上建立表空间,这样就可以提高数据的I/O性能。

(3)表

包括系统表和用户表两种

GBase 8a没有表级约束,而只有列级约束,列级约束只包括NULL值约束和DEFAULT 约束。

(4)视图

(5)索引

不允许如下形式的索引定义,包括PRIMARYKEY、FOREIGNKEY、UNIQUE INDEX (6)存储过程

(7)自定义函数

自定义函数中不能存在DML操作语句(包括update、delete、insert、replace)和createtemporarytable操作

自定义函数中可以调用存储过程,但是如果存储过程中有自定义函数限制的操作(如DML、创建临时表),会报错

(8)提示(hint)强制优化器做某一件事(hints)

4.事务

GBase 8a是面向分析型领域(OLAP)的一种专用数据库

(2)事务语句

(2.1)提交模式SET autocommit={0|1};

设臵是否使用自动提交模式(默认提交)该语句只对当前SESSION有影响。

为1时:一条SQL语句在执行开始时自动启动一个新的事务,而在其执行结束时自动提交其执行结果

为0时:上一个事务结束(提交或者回滚)之后的第一条SQL语句开始执行时,认为是一个新的事务开始,直到执行了事务提交语句或者事务回滚语句时,事务才结束。

(2.2)提交语句commit;

(2.3)回滚语句rollback;

5.数据加载

5.1概述

(1.1)简介

为了提高GBase 8a的数据加载速度,GBase 8a数据库提供了专用的数据

加载工具--gbloader。该工具是一个命令行工具,用于从满足一定格式的文本

文件中快速加载数据到GBase 8a数据库。

gbloader工具是一个线程并行的数据加载工具,可以充分利用多核CPU的

处理能力进行数据加载,因此数据加载效率很高。在2*4核CPU(主频2.13GHz)、16GB内存,SATA硬盘的硬件环境下,可以获得80GB/h的加载性能。使用高端

服务器和专用阵列设备可以大幅提高加载能力,在高端配臵的条件下,数据加

载速度最大可以达到500GB/h。

(1.2)安装

gbloader随GBase 8a一起安装,该文件被安装在$GBASE_HOME/bin下

(1.3)基本操作

gbloader [OPTIONS] <控制文件>

其中,OPTIONS包括以下选项:

--user=,数据库用户名

--password=,数据库用户的登录密码

示例如下:

gbloader --user=root --password=linna lineorder.ctl

(1.4)拓扑图

gbloader从控制文件中获得数据加载的必要信息和数据文件的相关信息,

将数据加载到GBase8a中。对于加载过程中加载失败的数据,记录在失败数据

指定的文件中。对于加载过程中的相关显示信息,记录在日志文件中。

5.2数据源及数据准备

常用的为gbloader提供数据文件的工具有:orato8a和gbunloader

orato8a为从Oracle数据库向GBase8a数据库迁移数据的工具,

gbunloader为从GBase8a中导出数据的工具,

由gbunloader工具导出的数据可以方便的导入另外一个GBase 8a数据库。

(2.1)orato8a

通过Oracle的OCI接口访问数据,运行orato8a的计算机需要安装

Oracle数据库或客户端。orato8a随GBase 8a一起安装,该文件被安装在$GBASE_HOME/bin下

为了在非Oracle安装用户可以访问Oracle,通常只要将该用户加入到

Oracle安装用户所在的组中,并在该用户中正确设臵

ORACLE_BASE,ORACLE_HOME,ORACLE_SID,及将$ORACLE_HOME/bin加入到PATH变量,将$ORACLE_HOME/lib加入LD_LIBRARY_PATH变量即可修改环境变量Vi .bash_profile

ORACLE_BASE=/home/oracle/oracleexport ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1export

ORACLE_HOME

ORACLE_SID=maya

export ORACLE_SID

PATH=$ORACLE_HOME/bin:$PATHexport PATH

LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATHexport

LD_LIBRARY_PATH

[linna@gbase555 ~]$ source .bash_profile

登陆验证[linna@gbase555 ~]$ sqlplus /nolog

5.2.1.1 参数说明

5.2.1.1.1 batch

语法

batch=number_value

功能

该参数指明将多少条记录单独保存为一个单独的数据文件。该参数需要与

file 参数配合使用。当指定batch 参数时,file 参数指定的文件名中应包含%b。

5.2.1.1.2 fi eld

语法

field=char_value

功能

当导出的数据为文本格式时,指定分隔各字段的分隔符。

只能指定一个字符,或者为一个转义符+一个字符

不能指定\n 和\r。

5.2.1.1.3 file

语法

file=string_value

功能

该参数指定数据文件名。该参数可以为一个包含绝对路径的文件名,也可

以为一个包含相对路径的文件名。当该参数为一个不包含路径的文件名时,该

文件被保存在当前路径中。

当参数文件中指定batch 参数时,file 参数中应包含%b 字符,%b 为占位

符,用于产生多个文件时,对产生的多个文件进行顺序编号。

5.2.1.1.4 format

语法

format=[0|2]

功能

控制导出数据的格式。当设臵为0 时,导出数据为文本格式;当设臵为2

时,导出数据为二进制格式。该参数的默认值为2。

5.2.1.1.5 log

语法

log=string_value

功能

记录抽取时的日志信息。

5.2.1.1.6 query

语法

query=string_value

功能

配臵抽取数据所使用的SQL 语句。由于查询语句常有空格,该参数在指定

时,需要用双引号限定。查询语句为一个合法的Oracle 查询语句,且只返回一

个结果集。

5.2.1.1.7 shm_mode

语法

shm_mode=[0|1]

功能

控制导出文件的方式。当参数设臵为0 时,导出方式为文件方式;当参数

设臵为1 时,导出方式为共享内存方式。该参数的默认值为0。

当采用共享内存方式时,orato8a 可以和gbloader 通过共享一个128M 的

内存来传输数据。gbloader 在加载数据时,需要在控制文件中设臵infile_mode

为1。使用该方式加载数据时,orato8a 必须与GBase 8a Server 运行在同

一台服务器上。先启动orato8a 抽取工具,然后再启动gbloader 导入工具,就

可以实现gbloader 共享内存方式的数据导入。

5.2.1.1.8 user

语法

user=string_value

功能

配臵登录Oracle 数据库的用户名、密码和数据库本地服务名,该参数的格

式为用户名称/密码@数据库本地服务名。

5.2.1.2.1 导出文本格式数据

执行orato8a,将format 参数设臵为0,即可将数据导出为文本格式。

[linna@gbase555 ~]$ orato8a --user=ssbm/ssbm@maya --query="select

* from lineorder" --file=/home/linna/lineorder.txt --field=";"

--format=0

导出成功后,我们用head 命令查看导出的文件。

[linna@gbase555 ~]$ head -n 5 /home/linna/lineorder.txt

5.2.1.2.2 导出二进制格式数据

执行orato8a,将format 参数设臵为2,即可将数据导出为二进制格式。

[linna@gbase555 ~]$ orato8a --user=ssbm/ssbm@maya --query="select

* from lineorder" --file=/home/linna/lineorder.bin --format=2

在导出过程中,我们可以看到unload [binary file] mode,说明导出为二进制模式。导出成功后,我们用head 命令查看

[linna@gbase555 ~]$ head -c 100 /home/linna/lineorder.bin

5.2.1.2.3 导出到共享内存

orato8a 可以将数据以文本或二进制的格式导出为磁盘文件,也可以将数

据导出到共享内存中。

我们在导出时指定shm_mode 参数为1,即可将数据导出到到共享内存。

linna@gbase555 ~]$orato8a --user=ssbm/ssbm@maya --query="select *

from lineorder" --file=/home/linna/lineorder.mem --format=2

--shm_mode=1

在执行到共享内存的数据导出时,orato8a 会将数据保存在共享内存中。

orato8a 为导出的数据分配128M 的共享内存缓冲数据。当分配的128M 共享内

存写满时,orato8a 将暂停数据写入,直到共享内存中的数据被gbloader 取出

并释放。

(2.2)gbunloader

gbunloader 是GBase 8a 的一个数据迁移工具。该工具随GBase 8a 的安装被默认安装在$GBASE_HOME/bin 目录中

导出当前服务器中的GBase 8a 数据库的数据时,只需指定连接GBase 8a服务的用户名,密码,需要导出的数据库名称,查询数据的SQL 语句及保存导出数据的文件,即可将查询结果导出

gbunloader 的命令使用格式为:gbunloader [参数列表],各个参数通过

--parametername=value 的格式指定,多个参数之间使用空格分隔。

5.2.2.1 参数说明

5.2.2.1.1 batch

语法

batch=number_value

功能

指定按多少行记录保存为一个单独的文件。当该参数为0 时,将全部导出

数据保存为一个文件。

5.2.2.1.2 database

语法

database=string_value

功能

导出的数据所在的数据库名称。

5.2.2.1.3 field

语法

field=char_value

功能

当导出数据的文件为文本格式时,定义用于分隔每行的各文本域所使用的

字符。

5.2.2.1.4 file

语法

file=string_value

功能

保存导出数据的文件名称。当batch 参数大于0 时,文件名需要包含%b 两

个字符,即datafilename%b.dat 的格式,在实际导出时,%b 将被实际的导出文

件序号替换。

文件名可以指定为绝对路径和相对路径格式。当参数指定为不含路径的文

件名时,文件保存在当前目录中。

5.2.2.1.5 format

语法

format=[0|2]

功能

保存导出数据的文件格式。当format 为0 时,导出文件为文本格式;当

format 为2 时,导出文件为二进制格式。

该参数默认值为2。

5.2.2.1.6 host

语法

host=string_value

功能

连接GBase 8a 服务时,使用的IP 地址。

5.2.2.1.7 log

语法

log=string_value

功能

保存导出数据时,记录日志信息的文件。文件名可以指定为绝对路径和相

对路径格式。当参数指定为不含路径的文件名时,文件保存在当前目录中。

5.2.2.1.8 password

语法

password=string_value

功能

连接GBase 8a 服务的密码。

5.2.2.1.9 port

语法

port=number_value

功能

连接GBase 8a 服务时,使用的端口号。

5.2.2.1.10 query

语法

query=string_value

功能

导出数据时使用的SQL 查询语句。该值应为一个合法的SQL 查询。

5.2.2.1.11 shm_mode

语法

shm_mode=[0|1]

功能

选项用来控制导出文件的方式,默认是落地为文件的方式,可以设臵为1,

采用共享内存的方式, gbloader控制文件中INFILE_MODE选项也应该设臵为1,

使用该方式时必须先启动orato8a 抽取工具,然后再启动gbloader 导入工具,

就可以实现数据流式导入GBASE 8a 数据库中。

5.2.2.1.12 socket

语法

socket=string_value

功能

导出数据时使用的socket 文件。

5.2.2.1.13 user

语法

user=string_value

功能

连接GBase 8a 服务的用户名

5.2.2.2 应用实例

用gbunloader 导出数据,只需要在命令行中,依次输入各个参数的值即可。[linna@gbase555 ~]$ gbunloader --database=ssbm --user=root

--password=linna --query="select * from lineorder" --port=5258

--format=0 --file=lineorder.tbl

5.3gbloader配臵介绍

5.3.1gbloader特性

数据加载工具,只支持本地加载,不支持远程加载,一个gbloader会话只支持加载一个表,但可以加载多个数据文件

不支持字符集转换,数据文件的字符集必须和表定义中的字符集一致

5.3.2gbloader参数说明

优先级:

命令行最优先(SOCKET优先PORT)

控制文件

loader参数与cnf无关

简单的数据加载示例(文本)————将一个文本格式的数据加载到数据库的表中编辑控制文件lineorder.ctl,内容如下:

[loader]

db_name=ssbm

table_name=lineorder

load_data_infile=/home/linna/data/lineorder.tbl

delimiter= '|'

format=0

port=5258

在控制文件所在的目录,执行下面的命令

gbloader -uroot -plinna lineorder.ctl

其中加载数据的用户为root,用户的密码为linna,加载的控制文件为当前目录下的lineorder.ctl 文件。

[linna@gbase555 data]$ gbloader -uroot -plinna lineorder.ctl

查看目录下的lineorder.gbl_report 文件,该文件

为加载数据时的报告文件。

[linna@gbase555 data]$ cat lineorder.gbl_report

简单的数据加载示例(二进制)————

当需要导入的数据中有大量文本信息,很难确定一个合适的字段分隔符时,

我们可以使用二进制格式的方式进行数据导入导出

编辑控制文件lineorder.ctl,内容如下:

db_name=ssbm

table_name=lineorder

load_data_infile=/home/linna/data/lineorder.bin

format=2

port=5258

在控制文件所在的目录,执行下面的命令

gbloader -uroot -plinna lineorder.ctl

其中加载数据的用户为root,用户的密码为linna,加载的控制文件为当前目录下的lineorder.ctl 文件。

[linna@gbase555 data]$ gbloader -uroot -plinna lineorder.ctl

查看目录下的lineorder.gbl_report 文件,该文件为加载数据时的报告文件。[linna@gbase555 data]$ cat lineorder.gbl_report

简单的数据加载示例(共享内存)

当服务器的磁盘空间不足,无法存放orat08a 导出的数据文件时,可以采

用共享内存模式加载数据。使用共享内存模式时,orato8a 分配128M 的共享内

存用于和gbloader 进行数据交换。orato8a 将导出的数据写入共享内存中。当

分配的共享内存写满数据时,orato8a 暂停数据导出,并等待gbloader 取走数

据和释放共享内存。

[linna@gbase555 ~]$ orato8a --user=ssbm/ssbm@maya --query="select

* from lineorder" --file=/home/linna/lineorder.mem --format=2

--shm_mode=1

执行gbloader,将数据加载到GBase 8a 中。

[linna@gbase555 ~]$ gbloader --user=root --password=linna

lineorder_shm.ctl

如何导入多个数据文件

每个文件用逗号分隔

(1)可以通过多次运行gbloader,将数据加载到数据库的表中

(2)可以在控制文件中的参数load_data_infile 指定多个数据文件,各个文件用逗号分隔,一次将多个数据文件加载到数据库的表中

编辑控制文件lineorder.ctl,内容如下:

[loader]

db_name=ssbm

table_name=lineorder

load_data_infile=/home/linna/data/lineorder2.bin,/home/linna/dat

a/lineorder4.bin,/home/linna/data/lineorder6.bin,/home/linna/data/li neorder1.bin,/home/linna/data/lineorder3.bin,/home/linna/data/lineor

der5.bin,/home/linna/data/lineorder7.bin

format=2

port=5258

在控制文件所在的目录,执行下面的命令

gbloader -uroot -plinna lineorder.ctl

其中加载数据的用户为root,用户的密码为linna,加载的控制文件为当前目录下的lineorder.ctl 文件。

[linna@gbase555 data]$ gbloader -uroot -plinna lineorder.ctl

命令执行结束后,我们查看目录下的lineorder.gbl_report 文件,该文件为加载数据时的报告文件。

[linna@gbase555 data]$ cat lineorder.gbl_report

如何处理文本字段中含有分隔符的数据加载

第一个和最后一个用双引号引起来

我们将供应商信息保存到一个文本文件supplier.tbl中,各字段之间用逗号分隔。我们选用逗号做为分隔符,是因为在供应商信息中,第一条和第九条的地址字段包含逗号。

将原始数据的第一条和第九条的地址字段两边加上一个双引号

生成的数据文件内容如下:

我们先创建一个控制文件supplier.ctl,内容如下

并在控制文件中加入参数string_qualifier,其值设臵为'"'

db_name=ssbm

table_name=supplier

load_data_infile=/home/linna/data/supplier.tbl

delimiter= ','

format=0

port=5258

string_qualifier='"'

在这个控制文件中,我们的delimiter设臵为逗号,和我们的supplier.tbl 中的分隔符保持一致。

接下来,我们用gbloader 导入这个文件。

[linna@gbase555 data]$ gbloader -uroot -plinna supplier.ctl

我们从数据库中查询数据时:

gbase>SELECT s_name,s_address,s_phone FROM supplier;

如何处理特殊字符

对特殊字符进行转义

我们修改控制文件的内容为:

[loader]

db_name=ssbm

table_name=supplier

load_data_infile=/home/linna/data/supplier.tbl

delimiter= ','

format=0

port=5258

string_qualifier='"'

escape_character='\'

在要转义的字符前加上转义符

如何加载全部数据到一个分区中

设臵partition

在表的p1996 分区中加载数据,我们定义如下的控制文件。

[linna@gbase555 data]$ cat lineorder.ctl

[loader]

db_name=ssbm

table_name=lineorder

load_data_infile=/home/linna/data/lineorder.tbl

delimiter= '|'

format=0

port=5258

partition=p1996

运行gbloader,加载数据到指定的分区中。

[linna@gbase555 data]$ gbloader -uroot -plinna lineorder.ctl

验证:

我们将lineorder 表中的p1996 分区中的数据交换到表lineorder1996 中

创建一个结构相同的表,并

将分区中的数据交换到新创建的表中。创建使用下面的脚本创建一个新表。

create table lineorder1996 (

lo_orderkey bigint,

lo_linenumber int,

lo_custkey int,

lo_partkey int,

lo_suppkey int,

lo_orderdate int,

lo_orderpriority varchar(15),

lo_shippriority varchar(1),

lo_quantity int,

lo_extendedprice int,

lo_ordtotalprice int,

lo_discount int,

lo_revenue int,

lo_supplycost int,

lo_tax int,

lo_commitdate int,

lo_shipmode varchar(10)

);

gbase>alter table lineorder exchange partition p1996 with table lineorder1996;

如何加载全部数据到多个分区中——(gbloader的insert模式)

创建分区表

create table lineorder (

lo_orderkey bigint,

lo_linenumber int,

lo_custkey int,

lo_partkey int,

lo_suppkey int,

lo_orderdate int,

lo_orderpriority varchar(15),

lo_shippriority varchar(1),

lo_quantity int,

lo_extendedprice int,

lo_ordtotalprice int,

lo_discount int,

lo_revenue int,

lo_supplycost int,

lo_tax int,

lo_commitdate int,

lo_shipmode varchar(10)

)

partition by range(lo_orderdate)

(

partition p1992 values less than (19930101),

partition p1993 values less than (19940101),

partition p1994 values less than (19950101),

partition p1995 values less than (19960101),

partition p1996 values less than (19970101),

partition p1997 values less than (19980101),

partition p1998 values less than (19990101),

partition p1999 values less than (20000101)

);

设臵控制文件

[linna@gbase555 data]$ cat lineorder.ctl

[loader]

db_name=ssbm

table_name=lineorder

load_data_infile=/home/linna/data/lineorder.tbl

delimiter= '|'

format=0

port=5258

insert(insert模式)

commit_lines=10000(多少行自动提交)

运行gbloader,加载数据到指定的分区中。

[linna@gbase555 data]$ gbloader -uroot -plinna lineorder.ctl

数据文件和表定义不一致怎么办

设臵table_fields 参数

在进行数据加载过程中,我们常常遇到下面这些情况。

1. 数据文件中的字段和表中字段的数量不一致,且顺序不同。

2. 数据文件中只有部分数据是有效的,在导入时需要过滤掉无用的数据。

对于上面的情况,gbloader 提供filler 机制,通过为table_fields 参数设臵合理的,带有filler 关键字的列映射,可以很好的解决数据文件和表字段的定义不一致现象。table_fields 参数,在使用中遵循以下几个原则:

table_fields 参数指明,gbloader 在加载数据时需要装载的字段、及数据文件中字段和表字段的对应关系。

数据文件中的字段总数必须大于或等于table_fields 的字段总数,数据文件中多出的字段数据在装载时会被忽略。

对于数据加载过程中,数据文件中需要忽略的字段,可以使用table_fields 参数中的filler 关键字将其忽略掉。。

我们现在有一些新的供应商要导入到数据库中。供应商的信息被保存在一个文本文件中,字段的顺序依次为供应商名称,供应商主键,供应商联系电话和供应商所在的国家。

设臵table_fields 参数,各表字段之间用逗号分隔。

我们定义如下的参数文件

[linna@gbase555 data]$ cat supplier.ctl

[loader]

db_name=ssbm

table_name=supplier

load_data_infile=/home/linna/data/supplier2.tbl

delimiter= '|'

format=0

port=5258

string_qualifier='"'

escape_character='\'

table_fields=s_name,s_suppkey,s_phone,s_nation

在数据文件中,我们要导入全部的数据到表中,所以我们按数据文件中各字段的顺序,指定supplier 表中相应字段的顺序,来设臵table_fields 参数。

[linna@gbase555 data]$ gbloader -uroot -plinna supplier.ctl

如何处理不同的字符集

使用操作系统自带的程序----iconv

iconv -f 原文件字符集-t 目标文件字符集原数据文件>目标数据文件

我们对供应商的文件进行字符集转换

[linna@gbase555 data]$iconv -f GBK -t UTF8 supplier3.tbl>supplier_utf8.tbl

如何利用多核特性加载数据

指定parallel 参数

控制gbloader 的并行度。当希望更快的加载数据时,则需要将parallel 参数值设臵的更大一些。当希望数据加载尽量不影响服务器中正在运行的程序时,可以设臵一个相对小一些的parallel 值

[linna@gbase555 data]$ gbloader --user=root --password=linna --parallel=1 lineorder.ctl

如何保留数据中尾部的空格

设臵trim 参数。

当trim 为0 时,保留字符串尾部空格;

当trim 为1 时,则自动截断字符串的尾部空格。

trim参数的默认值为1。

我们有下面的一份数据,需要导入到数据库中。

[linna@gbase555 data]$ cat supplier.tbl

修改控制文件

[linna@gbase555 data]$cat supplier.ctl

[loader]

db_name=ssbm

table_name=supplier

load_data_infile=/home/linna/data/supplier.tbl

delimiter= ','

format=0

port=5258

string_qualifier='"'

escape_character='\'

trim=0

执行gbloader,导入数据。

[linna@gbase555 data]$ gbloader -uroot -plinna supplier.ctl

导入数据后,查询导入的数据。

gbase> select s_name,s_address,length(s_address) as s_length from supplier;

如何加载其他Linux服务器上的数据

在数据文件方配臵/etc/exports文件并启动nfs服务

在Gbase安装方建立nfs目录并从数据文件方挂载nfs,设臵权限,创建控制文件,启动dbloader

我们有两台服务器:192.168.5.55 和192.168.5.56。

在192.168.5.56的/home/linna/data/ssbm 目录中有我们需要加载的lineorder.tbl数据文件。

在192.168.5.55的服务器中,安装有GBase 8a,且在数据库ssbm 中创建了lineorder 表。

为了共享192.168.5.56 服务器中/home/linna/data/ssbm 目录下的文件,

我们在192.168.5.56配臵/etc/exports文件,内容如下。

[root@TEST556 ~]# cat /etc/exports

/home/linna/data/ssbm 192.168.5.55(rw,async)

为了共享磁盘,服务器需要启动nfs 服务。

[root@TEST556 ~]# service nfs restart

为了方便192.168.5.55 上的linna 用户加载数据,创建目录nfs

[linna@gbase555 ~]$ mkdir nfs

[linna@gbase555 ~]$ ll ./nfs

在192.168.5.55 执行mount 命令,将192.168.5.56 上的共享目录挂载到

本地的/home/linna/nfs 目录中。由于192.168.5.55 服务器上的linna 用户没有执行mount 的权限,使用root 用户执行挂载操作。

[root@gbase555 ~]# mount -t nfs 192.168.5.56:/home/linna/data/ssbm

/home/linna/nfs

挂载成功后,进入目录查看数据。

[root@gbase555 ~]# cd /home/linna/nfs

[root@gbase555 nfs]# ls

lineorder.tbl

在root 用户下,我们可以看到nfs 目录中有了新的文件lineorder.tbl,

这个文件就是192.168.5.56 服务器中的/home/linna/data/ssbm 目录下的文件。在192.168.5.55 中切换到linna 用户,并进入nfs 目录查看。

[linna@gbase555 ~]$ cd nfs

[linna@gbase555 nfs]$ ll

total 577688

-rwxr-xr-x 1 oracle oinstall 590969304 Sep 15 14:24 lineorder.tbl

我们发现一个奇怪的现象,就是192.168.5.56中的linna用户的数据文件,

通过共享后,在192.168.5.55 中显示为是oracle 用户的文件。

通过查看两台服务器的用户情况,192.168.5.55 中的linna 的uid 为

[linna@gbase555 ~]$ id

uid=502(linna) gid=503(linna)

groups=501(oinstall),502(dba),503(linna)

192.168.5.56 上的linna 的uid 为

[linna@TEST556 ~]$ id

uid=501(linna) gid=501(linna) groups=501(linna)

两台服务器上虽然都有linna 用户,但他们的uid 不同。

查看192.168.5.55 上面的oracle 用户的uid

[oracle@gbase555 ~]$ id

uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)

发现192.168.5.55 服务器上的oracle 用户的uid 也是501,和

192.168.5.56 服务器上的linna 用户的uid 相同。Linux 操作系统中,文件权

限的标识是通过uid 进行的。为了可以让192.168.5.55 服务器中linna 的用户可以访问192.168.5.56 服务器中的linna 用户的文件,既可以在两台服务器中

创建具有相同uid 的相同帐号,也可以通过设臵文件的访问权限来解决。

[linna@TEST556 ssbm]$chmod 777 lineorder.tbl

[linna@TEST556 ssbm]$ ll

total 577688

-rwxrwxrwx 1 linna linna 590969304 Sep 15 14:24 lineorder.tbl

再次在192.168.5.55 服务器中查看

[linna@gbase555 nfs]$ ll

total 577688

-rwxrwxrwx 1 oracle oinstall 590969304 Sep 15 14:24 lineorder.tbl

创建加载的控制文件

相关文档