There are some shared areas such as /tmp that will cause issues to running or installing Oracle software if they fill up. So carefully place files here, or be sure to purge out old installation logs that are placed here. There are also system areas which can normally be viewed but not modified. If sharing the server it would be important to make sure that changes to these system areas are communicated, or discussed first. The Oracle user does not need full permissions or root access to view the configuration information, but being able to view the information is useful to verify the configurations. 72 Oracle Database Administration for Microsoft SQL Server DBAs CHAPTER 4 Database Definitions and Setup I n the previous chapter, we walked through installing the Oracle software. The server should now be configured for Oracle, and the required components installed. The advantage of installing the software by itself first is that if there are any issues with the configuration, the database doesn’t need to be dropped and re- created each time. It is very easy to launch the Oracle configuration assistants after the installation. This chapter covers the next steps after the software is installed. The Database Configuration Assistant will guide you through the creation of the database. We will look at some of the configuration options, as well as how to use templates and scripts. Security is a big part of database setup. We already talked about security at the operating system level, and there will be more at the application level. Here, we will look at server and schema security. These various levels of security will help you to achieve a more secure system. Before we get into the details of database setup, let’s clarify some of the terminology, which also will reveal some of the differences between the SQL Server and Oracle platforms. Servers, Databases, Instances, and Schemas As a DBA, you are certainly familiar with database terminology. The problem is that on different database platforms, the terms don’t always mean the same thing. Consider that even general terms can take on various meanings. A generic definition of database is “data and information that is collected together for the ability to access and manage.” The term server could refer to the actual server hardware or to the database server. A SQL Server database is not the same as an Oracle database. The SQL Server database has users allocated to it, its own system objects, and its own datafiles. In Oracle, the term schema is more closely related to the SQL Server database. Schemas can own the objects in both environments. In SQL Server, there could be several databases for the instance, so there can be several different schemas in a database. In Oracle, there are multiple schemas in a database, including the system schemas. The Oracle schema is a collection of objects, and it could have its own tablespace allocated to it on the datafiles for the database. The user schema usually does not contain system objects, because the system objects are in their own schema. There is only one set of system objects for each database 74 Oracle Database Administration for Microsoft SQL Server DBAs server, unlike with SQL Server, which has different layers of system objects at the server level and the database level. Also, there are no users inside the Oracle schemas, because they are only at the server level. The Oracle database is almost like the instance level for SQL Server. The Oracle database is the overall group of datafiles and system information. The Oracle software, memory structures, and processes make up an instance. There is one Oracle database for the instance. In a clustered environment, there can be multiple instances that all point to one database on a shared disk. Database owner is another term that doesn’t really exist in Oracle. Typically, the term schema owner is used. Figure 4-1 shows some of these terms and how they apply in the different database environments. Understanding the differences will help you to see where the services, processes, and datafiles play their parts, and how the different levels interact and handle processes within the various structures. Chapter 4: Database Definitions and Setup 75 FIGURE 4-1. Comparing SQL Server and Oracle terminology To clarify how these terms are used in the different database systems, let’s look at some naming examples. We’ll use the domain us.demo.com and a server intended to support a human resources (HR) application, with information about payroll, benefits, employees, and so on. Table 4-1 shows the names for a single server, and Table 4-2 shows the names for a clustered environment. NOTE It is helpful to name a server with a department or functional name, so that it’s easy to recognize the purpose of the server. 76 Oracle Database Administration for Microsoft SQL Server DBAs Database Name Definitions The following are used to identify Oracle databases: ■ SID System identifier—database or instance name. The SID and hostname uniquely identify an Oracle database (similar to a SQL Server instance name). ■ Database name Unique name, normally the same as a SID. ■ Global database name Database name plus the domain (such as us.demo.com). ■ DBID Unique database identifier that is assigned by the system. This information is found in v$database. The SQL Server SID and Oracle SID are two very different animals. A SQL Server SID is a security identifier, which is the system-assigned key to a login, as seen in the syslogins table. The Oracle SID is the database name that the database creator chooses for the database or instance. SQL Server Setup Versus Oracle Setup With SQL Server, we tend to install an instance with the software, which creates the service and allocates the memory. The system databases are also created, with some of the defaults being set up in the model database for other databases. SQL Server databases can be a different collation and a Chapter 4: Database Definitions and Setup 77 Name SQL Server Oracle Server sqlsrvhr01v, sqlsrvhr02v orasrvhr01v, orasrvhr02v Instance PRODHR PRODHR01, PRODHR02 (SID) Database payroll_db, benefits_db, hr_db, employee_db PRODHR TABLE 4-2. Clustered Environment Naming Examples Name SQL Server Oracle Server (Windows or Linux) sqlsrvhr01.us .demo.com orasrvhr01.us .demo.com Instance Local server or named instance: PRODHR PRODHR (SID) Database payroll_db, benefits_db, hr_db, employee_db PRODHR (global database name PRODHR.us.demo.com) Schema dbo PAYROLL, BENEFITS, HR, EMPLOYEE Database server sqlsrvhr01\PRODHR orasrvhr01\PRODHR TABLE 4-1. Database Server Naming Examples different version than the server. For example, a server can have the collation of SQL_Latin1_General_CP1_CI_AS, and a new database can be created with a collation of French_CI_AI. SELECT SERVERPROPERTY('ProductVersion') AS ProductVersion, SERVERPROPERTY('Collation') AS Collation; ProductVersion Collation 10.0.1600.22 SQL_Latin1_General_CP1_CI_AS Create database Example1 collate French_CI_AI; select name, collation_name, compatibility_level from sys.databases; name collation_name compatibility_level master SQL_Latin1_General_CP1_CI_AS 100 tempdb SQL_Latin1_General_CP1_CI_AS 100 model SQL_Latin1_General_CP1_CI_AS 100 msdb SQL_Latin1_General_CP1_CI_AS 100 test1 SQL_Latin1_General_CP1_CI_AS 100 example1 French_CI_AI 100 A SQL Server database gets a different version by attaching a database from a different version. The upgrade of the database can be done after attaching it to the server, but it can also exist as a different version than the server version. The following example shows the compatibility level from SQL Server 2005 on a SQL Server 2008 instance. select name, collation_name, compatibility_level from sys.databases; name collation_name compatibility_level master SQL_Latin1_General_CP1_CI_AS 100 tempdb SQL_Latin1_General_CP1_CI_AS 100 model SQL_Latin1_General_CP1_CI_AS 100 msdb SQL_Latin1_General_CP1_CI_AS 100 mmtest SQL_Latin1_General_CP1_CI_AS 90 With Oracle, the software is installed, and then we set up the database with character sets, system information, and version. The database and instance have the same character set. The Oracle schemas do not have the option for changing the character set. The software components installed are the versions that are used for the database server. This demonstrates that the Oracle database has the system objects and keeps the system-level options at the database level. 78 Oracle Database Administration for Microsoft SQL Server DBAs Creating Databases Oracle provides the Database Configuration Assistant (DBCA) to help you create new databases. Other assistants are available for configuring upgrades (DBUA) and Oracle Enterprise Manager (EMCA). You can also use database scripts and templates to re-create databases with the same configuration. We’ll start by walking through the DBCA. Using the DBCA The DBCA will create the instance parts, which are the processes and the datafiles for the database. It will set up the memory structures. Launch the DBCA from the ORACLE_HOME\bin directory. Figure 4-2 shows step 1 of the assistant, where you select to create a database. Chapter 4: Database Definitions and Setup 79 FIGURE 4-2. Selecting to create a database with the DBCA As you step through the assistant, you name the database and accept default values or change them as necessary. Here are some points to keep in mind: ■ Choose a unique name for the database. It is possible to create a database with the same name as an existing database if it is on another server. You might do this if you are planning a move or an upgrade that is not in place. The global name just includes the domain name for the environment. ■ The generic templates are good starting points for creating a database. You can choose from a data warehousing template, a general transaction database, or a custom shell to start, as shown in Figure 4-3. The transaction processing and data warehouse templates have the option to set up the datafiles. The custom template starts without the datafiles, which can be added later. 80 Oracle Database Administration for Microsoft SQL Server DBAs FIGURE 4-3. Choosing a database template ■ Oracle Enterprise Manager (OEM) and the dbconsole process will be set up to manage a couple of the regular maintenance jobs. Having these steps here is just a convenience, as these can be set up separately at another time. ■ The variables set for ORACLE_HOME and ORACLE_BASE will be used for where the datafiles and various alert log directories are set up. ■ You can select ASM and add disk groups for this database or for using the file systems, and changes can be made to where the files are created. ■ As part of the database creation, the SYSTEM, UNDO, and TEMP tablespaces are created. A user tablespace can also be configured. ■ You can specify locations for the database files, as shown in Figure 4-4. Chapter 4: Database Definitions and Setup 81 FIGURE 4-4. Choosing database file locations with the DBCA . database 74 Oracle Database Administration for Microsoft SQL Server DBAs server, unlike with SQL Server, which has different layers of system objects at the server level and the database level that the Oracle database has the system objects and keeps the system-level options at the database level. 78 Oracle Database Administration for Microsoft SQL Server DBAs Creating Databases Oracle provides. configuration information, but being able to view the information is useful to verify the configurations. 72 Oracle Database Administration for Microsoft SQL Server DBAs CHAPTER 4 Database Definitions and