手工创建数据库
1 创建实例
1.1 修改cmd下面的sqlplus显示方式,显示连接的实例名
进入C:\app\dell\product\11.2.0\dbhome_1\sqlplus\admin 修改glogin.sql,最后加上
set sqlprompt "_user'@'_connect_identifier>"
或者修改本次回话的效果
sql>set sqlprompt _user"@"_connect_identifier>
看看显示效果
1.2 需要startup nomount,这个过程需要复制一个pfile(初始化参数),需要上面一个语句查看spfile的路径
show parameter spfile(注意这里不要写成pamameter),看到在“C:\app\dell\product\11.2.0\dbhome_1\database”
1.3 从现有的spfile创建一个pfile,pfile的文件名是INITncbeta(INIT+sid)
2 编辑初始化参数文件
2.1通过windows的cmd下运行oradim -new - sid sen 创建实例
2.2 将1.3的pfile里面的ncbeta全部替换为这里的sid sen,同时文件名改为INITsen
改好之后,记得点击保存
3 创建相应的目录结构
根据上面的sen的pfile创建各个sen文件夹
*.audit_file_dest='C:\app\dell\admin\sen\adump'
*.control_files='C:\app\dell\oradata\sen\control01.ctl',
'C:\app\dell\flash_recovery_area\sen\control02.ctl'
图方便,直接复制的ncbeta的文件夹,但是之后记得把里面各个子文件夹里面的东西删除
4 创建口令验证文件 (C:\>orapwd file=d:\oracle\product\10.2.0\db_1\database\pwdbook.ora password=admin entries=1)
5 执行建数据库脚本
5.1通过windows下set oracle_sid=sen ,之后sqlplus / as sysdba来启动oracle(nomount阶段)
连接提示“已连接到空闲例程”,说明没有startup数据库
5.2 可以startup
5.3 拷贝一下代码(这里路径和dbf的文件夹名称任意)
Create database sen datafile 'D:\sendb\system01.dbf' size 300M sysaux datafile 'D:\sendb\sysaux01.dbf'size 120M default temporary tablespace temp tempfile 'D:\sendb\temp01.dbf' size 20M undo tablespace UNDOTBS1 datafile 'D:\sendb\undotbs01.dbf' size 200M logfile group 1 ('D:\sendb\redo01.log') size 10240K, group 2 ('D:\sendb\redo02.log') size 10240K, group 3 ('D:\sendb\redo03.log') size 10240K ;
人品爆发,这里一次性成功,昨天晚上n次失败
上面创建之后,controlfile自动生成
2013-01-24 16:17:32 更新
使用dbca图形界面的方式建库的时候,可以选择em和归档等,并且在创建好之后,自动有了oradata\sid文件夹,里面有了系统数据文件和控制文件
5.4 终于发现了我为什么昨天上ocp课犯的错误了,目前oracle已经是startup阶段,可是我又startup了n次,每次都报错,并且是???
5.5 win下看nls_lang发现是中文
修改为美语
SET NLS_LANG=AMERICAN
当前会话的修改:
SYS@sen>alter session set nls_language="american";
回话的修改:
再来看startup的报错(可以看到在同一个窗口下再次进入)
6 创建数据字典视图(SQL>@?/RDBMS/ADMIN/catalog.sql) --@? oracle主目录(C:\app\dell\product\11.2.0\dbhome_1)
只有这一步了才能看到数据字典,比如desc user_tables,这里的?表示oracle home的路径
我的有点小问题,等了好久鼠标还在上面的_identifier>,我于是就强行回车键了
7 创建oracle内部包(SQL>@?/RDBMS/ADMIN/catproc.sql)
同上(导航上键来修改上步的)
这一步要比上面耗时多了许多,大概7分钟样子。做了这部之后,可以
SYS@nc3>desc dba_data_files;
8 SQL>@d:\oracle\product\10.2.0\db_1\sqlplus\admin\pupbld.sql (system)
这里是scott连接,权限不足,换成sysdba,又错,必须是system来搞这一步(老师提示了,上面)
搞定了
9 SQL>create spfile from pfile;
10 配置监听和服务名(NetManager)
10.1没有配置之前不可以通过sqlplus /@sen as sysdba登陆
10.2 通过net manager配置的时候,服务命名那里需要scott测试,通过sql建立scott
还是在那个rdbms的admin下
下图有unlock用户同时修改密码
提示缺少PRODUCT_USER_PROFILE,在第8步
配置好net manager的服务器名之后
但此时cmd下面sqlplus /@sen as sysdba会提示ORA-12154 TNS错误
然后lsnrctl status 发现监听只有一个ncbeta,配置的sen根本没有,想到了重启
lsnrctl stop lsnrctl start 之后果然sen来了
之后还是不行,百度找到了这个文章http://blog.csdn.net/wh62592855/article/details/4654024
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符
这里的提示信息是无法解析连接描述符,表示连接标识符,也就是tnsnname和你本地的tnsname.ora
里配置的不一致,连接时,请求tnsname描述符,但是更不就找不到,这样就会出现这样的错误,
检查我们配置的tnsname文件
我看到我的tnsname配置好像真的和之前的不一样:
ISEN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = sen)
)
)
这个产生的原因是net manager配置的服务命名
我把开头的I去掉,重新以下连结,报错变了
还是看了上面的文章:一句话,要先startup之后监听才能和当前实例配合,才能用sqlplus /@sen as sysdba
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
这里的错误信息也描述的很清楚了,无法识别连接描述符里请求的服务。什么是连接描述符,不就是我们这里一直再提的tnsname
的配置么,这个tnsname配置里的服务名无法识别,很显然这里的错误信息告诉我们两个重要信息。
1. 已经和tnsname里描述中的服务器进行到了连接
2. 连接中tnsname里的service_name并不能在连接中的服务器上找到。
确实这里写着监听程序不支持服务
这句话是什么意思了,由于我的janes这个服务器,都没有启动数据库实例,所以没有一个实例存在在这个监听上,有就出现了这样的提示信息了,其实就是指
的监听现在没有一个数据库实例进行了注册,这里我们要先明白一个动态注册和静态注册的概念,对于9i或者以上的版本,数据库实例启动的时候nomount
这个状态,数据库就会把自己service_name注册到监听里,这个是动态注册,有时可以alter system
register动态注册。静态注册就是通过listener.ora文件,把需要注册的数据库的服务名注册到监听里。
这个具体的一些知识,在别的文章
11 配置dbconsole(dbsnmp,sys)(EMCA)
倪同学给的
先修改sys,dbsnmp的密码
conn / as sysdba
alter user sys identified by admin;
alter user dbsnmp account unlock identified by admin;
c:\>emca -config dbcontrol db -repos create(这个要是不输入的话会一直让输入sysman密码,why?)
SID:demo
端口号:1521
sys密码:admin
dbsnmp密码:admin
sysman密码:admin(密码是随机输入的)
是否继续:Y
等待配置结束会有一个网址
这是日志:
配置: 未设置参数 DB_UNIQUE_NAME 的值。
2012-12-7 13:21:35 oracle.sysman.emcp.DatabaseChecks getDbUniqueName
配置: No Database unique name available. Will try to retrieve it from DB itself
2012-12-7 13:21:35 oracle.sysman.emcp.ParamsManager setParam
配置: Setting param: DB_UNIQUE_NAME value: sen
2012-12-7 13:21:35 oracle.sysman.emcp.ParamsManager getParam
配置: 未设置参数 DB_DOMAIN 的值。
2012-12-7 13:21:35 oracle.sysman.emcp.DatabaseChecks getDbDomain
配置: No db domain available. Will query db for db_domain parameter
2012-12-7 13:21:35 oracle.sysman.emcp.ParamsManager setParam
配置: Setting param: DB_UNIQUE_NAME value: sen
2012-12-7 13:21:35 oracle.sysman.emcp.ParamsManager setParam
配置: Setting param: SERVICE_NAME value: sen
2012-12-7 13:21:35 oracle.sysman.emcp.ParamsManager getParam
配置: 未设置参数 MODIFY_SID 的值。
2012-12-7 13:21:35 oracle.sysman.emcp.ParamsManager getParam
配置: 未设置参数 DBID 的值。
2012-12-10 更新
1 ,alter database datafile ''D:\sendb\sysaux01.dbf'' resize 300m;
2, 清除em相关配置 --删除db配置 emca -deconfig dbcontrol db
3,清除repository emca -repos drop
4,配置em --创建db control emca -config dbcontrol db -repos create
10g 非归档模式 手工建库pfile参考:
nc3.__db_cache_size=209715200 nc3.__java_pool_size=4194304 nc3.__large_pool_size=4194304 nc3.__shared_pool_size=71303168 nc3.__streams_pool_size=0 *.audit_file_dest='C:\oracle\product\10.2.0/admin/nc3/adump' *.background_dump_dest='C:\oracle\product\10.2.0/admin/nc3/bdump' *.compatible='10.2.0.1.0' *.control_files='C:\oracle\product\10.2.0/oradata/nc3/\control01.ctl','C:\oracle\product\10.2.0/oradata/nc3/\control02.ctl','C:\oracle\product\10.2.0/oradata/nc3/\control03.ctl' *.core_dump_dest='C:\oracle\product\10.2.0/admin/nc3/cdump' *.db_block_size=8192 *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='nc3' *.db_recovery_file_dest='C:\oracle\product\10.2.0/flash_recovery_area' *.db_recovery_file_dest_size=2147483648 *.dispatchers='(PROTOCOL=TCP) (SERVICE=nc3XDB)' *.job_queue_processes=10 *.nls_language='SIMPLIFIED CHINESE' *.nls_territory='CHINA' *.open_cursors=300 *.pga_aggregate_target=96468992 *.processes=150 *.remote_login_passwordfile='EXCLUSIVE' *.sga_target=290455552 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='C:\oracle\product\10.2.0/admin/nc3/udump'
事实证明:上面的pfile+再上面的建库sql完美