Solaris 11.4已经发布,不过没有GUI,网传oracle解雇了solaris的全体研发人员,所以有篇网文叫《Solaris已死,有事烧纸》,兴起安装oracle 18c这个念头的根源就是缅怀一下光辉的太阳。
一、准备工作:
1、Oracle VirtualBox,https://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html
2、Oracle 18c for Solaris,https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html,文件名为:SOLARIS.X64_180000_db_home.zip
3、Solaris 11.4,https://www.oracle.com/technetwork/server-storage/solaris11/downloads/install-2245079.html,下载x86 Text Installer,名为:sol-11_4-text-x86.iso
二、安装Solaris
内存2048MB,双CPU,网络设置转发主机2222端口至虚拟机22端口,转发1521至1521,转发5500至5500,安装过程很简单,一路F2选择网络、语言、键盘、硬盘啥的,设置账号密码,安装完毕按F7关机,关闭虚拟机电源,手动弹出iso镜像,重启虚拟机。
三、准备安装Oracle 18c
1、安装oracle 18c的预安装程序包:
$ pkg install oracle-rdbms-server-18c-preinstall
这个包在solaris 11.4的entire下是有匹配的
2、安装unixodbc
$ pkg install unixodbc
3、设置host
$ vi /etc/hosts
删除::1与127.0.0.1里面的solaris,新增:
10.0.2.15 solaris
这个ip是DHCP分配的,用ifconfig -a4命令查看,而主机在虚拟机中的ip为10.0.2.2,可以ping一下
设置完后,使用hostname命令查看,二者必须一致,否则只有更改/etc/hostname里的值
4、重新分配swap空间
$ swap -d /dev/zvol/dsk/rpool/swap
$ zfs set volsize=4G rpool/swap
$ swap -a /dev/zvol/dsk/rpool/swap
$ swap -l
5、建立oracle账号与安装目录
$ groupadd oinstall
$ groupadd dba
$ groupadd oper
$ useradd -d /export/home/oracle -m -s /bin/bash -g oinstall -G dba,oper oracle
$ passwd oracle
为oracle设置密码
$ mkdir -p /opt/app/oracle/product/18c/dbhome
$ chown -R oracle:oinstall /opt/app
6、设置环境变量
$ su - root
$ cat >> /etc/system << EOT
set noexec_user_stack=1
set semsys:seminfo_semmni=100
set semsys:seminfo_semmns=25600
set semsys:seminfo_semmsl=256
set semsys:seminfo_semvmx=32767
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=10
EOT
$ cat >> /etc/profile << EOT
export PATH=/bin:/usr/bin:/usr/sbin
export TMP=/tmp
export TMPDIR=\$TMP
export ORACLE_HOSTNAME=solaris
export ORACLE_UNQNAME=oracdb
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/18c/dbhome
export ORACLE_SID=oracdb
export PATH=\$PATH:\$ORACLE_HOME/bin:/opt/developerstudio12.6/bin
export LD_LIBRARY_PATH=/lib:/usr/lib:\$ORACLE_HOME/lib
export CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
EOT
EOT区域里的变量前置符$要用\$转义,接着更改oracle账号的环境变量
$ su - oracle
$ vi ~/.profile
export PATH=/usr/bin:/usr/sbin
替换成
export PATH=$PATH
7、把SOLARIS.X64_180000_db_home.zip放在主机站点根目录下,虚拟机切换到oracle账号
$ su - oracle
$ cd $ORACLE_HOME
$ wget http://10.0.2.2/SOLARIS.X64_180000_db_home.zip
$ unzip SOLARIS.X64_180000_db_home.zip
oracle的安装文件必须解压到$ORACLE_HOME下才能安装
10、安装数据库,首先编辑数据库安装应答文件,范例如下:
$ cd $ORACLE_HOME
$ grep -v "^#" ./install/response/db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v18.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/opt/app/oraInventory
ORACLE_HOME=/opt/app/oracle/product/18c/dbhome
ORACLE_BASE=/opt/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.CLUSTER_NODES=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=oracdb
oracle.install.db.config.starterdb.SID=oracdb
oracle.install.db.ConfigureAsContainerDB=true
oracle.install.db.config.PDBName=orapdb
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=true
oracle.install.db.config.starterdb.password.ALL=123456
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.password.PDBADMIN=
oracle.install.db.config.starterdb.managementOption=CLOUD_CONTROL
oracle.install.db.config.starterdb.omsHost=
oracle.install.db.config.starterdb.omsPort=
oracle.install.db.config.starterdb.emAdminUser=
oracle.install.db.config.starterdb.emAdminPassword=
oracle.install.db.config.starterdb.enableRecovery=true
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/opt/app/oracle/oradata
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/opt/app/oracle/fast_recovery_area
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
执行静默安装
$ ./runInstaller -force -silent -responsefile ./install/response/db_install.rsp
成功之后根据提示依次执行两个脚本:
$ sudo /opt/app/oraInventory/orainstRoot.sh
$ sudo $ORACLE_HOME/root.sh
11、配置监听,首先编辑配置文件,范本如下:
$ grep -v "^#" $ORACLE_HOME/assistants/netca/netca.rsp
[GENERAL]
RESPONSEFILE_VERSION="12.2"
CREATE_TYPE="CUSTOM"
SHOW_GUI=false
LOG_FILE=""/opt/app/oracle/product/18c/dbhome/network/tools/log/netca.log""
[oracle.net.ca]
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}
LISTENER_START=""LISTENER""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
NSN_NUMBER=1
NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
NSN_SERVICE={"PLSExtProc"}
NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}
执行配置,这里的-responsefile好像要用绝对路径
$ netca -silent -responsefile $ORACLE_HOME/assistants/netca/netca.rsp
查看监听状态,因为没有实例,看不到任何东东
$ lsnrctl status
12,创建数据库实例,首先编辑配置文件,范本如下:
$ grep -v "^#" $ORACLE_HOME/assistants/dbca/dbca.rsp
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
gdbName=oracdb
sid=oracdb
databaseConfigType=SI
RACOneNodeServiceName=
policyManaged=
createServerPool=
serverPoolName=
cardinality=
force=
pqPoolName=
pqCardinality=
createAsContainerDatabase=true
numberOfPDBs=1
pdbName=orapdb
useLocalUndoForPDBs=
pdbAdminPassword=123456
nodelist=
templateName={ORACLE_HOME}/assistants/dbca/templates/General_Purpose.dbc
sysPassword=123456
systemPassword=123456
oracleHomeUserPassword=
emConfiguration=DBEXPRESS
emExpressPort=5500
runCVUChecks=
dbsnmpPassword=
omsHost=
omsPort=
emUser=
emPassword=
dvConfiguration=
dvUserName=
dvUserPassword=
dvAccountManagerName=
dvAccountManagerPassword=
olsConfiguration=
datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates
datafileDestination={ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}
recoveryAreaDestination={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}
storageType=FS
diskGroupName=
asmsnmpPassword=
recoveryGroupName=
characterSet=AL32UTF8
nationalCharacterSet=
registerWithDirService=
dirServiceUserName=
dirServicePassword=
walletPassword=
listeners=LISTENER
variablesFile=
variables=
initParams=undo_tablespace=UNDOTBS,memory_target=796MB,processes=300,db_recovery_file_dest_size=2780MB,nls_language=AMERICAN,db_recovery_file_dest={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME},db_block_size=8KB,diagnostic_dest={ORACLE_BASE},audit_file_dest={ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump,nls_territory=AMERICA,local_listener=LISTENER_CDB,compatible=18.3.0,control_files=("{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl","{ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}/control02.ctl"),db_name=oracdb,audit_trail=db,remote_login_passwordfile=EXCLUSIVE,open_cursors=300
sampleSchema=TRUE
memoryPercentage=40
databaseType=
automaticMemoryManagement=TRUE
totalMemory=
然后安装数据库实例
$ dbca -silent -createDatabase -responsefile $ORACLE_HOME/assistants/dbca/dbca.rsp
然后查看数据库状态
$ lsnrctl status
$ ps -ef | grep ora_ | grep -v grep
$ netstat -a -P tcp
$ sqlplus / as sysdba
SQL> select * from v$version;
13,最后设置oracle启动脚本
$ su - root
$ vi /var/opt/oracle/oratab
oracdb:/opt/app/oracle/product/18c/home:N
把最后的N改为Y
$ cat >> /etc/rc3.d/S90Oracle << EOT
su - oracle -c 'lsnrctl start'
su - oracle -c 'dbstart oracdb'
EOT
$ cat >> /etc/rc1.d/K90Oracle << EOT
su - oracle -c 'dbshut oracdb'
EOT
$ chmod 775 /etc/rc3.d/S90Oracle
$ chmod 775 /etc/rc1.d/K90Oracle
$ init 6
重启系统之后,大概等个分分钟,就又可以用lsnrctl、ps、netstat、sqlplus检查数据库状态了。
然后主机点开https://localhost:5500/em,注意是https,我那主机CPU也够呛。
用户名:sys
密码:123456
不要填写容器名
选中以sysdba身份
点击登录