仓酷云

标题: PHP教程之UNIX下ORACLE数据库的创立 [打印本页]

作者: 活着的死人    时间: 2015-2-4 00:18
标题: PHP教程之UNIX下ORACLE数据库的创立
在这里想谈谈自己这六个多月的PHP学习心得,希望对给比我还新的新手们有所帮助,讲的不是很深刻,甚至有的想法可能是错误的,希望不要误导新人才好,大家要有自己的主见。oracle|unix|创立|数据|数据库   创立数据库虽然说是一件很平凡的任务,在ORACLE的参考文档中也有必定的描写,但实际中确有良多人都不会,一方面是由于平常很少有如许的时机让你去做,而真有了如许的时机让你做的时分,能够又惊慌失措的不晓得若何下手,本文将为你供应一个完全的参考。

具体步调以下:

第一步:筹办任务

1、 情况变量:
ox1> more .profile_oracyx
# 这局部建议供应
PATH=/data4/ora817/app/oracle/product/8.1.7/bin:/data4/ora817/bin::/usr/bin:.
ORACLE_BASE=/data4/ora817/app/oracle
ORACLE_SID=oracyx
ORA_NLS33=/data4/ora817/app/oracle/product/8.1.7/ocommon/nls/admin/data
ORACLE_HOME=/data4/ora817/app/oracle/product/8.1.7

# 这局部依据你的详细情况,不外有的参数在数据库建成后最好仍是明白写出来,
# 如:LD_LIBRARY_PATH等,如许本人看起来会更清晰些。
LD_LIBRARY_PATH=/data4/ora817/app/oracle/product/8.1.7/lib:/usr/lib
TNS_ADMIN=/data4/ora817/app/oracle/product/8.1.7/network/admin
USER=ora817
NLS_LANG=american_america.zhs16cgb231280
LOGNAME=ora817
ORA_DB=/data4/ora817/app/oracle/product/8.1.7/dbs
TERM=vt100
HOME=/data4/ora817
ORACLE_TERM=vt100
SHELL=/bin/ksh
DISPLAY=ox1:0.0

2、参数文件
ox1> pwd
/data4/ora817/app/oracle/product/8.1.7/dbs
ox1> cp init.ora initoracyx.ora
ox1> vi initoracyx.ora
# --------------------------BEGIN---------------------------------------------------------
# db_name是独一一个需求在建库时分供应的参数,
# 但凡是以下参数城市做局部调剂的
db_name = "oracyx"
instance_name = oracyx
service_names = oracyx
control_files = ('/data4/ora817/oradata/oracyx/control1.ctl', '/data2/oradata/or
acyx/control2.ctl','/data5/oradata/oracyx/control3.ctl')
open_cursors = 1000
max_enabled_roles = 40
db_block_buffers = 18800
shared_pool_size = 204800000
java_pool_size = 0
log_checkpoint_interval = 1000000000
log_checkpoint_timeout = 1800
processes = 2000
log_buffer = 2048000
timed_statistics = true
max_dump_file_size = 10000
log_archive_start = true
log_archive_dest_1 = "location=/data5/archive/oracyx"
log_archive_format = arch_%t_%s.arc
global_names = false
background_dump_dest = /data4/ora817/app/oracle/admin/oracyx/bdump
background_core_dump = partial
core_dump_dest = /data4/ora817/app/oracle/admin/oracyx/cdump
shadow_core_dump = none
user_dump_dest = /data4/ora817/app/oracle/admin/oracyx/udump
db_block_size = 8192
remote_login_passwordfile = exclusive
os_authent_prefix = ""
distributed_transactions = 1500
compatible = "8.1.7.0.0"
sort_area_size = 1024000
sort_area_retained_size = 1024000
db_files = 400
db_file_multiblock_read_count = 16
parallel_max_servers = 8
lm_ress=900000
lm_locks=1500000
session_cached_cursors = 20
transactions_per_rollback_segment = 10
db_block_lru_latches = 6
instance_number = 1
resource_limit=TRUE
# --------------------------END-----------------------------------------------------------

3、暗码文件:
ox1> pwd
/data4/ora817/app/oracle/product/8.1.7/dbs
ox1> orapwd file=orapworacyx password=cyx entries=10

值得注重的是,oracle暗码文件的文件名是有严厉标准的:orapw[sid]。默许的查找按次是:先找orapwsid,再找orapw,假如统一台机子上有两个数据库,为了辨别起见必需有一个要指明SID。

同时不要忘了确认sqlnet.ora含以下内容:
sqlnet.authentication_services = (none)

固然你也能够不必暗码文件,那末这一步就能够省略了。

4、筹办目次:
ORACLE真的很笨,不会本人创立子目次,所以咱们不能不在入手下手建库之前将一切数据文件寄存的目次先建好,这里建的目次有:
/data2/oradata/oracyx
/data3/oradata/oracyx
/data4/ora817/oradata/oracyx/
/data5/oradata/oracyx
/data6/oradata/oracyx
/data7/oradata/oracyx
/data4/ora817/app/oracle/admin/oracyx/bdump
/data4/ora817/app/oracle/admin/oracyx/udump
/data4/ora817/app/oracle/admin/oracyx/cdump


第二步:入手下手建库

1、 创立根基数据库文件:

在本局部中将创立根基的数据库文件,包含control file, system data file和online redo log file。详细剧本以下:

ox1> more cdb1_base.sh
#!/bin/sh
#---------------------------------BEGIN--------------------------------------------------
ORACLE_SID=oracyx export ORACLE_SID
ORACLE_HOME=/data4/ora817/app/oracle/product/8.1.7 export ORACLE_HOME

/data4/ora817/app/oracle/product/8.1.7/bin/svrmgrl<< EOF
connect internal/cyx
spool /data4/ora817/cyx/cdb/crdb1.log
startup nomount pfile='/data4/ora817/app/oracle/product/8.1.7/dbs/initoracyx.ora'

CREATE DATABASE "oracyx"
CONTROLFILE REUSE
maxdatafiles 254
maxinstances 8
maxloghistory 100
maxlogmembers 2
maxlogfiles 64
character set ZHS16CGB231280
national character set ZHS16CGB231280
DATAFILE '/data4/ora817/oradata/oracyx/system.dbf'
SIZE 240M REUSE AUTOEXTEND OFF

logfile '/data4/ora817/oradata/oracyx/log1.rdo' SIZE 4M REUSE ,
'/data4/ora817/oradata/oracyx/log2.rdo' SIZE 4M REUSE ,
'/data4/ora817/oradata/oracyx/log3.rdo' SIZE 4M REUSE;

disconnect
spool off
exit
EOF
#---------------------------------END----------------------------------------------------

2、 创立其它表空间

此局部起首对体系表空间作恰当的修正,然后入手下手创立其它表空间,具体剧本以下:

ox1> more cdb2_storage.sh
#!/bin/sh
#----------------------BEGIN--------------------------------------------------
ORACLE_SID=oracyx export ORACLE_SID
/data4/ora817/app/oracle/product/8.1.7/bin/svrmgrl << EOF
spool /data4/ora817/cyx/cdb/crdb2.log
connect internal/cyx

REM ********** ALTER SYSTEM TABLESPACE *********
ALTER TABLESPACE SYSTEM
DEFAULT STORAGE (
INITIAL 640K NEXT 640K MINEXTENTS 1
MAXEXTENTS UNLIMITED PCTINCREASE 0);
ALTER TABLESPACE SYSTEM MINIMUM EXTENT 64K;

REM ********** TABLESPACE FOR TOOLS**********
CREATE TABLESPACE TOOLS DATAFILE '/data4/ora817/oradata/oracyx/tools_01.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM ********** TABLESPACE FOR INDX1 **********
CREATE TABLESPACE INDX1 DATAFILE '/data2/oradata/oracyx/indx1_01.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM ********** TABLESPACE FOR USER**********
CREATE TABLESPACE USER1 DATAFILE '/data6/oradata/oracyx/user1_01.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM ********** TABLESPACE FOR TEMP **********
CREATE TABLESPACE TEMP DATAFILE '/data7/oradata/oracyx/temp_01.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM ********** TABLESPACE FOR RBS **********
CREATE TABLESPACE RBS DATAFILE '/data3/oradata/oracyx/rbs1_1.dbf'
SIZE 4000M REUSE AUTOEXTEND OFF
MINIMUM EXTENT 512K
DEFAULT STORAGE ( INITIAL 512K NEXT 512K MINEXTENTS 8 MAXEXTENTS 4096);

REM **** Creating Six Rollback Segments ****************
CREATE PUBLIC ROLLBACK SEGMENT RBS_01 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_01 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_02 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_02 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_03 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_03 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_04 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_04 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_05 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_05 ONLINE;

CREATE PUBLIC ROLLBACK SEGMENT RBS_06 TABLESPACE RBS
STORAGE (INITIAL 10m NEXT 10m MINEXTENTS 20 OPTIMAL 200m);
ALTER ROLLBACK SEGMENT RBS_06 ONLINE;

disconnect
spool off
exit
EOF
#-------------------END----------------------------------------------------

3、 创立数据字典

在本局部中将挪用oracle自带的剧本创立数据字典。个中catalog.sql用于创立相对体系基表的视图和体系静态功能视图和他们的同义词。同时该剧本将运转创立其他对象的剧本,次要有根基的PL/SQL情况(包含PL/SQL的声明:数据类型、预界说破例、内建的进程和函数、SQL操作等),审计,导入/导出,SQL*Loader和装置选项等。
Catproc.sql用于创立PL/SQL的利用情况。另外,还创立几个PL/SQL包用于扩大RDBMS功效。该剧本同时还为上面的一些RDBMS功效创立别的的一些包和视图:  正告、管道、日记剖析、对象、大对象、初级队列、复制选项和其他的一些内建包和选项等。
以上两个是必需运转的,其他的则依据实践需求了,这里对用到的几个作一下申明:
caths.sql用于装置异类办事办理包。
helpbld.sql和helpus.sql用于创立SQL*PLUS匡助所用到的表(to create the help facility tables)。
别的一个pupbld.sql,关于低版本需求运转,不然在登录时会呈现“Product user profile does not exit”的提醒信息,pupbld.sql用于创立PUP(Product_User_Profile)表,以在用户级别平安性的基本上,供应产物级(product_level)的平安机制。

ox1> more cdb3_dd.sh
#!/bin/sh
#-----------------BEGIN--------------------------------------------------
ORACLE_SID=oracyx export ORACLE_SID
/data4/ora817/app/oracle/product/8.1.7/bin/sqlplus internal/cyx << EOF
spool /data4/ora817/cyx/cdb/crdb3.log

@/data4/ora817/app/oracle/product/8.1.7/rdbms/admin/catalog.sql;
@/data4/ora817/app/oracle/product/8.1.7/rdbms/admin/catproc.sql;
@/data4/ora817/app/oracle/product/8.1.7/rdbms/admin/caths.sql;
connect system/manager
@/data4/ora817/app/oracle/product/8.1.7/sqlplus/admin/help/helpbld.sql helpus.sql;

disconnect
spool off
exit
EOF
#------------------END----------------------------------------------------

4、 完美处置

为了使数据库到达较好的功能,咱们还需求对数据库作进一步的调剂,这里举的例子是修正用户的默许表空间和一时表空间,改动数据库为archive log运转形式。

ox1> more cdb4_perf.sh
#!/bin/sh
#-----------------BEGIN--------------------------------------------------
ORACLE_SID=oracyx export ORACLE_SID
/data4/ora817/app/oracle/product/8.1.7/bin/sqlplus internal/cyx << EOF
spool /data4/ora817/cyx/cdb/crdb4.log

alter user sys temporary tablespace TEMP;
alter user system default tablespace TOOLS;
alter user system temporary tablespace TEMP;

shutdown normal;
startup mount pfile='/data4/ora817/app/oracle/product/8.1.7/dbs/initoracyx.ora';
alter database archivelog;
alter database open;
alter system archive log start;
alter system switch logfile;

disconnect
spool off
exit
EOF
#------------------END----------------------------------------------------

总结:

好了,到此为止咱们就创立一个新的数据库,不知你如今对这一进程是不是明晰了?在咱们对数据库的逻辑布局都很熟习的情形下,建库过程当中需求重点思索的是数据库的物理存储,而这和咱们详细的使用有关,不是一两句话就可以讨情的,但愿人人可以一同来切磋……
          刁馋
  基础这个东西是个比较笼统的概念,如果你之前学习过c语言, c语言被认为是
作者: 只想知道    时间: 2015-2-4 11:26
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
作者: 变相怪杰    时间: 2015-2-4 11:26
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
作者: 莫相离    时间: 2015-2-9 22:21
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
作者: 简单生活    时间: 2015-2-28 00:46
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者: 冷月葬花魂    时间: 2015-3-7 14:15
当然这种网站的会员费就几十块钱。
作者: admin    时间: 2015-3-10 19:06
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: 老尸    时间: 2015-3-17 09:10
基础有没有对学习php没有太大区别,关键是兴趣。
作者: 金色的骷髅    时间: 2015-3-17 20:08
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 再现理想    时间: 2015-3-18 19:36
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 兰色精灵    时间: 2015-3-26 12:30
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 再见西城    时间: 2015-4-1 04:11
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者: 活着的死人    时间: 2015-4-11 21:48
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
作者: 小魔女    时间: 2015-5-6 00:09
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者: 仓酷云    时间: 2015-5-10 23:50
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
作者: 因胸联盟    时间: 2015-5-12 11:06
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
作者: 海妖    时间: 2015-6-17 21:12
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
作者: 透明    时间: 2015-6-22 03:34
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
作者: 深爱那片海    时间: 2015-6-30 15:43
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者: 若天明    时间: 2015-7-3 08:54
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者: 小女巫    时间: 2015-7-8 02:58
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2