I have been running redhat spacewalk server to manage packages to redhat linux systems.The initial backend database is oracle XE that the size of the database can grow to approach 4GB limit.So,i mirate it to oracle 11gR2 database.
Current Environment
1.RedHat Linux 6
2.Spacewalk verison:1.7
3.Spacewalk channel:3 base,4 child
4.Total packages:13,230
Prerequisites
1.For install and configure spacewalk with oracle XE from here.
2.Configure linux for installing oracle 11gR2 database.Run following script:
- #!/bin/bash
- echo -------------------------------------------------
- echo "This script prepare for Oracle 11g database."
- #add group
- echo -------------------------------------------------
- echo "Now add asmadmin、dba、oper group."
- for id in oinstall asmadmin dba oper;do groupadd $id;done
- sleep 1
- #add oracle user
- echo -------------------------------------------------
- echo "Now create oracle user and set password for it."
- echo "The Oracle's Default Password is "oracle"."
- echo -------------------------------------------------
- useradd -g oinstall -G asmadmin,dba,oper -m -d /home/oracle -s /bin/bash oracle
- echo oracle|passwd --stdin oracle
- sleep 1
- echo -------------------------------------------------
- echo "Configure System Parameters For Oracle"
- sleep 2
- echo -------------------------------------------------
- echo "Edit the /etc/sysctl.conf file."
- #define /etc/sysctl.conf
- cat >>/etc/sysctl.conf<< EOF
- 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=8388608
- net.core.wmem_default=262144
- net.core.wmem_max=8388608
- fs.aio-max-nr=1048576
- fs.file-max = 6815744
- net.ipv4.tcp_rmem=4096 262144 8388608
- net.ipv4.tcp_wmem=4096 262144 8388608
- EOF
- sleep 1
- #define /etc/pam.d/login
- echo -------------------------------------------------
- echo "Edit the /etc/pam.d/login file."
- cat >>/etc/pam.d/login<<EOF
- session required pam_limits.so
- EOF
- sleep 1
- #define /etc/security/limits.conf
- echo -------------------------------------------------
- echo "Edit the /etc/security/limits.conf file."
- cat >>/etc/security/limits.conf<<EOF
- oracle soft nproc 2047
- oracle hard nproc 16384
- oracle soft nofile 1024
- oracle hard nofile 65536
- EOF
- sleep 1
- #define /etc/profile
- echo -------------------------------------------------
- echo "Edit the /etc/profile file."
- cat >>/etc/profile<<EOF
- if [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then
- if [ \$SHELL = "/bin/ksh" ]; then
- ulimit -p 16384
- ulimit -n 65536
- else
- ulimit -u 16384 -n 65536
- fi
- umask 022
- fi
- EOF
- sleep 1
- echo --------------------------------------------------
- echo "Set Oracle's Environment Variable."
- #defile oracle user's profile
- if [ -e /home/oracle/.bash_profile ]&&[ -e /home/oracle/.bashrc ];then
- cat >>/home/oracle/.bash_profile<<EOF
- export ORACLE_SID=example
- export ORACLE_BASE=/u01/app/oracle
- export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/db_1
- export NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"
- export TNS_ADMIN=\$ORACLE_HOME/network/admin
- export ORA_NLS11=\$ORACLE_HOME/nls/data
- export PATH=\$PATH:\$HOME/bin:\$ORACLE_HOME/bin:\$JAVA_HOME/bin
- export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:\${LD_LIBRARY_PATH}:\$ORACLE_HOME/oracm/lib:/lib:/usr/lib:/usr/local/lib
- export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib:\$ORACLE_HOME/network/jlib
- export THREADS_FLAG=native
- umask 022
- EOF
- chown oracle:oinstall /home/oracle/.bash_profile
- echo "alias df='df -h'">>/home/oracle/.bashrc
- echo "alias du='du -sh'">>/home/oracle/.bashrc
- echo "alias la='ls -lha'">>/home/oracle/.bashrc
- echo ----------------------------------------------------
- echo "The Default ORACLE_SID is example."
- fi
- sleep 1
- #create /u01
- echo ----------------------------------------------------
- echo "Now,Create ORACLE_HOME."
- if [ ! -e /u01 ];then
- mkdir /u01
- chown -R oracle:oinstall /u01
- chmod 775 /u01
- su - oracle -c "mkdir -p \$ORACLE_HOME"
- else
- echo "The ORACLE_HOME exist."
- fi
- sleep 1
- #install packages
- echo "**********************************************************************"
- echo "Please Install Follow Packages:"
- echo "binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel"
- echo "elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common"
- echo "glibc-devel glibc-headers ksh libaio libaio-devel libgcc"
- echo "libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel"
- echo "**********************************************************************"
- echo "WARNING:After run this scripts,You Must Reboot Your Machine !!!"
3.Installing oracle 11gR2 database (omitted).
4.Create the oracle 11gR2 start and stop scripts
- [root@server ~]#vi /etc/init.d/oracle
- #!/bin/bash
- # oracle This shell script takes care of starting and stopping the oracle services.
- # Init file for oracle daemon
- #
- # chkconfig: 2345 55 25
- # description: oracle daemon
- #
- #oracle_home:/u01/app/oracle/product/11.2.0/db_1
- RETVAL=0
- # Source function library.
- . /etc/rc.d/init.d/functions
- # Source networking configuration.
- [ -f /etc/sysconfig/network ] && . /etc/sysconfig/network
- #define global envionment variables
- #ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
- #define the start function
- start () {
- #start LISTENER
- if [ -x $ORACLE_HOME/bin/lsnrctl ]; then
- su - oracle -c 'lsnrctl start' >/home/oracle/lsnrctl_start.log 2>&1 &
- fi
- #start oracle instance
- if [ -x $ORACLE_HOME/bin/sqlplus ]; then
- su - oracle -c 'sqlplus'<<EOF
- connect / as sysdba
- startup
- quit
- EOF
- fi
- #create pid file
- sleep 20s
- ps -ef|grep ora|grep inherit|awk '{print $2}'>$PID_DIR/lsnrctl.pid
- }
- #
- #define the stop function
- #
- stop () {
- #stop oracle instance
- if [ -x $ORACLE_HOME/bin/sqlplus ]; then
- su - oracle -c 'sqlplus'<<EOF
- connect / as sysdba
- shutdown immediate
- quit
- EOF
- fi
- #stop LISTENER
- if [ -x $ORACLE_HOME/bin/lsnrctl ]; then
- su - oracle -c 'lsnrctl stop' >/home/oracle/lsnrctl_stop.log 2>&1 &
- fi
- #delete all log file on oracle home
- su - oracle -c 'rm -rf /home/oracle/*.log'
- #delete listener isqlplus pid file
- rm -rf /var/run/lsnrctl.pid
- }
- #define status functions
- status () {
- if [ -d /var/run ];then
- if [ -f $PID_DIR/lsnrctl.pid ];then
- LISNTER_PID=`cat $PID_DIR/lsnrctl.pid`
- echo The oracle listener is running and pid is $LISNTER_PID .....
- else
- echo The oracle listener is stopped
- fi
- fi
- }
- # See how we were called.
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart)
- stop
- start
- ;;
- status)
- status
- ;;
- *)
- echo $"Usage: $prog {start|stop|restart|status}"
- exit 1
- esac
- exit $RETVAL
- [root@server ~]# chkconfig --add oracle
- [root@server ~]# chkconfig --list oracle
- oracle 0:off 1:off 2:off 3:off 4:off 5:off 6:off
- [root@server ~]# chkconfig oracle on
- [root@server ~]# chkconfig --list oracle
- oracle 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- [root@server ~]# chkconfig --level 24 oracle off
- [root@server ~]# chkconfig --list oracle
- oracle 0:off 1:off 2:off 3:on 4:off 5:on 6:off
- [root@server ~]#
Create a Database Dump
1.Disable automatic start of oracle XE on system boot up
- [root@server ~]# chkconfig oracle-xe off
- [root@server ~]# chkconfig --list oracle-xe
- oracle-xe 0:off 1:off 2:off 3:off 4:off 5:off 6:off
- [root@server ~]#
2.Shutdown spacewalk services
- [root@server ~]# spacewalk-service stop
- Shutting down spacewalk services...
- Stopping RHN Taskomatic...
- Stopped RHN Taskomatic.
- Stopping cobbler daemon: [ OK ]
- Stopping rhn-search...
- Stopped rhn-search.
- Stopping MonitoringScout ...
- Stopping InstallSoftwareConfig ... [ OK ]
- [ OK ]
- Stopping Monitoring ...
- Stopping TSDBLocalQueue ... [ OK ]
- Stopping AckProcessor ... [ OK ]
- Stopping Notifier ... [ OK ]
- Stopping NotifLauncher ... [ OK ]
- Stopping GenerateNotifConfig ... [ OK ]
- Stopping NotifEscalator ... [ OK ]
- [ OK ]
- Stopping httpd: [ OK ]
- Stopping tomcat6: [ OK ]
- Shutting down osa-dispatcher: [FAILED]
- Terminating jabberd processes ...
- Stopping router: [ OK ]
- Stopping sm: [ OK ]
- Stopping c2s: [FAILED]
- Stopping s2s: [ OK ]
- Done.
3.start oracle XE
- [root@server ~]#/etc/init.d/oracle-xe start
- Starting Oracle Net Listener.
- Starting Oracle Database 10g Express Edition Instance.
4.Backup the XE database:
- [oracle@server scripts]$ pwd
- /u01/app/oracle/product/11.2.0/xe/config/scripts
- [oracle@server scripts]$ ./backup.sh
- .......
- Backup of the database succeeded.
- Log file is at /usr/lib/oracle/xe/oxe_backup_current.log.
5.Create a dump of the XE database for importation into Oracle 11r2 database
- [oracle@server ~]$ . /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
- [oracle@server ~]$ exp spacewalk/oracle owner=spacewalk consistent=y statistics=none file=spacewalk.oracleXE.dmp log=spacewalk.oracleXE.log
- Export: Release 11.2.0.3.0 - Production on Mon Aug 6 18:09:56 2012
- Copyright (c) 1982, 2011, Oracle. All rights reserved.
- Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
- Export done in AL32UTF8 character set and AL16UTF16 NCHAR character set
- ...
- . exporting dimensions
- . exporting post-schema procedural objects and actions
- . exporting statistics
- Export terminated successfully without warnings.
Configure oracle 11gR2 database
1.Create a spacewalk tablespace on oracle 11gr2 databse
- [oracle@server ~]$ echo $ORACLE_SID
- spwdb
- [oracle@server ~]$ echo $ORACLE_HOME
- /u01/app/oracle/product/11.2.0/db_1
- [oracle@server ~]$ sqlplus "/as sysdba"
- SQL*Plus: Release 11.2.0.3.0 Production on Tue Aug 6 18:43:56 2012
- Copyright (c) 1982, 2011, Oracle. All rights reserved.
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- SQL> create tablespace spacewalk datafile '/u01/oradata/spwdb/spw01.dbf' size 10G autoextend on next 1G;
- SQL>create user spacewalk identified by oracle default tablespace spacewalk;
- SQL>grant dba to spacewalk;
2.Import the oracle XE dumped database
- [oracle@server ~]$imp spacewalk/oracle@spwdb fromuser=spacewalk touser=spacewalk file=spacewalk.oracleXE.dmp ignore=y
- .................
- import done in AL32UTF8 character set and AL16UTF16 NCHAR character set
- . importing SPACEWALK's objects into SPACEWALK
- . . importing table "DEMO_LOG" 0 rows imported
- . . importing table "HTMLDB_PLAN_TABLE" 2 rows imported
- . . importing table "PXTSESSIONS" 0 rows imported
- . . importing table "RHNACTION" 140 rows imported
- ...
- . importing SPACEWALK's objects into SPACEWALK
- About to enable constraints...
- Import terminated successfully with warnings.
3.Remove execute permissions from the oracle-xe:
- [root@server ~]#chkconfig oracle-xe off
- [root@server ~]#chmod -x /etc/init.d/oracle-xe
4.Edit the /etc/rhn/rhn.conf file and replace any occurrence of 'xe' with 'spwdb'
- [root@server ~]# grep -n spwdb /etc/rhn/rhn.conf
- 32:db_name = //localhost/spwdb
5.Edit the /etc/rhn/cluster.ini and replace 'xe' with 'spwdb'
- [root@server ~]# grep -n spwdb /etc/rhn/cluster.ini
- 2:LocalConfig.0.dbname=//LOCALHOST/spwdb
6.Start the spacewalk services:
- [root@server rhn]# spacewalk-service start
- Starting spacewalk services...
- Initializing jabberd processes ...
- Starting router: [ OK ]
- Starting sm: [ OK ]
- Starting c2s: [ OK ]
- Starting s2s: [ OK ]
- Starting osa-dispatcher: [ OK ]
- Starting tomcat6: [ OK ]
- Waiting for tomcat to be ready ...
- Starting httpd: [ OK ]
- Starting Monitoring ...
- Starting InstallSoftwareConfig ... [ OK ]
- Starting NotifEscalator ... [ OK ]
- Starting GenerateNotifConfig ... [ OK ]
- Starting NotifLauncher ... [ OK ]
- Starting Notifier ... [ OK ]
- Starting AckProcessor ... [ OK ]
- Starting TSDBLocalQueue ... [ OK ]
- [ OK ]
- Starting MonitoringScout ...
- [ OK ]
- Starting rhn-search...
- Starting cobbler daemon: [ OK ]
- Starting RHN Taskomatic...
- Done.