yum安装LAMP

1. 安装Apahce, PHP, MySQL以及php连接mysql库组件。
#yum -y install httpd php mysql mysql-server php-mysql
yum会到指定的服务器(mirror:163.com服务器)下载对应的软件版本,并自动处理依赖关系,并进行安装。

2. 安装apache扩展
#yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
让apache更好的支持其他的软件。

3. 安装php的扩展
#yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc
apache本身并不支持php文件,要安装对应的php软件,然后进行http.conf配置;让apache能解析.php文件。

4. 安装MySQL的扩展
#yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql
跟好的实现mysql的功能。

完成后,用/etc/init.d/mysqld start 启动mysql
a.设置mysql密码
#mysqladmin -u root -p password(设置mysql的root密码)
安装后mysql到root密码默认为空,需要重新设置。
b.允许远程登录
mysql -u root -p
Enter Password:
mysql>GRANT ALL PRIVILEGES ON *.* TO ‘用户名’@’%’ IDENTIFIED BY ‘密码’ WITH GRANT OPTION;
完成后就能用mysql-front远程管理mysql了。

5. 配置开机启动服务
#/sbin/chkconfig httpd on [设置apache服务器httpd服务开机启动]
#/sbin/service httpd start [启动httpd服务,与开机启动无关]
#/sbin/service mysqld start [启动mysqld服务,与开机启动无关]

6. 简单配置文件:
apache的配置文件是/etc/httpd/conf下
modules放在/usr/lib/httpd下
php的配置文件在/etc/php.d/下 和/etc/php.ini
php的modules放在/usr/lib/php/modules下

7. 安装Tomcat5
#yum -y install tomcat5 tomcat5-webapps tomcat5-admin-webapps
安装Tomcat5安装包和对应的依赖关系包

8. 启动Tomcat5
#service tomcat5 start
#chkconfig tomcat5 on

9. 在浏览器输入http://你的IP:8080/,可以看到Apache SoftWare Foundation页,如果看不到,请确认是否是防火墙问题
看到一个猫头 ——————>tomcat5安装成功

10. Apache与Tomcat整合(这个文件我是找不到)
如果网站需同时整合Apache与Tomcat可以使用JK或者Proxy方式
使用VI编辑proxy_ajp.conf文件
#vi /etc/httpd/conf.d/proxy_ajp.conf
输入以下内容
ProxyPass /tomcat/ ajp://localhost:8009/
存储文件后,重启Apache

#service httpd restart

在浏览器输入http://你的IP/tomcat/,可以看到Apache SoftWare Foundation页
As you may have guessed by now, this is the default Tomcat home page. It can be found on the local filesystem at:

$CATALINA_HOME/webapps/ROOT/index.jsp

这样就可以解析 .jsp文件。

 

1.apache的根目录为/var/www/html/

2.如果外网不能访问,需要配置iptables防火墙,开放环境就直接关闭好了

a.添加.允许访问端口{21: ftp, 80: http}.
iptables -I RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
iptables -I RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
b.关闭防火墙{不推荐}.
service iptables stop
c.重置加载防火墙
service iptables restart

 

YUM安装LAMP

yum -y install httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-mcrypt php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc mysql-connector-odbc mysql-devel libdbi-dbd-mysql

启动服务配置

/sbin/chkconfig httpd on [设置apache为自启动]

/sbin/chkconfig –-add mysqld [mysql服务]

/sbin/chkconfig mysqld on [mysqld服务]

/sbin/service httpd start [自启动 httpd 服务]

/sbin/service mysqld start [自启动mysqld服务]

设置mysql数据库root帐号密码。

mysqladmin -u root password ‘新密码’ [引号内填密码]

让mysql数据库更安全

复制内容到剪贴板

代码:

mysql -u root -p [此时会要求你输入刚刚设置的密码,输入后回车即可

mysql> DROP DATABASE test; [删除test数据库]

mysql> DELETE FROM mysql.user WHERE user = ”; [删除匿名帐户]

mysql> FLUSH PRIVILEGES; [重载权限]

mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root’@’192.168.1.13′ IDENTIFIED BY ‘密码’ WITH GRANT OPTION; [增加远程链接用户]

按照以上的安装方式, 配置出来的默认站点目录为/var/www/html/

测试环境

rpm -qa |grep mysql

rpm -qa |grep httpd

rpm -qa |grep php

双重指针

双重指针」也有人称为「指针的指针」,其作用为「间接参照」,但无论是哪一个名词,都是令人困惑的,其实指针就是指针,所谓的多重指针,其实还是指针,它们的作用单纯来说,都是用以储存记忆体位址。

思考一个问题,当您要取得int变数的记忆体位址时,会使用int*来宣告指针,要取得double变数的记忆体位址时,会使用double*来宣告指针,这是因为它们在进行加减法运算时,所位移的单位并不相同,而是根据它们的资料型态而定,而如果您只是要储存一个记忆体位址,您就宣告指针为void* 型态。

指针可以用来储存(某变数的)记忆体位址,所以指针本身就是一个变数,也要占有记忆体空间才能储存资讯,那么指针的记忆体空间位址在哪呢?同样的使用 &运算子就可以得知了,例如:
#include <iostream>
using namespace std;

int main() {
    int p = 10;
    int *ptr = &p;

    cout << "p的值:" << p
         << endl;
    cout << "p的记忆体位置: " << &p
         << endl;
    cout << "*ptr参照的值: " << *ptr
         << endl;

    cout << "ptr储存的位址值: " << ptr
         << endl;
    cout << "ptr的记忆体位置: " << &ptr
         << endl;

    return 0;
}

执行结果:

p的值:10
p
的记忆体位置
: 0x22ff74
*ptr
参照的值
: 10
ptr
储存的位址值
: 0x22ff74
ptr
的记忆体位置: 0x22ff70

由以上的范例,您知道ptr在记忆体中的0x22ff70占据空间,并储存了0x22ff74这个值,0x22ff74也就是p在记忆体中的位置,该位置储存了10这个值。

如果在上例中,您要储存ptr的记忆体位址,也就是0x22ff70这个值,那么如何作?由于ptr是个int*型态变数,如同int变数必须宣告 int*指针,所以int*型态变数就必须宣告int**型态的指针,例如:
int **ptr2 = &ptr;

下面这个程式可得仔细看看:
#include <iostream>
using namespace std;

int main() {
    int p = 10;
    int *ptr1 = &p;
    int **ptr2 = &ptr1;

    cout << "p的值:" << p << endl;
    cout << "p的记忆体位置: " << &p << endl;

    cout << endl;

    cout << "*ptr1 = " << *ptr1 << endl;
    cout << "ptr1 = " << ptr1 << endl;
    cout << "ptr1的记忆体位置: " << &ptr1 << endl;

    cout << endl;

    cout << "**ptr2 = " << **ptr2 << endl;
    cout << "*ptr2 = " << *ptr2 << endl;
    cout << "ptr2 = " << ptr2 << endl;

    cout << endl;

    cout << "整理(谁储存了谁?):" << endl;
    cout << "&p = " << &p << "\t\t" << "ptr1 = " << ptr1 << endl;
    cout << "&ptr1 = " << &ptr1 << "\t"
         << "ptr2 = " << ptr2
         << endl;

    return 0;
}

执行结果:

p的值:10
p
的记忆体位置
: 0x22ff74

*ptr1 = 10
ptr1 = 0x22ff74
ptr1的记忆体位置
: 0x22ff70

**ptr2 = 10
*ptr2 = 0x22ff74
ptr2 = 0x22ff70

整理(谁储存了谁?)
&p = 0x22ff74           ptr1 = 0x22ff74
&ptr1 = 0x22ff70        ptr2 = 0x22ff70

在执行结果中,您可以看到最后的整理中,ptr1储存了p变数所占有的位址,而ptr2则储存了ptr1所占有的位址,所以当您使用*取值运算子时, *ptr2取出的是ptr1所储存的值,也就是&p,而再使用一次*运算子时,也就是**ptr2时,因为*ptr2 == ptr1,所以*(*ptr2 ) == *ptr1,而*ptr1 == p,所以也就是取出了p的值了。

gcc和g++的区别

gcc和g++都是GNU(组织)的一个编译器。

误区一:gcc只能编译c代码,g++只能编译c++代码
两者都可以,但是请注意:
1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。
2.编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。

误区二:gcc不会定义__cplusplus宏,而g++会
实际上,这个宏只是标志着编译器将会把代码按C还是C++语法来解释,如上所述,如果后缀为.c,并且采用gcc编译器,则该宏就是未定义的,否则,就是已定义。

误区三:编译只能用gcc,链接只能用g++
严格来说,这句话不算错误,但是它混淆了概念,应该这样说:编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自动调用gcc,二者等价。
gcc和g++的区别
我们在编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而c++代码用g++,或者说编译用 gcc,链接用g++,一时也不知哪个说法正确,如果再遇上个extern "C",分歧就更多了,这里我想作个了结,毕竟知识的目的是令人更清醒,而不是更糊涂。

误区一:gcc只能编译c代码,g++只能编译c++代码

两者都可以,但是请注意:
1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的,例如:
#include <stdio.h>
int main(int argc, char* argv[]) {
   if(argv == 0) return;
   printString(argv);
   return;
}
int printString(char* string) {
sprintf(string, "This is a test.\n");
}
如果按照C的语法规则,OK,没问题,但是,一旦把后缀改为cpp,立刻报三个错:“printString未定义”;
“cannot convert `char**’ to `char*”;
”return-statement with no value“;
分别对应前面红色标注的部分。可见C++的语法规则更加严谨一些。
2.编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。

误区二:gcc不会定义__cplusplus宏,而g++会

实际上,这个宏只是标志着编译器将会把代码按C还是C++语法来解释,如上所述,如果后缀为.c,并且采用gcc编译器,则该宏就是未定义的,否则,就是已定义。

误区三:编译只能用gcc,链接只能用g++

严格来说,这句话不算错误,但是它混淆了概念,应该这样说:编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自动调用gcc,二者等价。

误区四:extern "C"与gcc/g++有关系

实际上并无关系,无论是gcc还是g++,用extern "c"时,都是以C的命名方式来为symbol命名,否则,都以c++方式命名。试验如下:
me.h:
extern "C" void CppPrintf(void);

me.cpp:
#include <iostream>
#include "me.h"
using namespace std;
void CppPrintf(void)
{
     cout << "Hello\n";
}

test.cpp:
#include <stdlib.h>
#include <stdio.h>
#include "me.h"       
int main(void)
{
    CppPrintf();
    return 0;
}

1. 先给me.h加上extern "C",看用gcc和g++命名有什么不同

[root@root G++]# g++ -S me.cpp
[root@root G++]# less me.s
.globl _Z9CppPrintfv        //注意此函数的命名
        .type   CppPrintf, @function
[root@root GCC]# gcc -S me.cpp
[root@root GCC]# less me.s
.globl _Z9CppPrintfv        //注意此函数的命名
        .type   CppPrintf, @function
完全相同!
              
2. 去掉me.h中extern "C",看用gcc和g++命名有什么不同

[root@root GCC]# gcc -S me.cpp
[root@root GCC]# less me.s
.globl _Z9CppPrintfv        //注意此函数的命名
        .type   _Z9CppPrintfv, @function
[root@root G++]# g++ -S me.cpp
[root@root G++]# less me.s
.globl _Z9CppPrintfv        //注意此函数的命名
        .type   _Z9CppPrintfv, @function
完全相同!
【结论】完全相同,可见extern "C"与采用gcc/g++并无关系,以上的试验还间接的印证了前面的说法:在编译阶段,g++是调用gcc的。

GNU-GDB调试器使用手册

事前准备
help—获取帮助信息
list—显示程序代码,后面可以加行号或函数等参数
break—设置断点,后面接行号或行数等单数
run—运行程序,后面可以加运行时候的命令行参数
next—运行下一行,不跟踪进函数
setp—运行下一步,跟踪进函数
finish—运行到目前函数退出
where—查看调用栈,即显示函数调用的层次
print—打印变量值,也可以用来赋值
printf—打印格式化字符串值
display/undisplay—命令行时一直显示变量值或取消显示
delete—取消断点
set/set variable—变量赋值,或则设置调试器的信息或配置信息
continue—继续运行
quit—退出调试器
info—显示进程相关信息
info theads—显示线程信息
thread–切换线程

1 gcc -g -o 将原文件编译成能让gdb调试的目标文件
2 gdb 打开要调试的目标文件
3 set args  设置参数 
或run的时候用run 来实现
4 show args 参看参数
5 show environment 查看environment
5 unset env 清除所有环境变量
6 set environment 来设置一个环境变量VAR1
设置/删除断点
1 info sources 或 list  来查看文件,要不然都不知道应该在哪里设置断点
2 查看断点 info breakpoints
3 break
4    tbreak 设置临时断点,到达后被自动删除
5 enable
enable delete
enable once
6 disable
7 delete breakpoints  删除断点
或单用delete而不加所有参数来删除所有断点
->断点进阶
1 break test.c:5 设置断点到指定文件
2 break 在内存某一个位置出暂停
3 break if  来设置条件断点
4 condition  对已存在的断点附上条件
5 command 能在第n个断点出设置命令
开始调试
0 run 程式开始执行
1 step or s 单步执行 
2 next or n非进入式单步执行,就是说,当调用其他函数时,不进入那个函数内部
3 finish 一直运行到函数返回
4 until 运行到函数某一行
5 continue or cont 执行到下一个断点或程式结束
6 return  改动程式流程,直接结束当前函数,并将指定值返回
设置变量
set
1 set i = 5 改动程式中一个变量的值
2 set $i =5 来设置一个pdb环境里自己的变量,该变量独立于程式,也就是说只有gdb认识
获取程式信息
1 监视变量
print /fmt     打印信息
fmt格式,有以下几种
——————————
x  十六进制
——————————
d  十进制
——————————
u 无符号数
——————————
o 八进制
——————————
t 二进制
——————————
a 十六进制打印
——————————
c 字符格式
——————————
f   浮点数
——————————
2 追踪变量
watch      追踪被赋值动作 eg. i = 4;
rwatch   追踪读动作 eg. b = i;
awatch   追踪所有动作
del watchpoint .
info display
display
show display
del display
3  监视内存
x /
Address能是内存地址或是指针,比如0x8799f000,p,&var
fmt 由三部分组成 NFU,N表示要查看的长度,U为格式,其中有分为bhwg,分别表示以字节,半字,字,双字
来显示。
eg.
(gdb) x argv[0]
0xbfffff61: 0x6d6f682f
(gdb) x /10cb argv[0]
0xbfffff61: 47 ’/’ 104 ’h’ 111 ’o’ 109 ’m’ 101 ’e’ 47 ’/’ 67 ’C’ 104 ’h’
0xbfffff69: 97 ’a’ 114 ’r’
(gdb) x /10tb
12
0xbfffff6b: 01101100 01100101 01110011 00101111
01110111 01101111 01110010 01101011
0xbfffff73: 01110000 01101100
(gdb) x /10th
0xbfffff7f:          
0110101101101111 0111010000101111 0110000100000000
01100010000000110001100000000 0110010000000000 0110010100000000 0110011000000000
0xbfffff8f: 0110011100000000 0101011000000000
(gdb)
4 查看总的frame信息
backtrace 或 bt
说明:frame是函数调用时候所产生的堆栈,存储函数被调用的信息
5 选择要查看的frame
frame

CentOS5.4安装Oracle 11g总结

首先说明,根据本空间里转载的7篇《CentOS5.3安装Oracle 11g》参考链接:http://hi.baidu.com/ge_star/blog/item/fede94185bda3c0d34fa4193.html

基本上是没有什么问题的,不过按照他那样安装我在useradd –g oinstall –G dba –d /fantlam/oracle oracle( 添加oracle用户到oinstall组dba副组 到/fantlam/oracle目录中 )时候oracle的根目录/fantlam/oracle 下没有.bash等文件只有.history,所以我就安装自己的思路安装下去。基本跟上面一样,有几个注意的地方我提下,一给自己记忆下。

1,我只创建了一个dba组,而oracle用户的主目录在/home/oracle,吧/fantlam/oracle 的拥有者为oracle:dba。这样一步一步下去就没什么问题。

2,这样安装好了oracle到了sqlplus /nolog时候出现错误,sqlplus:error while loading shared libraries:libdl.so.2:cannot open shared objectfile:No such file or directory.这下我就蒙了。然后参考了下很多文档,是因为我在给oracle变量的时候对定义了一个kernel版本的变量。这个在11g里是不需要的。而且因为的的用户主目录在/home/oracle 下,所以我把该目录下的所有.bash..文件都复制到//fantlam/oracle 下,然后修改这些文件的拥有者,/etc/passwd中修改oracle的主目录(这样比较暴力)。下次再输入sqlplus /nolog时就没有什么问题了。oracle系统工作正常了。

3,运行使用oracle

a.#sqlplus /nolog

b.SQL>conn /as sysdba

c.SQL>startup

d.SQL>quit

e.#lsnrctl start(root下启动监听)

f.SQL>sqlplus /nolog

g.SQL>conn /as sysdba

h.SQL>(自己的操作了,比如create,insert,select等注意每条语句后要加分号“;”)

Makefile文件实例

#以下四句是对标识符赋值,类似C/C++中变量的赋值,应该比较好理解
CC=g++
CFLAGS= -c -g
LDFLAGS= -g
target = ex_3_1
# 目标对象:源对象,定义目标对象依赖的源对象,如果Malefle不指出目标对象,则第一个被定义的目标对象就是要生成的对象。
all: $(target)
#赋值
target_objects=ex_3_1.o nouse.o
#定义目标对象ex_3_1依赖的源对象
ex_3_1 :$(target_objects)
#在上句定义后,定义生产目标对象的命令,把标识符代入下句为 g++ -g -o ex_3_1 ex_3_1.o nouse.o 意思为通过编译生产的目标文件(.o文件)链接生产可执行文件ex_3_1(可以这么理解)
#下句执行的
前提是依赖的源对象比目标对象日期要新,否则不会执行
#源对象和目标对象的生成命令会一直搜索下去,直至结束或遇到Makefile里的其它类型的语句,注意命令前要tab字符而不是多几个空格
       $(CC) $(LDFLAGS) -o $@ $^
#显示$@ Build OK.$@=ex_3_1,所以即显示:ex_3_1 Build OK.
      @echo $@ Build OK.
#扩展名对象生成规则,由.SUFFIXES来定义如何生成一类扩展名文件。语法是:“.SUFFIXES:.源扩展名 .目标扩展名”,例如下句,当处理Malefile时,发现一个扩展名为.o会去查找同名而扩展名为.cpp的文件。
.SUFFIXES:.cpp .o
#重定义了扩展名对应规则后,要定义如何生成,规则为:“.源扩展名 .目标扩展名<br>(换行后要加tab字符)执行命令”,例如下句,如果目标文件是nouse.o,则会去查找nouse.cpp文件,如果找到,则经过标识符替换,执行g++ -c -g -o nouse.o nouse.cpp
.cpp.o :
      $(CC) $(CFLAGS) -o $@ $<
#delete all object删除所有对象
clean:
@rm -rf $(target) $(target_objects)
###########################################################################################
#以上14Makefile文件,其格式可以应用到非常多的程序中,自己可以通过添加修改来完成要求的目标

使用:吧该文件放入根目录,命令行输入make就可以了

GNU-Gcc编译器一些基本的选项

Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc所遵循的部分约定规则。 注意:-Wall可以查看编译时的错误警告。

  .c为后缀的文件,C语言源代码文件;

  .a为后缀的文件,是由目标文件构成的档案库文件;

  .C,.cc或.cxx 为后缀的文件,是C++源代码文件;

  .h为后缀的文件,是程序所包含的头文件;

  .i 为后缀的文件,是已经预处理过的C源代码文件;

  .ii为后缀的文件,是已经预处理过的C++源代码文件;

  .m为后缀的文件,是Objective-C源代码文件;

  .o为后缀的文件,是编译后的目标文件;

  .s为后缀的文件,是汇编语言源代码文件;

  .S为后缀的文件,是经过预编译的汇编语言源代码文件。

CentOS5.3安装Oracle11g(图文)(六)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fantlam.blogbus.com/logs/43416458.html

数据库安装完成后开始创建数据库操作

首先配置netca 这是oracle 11g的新特性

完成之后查看进程 ps -ef | grep /fantlam 可以看到监听程序已经运行起来了

接下配置dbca ( 注意以下这一步 名字要和前面环境变量的名字相同)

文档有提醒 创建数据库时要设置好字符集 不然要改就非常耗资源 我这选择第二个

开始创建了 这个过程比较久

装完了 进行口令管理 一般在这里把scott用户解锁 然后设置密码为tiger

接下来我们可以不用图形界面了 可以关掉它 继续远程操作

login as: root

root@192.168.1.103’s password:

Last login: Mon Aug 3 03:43:45 2009 from 192.168.1.100

[root@localhost ~]# su – oracle

[oracle@localhost ~]$ sqlplus /nolog

sqlplus: error while loading shared libraries: /fantlam/oracle/lib/libnnz11.so:cannot restore segment prot after reloc: Permission denied

遇到了个问题 网上说是oracle 11g对redhat 5的bug

解决方案:vi /etc/sysconfig/selinux 修改 SELINUX=permissive

也可以直接setenforce 0 不过重启后就无效了

CentOS5.3安装Oracle11g就到这里告一个段落,留下一个问题没解决,不过大体的安装过程还算是成功的!

乱码解决方案请见

[oracle@localhost ~]$ setenforce 0

-bash: setenforce: command not found

[oracle@localhost ~]$ su – root

口令:

[root@localhost ~]# setenforce

usage: setenforce [ Enforcing | Permissive | 1 | 0 ]

[root@localhost ~]# setenforce 0

[root@localhost ~]# su – oracle

[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 – Production on Mon Aug 3 04:15:53 2009

Copyright (c) 1982, 2007, Oracle. All rights reserved.

SQL> conn /as sysdba

Connected to an idle instance.

SQL> create table fantlam(id integer,name varchar(10));

create table fantlam(id integer,name varchar(10))

*

ERROR at line 1:

ORA-01034: ORACLE not available

Process ID: 0

Session ID: 0 Serial number: 0

SQL> startup(启动oracle)

ORACLE instance started.

Total System Global Area 431038464 bytes

Fixed Size                  1300408 bytes

Variable Size             255854664 bytes

Database Buffers          167772160 bytes

Redo Buffers                6111232 bytes

????????

????????

SQL> lsnrctl start

SP2-0734: ??????? "lsnrctl st…" – ????????

SQL> create table fantlam(id integer,name varchar(10));

create table fantlam(id integer,name varchar(10))

             *

? 1 ?????:

ORA-00955: ??????????

SQL> commit ;

?????

SQL> select * from fantlam;

????

SQL>

我这里出现了乱码 不知道是我哪里错了 知道的朋友请告诉我

CentOS5.3安装Oracle11g(图文)(七)

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fantlam.blogbus.com/logs/45776277.html

接着上一篇的内容

遗留一个乱码的问题。初步原定定位在选择字符集的时候,我当时选的是UTF8。

我把数据库删除了,重新建立,到那一步选择了系统默认,结果还是出现乱码

我再来一次 直接选择了ZHS16GBK,结果还是一样。

其实一直搞错了,刚开始我选择了utf-8,由于系统默认应该是GBK,所以显示的问号。

现在只需要一个方法

编辑并运行.bash_profile

export NLS_LANG=AMERICAN_AMERICA.UTF8
(如果是GBK     export NLS_LANG=american_america.ZHS16GBK)

注销后生效

这样再重新进入sqlplus

已经不会是乱码。

—————————————————————————————

最后来总结一下在centos5.3安装oracle 11g的步骤,精简一下。

1、安装好CentOS5.3。(虚拟机硬盘16G,swap要大于1.5G,内存1G以上)

2、把所有包找齐

binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125
gcc-4.1.1-52
gcc-c++-4.1.1-52
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-headers-2.5-12
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.1-52
libstdc++-4.1.1
libstdc++-devel-4.1.1-52.e15
make-3.81-1.1
sysstat-7.0.0

unixODBC-2.2.11 (32 bit) or later
unixODBC-devel-2.2.11 (32 bit) or later

我们不要一个一个检测有没安装,那样太麻烦,直接全部丢进去,执行

[root@localhost home]# rpm -ivh *.rpm

3、设置用户

接下来是配置环境了

设置用户

[root@localhost /]# groupadd oinstall   (创建用户组oinstall)

[root@localhost /]# groupadd dba(创建用户组dba)

[root@localhost /]# mkdir –p /fantlam/oracle

[root@localhost /]# useradd –g oinstall –G dba –d /fantlam/oracle oracle( 添加oracle用户到oinstalldba副组 /fantlam/oracle目录中 )

[root@localhost /]# passwd oracle(设置密码)

[root@localhost /]# chown -R oracle:oinstall fantlam(改目录组)

4、设置域名

[root@localhost /]# vi /etc/hosts

You have mail in /var/spool/mail/root

[root@localhost /]# cat /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1               localhost.localdomain localhost

192.168.1.103           localhost.localdomain localhost

#::1             localhost6.localdomain6 localhost6

[root@localhost /]#

5、配置三个文件

[root@localhost /]#vi /etc/sysctl.conf

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 262144

[root@localhost /]#vi /etc/security/limits.conf

oracle              soft    nproc   2047

oracle              hard    nproc   16384

oracle              soft    nofile 1024

oracle              hard    nofile 65536

[root@localhost /]# vi /etc/profile

if [ $USER = "oracle" ]; then

        if [ $SHELL = "/bin/ksh" ]; then

ulimit -p 16384

              ulimit -n 65536

        else

              ulimit -u 16384 -n 65536

        fi

fi

6、设置环境变量

[root@localhost /]# su – oracle

[oracle@localhost ~]$ vi .bash_profile(设置环境变量)

export PATH

ORACLE_BASE=/fantlam

ORACLE_HOME=$ORACLE_BASE/oracle

ORACLE_SID=fantlam

PATH=$ORACLE_HOME/bin:$PATH

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

[root@localhost ~]#exit (退出登录让设置生效)

[root@localhost ~]# su – oracle

[oracle@localhost ~]$ env | grep ORA

ORACLE_SID=fantlam

ORACLE_BASE=/fantlam

ORACLE_HOME=/fantlam/oracle

[oracle@localhost ~]$

7、解压oracle

进入home目录 解压刚刚传进去的oracle 11g

[root@localhost home]# unzip linux_11gR1_database_1013.zip

[root@localhost home]# mv database/ /fantlam (移动到fantlam目录)

[root@localhost home]# cd /fantlam

[root@localhost fantlam]# chown -R oracle:oinstall database/ R表示递归

8、安装oracle

[root@localhost ~]# xhost local:oracle
non-network local connections being added to access control list

[root@localhost ~]# su – oracle

[oracle@localhost ~]$ cd /fantlam
[oracle@localhost fantlam]$ ls
database oracle
[oracle@localhost fantlam]$ cd database
[oracle@localhost database]$ ls
doc install README runInstaller stage welcome.html
[oracle@localhost database]$ ./runInstaller
正在启动 Oracle Universal Installer…

检查临时空间: 必须大于 80 MB。   实际为 7157 MB    通过
检查交换空间: 必须大于 150 MB。   实际为 1498 MB    通过
检查监视器: 监视器配置至少必须显示 256 种颜色。    实际为 16777216    通过
准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2009-08-03_01-05-30AM. 请稍候…

9、安装完成,连接数据库

vi /etc/sysconfig/selinux
修改 SELINUX=permissive


vi .bash_profile
export NLS_LANG=AMERICAN_AMERICA.UTF8

[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 11.1.0.6.0 – Production on Sat Sep 5 00:11:10 2009

Copyright (c) 1982, 2007, Oracle. All rights reserved.

SQL> conn scott/tiger
Connected.
SQL> select * from tab;

TNAME
——————————————————————————–
TABTYPE                CLUSTERID
——————— ———-
BONUS
TABLE

DEPT
TABLE

EMP
TABLE

TNAME
——————————————————————————–
TABTYPE                CLUSTERID
——————— ———-
NOTE
TABLE

PERSON
TABLE

SALGRADE
TABLE

6 rows selected.

SQL>