SAP HANA 部署与运维笔记

一、系统准备与依赖安装

1. 安装基础软件包

zypper install -y unzip gzip tar iproute2 net-tools sysstat lvm2 chrony kexec-tools
  • 若提示已安装,属正常。

  • 代理设置临时生效:

    export http_proxy="http://192.168.20.80:3128"
    export https_proxy="http://192.168.20.80:3128"

    永久生效需修改 /etc/sysconfig/proxy

2. 解决 GCC 9 运行时库缺失

错误:HANA 安装检查要求 libgcc_s1libstdc++6libatomic1 ≥ 9.2.1。 解决

zypper addrepo -f https://download.opensuse.org/distribution/leap/15.3/repo/oss/ openSUSE-Leap-15.3
zypper --gpg-auto-import-keys refresh
zypper install -y --allow-vendor-change gcc9 gcc9-c++

验证:

rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}\n' libgcc_s1 libstdc++6 libatomic1

备选:加 --ignore=check_platform 跳过检查,但不推荐。

3. NTP 时间同步

chronyc sources^? 表示源不可用,Reach=0 表示未响应。 检查:

chronyc tracking
chronyc sources -v
systemctl status chronyd

二、SAP HANA 安装(hdblcm)

1. 解压与权限

unzip saphana-2.00.057.zip -d /opt/install/hana_unpacked
chmod -R 755 /opt/install/hana_unpacked/saphana-2.00.057

./hdblcmPermission denied,需确保有执行权限。

2. 正确安装命令

./hdblcm --action=install \
  --sid=HDB \
  --number=00 \
  --batch \
  --password=Csdu_1234 \
  --system_user_password=Csdu_1234 \
  --sapadm_password=Csdu_1234 \
  --datapath=/hana/data/HDB \
  --logpath=/hana/log/HDB \
  --sapmnt=/hana/shared

注意:参数是 --sapmnt,不是 --sharedpath

3. 常见错误

错误 原因 解决
Unknown option: sharedpath 参数名错误 改用 --sapmnt
Permission denied 缺少执行权限 chmod -R +x
GCC 9 检查失败 运行时库版本低 安装 gcc9/gcc9-c++

三、HANA 多容器(MDC)与租户管理

1. 核心概念

  • SYSTEMDB:系统数据库,管理租户,端口 3<实例号>13(如 30013)。

  • 租户数据库:业务数据库,端口 3<实例号>15(如 30015)。

  • 所有建库操作必须在 SYSTEMDB 执行。

2. 创建租户数据库

-- 连接 SYSTEMDB
hdbsql -i 00 -d SYSTEMDB -u SYSTEM -p Csdu_1234

-- 创建租户,密码需满足 A1a 规则(大写+小写+数字)
CREATE DATABASE csdu_db SYSTEM USER PASSWORD CsduDb123;

-- 查看状态
SELECT DATABASE_NAME, ACTIVE_STATUS FROM M_DATABASES;

3. 连接租户数据库

hdbsql -i 00 -d csdu_db -u SYSTEM -p CsduDb123

提示符变为 hdbsql CSDU_DB=> 表示连接成功。

4. 创建 Schema 和表

CREATE SCHEMA csdu;

CREATE COLUMN TABLE csdu.csdu_customer (cust_id NVARCHAR(32) PRIMARY KEY, cust_name NVARCHAR(100), id_type NVARCHAR(20), id_no NVARCHAR(50), phone NVARCHAR(30), address NVARCHAR(500), cust_type NCHAR(1), risk_level NCHAR(1), open_date DATE, status NCHAR(1), branch_no NVARCHAR(20), remark NCLOB, csdun_tag NVARCHAR(20));

CREATE COLUMN TABLE csdu.csdu_transaction (trans_id NVARCHAR(64) PRIMARY KEY, acct_no NVARCHAR(32), trans_type NVARCHAR(10), trans_date DATE, trans_time TIMESTAMP, dr_cr_flag NCHAR(1), trans_amt DECIMAL(18,2), balance DECIMAL(18,2), opp_acct_no NVARCHAR(32), opp_name NVARCHAR(100), opp_bank_no NVARCHAR(20), trans_channel NVARCHAR(20), trans_summary NVARCHAR(200), trans_detail NCLOB, teller_no NVARCHAR(20), branch_no NVARCHAR(20), check_flag NCHAR(1), csdun_tag NVARCHAR(20));

四、hdbsql 使用要点

1. 交互模式规则

  • 回车即执行,不会等待分号。

  • 多行 SQL 会被拆成多条语句,逐条报错。

  • 必须将完整 SQL 写成一行,或使用 -f 执行 SQL 文件。

2. 批量插入数据

利用 SERIES_GENERATE_INTEGER 生成序列:

INSERT INTO csdu.csdu_transaction (trans_id, acct_no, trans_type, trans_date, trans_time, dr_cr_flag, trans_amt, balance, opp_acct_no, opp_name, opp_bank_no, trans_channel, trans_summary, trans_detail, teller_no, branch_no, check_flag, csdun_tag) SELECT 'TXN' || LPAD(TO_VARCHAR(GENERATED_PERIOD_START), 15, '0'), 'ACCT' || LPAD(TO_VARCHAR(GENERATED_PERIOD_START), 10, '0'), 'DEPOSIT', CURRENT_DATE, CURRENT_TIMESTAMP, 'C', 100.00, 1000.00, 'OPP' || LPAD(TO_VARCHAR(GENERATED_PERIOD_START), 10, '0'), 'OPP_NAME', 'BANK001', 'ONLINE', 'TEST SUMMARY', 'TEST DETAIL', 'TELLER01', 'BRANCH01', 'N', 'TAG01' FROM SERIES_GENERATE_INTEGER(1, 1, 100000);

建议:保存为 .sql 文件后用 hdbsql -f file.sql 执行。

3. CSV 导入

IMPORT FROM CSV FILE '/usr/sap/HDB/HDB00/work/csdu_trans.csv' INTO csdu.csdu_transaction;
  • 文件必须放在 HANA 允许的目录(workbackup)。

  • 或修改配置:ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'system') SET ('import_export', 'csv_import_path_filter') = '/backup' WITH RECONFIGURE;

4. 常用命令

hdbsql -i 00 -u SYSTEM -p Csdu_1234 "SELECT * FROM M_DATABASE;"
hdbnsutil -sr_state          # 查看系统复制状态
HDB info                     # 查看进程

五、CSDU 客户端安装与端口检查

1. 安装客户端

chmod +x csdu-client-linux-glibc2.17-x86_64.bin
./csdu-client-linux-glibc2.17-x86_64.bin
  • 选择 client 类型,端口默认 10002

  • 若报 /lib/systemd/system/csdu.service: No such file or directory

    mkdir -p /usr/lib/systemd/system
    ln -s usr/lib /lib          # 若 /lib 链接损坏
    systemctl daemon-reload
    systemctl enable csdu.service

2. 端口检查

netstat -tlnp | grep 10002
ps -ef | grep csdu

日志中大量 check_remote_port error ... 10002 timed out 表示:

  • 目标节点客户端未启动

  • 网络不通或防火墙拦截

  • 客户端离线


六、备份恢复错误处理

错误现象

目标数据库[CSDU_DB]状态非停止,需要先执行停止操作
检查目标数据库[CSDU_DB]的运行状态为:YES

解决步骤

  1. 连接 SYSTEMDB

    hdbsql -i 00 -d SYSTEMDB -u SYSTEM -p csdu_1234
  2. 停止租户数据库:

    ALTER SYSTEM STOP DATABASE CSDU_DB;
  3. 验证状态:

    SELECT DATABASE_NAME, ACTIVE_STATUS FROM M_DATABASES WHERE DATABASE_NAME = 'CSDU_DB';

    状态变为 NO 后,重新执行恢复任务。

强制断开连接(可选)

ALTER SYSTEM DISCONNECT SESSION ALL;

七、其他问题速查

问题 原因 解决
ldd: bad interpreter /usr/bin/bash 缺失 ln -s /bin/bash /usr/bin/bash
hdbsql: command not found PATH 未包含 使用全路径 /usr/sap/HDB/HDB00/exe/hdbsql
M_SYSTEM_REPLICATION 0 行 未配置系统复制 正常,需 hdbnsutil -sr_enable
invalid schema name 在 SYSTEMDB 中建业务表 连接到租户数据库再建
密码 A1a 规则 缺少大写/小写/数字 使用 CsduDb123 类密码

八、关键路径与命令汇总

项目 路径/命令
HANA 安装目录 /opt/install/hana_unpacked/saphana-2.00.057
hdblcm ./hdblcm --action=install ...
hdbsql /usr/sap/HDB/HDB00/exe/hdbsql
实例目录 /usr/sap/HDB/HDB00
系统数据库端口 30013
租户数据库端口 30015
CSDU 客户端端口 10002
日志文件 /var/tmp/hdb_HDB_hdblcm_install_*/hdblcm.log

以上笔记覆盖了从系统准备、HANA 安装、数据库操作到 CSDU 客户端与备份恢复的主要流程和排错方法。后续遇到类似问题时,可按章节快速定位。

上一篇 AnyBackup - Oracle 使用 BEQ 连接备份卡住
下一篇 AnyBackup-web 界面上通用资源数量显示不正确
易读格

易读格管理员

这个人很懒,什么都没有留下。

本月创作热力图

目录
最新评论
暂无评论