步骤详解:Linux环境下如何创建Oracle 11g实例 (linux下oracle11g创建实例)

Oracle 11g是当今更流行的数据库管理系统之一,它在大型企业和中小型机构中广泛使用。为了在Linux环境下创建一个Oracle 11g实例,您需要遵循下面这些步骤:

1. 下载并安装Oracle 11g

您可以从Oracle的官方网站下载Oracle 11g。安装Oracle 11g需要管理员权限,因此您需要登录系统并使用管理员账户进行操作。

2. 创建Oracle用户组和用户

在Linux操作系统上,每个Oracle实例都运行在自己的用户账户下。创建一个Oracle用户组和用户,并将Oracle的安装目录授权给它们。在命令行中执行以下命令:

groupadd oinstall

groupadd dba

useradd -g oinstall -G dba oracle

3. 配置内核参数和系统限制

为了确保Oracle 11g能够正常运行,您需要将Linux的内核参数和系统限制设置为合适的值。打开/etc/sysctl.conf文件,并添加以下行:

kernel.shmall = 2023152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32023 100 128

fs.file-max = 65536

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 2023

oracle hard nproc 16384

oracle soft stack 10240

oracle hard stack 32768

4. 创建Oracle目录结构

您需要创建一个Oracle目录结构,并分配文件系统的空间以用于Oracle数据和日志文件。以下是示例目录结构:

mkdir /u01

chown -R oracle:oinstall /u01

mkdir /u01/app

chown -R oracle:oinstall /u01/app

mkdir /u01/app/oracle

chown -R oracle:oinstall /u01/app/oracle

mkdir /u01/app/oracle/oradata

chown -R oracle:oinstall /u01/app/oracle/oradata

mkdir /u01/app/oracle/flash_recovery_area

chown -R oracle:oinstall /u01/app/oracle/flash_recovery_area

5. 设置Oracle用户环境变量

为了能够成功创建Oracle实例,您需要以Oracle用户的身份登录,并设置一些必要的环境变量。在命令行中执行以下操作:

su – oracle

vi .bash_profile

添加以下行:

export ORACLE_BASE=/u01/app/oracle

export ORACLE_SID=mydb

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

6. 创建Oracle实例

现在您可以创建Oracle实例了。在命令行中执行以下操作:

cd $ORACLE_HOME

./bin/dbca

该命令将启动Oracle的数据库创建助手,在其中您可以选择创建新的Oracle数据库。您需要输入数据库名称和密码,以及其他一些详细信息,例如监听器端口号和目录结构等。创建数据库可能需要花费一些时间,视数据库的大小而定。

7. 启动Oracle实例

完成数据库创建之后,您需要启动Oracle实例。在命令行中执行以下操作:

cd $ORACLE_HOME

./bin/dbstart

该命令将自动启动Oracle实例以及相关的数据库服务。启动可能需要一些时间,如果一切顺利,您会看到“Oracle已启动”的消息。

创建Oracle 11g实例并不是一项简单的任务,您需要正确地执行一系列步骤才能成功地完成。需要注意的是,每个安装和环境都可能略有不同,但是如果您按照上述步骤操作,应该能够创建一个完整且可用的Oracle实例。

相关问题拓展阅读:

Oracle 11g RAC环境下单实例非缺省监听及端口配置

如果在Oracle g RAC环境下使用dbca创建单实例数据库后 Oracle会自动将其注册到缺省的 端口及监听器 大多数情况下我们使用的为非缺省监听器以及非缺省的监听端口 而且在Oracle g RAC环境中 对于集群监听器的配置由grid用户来接管了 基于这种情形的单实例非缺省监听及端口该如何配颤和悔置呢?本文给出了解决方案 并且使用了静态及动态两种注册方法

  关于单实例下非缺省监听及端口的配置可以参考下面的文章 实际上参照下列文章依旧可以完成RAC 环境下单实例非缺省监听及端口的配置 但

  RAC环境下较之前的单实例环境有些不同 所以记录下了这些个细小的差异

  配置非默认端口的动态服务注册

  配置sqlnet ora限制IP访问Oracle

  Oracle 监听器日志配置与管理

  设置 Oracle 监听器密码(LISTENER)

  配置ORACLE 客户端连接到数据库

   dbca创建单实例数据库后监听器的情形

  

   环境

  $ cat /etc/issue

  Enterprise Linux Enterprise Linux Server release (Carthage)

  Kernel \r on an \m

  $ crsctl query crs activeversion

  Oracle Clusterware active version on the cluster is

   实例cnbo为RAC环境下使用dbca创建 当前处于offline状态

  $ crsstat | grep cnbo

  bo db database C OFFLINE OFFLINE (linux ) Instance Shutdown

   缺省的listener处于offline状态

  $ crsstat | grep Listener | grep OFFLINE

  ora LISTENER lsnr Listener L OFFLINE OFFLINE (linux )

   启动实例及监听

 棚败 $ srvctl start database d cnbo

  $ srvctl start listener l LISTENER

  PRCC : LISTENER was already running

  $ export ORACLE_SID=cnbo

  $ sqlplus / as sysdba

  SQL> set linesize

  SQL> show parameter cluster_d >此实例为RAC环境下的单实例

  NAME TYPE VALUE

  

  cluster_database boolean FALSE

  cluster_database_instances integer

   下茄正面的lsnrctl status可以看到实例被注册到 的默认端口 dbca创建完实例cnbo后并没有为其配置监听

   而实例确确实实的被注册到了缺省的监听器 应该来说这个是dbca是自动添加的

   注 从Oracle g RAC开始 集群监听器的配置由grid用户来接管 因此可以在$ORA_CRS_HOME/neork/admin/目录下找到对应的listener ora文件

  $ lsnrctl status

  LSNRCTL for Linux: Version Production on AUG : :

  

  Listening Endpoints Summary

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= )(PORT= )))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= )(PORT= )))

  Services Summary

  Service +A has instance(s)

  Instance +A status READY has handler(s) for this service

  Service has instance(s) >该服务即是单实例cnbo提供的

  Instance cnbo status READY has handler(s) for this service

  Service has instance(s)

  Instance cnbo status READY has handler(s) for this service

  The mand pleted successfully

   配置非缺省的监听器并实现动态注册

  

   切换到Oracle用户下 并清空其下的listener ora与tnsnames ora

  $ cat /dev/null>$ORACLE_HOME/neork/admin/listener ora

  $ cat /dev/null>$ORACLE_HOME/neork/admin/tnsnames ora

   下面通过netca来为其配置监听器及tnsnames ora

  $ export DISPLAY= :

  $ netca

   Author : Robinson Cheng

   Blog :

   >下面是使用netca配置后的结果 包括listener ora以及tnsnames ora

  $ more $ORACLE_HOME/neork/admin/listener ora

  # listener ora Neork Configuration File: /u /app/oracle/db_ /neork/admin/listener ora

  # Generated by Oracle configuration tools

  ADR_BASE_LISTENER_CNBO = /u /app/oracle

  LISTENER_CNBO = # 监听器的名字为LISTENER_CNBO 端口为

  (DESCRIPTION_LIST =

  (DESCRIPTION =

  (ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = ))

  )

  )

  $ more $ORACLE_HOME/neork/admin/tnsnames ora

  # tnsnames ora Neork Configuration File: /u /app/oracle/db_ /neork/admin/tnsnames ora

  # Generated by Oracle configuration tools

  CNBO =

  (DESCRIPTION =

  (ADDRESS_LIST =

  (ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = ))

  )

  (CONNECT_DATA =

  (SERVICE_NAME = )

  )

  )

   提示没有找到监听器 无法ping通 因为我们配置的监听器并没有启动

   尽管服务在缺省的监听器注册 但无法ping 即此路不通

  $ tnsping cnbo

  TNS Ping Utility for Linux: Version Production on AUG : :

  Copyright (c) Oracle All rights reserved

  Used parameter files:

  Used TNSNAMES adapter to resolve the alias

  Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = )))

  (CONNECT_DATA = (SERVICE_NAME = )))

  TNS : TNS:no listener

   下面我们启动非缺省的监听器

  $ lsnrctl start LISTENER_CNBO

  LSNRCTL for Linux: Version Production on AUG : :

  

  Listening Endpoints Summary

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT= )))

  The listener supports no services

  The mand pleted successfully

  $ lsnrctl status LISTENER_CNBO

  LSNRCTL for Linux: Version Production on AUG : :

  

  Listening Endpoints Summary

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT= )))

  The listener supports no services >没有任何服务及实例注册到监听器 等N久也不会有实例注册

  The mand pleted successfully >因为这个是非缺省的 而且我们还没有配置动态注册

   下面我们来设置动态注册

   查看参数local_listener 此时已经被设置了 而且端口是 IP用的是虚IP

   这就是为什么实例创建后 会被自动注册到grid用户下缺省监听器的缘故

  SQL> show parameter local_lis

  NAME TYPE VALUE

  

  local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD

  DRESS=(PROTOCOL=TCP)(HOST=linu

  x vip)(PORT= ))))

   设置动态注册 收到了错误消息

  SQL> alter system set local_listener= LISTENER_CNBO ;

  alter system set local_listener= LISTENER_CNBO

  *

  ERROR at line :

  ORA : parameter cannot be modified because specified value is invalid

  ORA : invalid specification for system parameter LOCAL_LISTENER

  ORA : syntax error or unresolved neork name LISTENER_CNBO

   对于前面出现的错误 给出两种解决方案

   一是按照前面local_listener参数值的格式设置新的ip及端口 或者将这个描述信息添加到tnsnames ora文件中

   下面我们选用了第二种解决方案

  $ echo

  > LISTENER_CNBO =

  > (ADDRESS_LIST =

  > (ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = ))

  > ) >>$ORACLE_HOME/neork/admin/tnsnames ora

   再次设置参数local_listener

  SQL> alter system set local_listener= LISTENER_CNBO ;

  System altered

   下面可以看到实例及服务已经自动注册到监听器LISTENER_CNBO

  $ lsnrctl status LISTENER_CNBO

  LSNRCTL for Linux: Version Production on AUG : :

  

  Listening Endpoints Summary

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT= )))

  Services Summary

  Service has instance(s)

  Instance cnbo status READY has handler(s) for this service

  Service has instance(s)

  Instance cnbo status READY has handler(s) for this service

  The mand pleted successfully

   下面查看grid用户下原来的服务及实例cnbo也不复存在

  $ lsnrctl status

  LSNRCTL for Linux: Version Production on AUG : :

  

  Listening Endpoints Summary

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= )(PORT= )))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= )(PORT= )))

  Services Summary

  Service +A has instance(s)

  Instance +A status READY has handler(s) for this service

  The mand pleted successfully

   配置非缺省的监听器并实现静态注册

  

   对于非缺省监听器 我们也可以为其配置静态注册方式

   首先我们停止监听器 并清空Oracle用户下的listener ora与tnsnames ora

  $ lsnrctl stop LISTENER_CNBO

  $ cat /dev/null>$ORACLE_HOME/neork/admin/listener ora

  $ cat /dev/null>$ORACLE_HOME/neork/admin/tnsnames ora

  SQL> alter system set local_listener= ;

   下面使用netmgr来配置监听器及tnsnames

  $ export DISPLAY= :

  $ netmgr

   下面是配置后的结果 此时我们使用了新的端口号 以及新的监听器名字LISTENER_NEW

  $ more $ORACLE_HOME/neork/admin/listener ora

  # listener ora Neork Configuration File: /u /app/oracle/db_ /neork/admin/listener ora

  # Generated by Oracle configuration tools

  # 我们使用netmgr为其添加了数据库服务 即SID_LIST_LISTENER_NEW项 而netca无法完成此项任务

  LISTENER_NEW =

  (DESCRIPTION =

  (ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = ))

  )

  ADR_BASE_LISTENER_NEW = /u /app/oracle

  SID_LIST_LISTENER_NEW =

  (SID_LIST =

  (SID_DESC =

  (GLOBAL_DBNAME = )

  (ORACLE_HOME = /u /app/oracle/db_ )

  (SID_NAME = cnbo)

  )

  )

  $ more $ORACLE_HOME/neork/admin/tnsnames ora

  # tnsnames ora Neork Configuration File: /u /app/oracle/db_ /neork/admin/tnsnames ora

  # Generated by Oracle configuration tools

  CNBO =

  (DESCRIPTION =

  (ADDRESS_LIST =

  (ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = ))

  )

  (CONNECT_DATA =

  (SERVICE_NAME = )

  )

  )

   启动新的监听器

  $ lsnrctl start LISTENER_NEW

  LSNRCTL for Linux: Version Production on AUG : :

  

  Listening Endpoints Summary

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT= )))

  Services Summary

  Service has instance(s)

  Instance cnbo status UNKNOWN has handler(s) for this service 注意状态为UNKNOWN 表明是静态注册

  The mand pleted successfully

   我们看看grid用户缺省监听的状态 此时实例cnbo依旧被注册

  $ lsnrctl status

  LSNRCTL for Linux: Version Production on AUG : :

  

  Listening Endpoints Summary

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= )(PORT= )))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= )(PORT= )))

  Services Summary

  Service +A has instance(s)

  Instance +A status READY has handler(s) for this service

  Service has instance(s)

  Instance cnbo status READY has handler(s) for this service

  Service has instance(s)

  Instance cnbo status READY has handler(s) for this service

  The mand pleted successfully

   下面检查一下local_listener参数

  SQL> show parameter db_name

  NAME TYPE VALUE

  

  db_name string cnbo

  SQL> show parameter local_lis >参数没有做任何设置

  NAME TYPE VALUE

  

  local_listener string

   从上面的情形来看 尽管没有设置local_listener参数 此时实例依旧被注册到监听

   在此时我们已经可以通过tnsnames连接到数据库 也就是说客户端发起的连接最终还是通过监听器LISTENER_NEW 而不是缺省的监听器

   对于这个情形在非RAC环境的Oracle g g 可以不用设置local_listener 也不会注册到缺省监听器

   但grid用户下的缺省监听器提供的cnbo服务着实别扭 下面为还是添加监听器信息到tnsnames ora

  $ echo

  > LISTENER_NEW =

  > (ADDRESS_LIST =

  > (ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = ))

  > ) >>$ORACLE_HOME/neork/admin/tnsnames ora

   >设置local_listener

  SQL> alter system set local_listener= LISTENER_NEW ;

   下面的缺省监听状态下不再看到cnbo实例

  $ lsnrctl status

  LSNRCTL for Linux: Version Production on AUG : :

  

  Listening Endpoints Summary

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= )(PORT= )))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= )(PORT= )))

  Services Summary

  Service +A has instance(s)

  Instance +A status READY has handler(s) for this service

  The mand pleted successfully

   后记

  a 在Oracle g RAC环境下使用dbca创建单实例数据库会自动将实例配置到缺省的监听器以及缺省端口

  b 在Oracle g RAC环境下 对于集群监听的配置 需要在grid用户下来完成 这个不同于Oracle g RAC 关于 g RAC监听配置可参考尾部链接

  c 注意netca与netmgr在配置监听器时的差异 由上测试可知netca不能为监听添加数据库服务 即SID_LIST_项 而netmgr可以实现 建议使用netmgr

  d 动态服务注册需要配置local_listener参数 要么使用DESCRIPTION等一串描述 要么简化到tnsnames ora文件之中

  e 对于Oracle g RAC环境下单实例的非缺省监听及端口的静态注册 如果不设置local_listener 尽管会注册到指定的监听器 但同时也会注册到缺省监听器

关于linux下oracle11g创建实例的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 步骤详解:Linux环境下如何创建Oracle 11g实例 (linux下oracle11g创建实例)