IPv4存储在Oracle中(16进制/10进制方式混合)取出的SQL

本文提供了一种将IPv4地址从十六进制格式转换为十进制格式的SQL方法,通过使用substr和to_number函数,有效地实现了格式转换。

简单一点写吧

选出IPv4的16进制的格式,并转换为10进制的SQL,比如:

C0A80001

转为

192.168.0.1

这样的格式

SQL代码

由于是混在一起的,所以需要先选出16进制的内容,转成10进制。

    select 
    to_number(substr(a.pdpaddr,1,2),'XX') || '.' ||
    to_number(substr(a.pdpaddr,3,2),'XX') || '.' || 
    to_number(substr(a.pdpaddr,5,2),'XX') || '.' ||
    to_number(substr(a.pdpaddr,7,2),'XX') IP 
    from SomeTable a 
    where length(A.PDPADDR)=8 and instr(A.PDPADDR,'.')=0

再加上本身10进制的格式内容就OK了。

union
where length(A.PDPADDR)<>8 or instr(A.PDPADDR,'.')<>0
<think>我们正在处理一个在无互联网连接的OpenEuler 22.03系统上安装Oracle 12.2c数据库的请求。 由于环境是离线的,我们需要提前下载所有必要的安装包和依赖,并传输到目标机器。 参考Oracle官方文档和已知的Linux安装指南,以下步骤是关键: 1. 系统要求检查:包括内核参数、用户和组、目录结构、资源限制等。 2. 安装必要的依赖包:由于离线,需要提前下载所有rpm包并创建本地仓库,或者使用rpm命令手动安装。 3. 创建Oracle用户和组,配置环境变量。 4. 修改系统参数(如/etc/sysctl.conf, /etc/security/limits.conf等)。 5. 准备Oracle安装文件(12.2c的安装包)并解压。 6. 运行安装程序(使用runInstaller),并在安装过程中处理可能出现的依赖问题。 7. 执行root脚本。 然而,OpenEuler是一个较新的Linux发行版,Oracle 12.2c官方可能未明确支持。因此,我们需要参考类似发行版(如CentOS/RHEL)的安装步骤,并注意兼容性问题。 根据引用[2]中提到的文档,我们可以参考Oracle Database的官方文档,特别是针对Linux的安装部分。由于是离线环境,我们还需要注意补丁的安装。 步骤详细指南: 步骤1:系统要求 - 确保系统满足最小硬件要求(内存、交换空间、磁盘空间等)。 - 检查内核版本:`uname -r`,确保是OpenEuler 22.03支持的内核。 - 创建必要的用户和组: ``` groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle passwd oracle ``` - 创建安装目录并设置权限: ``` mkdir -p /u01/app/oracle chown -R oracle:oinstall /u01 chmod -R 775 /u01 ``` 步骤2:系统参数设置 - 编辑`/etc/sysctl.conf`,添加或修改以下参数(参考Oracle 12c for Linux的要求): ``` fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 4294967295 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 ``` 运行`sysctl -p`使生效。 - 编辑`/etc/security/limits.conf`,添加: ``` oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 16384 oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768 ``` - 编辑`/etc/pam.d/login`,添加: ``` session required pam_limits.so ``` 步骤3:安装依赖包 - 由于OpenEuler基于CentOS,我们可以参考Oracle 12c for RHEL7的依赖包列表。但OpenEuler使用dnf作为包管理器,我们需要提前下载所有依赖包。 - 依赖包列表(可能包括但不限于): binutils, compat-libcap1, compat-libstdc++-33, gcc, gcc-c++, glibc, glibc-devel, ksh, libaio, libaio-devel, libgcc, libstdc++, libstdc++-devel, libXi, libXtst, make, sysstat, unixODBC, unixODBC-devel - 由于离线,我们需要在一个有相同OpenEuler版本和架构(如x86_64)的在线系统上,使用dnf下载这些包及其依赖: ``` dnf install --downloadonly --downloaddir=./oracle-deps <package1> <package2> ... ``` 然后将整个目录复制到目标机器,并使用`rpm -ivh *.rpm`安装。 步骤4:配置用户环境变量 - 以oracle用户登录,编辑`~/.bash_profile`,添加: ``` export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1 export ORACLE_SID=orcl export PATH=$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib ``` 步骤5:准备安装文件 - 将Oracle 12.2c的安装文件(通常为两个zip文件:linuxx64_12201_database.zip)复制到目标机器。 - 解压:`unzip linuxx64_12201_database.zip -d /tmp/oracle_install` 步骤6:运行安装程序 - 由于OpenEuler可能不被Oracle官方支持,我们需要在安装时忽略一些检查。 - 以oracle用户身份运行: ``` cd /tmp/oracle_install/database ./runInstaller -ignorePrereq ``` - 在图形界面安装过程中,选择“仅安装数据库软件”(因为离线环境无法创建实例?或者也可以创建实例,但需要额外的步骤) - 如果遇到依赖包缺失,需要手动安装缺失的包(同样需要提前下载好)。 步骤7:执行root脚本 - 安装完成后,按照提示以root用户运行两个脚本: ``` /u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/12.2.0/dbhome_1/root.sh ``` 注意:由于OpenEuler 22.03可能较新,可能会遇到glibc版本过高或其他库不兼容的问题。如果遇到,可能需要安装额外的兼容包或使用符号链接。 另外,参考引用[1]中关于UDEV的设置,如果使用ASM存储,需要配置UDEV规则。但本问题中未要求ASM,故暂不考虑。 由于安装环境复杂,建议在安装前阅读Oracle官方文档的Linux安装指南。 生成相关问题: 1. 在OpenEuler上安装Oracle 12.2c需要哪些特定的依赖包? 2. 如何解决OpenEuler系统上安装Oracle时出现的glibc版本不兼容问题? 3. 在离线环境下如何创建本地yum仓库来安装Oracle依赖?</think>### OpenEuler 22.03 离线安装 Oracle 12.2c 数据库指南 #### **1. 系统准备与依赖检查** - **硬件要求** - 内存 ≥ 4GB(建议 8GB+) - 交换空间:内存 < 16GB 时取内存值,≥16GB 时取 16GB - 磁盘空间:`/tmp` ≥ 1GB,Oracle进制文件 ≥ 10GB,数据文件按需分配 - 架构:x86_64(需确认 OpenEuler 22.03 兼容性[^1]) - **依赖包离线准备** 在联网环境中下载以下 RPM 包(OpenEuler 22.03 仓库)并复制到离线环境: ```bash # 核心依赖包 binutils-2.*.x86_64.rpm compat-libcap1-*.x86_64.rpm gcc-*.x86_64.rpm glibc-devel-*.x86_64.rpm libaio-devel-*.x86_64.rpm ksh-*.x86_64.rpm # 必须使用 ksh libnsl-*.x86_64.rpm # OpenEuler 特有依赖 ``` > 注:完整依赖列表参考 Oracle 12cR2 for Linux 文档[^2],使用 `rpm -ivh *.rpm` 手动安装。 #### **2. 系统配置** - **内核参数调整** 编辑 `/etc/sysctl.conf`: ```conf kernel.shmall = 4294967296 kernel.shmmax = 68719476736 fs.file-max = 6815744 net.core.rmem_max = 4194304 net.core.wmem_max = 1048576 ``` 执行 `sysctl -p` 生效。 - **用户与目录配置** ```bash groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle mkdir -p /u01/app/oracle chown -R oracle:oinstall /u01 chmod -R 775 /u01 ``` - **环境变量配置**(oracle 用户下) 编辑 `~/.bash_profile`: ```bash export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1 export ORACLE_SID=orcl export PATH=$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib ``` #### **3. Oracle 软件离线安装** 1. **传输安装文件** 将 Oracle 12.2c 安装包(`linuxx64_12201_database.zip`)复制到离线环境。 2. **解压并安装** ```bash unzip linuxx64_12201_database.zip cd database ./runInstaller -ignorePrereq -silent \ -responseFile /tmp/db_install.rsp \ oracle.install.option=INSTALL_DB_SWONLY \ UNIX_GROUP_NAME=oinstall \ INVENTORY_LOCATION=/u01/app/oraInventory \ ORACLE_HOME=$ORACLE_HOME \ ORACLE_BASE=$ORACLE_BASE \ oracle.install.db.InstallEdition=EE \ oracle.install.db.OSDBA_GROUP=dba \ oracle.install.db.OSOPER_GROUP=dba ``` > 注:需提前生成响应文件模板(参考 `response/db_install.rsp`),或手动执行图形安装(需配置 X11 转发)。 3. **执行 root 脚本** 安装完成后按提示运行: ```bash /u01/app/oraInventory/orainstRoot.sh $ORACLE_HOME/root.sh ``` #### **4. 数据库初始化** ```bash dbca -silent \ -createDatabase \ -templateName General_Purpose.dbc \ -gdbName orcl \ -sid orcl \ -characterSet AL32UTF8 \ -memoryPercentage 40 \ -emConfiguration NONE \ -datafileDestination /u01/app/oracle/oradata ``` #### **5. 验证安装** ```sql sqlplus / as sysdba SQL> SELECT * FROM v$version; -- 预期输出:Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 ``` #### **关键问题处理** - **依赖冲突**:OpenEuler 22.03 的 glibc 版本可能过高,需手动降级或添加符号链接: ```bash ln -s /usr/lib64/libnsl.so.2 /usr/lib64/libnsl.so.1 # 解决 libnsl 缺失 ``` - **UDEV 规则**:若使用 ASM 存储,需配置 UDEV 绑定磁盘(参考[^1])。 - **SELinux 干扰**:临时禁用 `setenforce 0` 或配置策略例外。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值